[projects/pld-builder.new] - more python 3.x fixes, dropped python 2.x support
hawk
hawk at pld-linux.org
Sun May 2 13:53:49 CEST 2021
commit 14edabbea8736bc0421d4bfeeda6bcca7501669c
Author: Marcin Krol <hawk at tld-linux.org>
Date: Sun May 2 13:52:06 2021 +0200
- more python 3.x fixes, dropped python 2.x support
PLD_Builder/acl.py | 5 +----
PLD_Builder/bqueue.py | 29 ++++++++++++++++-------------
PLD_Builder/chroot.py | 7 ++++---
PLD_Builder/config.py | 5 +----
PLD_Builder/gpg.py | 18 +++++++-----------
PLD_Builder/install.py | 6 +-----
PLD_Builder/mailer.py | 6 +-----
PLD_Builder/notify.py | 8 ++------
PLD_Builder/pipeutil.py | 5 +----
PLD_Builder/request.py | 12 ++++++------
PLD_Builder/request_fetcher.py | 6 +-----
PLD_Builder/request_handler.py | 5 -----
PLD_Builder/rpm_builder.py | 4 ++--
PLD_Builder/srpm_builder.py | 4 ----
PLD_Builder/util.py | 17 +++++++++++++++++
PLD_Builder/wrap.py | 5 +----
16 files changed, 61 insertions(+), 81 deletions(-)
---
diff --git a/PLD_Builder/acl.py b/PLD_Builder/acl.py
index 0d45634..88ed536 100644
--- a/PLD_Builder/acl.py
+++ b/PLD_Builder/acl.py
@@ -1,10 +1,7 @@
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
import sys
-if sys.version_info[0] == 2:
- import ConfigParser
-else:
- import configparser as ConfigParser
+import configparser as ConfigParser
import string
import fnmatch
import os
diff --git a/PLD_Builder/bqueue.py b/PLD_Builder/bqueue.py
index aaa249c..4699fd7 100644
--- a/PLD_Builder/bqueue.py
+++ b/PLD_Builder/bqueue.py
@@ -4,14 +4,12 @@ import re
import gzip
import time
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
+from io import StringIO
import os
import fcntl
import string
import tempfile
+import shutil
# PLD_Builder:
import gpg
@@ -131,21 +129,26 @@ class B_Queue:
sio = StringIO()
self._write_to(sio)
sio.seek(0)
- sio.write(gpg.sign(sio.read()))
+ sio.write(util.to_str(gpg.sign(sio.read())))
sio.seek(0)
(fdno, tmpname) = tempfile.mkstemp(dir=os.path.dirname(name))
f = os.fdopen(fdno, "w")
- if re.search(r"\.gz$", name):
- fgz = gzip.GzipFile(filename=name, mode="w", compresslevel=6, fileobj=f)
- util.sendfile(sio, fgz)
- fgz.close()
- else:
- util.sendfile(sio, f)
+ util.sendfile(sio, f)
f.flush()
os.fsync(f.fileno())
f.close()
- os.chmod(tmpname, 0o0644)
- os.rename(tmpname, name)
+ if re.search(r"\.gz$", name):
+ f_in = open(tmpname, 'rb')
+ f_out = gzip.open(name, 'wb')
+ shutil.copyfileobj(f_in, f_out)
+ f_in.close();
+ f_out.flush();
+ os.fsync(f_out.fileno())
+ f_out.close();
+ os.remove(tmpname)
+ else:
+ os.rename(tmpname, name)
+ os.chmod(name, 0o0644)
def add(self, req):
self.requests.append(req)
diff --git a/PLD_Builder/chroot.py b/PLD_Builder/chroot.py
index f91e1c6..8acd58d 100644
--- a/PLD_Builder/chroot.py
+++ b/PLD_Builder/chroot.py
@@ -3,6 +3,7 @@
import os
import re
import random
+import util
try:
from hashlib import md5 as md5
@@ -49,7 +50,7 @@ def run(cmd, user = "builder", logfile = None, logstdout = None):
def cp(file, outfile, user="builder", rm=False):
m = md5()
- m.update(str(random.sample(range(100000), 500)).encode('utf-8'))
+ m.update(util.to_bytes(str(random.sample(range(100000), 500))))
digest = m.hexdigest()
marker_start = "--- FILE BEGIN DIGEST %s ---" % digest
@@ -70,11 +71,11 @@ def cp(file, outfile, user="builder", rm=False):
me = l.find(marker_end)
if me != -1:
l = l[:me]
- f.write(l)
+ f.write(util.to_bytes(l))
marker = False
break
if marker:
- f.write(l)
+ f.write(util.to_bytes(l))
rp = p.close()
rf = f.close()
if rp == None:
diff --git a/PLD_Builder/config.py b/PLD_Builder/config.py
index a325762..d7bd958 100644
--- a/PLD_Builder/config.py
+++ b/PLD_Builder/config.py
@@ -1,10 +1,7 @@
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
import sys
-if sys.version_info[0] == 2:
- import ConfigParser
-else:
- import configparser as ConfigParser
+import configparser as ConfigParser
import string
import os
import syslog
diff --git a/PLD_Builder/gpg.py b/PLD_Builder/gpg.py
index b820dcd..942cfb5 100644
--- a/PLD_Builder/gpg.py
+++ b/PLD_Builder/gpg.py
@@ -4,11 +4,7 @@ import log
import subprocess
import re
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
-
+from io import StringIO
import util
import os
import pipeutil
@@ -27,7 +23,7 @@ def get_keys(buf):
cmd = ['/usr/bin/gpg', '--batch', '--no-tty', '--decrypt']
gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
try:
- d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8'))
+ d_stdout, d_stderr = gpg_run.communicate(util.to_bytes(buf))
except OSError as e:
log.error("gnupg run, does gpg binary exist? : %s" % e)
raise
@@ -35,7 +31,7 @@ def get_keys(buf):
rx = re.compile("^gpg:.*using\s[DR]SA\skey\s(?:ID\s)?(\w+)")
keys = []
- for l in d_stderr.decode().split('\n'):
+ for l in util.to_str(d_stderr).split('\n'):
m = rx.match(l)
if m:
keys.append(m.group(1))
@@ -59,14 +55,14 @@ def verify_sig(buf):
cmd = ['/usr/bin/gpg', '--batch', '--no-tty', '--decrypt']
gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
try:
- d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8'))
+ d_stdout, d_stderr = gpg_run.communicate(util.to_bytes(buf))
except OSError as e:
log.error("gnupg run failed, does gpg binary exist? : %s" % e)
raise
rx = re.compile("^gpg: (Good signature from| aka) .*<([^>]+)>")
emails = []
- for l in d_stderr.decode().split('\n'):
+ for l in util.to_str(d_stderr).split('\n'):
m = rx.match(l)
if m:
emails.append(m.group(2))
@@ -85,12 +81,12 @@ def sign(buf):
# TODO: check for gpg return code!
gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
try:
- d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8'))
+ d_stdout, d_stderr = gpg_run.communicate(util.to_bytes(buf))
except OSError as e:
log.error("gnupg signing failed, does gpg binary exist? : %s" % e)
raise
if len(d_stderr):
- log.error("gpg: %s" % d_stderr.decode())
+ log.error("gpg: %s" % util.to_str(d_stderr))
return d_stdout
diff --git a/PLD_Builder/install.py b/PLD_Builder/install.py
index edb4ae9..3e11817 100644
--- a/PLD_Builder/install.py
+++ b/PLD_Builder/install.py
@@ -3,11 +3,7 @@
import re, os
import string
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
-
+from io import StringIO
import chroot
import util
import log
diff --git a/PLD_Builder/mailer.py b/PLD_Builder/mailer.py
index b7d44ab..2cf324d 100644
--- a/PLD_Builder/mailer.py
+++ b/PLD_Builder/mailer.py
@@ -3,11 +3,7 @@
import time
import os
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
-
+from io import StringIO
from config import config
import util
import log
diff --git a/PLD_Builder/notify.py b/PLD_Builder/notify.py
index e13c052..71b269c 100644
--- a/PLD_Builder/notify.py
+++ b/PLD_Builder/notify.py
@@ -1,11 +1,7 @@
# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
-
+from io import StringIO
import mailer
import gpg
import util
@@ -22,7 +18,7 @@ class Notifier:
sio = StringIO()
self.xml.write("</notification>\n")
self.xml.seek(0)
- sio.write(gpg.sign(self.xml.read()))
+ sio.write(util.to_str(gpg.sign(self.xml.read())))
self.xml = None
sio.seek(0)
notifyq.init(r)
diff --git a/PLD_Builder/pipeutil.py b/PLD_Builder/pipeutil.py
index a3e78c9..fb6434c 100644
--- a/PLD_Builder/pipeutil.py
+++ b/PLD_Builder/pipeutil.py
@@ -3,10 +3,7 @@
import select
import os
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
+from io import StringIO
def rw_pipe(buf_, infd, outfd):
buf = StringIO()
diff --git a/PLD_Builder/request.py b/PLD_Builder/request.py
index 6c81575..71a422c 100644
--- a/PLD_Builder/request.py
+++ b/PLD_Builder/request.py
@@ -8,7 +8,7 @@ import xml.sax.saxutils
import fnmatch
import os
import urllib
-import cgi
+import html
import pytz
import tempfile
@@ -329,9 +329,9 @@ class Batch:
desc = "SH: <pre>%s</pre> flags: [%s]" % (self.command, ' '.join(self.command_flags))
else:
package_url = "http://git.pld-linux.org/gitweb.cgi?p=packages/%(package)s.git;f=%(spec)s;h=%(branch)s;a=shortlog" % {
- 'spec': urllib.quote(self.spec),
- 'branch': urllib.quote(self.branch),
- 'package': urllib.quote(self.spec[:-5]),
+ 'spec': urllib.parse.quote(self.spec),
+ 'branch': urllib.parse.quote(self.branch),
+ 'package': urllib.parse.quote(self.spec[:-5]),
}
desc = "%(src_rpm)s (<a href=\"%(package_url)s\">%(spec)s -r %(branch)s</a>%(rpmopts)s)" % {
'src_rpm': self.src_rpm,
@@ -370,7 +370,7 @@ class Batch:
tree_name = '-'.join(bld[:-1])
tree_arch = '-'.join(bld[-1:])
link_pre = "<a href=\"%s/index.php?dist=%s&arch=%s&ok=%d&name=%s&id=%s&action=tail\">" \
- % (config.buildlogs, urllib.quote(tree_name), urllib.quote(tree_arch), is_ok, urllib.quote(bl_name), urllib.quote(rid))
+ % (config.buildlogs, urllib.parse.quote(tree_name), urllib.parse.quote(tree_arch), is_ok, urllib.parse.quote(bl_name), urllib.parse.quote(rid))
link_post = "</a>"
def ftime(s):
@@ -389,7 +389,7 @@ class Batch:
'color' : c,
'builder' : b,
'status' : s,
- 'tooltip' : cgi.escape(tooltip, True),
+ 'tooltip' : html.escape(tooltip, True),
}
+ link_post)
f.write("%s]</small></li>\n" % ' '.join(builders))
diff --git a/PLD_Builder/request_fetcher.py b/PLD_Builder/request_fetcher.py
index fc9f49d..25b130f 100644
--- a/PLD_Builder/request_fetcher.py
+++ b/PLD_Builder/request_fetcher.py
@@ -6,12 +6,8 @@ import os
import urllib
import urllib2
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
+from io import StringIO
import gzip
-
import path
import log
import status
diff --git a/PLD_Builder/request_handler.py b/PLD_Builder/request_handler.py
index de48d9e..70a1866 100644
--- a/PLD_Builder/request_handler.py
+++ b/PLD_Builder/request_handler.py
@@ -5,12 +5,7 @@ import string
import time
import os
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
import fnmatch
-
import gpg
import request
import log
diff --git a/PLD_Builder/rpm_builder.py b/PLD_Builder/rpm_builder.py
index 0126161..1f1ed2c 100644
--- a/PLD_Builder/rpm_builder.py
+++ b/PLD_Builder/rpm_builder.py
@@ -85,7 +85,7 @@ def check_skip_build(r, b):
return False
def fetch_src(r, b):
- src_url = config.control_url + "/srpms/" + r.id + "/" + urllib.quote(b.src_rpm)
+ src_url = config.control_url + "/srpms/" + r.id + "/" + urllib.parse.quote(b.src_rpm)
b.log_line("fetching %s" % src_url)
start = time.time()
good = False
@@ -126,7 +126,7 @@ def fetch_src(r, b):
print("error.reason exception %s" % e)
raise
- o = chroot.popen("cat > %s" % b.src_rpm, mode = "w")
+ o = chroot.popen("cat > %s" % b.src_rpm, mode = "wb")
try:
bytes = util.sendfile(f, o)
diff --git a/PLD_Builder/srpm_builder.py b/PLD_Builder/srpm_builder.py
index bee5f98..562b0c5 100644
--- a/PLD_Builder/srpm_builder.py
+++ b/PLD_Builder/srpm_builder.py
@@ -5,10 +5,6 @@ import string
import time
import os
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
import re
import shutil
import atexit
diff --git a/PLD_Builder/util.py b/PLD_Builder/util.py
index 05cf076..1d485a1 100644
--- a/PLD_Builder/util.py
+++ b/PLD_Builder/util.py
@@ -5,6 +5,7 @@ import sys
import os
import log
import string
+import codecs
def uuid_python():
return str(uuid_random())
@@ -95,3 +96,19 @@ def cmp_to_key(mycmp):
def __ne__(self, other):
return mycmp(self.obj, other.obj) != 0
return K
+
+def to_bytes(s):
+ if type(s) is bytes:
+ return s
+ elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+ return codecs.encode(s, 'utf-8')
+ else:
+ raise TypeError("Expected bytes or string, but got %s." % type(s))
+
+def to_str(s):
+ if type(s) is bytes:
+ return codecs.decode(s, 'utf-8')
+ elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+ return s
+ else:
+ raise TypeError("Expected bytes or string, but got %s." % type(s))
diff --git a/PLD_Builder/wrap.py b/PLD_Builder/wrap.py
index e343e16..11892ee 100644
--- a/PLD_Builder/wrap.py
+++ b/PLD_Builder/wrap.py
@@ -4,10 +4,7 @@ import sys
import log
import traceback
import sys
-if sys.version_info[0] == 2:
- import StringIO
-else:
- from io import StringIO
+from io import StringIO
import os
import time
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/projects/pld-builder.new.git/commitdiff/14edabbea8736bc0421d4bfeeda6bcca7501669c
More information about the pld-cvs-commit
mailing list