Revert "Resolves: Bug 1244234 - Use python3 in scripts in 389-ds-base"
This reverts commit 06cea08970
.
This commit is contained in:
parent
06cea08970
commit
7668f0d5d1
@ -1,305 +0,0 @@
|
|||||||
From 674eac235a72565075129f125e3aefdecb033a05 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Reynolds <mreynolds@redhat.com>
|
|
||||||
Date: Wed, 8 Jul 2015 14:25:04 -0400
|
|
||||||
Subject: Ticket 48204 - Add Python 3 compatibility to ds-logpipe
|
|
||||||
|
|
||||||
From: Petr Viktorin <pviktori@redhat.com>
|
|
||||||
|
|
||||||
Description:
|
|
||||||
- Use 'as' syntax when catching exceptions
|
|
||||||
- Use 0o... syntax for octal literals
|
|
||||||
- Don't use unbuffered text files in Python 3
|
|
||||||
|
|
||||||
https://fedorahosted.org/389/ticket/48204
|
|
||||||
|
|
||||||
Reviewed by: mreynolds
|
|
||||||
|
|
||||||
diff --git a/ldap/admin/src/scripts/ds-logpipe.py b/ldap/admin/src/scripts/ds-logpipe.py
|
|
||||||
index b2d8304..ca6c27f 100644
|
|
||||||
--- a/ldap/admin/src/scripts/ds-logpipe.py
|
|
||||||
+++ b/ldap/admin/src/scripts/ds-logpipe.py
|
|
||||||
@@ -1,5 +1,7 @@
|
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
+from __future__ import print_function
|
|
||||||
+
|
|
||||||
import sys
|
|
||||||
import os, os.path
|
|
||||||
import errno
|
|
||||||
@@ -11,7 +13,7 @@ import fcntl
|
|
||||||
import pwd
|
|
||||||
|
|
||||||
maxlines = 1000 # set on command line
|
|
||||||
-S_IFIFO = 0010000
|
|
||||||
+S_IFIFO = 0o010000
|
|
||||||
|
|
||||||
buffer = [] # default circular buffer used by default plugin
|
|
||||||
totallines = 0
|
|
||||||
@@ -29,8 +31,8 @@ def defaultplugin(line):
|
|
||||||
|
|
||||||
def printbuffer():
|
|
||||||
sys.stdout.writelines(buffer)
|
|
||||||
- print "Read %d total lines" % totallines
|
|
||||||
- print logfname, "=" * 60
|
|
||||||
+ print("Read %d total lines" % totallines)
|
|
||||||
+ print(logfname, "=" * 60)
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
def defaultpost(): printbuffer()
|
|
||||||
@@ -51,7 +53,7 @@ def sighandler(signum, frame):
|
|
||||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
|
||||||
signal.signal(signal.SIGALRM, signal.SIG_DFL)
|
|
||||||
if signum == signal.SIGALRM and debug:
|
|
||||||
- print "script timed out waiting to open pipe"
|
|
||||||
+ print("script timed out waiting to open pipe")
|
|
||||||
finish()
|
|
||||||
else: printbuffer()
|
|
||||||
|
|
||||||
@@ -126,7 +128,7 @@ def parse_plugins(parser, options, args):
|
|
||||||
newargs.append(arg)
|
|
||||||
if prefunc:
|
|
||||||
if debug:
|
|
||||||
- print 'Calling "pre" function in', plgfile
|
|
||||||
+ print('Calling "pre" function in', plgfile)
|
|
||||||
if not prefunc(bvals):
|
|
||||||
parser.error('the "pre" function in %s returned an error' % plgfile)
|
|
||||||
args = newargs
|
|
||||||
@@ -140,27 +142,27 @@ def open_pipe(logfname):
|
|
||||||
try:
|
|
||||||
logf = open(logfname, 'r') # blocks until there is some input
|
|
||||||
opencompleted = True
|
|
||||||
- except IOError, e:
|
|
||||||
+ except IOError as e:
|
|
||||||
if e.errno == errno.EINTR:
|
|
||||||
continue # open was interrupted, try again
|
|
||||||
else: # hard error
|
|
||||||
- raise Exception, "%s [%d]" % (e.strerror, e.errno)
|
|
||||||
+ raise Exception("%s [%d]" % (e.strerror, e.errno))
|
|
||||||
return logf
|
|
||||||
|
|
||||||
def is_proc_alive(procpid):
|
|
||||||
retval = False
|
|
||||||
try:
|
|
||||||
retval = os.path.exists("/proc/%d" % procpid)
|
|
||||||
- except IOError, e:
|
|
||||||
+ except IOError as e:
|
|
||||||
if e.errno != errno.ENOENT: # may not exist yet - that's ok
|
|
||||||
# otherwise, probably permissions or other badness
|
|
||||||
- raise Exception, "could not open file %s - %s [%d]" % (procfile, e.strerror, e.errno)
|
|
||||||
+ raise Exception("could not open file %s - %s [%d]" % (procfile, e.strerror, e.errno))
|
|
||||||
# using /proc/pid failed, try kill
|
|
||||||
if not retval:
|
|
||||||
try:
|
|
||||||
os.kill(procpid, 0) # sig 0 is a "ping"
|
|
||||||
retval = True # if we got here, proc exists
|
|
||||||
- except OSError, e:
|
|
||||||
+ except OSError as e:
|
|
||||||
pass # no such process, or EPERM/EACCES
|
|
||||||
return retval
|
|
||||||
|
|
||||||
@@ -172,10 +174,10 @@ def get_pid_from_file(pidfile):
|
|
||||||
pfd = open(pidfile, 'r')
|
|
||||||
line = pfd.readline()
|
|
||||||
pfd.close()
|
|
||||||
- except IOError, e:
|
|
||||||
+ except IOError as e:
|
|
||||||
if e.errno != errno.ENOENT: # may not exist yet - that's ok
|
|
||||||
# otherwise, probably permissions or other badness
|
|
||||||
- raise Exception, "Could not read pid from file %s - %s [%d]" % (pidfile, e.strerror, e.errno)
|
|
||||||
+ raise Exception("Could not read pid from file %s - %s [%d]" % (pidfile, e.strerror, e.errno))
|
|
||||||
if line:
|
|
||||||
procpid = int(line)
|
|
||||||
return procpid
|
|
||||||
@@ -185,8 +187,8 @@ def write_pid_file(pidfile):
|
|
||||||
pfd = open(pidfile, 'w')
|
|
||||||
pfd.write("%d\n" % os.getpid())
|
|
||||||
pfd.close()
|
|
||||||
- except IOError, e:
|
|
||||||
- raise Exception, "Could not write pid to file %s - %s [%d]" % (pidfile, e.strerror, e.errno)
|
|
||||||
+ except IOError as e:
|
|
||||||
+ raise Exception("Could not write pid to file %s - %s [%d]" % (pidfile, e.strerror, e.errno))
|
|
||||||
|
|
||||||
def handle_script_pidfile(scriptpidfile):
|
|
||||||
scriptpid = get_pid_from_file(scriptpidfile)
|
|
||||||
@@ -194,7 +196,7 @@ def handle_script_pidfile(scriptpidfile):
|
|
||||||
if scriptpid and is_proc_alive(scriptpid):
|
|
||||||
# already running
|
|
||||||
if debug:
|
|
||||||
- print "Script is already running: process id %d" % scriptpid
|
|
||||||
+ print("Script is already running: process id %d" % scriptpid)
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
# either process is not running or no file
|
|
||||||
@@ -210,15 +212,15 @@ def read_and_process_line(logf, plgfuncs):
|
|
||||||
try:
|
|
||||||
line = logf.readline()
|
|
||||||
readcompleted = True # read completed
|
|
||||||
- except IOError, e:
|
|
||||||
+ except IOError as e:
|
|
||||||
if e.errno == errno.EINTR:
|
|
||||||
continue # read was interrupted, try again
|
|
||||||
else: # hard error
|
|
||||||
- raise Exception, "%s [%d]" % (e.strerror, e.errno)
|
|
||||||
+ raise Exception("%s [%d]" % (e.strerror, e.errno))
|
|
||||||
if line: # read something
|
|
||||||
for plgfunc in plgfuncs:
|
|
||||||
if not plgfunc(line):
|
|
||||||
- print "Aborting processing due to function %s.%s" % (plgfunc.__module__, plgfunc.__name__)
|
|
||||||
+ print("Aborting processing due to function %s.%s" % (plgfunc.__module__, plgfunc.__name__))
|
|
||||||
finish() # this will exit the process
|
|
||||||
done = True
|
|
||||||
break
|
|
||||||
@@ -281,28 +283,28 @@ if options.scriptpidfile:
|
|
||||||
serverpid = options.serverpid
|
|
||||||
if serverpid:
|
|
||||||
if not is_proc_alive(serverpid):
|
|
||||||
- print "Server pid [%d] is not alive - exiting" % serverpid
|
|
||||||
+ print("Server pid [%d] is not alive - exiting" % serverpid)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
try:
|
|
||||||
if os.stat(logfname).st_mode & S_IFIFO:
|
|
||||||
if debug:
|
|
||||||
- print "Using existing log pipe", logfname
|
|
||||||
+ print("Using existing log pipe", logfname)
|
|
||||||
else:
|
|
||||||
- print "Error:", logfname, "exists and is not a log pipe"
|
|
||||||
- print "use a filename other than", logfname
|
|
||||||
+ print("Error:", logfname, "exists and is not a log pipe")
|
|
||||||
+ print("use a filename other than", logfname)
|
|
||||||
sys.exit(1)
|
|
||||||
-except OSError, e:
|
|
||||||
+except OSError as e:
|
|
||||||
if e.errno == errno.ENOENT:
|
|
||||||
if debug:
|
|
||||||
- print "Creating log pipe", logfname
|
|
||||||
+ print("Creating log pipe", logfname)
|
|
||||||
os.mkfifo(logfname)
|
|
||||||
- os.chmod(logfname, 0600)
|
|
||||||
+ os.chmod(logfname, 0o600)
|
|
||||||
else:
|
|
||||||
- raise Exception, "%s [%d]" % (e.strerror, e.errno)
|
|
||||||
+ raise Exception("%s [%d]" % (e.strerror, e.errno))
|
|
||||||
|
|
||||||
if debug:
|
|
||||||
- print "Listening to log pipe", logfname, "number of lines", maxlines
|
|
||||||
+ print("Listening to log pipe", logfname, "number of lines", maxlines)
|
|
||||||
|
|
||||||
# set up our signal handlers
|
|
||||||
signal.signal(signal.SIGHUP, sighandler)
|
|
||||||
@@ -333,14 +335,14 @@ while not done:
|
|
||||||
logf = open_pipe(logfname)
|
|
||||||
# if we get here, logf is not None
|
|
||||||
if debug:
|
|
||||||
- print "opened pipe", logf
|
|
||||||
+ print("opened pipe", logf)
|
|
||||||
|
|
||||||
if timerisset:
|
|
||||||
# cancel the timer - the open succeeded
|
|
||||||
timerisset = False
|
|
||||||
signal.setitimer(signal.ITIMER_REAL, 0)
|
|
||||||
if debug:
|
|
||||||
- print "cancelled startup timer"
|
|
||||||
+ print("cancelled startup timer")
|
|
||||||
|
|
||||||
lines = 0
|
|
||||||
# read and process the next line in the pipe
|
|
||||||
@@ -352,11 +354,11 @@ while not done:
|
|
||||||
|
|
||||||
# the other end of the pipe closed - we close our end too
|
|
||||||
if debug:
|
|
||||||
- print "read", lines, "lines"
|
|
||||||
+ print("read", lines, "lines")
|
|
||||||
logf.close()
|
|
||||||
logf = None
|
|
||||||
if debug:
|
|
||||||
- print "closed log pipe", logfname
|
|
||||||
+ print("closed log pipe", logfname)
|
|
||||||
|
|
||||||
if not serverpid and options.serverpidfile:
|
|
||||||
# see if the server has written its server pid file yet
|
|
||||||
@@ -368,7 +370,7 @@ while not done:
|
|
||||||
if serverpid and not is_proc_alive(serverpid):
|
|
||||||
done = True
|
|
||||||
if debug:
|
|
||||||
- print "server pid", serverpid, "exited - script exiting"
|
|
||||||
+ print("server pid", serverpid, "exited - script exiting")
|
|
||||||
|
|
||||||
if neverdone:
|
|
||||||
done = False
|
|
||||||
@@ -387,12 +389,12 @@ while not done:
|
|
||||||
signal.setitimer(signal.ITIMER_REAL, 0.25)
|
|
||||||
timerisset = True
|
|
||||||
if debug:
|
|
||||||
- print "set startup timer - see if server is really shut down"
|
|
||||||
+ print("set startup timer - see if server is really shut down")
|
|
||||||
else: # we read something
|
|
||||||
# pipe closed - usually when server shuts down
|
|
||||||
done = True
|
|
||||||
|
|
||||||
if not done and debug:
|
|
||||||
- print "log pipe", logfname, "closed - reopening - read", totallines, "total lines"
|
|
||||||
+ print("log pipe", logfname, "closed - reopening - read", totallines, "total lines")
|
|
||||||
|
|
||||||
finish()
|
|
||||||
diff --git a/ldap/admin/src/scripts/failedbinds.py b/ldap/admin/src/scripts/failedbinds.py
|
|
||||||
index 8afe0ff..23a7bea 100644
|
|
||||||
--- a/ldap/admin/src/scripts/failedbinds.py
|
|
||||||
+++ b/ldap/admin/src/scripts/failedbinds.py
|
|
||||||
@@ -1,4 +1,5 @@
|
|
||||||
import re
|
|
||||||
+import sys
|
|
||||||
import os, os.path
|
|
||||||
|
|
||||||
# regex that matches a BIND request line
|
|
||||||
@@ -91,12 +92,15 @@ def pre(plgargs):
|
|
||||||
global logf
|
|
||||||
logfile = plgargs.get('logfile', None)
|
|
||||||
if not logfile:
|
|
||||||
- print "Error: missing required argument failedbinds.logfile"
|
|
||||||
+ print("Error: missing required argument failedbinds.logfile")
|
|
||||||
return False
|
|
||||||
needchmod = False
|
|
||||||
if not os.path.isfile(logfile): needchmod = True
|
|
||||||
- logf = open(logfile, 'a', 0) # 0 for unbuffered output
|
|
||||||
- if needchmod: os.chmod(logfile, 0600)
|
|
||||||
+ if sys.version_info < (3, 0):
|
|
||||||
+ logf = open(logfile, 'a', 0) # 0 for unbuffered output
|
|
||||||
+ else:
|
|
||||||
+ logf = open(logfile, 'a')
|
|
||||||
+ if needchmod: os.chmod(logfile, 0o600)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def post():
|
|
||||||
@@ -153,6 +157,7 @@ def plugin(line):
|
|
||||||
logmsg = conn.addreq(timestamp, opnum, dn, method, mech)
|
|
||||||
if logmsg:
|
|
||||||
logf.write(logmsg + "\n")
|
|
||||||
+ logf.flush()
|
|
||||||
return True
|
|
||||||
|
|
||||||
# is this a RESULT line?
|
|
||||||
@@ -164,6 +169,7 @@ def plugin(line):
|
|
||||||
logmsg = conn.addres(timestamp, opnum, errnum)
|
|
||||||
if logmsg:
|
|
||||||
logf.write(logmsg + "\n")
|
|
||||||
+ logf.flush()
|
|
||||||
return True
|
|
||||||
|
|
||||||
return True # no match
|
|
||||||
diff --git a/ldap/admin/src/scripts/logregex.py b/ldap/admin/src/scripts/logregex.py
|
|
||||||
index 7537953..8b1f87f 100644
|
|
||||||
--- a/ldap/admin/src/scripts/logregex.py
|
|
||||||
+++ b/ldap/admin/src/scripts/logregex.py
|
|
||||||
@@ -10,7 +10,7 @@ def pre(plgargs):
|
|
||||||
global regex_regex_ary
|
|
||||||
regexary = plgargs.get('regex', None)
|
|
||||||
if not regexary:
|
|
||||||
- print "Error: missing required argument logregex.regex"
|
|
||||||
+ print("Error: missing required argument logregex.regex")
|
|
||||||
return False
|
|
||||||
if isinstance(regexary,list):
|
|
||||||
regex_regex_ary = [re.compile(xx) for xx in regexary]
|
|
||||||
--
|
|
||||||
cgit v0.10.2
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
|||||||
Summary: 389 Directory Server (base)
|
Summary: 389 Directory Server (base)
|
||||||
Name: 389-ds-base
|
Name: 389-ds-base
|
||||||
Version: 1.3.4.1
|
Version: 1.3.4.1
|
||||||
Release: %{?relprefix}2%{?prerel}%{?dist}
|
Release: %{?relprefix}1%{?prerel}%{?dist}
|
||||||
License: GPLv2 with exceptions
|
License: GPLv2 with exceptions
|
||||||
URL: http://port389.org/
|
URL: http://port389.org/
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -74,11 +74,8 @@ BuildRequires: tcp_wrappers
|
|||||||
BuildRequires: pam-devel
|
BuildRequires: pam-devel
|
||||||
BuildRequires: systemd-units
|
BuildRequires: systemd-units
|
||||||
|
|
||||||
# for python3 macros
|
|
||||||
BuildRequires: python3-devel
|
|
||||||
|
|
||||||
# this is needed for using semanage from our setup scripts
|
# this is needed for using semanage from our setup scripts
|
||||||
Requires: /usr/sbin/semanage
|
Requires: policycoreutils-python
|
||||||
|
|
||||||
# the following are needed for some of our scripts
|
# the following are needed for some of our scripts
|
||||||
%if %{use_openldap}
|
%if %{use_openldap}
|
||||||
@ -127,12 +124,6 @@ Source1: %{name}-git.sh
|
|||||||
Source2: %{name}-devel.README
|
Source2: %{name}-devel.README
|
||||||
Source3: https://git.fedorahosted.org/cgit/nunc-stans.git/snapshot/nunc-stans-%{nunc_stans_ver}.tar.bz2
|
Source3: https://git.fedorahosted.org/cgit/nunc-stans.git/snapshot/nunc-stans-%{nunc_stans_ver}.tar.bz2
|
||||||
|
|
||||||
# Python 3 support from upstream git
|
|
||||||
# https://git.fedorahosted.org/cgit/389/ds.git/commit/?id=674eac235a72565075129f125e3aefdecb033a05
|
|
||||||
Patch0: %{name}-py3.patch
|
|
||||||
# Do not bytecompile with python2
|
|
||||||
%global __python %{__python3}
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
389 Directory Server is an LDAPv3 compliant server. The base package includes
|
389 Directory Server is an LDAPv3 compliant server. The base package includes
|
||||||
the LDAP server and command line utilities for server administration.
|
the LDAP server and command line utilities for server administration.
|
||||||
@ -196,12 +187,6 @@ Development Libraries and headers for the 389 Directory Server base package.
|
|||||||
%endif
|
%endif
|
||||||
cp %{SOURCE2} README.devel
|
cp %{SOURCE2} README.devel
|
||||||
|
|
||||||
# Apply patch with Python 3 support
|
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
# Make sure python3 is used in shebangs
|
|
||||||
sed -r -i '1s|^#!\s*/usr/bin.*python.*|#!%{__python3}|' ldap/admin/src/scripts/*.py
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if %{use_nunc_stans}
|
%if %{use_nunc_stans}
|
||||||
pushd ../nunc-stans-%{nunc_stans_ver}
|
pushd ../nunc-stans-%{nunc_stans_ver}
|
||||||
@ -380,10 +365,6 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Sun Jul 26 2015 Miro Hrončok <mhroncok@redhat.com> - 1.3.4.1-2
|
|
||||||
- Resolves: Bug 1244234 - Use python3 in scripts in 389-ds-base
|
|
||||||
- Instead of requiring policycoreutils-python directly, require /usr/sbin/semanage (might move to different package)
|
|
||||||
|
|
||||||
* Wed Jun 24 2015 Noriko Hosoi <nhosoi@redhat.com> - 1.3.4.1-1
|
* Wed Jun 24 2015 Noriko Hosoi <nhosoi@redhat.com> - 1.3.4.1-1
|
||||||
- Release 1.3.4.1
|
- Release 1.3.4.1
|
||||||
- Resolves: Bug 1234277 - distro-wide architecture set overriden by buildsystem; Upgrade nunc-stans to 0.1.5.
|
- Resolves: Bug 1234277 - distro-wide architecture set overriden by buildsystem; Upgrade nunc-stans to 0.1.5.
|
||||||
|
Loading…
Reference in New Issue
Block a user