From 1eeac978cbea6494705e3f5785c12de458a1aa2b Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Nov 03 2018 18:24:04 +0000 Subject: Update to 1.14.15 --- diff --git a/.gitignore b/.gitignore index ec1860f..63e7bf9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /zypper-1.14.2.tar.gz /zypper-1.14.3.tar.gz /zypper-1.14.8.tar.gz +/zypper-1.14.15.tar.gz diff --git a/0001-zypper-log-Make-Python-3-compatible.patch b/0001-zypper-log-Make-Python-3-compatible.patch new file mode 100644 index 0000000..ac73bf1 --- /dev/null +++ b/0001-zypper-log-Make-Python-3-compatible.patch @@ -0,0 +1,116 @@ +From bd9fabba88a532a4d8146c975a4be7e8de1a941c Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Sat, 3 Nov 2018 13:42:50 -0400 +Subject: [PATCH] zypper-log: Make Python 3 compatible + +As part of the effort to cull Python 2 dependencies in Fedora, +this code was trivially ported to Python 3 to remove the Python 2 +dependency in Zypper. + +Reference: https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 +Reference: https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal +--- + tools/zypper-log | 27 ++++++++++++++------------- + 1 file changed, 14 insertions(+), 13 deletions(-) + +diff --git a/tools/zypper-log b/tools/zypper-log +index 710ebae7..e28d01fa 100755 +--- a/tools/zypper-log ++++ b/tools/zypper-log +@@ -5,6 +5,7 @@ + # + # Author: Dominik Heidler + ++from __future__ import print_function + import os, string, re, bz2, zlib, sys, time, argparse, errno + import subprocess + +@@ -32,8 +33,8 @@ def getLogFiles(rotate = 0): + def readFile(logfile): + try: + logtxt = open(logfile).read() +- except IOError, e: +- print >> sys.stderr, "\rIOError: %s: '%s'" % (e.strerror, e.filename) ++ except IOError as e: ++ print("\rIOError: %s: '%s'" % (e.strerror, e.filename), file=sys.stderr) + sys.exit(1) + fext = logfile.split('.')[-1] + if fext == 'xz': +@@ -53,7 +54,7 @@ def getListFromLogFiles(logfiles): + c = re.compile(r"===== Hi, me zypper (\d+.\d+.\d+).*$\s(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).+\((\d+)\).+=====\s(.+)\s=====|genericfrontend.cc.*Launched (YaST2) component (.*)$\s(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).+\((\d+)\)", re.M) + + for logfile in logfiles: +- print >> sys.stderr, "Reading %s" % logfile, '.' * (filenamelen - len(logfile) + 3), ++ print("Reading %s" % logfile, '.' * (filenamelen - len(logfile) + 3), end=' ', file=sys.stderr) + sys.stderr.flush() + for run in c.findall(readFile(logfile)): + if run[4] == 'YaST2': +@@ -75,9 +76,9 @@ def getListFromLogFiles(logfiles): + 'time': time.strptime(tim, "%Y-%m-%d %H:%M:%S"), + 'pid': pid, + 'cmd': cmd.replace("'", "")}) +- print >> sys.stderr, "DONE" ++ print("DONE", file=sys.stderr) + sys.stderr.flush() +- print >> sys.stderr, "" ++ print("", file=sys.stderr) + sys.stderr.flush() + return logindex + +@@ -85,7 +86,7 @@ def printList(logindex, date = False): + global pidlen, verlen + rows, columns = os.popen('stty size', 'r').read().split() + +- print "TIME PID", ' ' * (pidlen - 3), "VER", ' ' * (verlen - 3), "CMD" ++ print("TIME PID", ' ' * (pidlen - 3), "VER", ' ' * (verlen - 3), "CMD") + for logentry in logindex: + if date and date != time.strftime("%Y-%m-%d", logentry['time']): + continue +@@ -93,7 +94,7 @@ def printList(logindex, date = False): + spaceleft = int(columns) - (22 + pidlen + len(logentry['version']) + len(logentry['cmd'])) + if spaceleft < 0 and sys.stdout.isatty(): + logentry['cmd'] = logentry['cmd'][:spaceleft-3] + '...' +- print "%(ptime)s %(pid)s" % logentry, ' ' * (pidlen - len(logentry['pid'])), "%(version)s" % logentry, ' ' * (verlen - len(logentry['version'])), "%(cmd)s" % logentry ++ print("%(ptime)s %(pid)s" % logentry, ' ' * (pidlen - len(logentry['pid'])), "%(version)s" % logentry, ' ' * (verlen - len(logentry['version'])), "%(cmd)s" % logentry) + + def printLogByPID(logfiles, pid, date = False): + if not date: +@@ -102,14 +103,14 @@ def printLogByPID(logfiles, pid, date = False): + c = re.compile(r"%s \d{2}:\d{2}:\d{2} \<\d+\> [^(]+\(%d\).+" % (date, pid)) + + for logfile in logfiles: +- print >> sys.stderr, "Reading %s" % logfile, '.' * (filenamelen - len(logfile) + 3), ++ print("Reading %s" % logfile, '.' * (filenamelen - len(logfile) + 3), end=' ', file=sys.stderr) + sys.stderr.flush() + output.extend( c.findall(readFile(logfile)) ) +- print >> sys.stderr, "DONE" ++ print("DONE", file=sys.stderr) + sys.stderr.flush() +- print >> sys.stderr, "" ++ print("", file=sys.stderr) + sys.stderr.flush() +- print "\n".join(output) ++ print("\n".join(output)) + + def main(): + parser = argparse.ArgumentParser(description='This tool helps you to access the zypper logfile. Run this command without any arguments to get a list of your zypper runs. Provide the PID-File of a zypper run as an argument to query the log for this run.') +@@ -130,7 +131,7 @@ def main(): + try: + args.date = time.strftime("%Y-%m-%d", time.strptime(args.date, "%Y-%m-%d")) + except ValueError: +- print >> sys.stderr, "ValueError: Time data '%s' does not match format 'YYYY-MM-DD'" % args.date ++ print("ValueError: Time data '%s' does not match format 'YYYY-MM-DD'" % args.date, file=sys.stderr) + sys.exit(1) + if args.pid: + printLogByPID(logfiles, args.pid, args.date) +@@ -142,6 +143,6 @@ def main(): + if __name__ == "__main__": + try: + main() +- except IOError, e: ++ except IOError as e: + if e.errno != errno.EPIPE: + raise +-- +2.17.2 + diff --git a/sources b/sources index ec57531..a715a60 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (zypper-1.14.8.tar.gz) = 57c6ed6be2491bd9714d8af626036c28427e991f900d132d2515f5b55a75fa38ebfcadfa593f8919bf76771805bd25157b42bc4cd398320078b8728bc8783877 +SHA512 (zypper-1.14.15.tar.gz) = e258dea2836d7ca85b328daae56da446b700663b3003b54e2f90ff7f2fba5b8bfd960056f79b3b56def47e35483bebc7600d92bfc1a0a34bb46b9ff2c6caa736 diff --git a/zypper.spec b/zypper.spec index 06a183c..77022a9 100644 --- a/zypper.spec +++ b/zypper.spec @@ -1,7 +1,7 @@ -%global min_libzypp_ver 17.6.0 +%global min_libzypp_ver 17.8.1 Name: zypper -Version: 1.14.8 +Version: 1.14.15 Release: 1%{?dist} Summary: Command line package manager using libzypp @@ -9,6 +9,10 @@ License: GPLv2+ URL: http://en.opensuse.org/Portal:Zypper Source0: https://github.com/openSUSE/zypper/archive/%{version}/%{name}-%{version}.tar.gz +# Make zypper-log Python 3 compatible +# From: https://github.com/openSUSE/zypper/pull/217 +Patch0101: 0001-zypper-log-Make-Python-3-compatible.patch + BuildRequires: %{_bindir}/asciidoctor BuildRequires: %{_bindir}/xsltproc BuildRequires: cmake @@ -104,13 +108,16 @@ rm %{buildroot}%{_bindir}/apt ln -sf zypp-aptitude %{buildroot}%{_bindir}/zypp-apt # Fix shebang for zypper-log -sed -e "s|/usr/bin/env python|/usr/bin/python|g" -i %{buildroot}%{_sbindir}/zypper-log +sed -e "s|/usr/bin/env python|/usr/bin/python3|g" -i %{buildroot}%{_sbindir}/zypper-log # Move the bash completion file mkdir -p %{buildroot}%{_datadir}/bash-completion/completions mv %{buildroot}%{_sysconfdir}/bash_completion.d/zypper.sh %{buildroot}%{_datadir}/bash-completion/completions/zypper rm -rf %{buildroot}%{_sysconfdir}/bash_completion.d/ +# Remove conflicting man page and rename needs-restarting +rm %{buildroot}%{_mandir}/man1/needs-restarting.1* +mv %{buildroot}%{_bindir}/needs-restarting %{buildroot}%{_bindir}/zypp-needs-restarting %check pushd %{_vpath_builddir}/tests @@ -126,6 +133,7 @@ popd %{_datadir}/bash-completion/completions/zypper %{_bindir}/zypper %{_bindir}/installation_sources +%{_bindir}/zypp-needs-restarting %{_sbindir}/zypp-refresh %{_datadir}/zypper/ %{_libexecdir}/zypper/ @@ -146,6 +154,9 @@ popd %changelog +* Sat Nov 03 2018 Neal Gompa - 1.14.15-1 +- Update to 1.14.15 + * Sun Aug 26 2018 Neal Gompa - 1.14.8-1 - Update to 1.14.8 (#1555114)