Hello community, here is the log from the commit of package virt-sandbox for openSUSE:Factory checked in at 2017-12-05 01:30:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/virt-sandbox (Old) and /work/SRC/openSUSE:Factory/.virt-sandbox.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virt-sandbox" Tue Dec 5 01:30:51 2017 rev:14 rq:548151 version:0.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/virt-sandbox/virt-sandbox.changes 2017-05-31 12:21:18.167182296 +0200 +++ /work/SRC/openSUSE:Factory/.virt-sandbox.new/virt-sandbox.changes 2017-12-05 01:30:54.427840249 +0100 @@ -1,0 +2,7 @@ +Fri Dec 1 17:39:22 UTC 2017 - [email protected] + +- Conversion to python 3 (fate#323526) + python3.patch +- Enable LZMA support for recent distributions + +------------------------------------------------------------------- New: ---- python3.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virt-sandbox.spec ++++++ --- /var/tmp/diff_new_pack.MysEkZ/_old 2017-12-05 01:30:55.535799998 +0100 +++ /var/tmp/diff_new_pack.MysEkZ/_new 2017-12-05 01:30:55.539799852 +0100 @@ -1,7 +1,7 @@ # # spec file for package virt-sandbox # -# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -37,13 +37,14 @@ # Patches pending upstream review # Need to go upstream +Patch150: python3.patch # Our patches Patch200: no-libexec.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: glib2-devel >= 2.32.0 -BuildRequires: glibc-static +BuildRequires: glibc-devel-static BuildRequires: gobject-introspection-devel BuildRequires: gtk-doc BuildRequires: intltool @@ -51,8 +52,11 @@ BuildRequires: libtool BuildRequires: libvirt-glib-devel >= 0.2.1 BuildRequires: perl +%if 0%{?suse_version} >= 1330 +BuildRequires: xz-static-devel +%endif BuildRequires: zlib-devel-static -Requires: rpm-python +Requires: python3-rpm # For virsh lxc-enter-namespace command Requires: libvirt-client >= %{libvirt_version} Requires: python3-gobject @@ -63,8 +67,8 @@ %package -n libvirt-sandbox-%{soname} Summary: Libvirt application sandbox framework libraries -Group: Development/Libraries/C and C++ # So we get the full libvirtd daemon, not just client libs +Group: Development/Libraries/C and C++ Requires: libvirt-daemon-lxc >= %{libvirt_version} Requires: libvirt-daemon-qemu >= %{libvirt_version} @@ -98,6 +102,7 @@ %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch150 -p1 %patch200 -p1 %build @@ -105,7 +110,11 @@ # than the one used to autoconfigure the project for the distribution # Just make sure the files are sync'ed with our version autoreconf -f -i -%configure --enable-introspection --disable-static --without-lzma +%configure --enable-introspection \ +%if 0%{?suse_version} < 1330 + --without-lzma \ +%endif + --disable-static make V=1 %{?_smp_mflags} %install ++++++ no-libexec.patch ++++++ --- /var/tmp/diff_new_pack.MysEkZ/_old 2017-12-05 01:30:55.583798254 +0100 +++ /var/tmp/diff_new_pack.MysEkZ/_new 2017-12-05 01:30:55.583798254 +0100 @@ -2,7 +2,7 @@ =================================================================== --- libvirt-sandbox-0.6.0.orig/bin/virt-sandbox-service +++ libvirt-sandbox-0.6.0/bin/virt-sandbox-service -@@ -469,7 +469,7 @@ After=libvirtd.service +@@ -484,7 +484,7 @@ After=libvirtd.service %(FOLLOW)s [Service] Type=simple @@ -11,16 +11,22 @@ ExecReload=/usr/bin/virt-sandbox-service -c %(URI)s reload -u %(RELOAD)s %(NAME)s ExecStop=/usr/bin/virsh -c %(URI)s destroy %(NAME)s -@@ -921,7 +921,7 @@ def connect(args): +@@ -935,11 +935,11 @@ def connect(args): + print ("""\ Connected to %s. Type 'Ctrl + ]' to detach from the console. - """ % ( args.name ) +-""" % ( args.name ) - os.execl("/usr/libexec/virt-sandbox-service-util", ++""" % ( args.name )) + os.execl("/usr/lib/virt-sandbox-service-util", "virt-sandbox-service-util", "-c", args.uri, - "-a", args.name) -@@ -1027,7 +1027,7 @@ def upgrade_config_legacy(path): +- "-a", args.name)) ++ "-a", args.name) + + # + # Search Path for command to execute within the container. +@@ -1042,7 +1042,7 @@ def upgrade_config_legacy(path): fd.close() unitfile = unitfile.replace("/usr/bin/virt-sandbox-service start", ++++++ python3.patch ++++++ Index: libvirt-sandbox-0.6.0/bin/virt-sandbox-service =================================================================== --- libvirt-sandbox-0.6.0.orig/bin/virt-sandbox-service +++ libvirt-sandbox-0.6.0/bin/virt-sandbox-service @@ -1,4 +1,4 @@ -#!/usr/bin/python -Es +#!/usr/bin/python3 -Es # # Authors: Dan Walsh <[email protected]> # @@ -19,13 +19,16 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # +import gi +gi.require_version('LibvirtGConfig', '1.0') +from gi.repository import LibvirtGConfig +gi.require_version('LibvirtGObject', '1.0') from gi.repository import LibvirtGObject +gi.require_version('LibvirtSandbox', '1.0') from gi.repository import LibvirtSandbox from gi.repository import GLib -import gi import re import os, sys, shutil, errno, stat -import exceptions import rpm from subprocess import Popen, PIPE, STDOUT import gettext @@ -44,7 +47,6 @@ gettext.textdomain("libvirt-sandbox") try: gettext.install("libvirt-sandbox", localedir="/usr/share/locale", - unicode=False, codeset = 'utf-8') except IOError: import __builtin__ @@ -220,7 +222,8 @@ class Container: def gen_filesystems(self): if self.use_image: self.image = self.DEFAULT_IMAGE % self.get_name() - mount = LibvirtSandbox.ConfigMountHostImage.new(self.image, self.dest) + mount = LibvirtSandbox.ConfigMountHostImage.new(self.image, self.dest, + LibvirtGConfig.DomainDiskFormat.RAW) self.config.add_mount(mount) def fix_stat(self, f): @@ -229,7 +232,7 @@ class Container: path = "%s%s" % (self.dest, f) os.chown(path, s.st_uid, s.st_gid) os.chmod(path, s.st_mode) - except OSError, e: + except OSError as e: if not e.errno == errno.ENOENT: raise @@ -247,7 +250,7 @@ class Container: try: path = "%s%s" % (self.dest, d) os.makedirs(path) - except OSError, e: + except OSError as e: if not e.errno == errno.EEXIST: raise @@ -257,7 +260,7 @@ class Container: path = "%s%s" % (self.dest, f) fd=open(path, "w") fd.close() - except OSError, e: + except OSError as e: if not e.errno == errno.EEXIST: raise @@ -398,10 +401,10 @@ class GenericContainer(Container): def create(self): try: self.create_generic() - except Exception, e: + except Exception as e: try: self.delete() - except Exception, e2: + except Exception as e2: pass raise e @@ -412,6 +415,18 @@ class GenericContainer(Container): def is_template_unit(unit): return '@' in unit +# Python 2 / 3 compability helpers +def get_next(obj): + if hasattr(obj, 'next'): + return obj.next() + else: + return next(obj) + +def string(obj): + if isinstance(obj, bytes): + return str(obj, encoding='utf-8') + return obj + class SystemdContainer(Container): IGNORE_DIRS = [ "/var/run/", "/etc/logrotate.d/", "/etc/pam.d" ] DEFAULT_DIRS = [ "/etc", "/var" ] @@ -575,8 +590,8 @@ WantedBy=multi-user.target def get_rpm_for_unit(self, unitfile): mi = self.ts.dbMatch(rpm.RPMTAG_BASENAMES, unitfile) try: - h = mi.next(); - except exceptions.StopIteration: + h = get_next(mi); + except StopIteration: return None return h['name'] @@ -584,8 +599,8 @@ WantedBy=multi-user.target def extract_rpm(self, rpm_name): mi = self.ts.dbMatch('name', rpm_name) try: - h = mi.next(); - except exceptions.StopIteration: + h = get_next(mi); + except StopIteration: raise ValueError([_("Cannot find package named %s") % rpm_name]) for fentry in h.fiFromHeader(): @@ -596,16 +611,16 @@ WantedBy=multi-user.target if os.path.isfile(fname): self.add_file(fname) - srcrpm = h[rpm.RPMTAG_SOURCERPM] + srcrpm = string(h[rpm.RPMTAG_SOURCERPM]) srcrpmbits = self.split_filename(srcrpm) - if srcrpmbits[0] == h[rpm.RPMTAG_NAME]: + if srcrpmbits[0] == string(h[rpm.RPMTAG_NAME]): return mi = self.ts.dbMatch(rpm.RPMTAG_NAME, srcrpmbits[0]) try: - h = mi.next(); - except exceptions.StopIteration: + h = get_next(mi); + except StopIteration: raise ValueError([_("Cannot find base package %s") % srcrpmbits[0]]) for fentry in h.fiFromHeader(): @@ -765,7 +780,7 @@ PrivateNetwork=false fd.write("[Unit]\n") fd.write("Description=Sandbox multi-user target\n") fd.close() - except OSError, e: + except OSError as e: if not e.errno == errno.EEXIST: raise @@ -783,7 +798,7 @@ PrivateNetwork=false jpath = "/var/log/journal/" + uuid if os.path.lexists(jpath): os.remove(jpath) - except Exception, e: + except Exception as e: sys.stderr.write("%s: %s\n" % (sys.argv[0], e)) sys.stderr.flush() @@ -819,10 +834,10 @@ PrivateNetwork=false try: self.create_systemd() - except Exception, e: + except Exception as e: try: self.delete() - except Exception, e2: + except Exception as e2: sys.stderr.write("Cleanup failed: %s\n" % str(e2)) raise @@ -917,14 +932,14 @@ def connect(args): execute(args) return - print """\ + print ("""\ Connected to %s. Type 'Ctrl + ]' to detach from the console. """ % ( args.name ) os.execl("/usr/libexec/virt-sandbox-service-util", "virt-sandbox-service-util", "-c", args.uri, - "-a", args.name) + "-a", args.name)) # # Search Path for command to execute within the container. @@ -1008,7 +1023,7 @@ def clone(args): newcontainer.set_security(args.security) newcontainer.set_security_label() newcontainer.save_config() - except Exception, e: + except Exception as e: if newcontainer is not None: newcontainer.delete() raise @@ -1290,23 +1305,21 @@ if __name__ == '__main__': sys.exit(1) args.func(args) sys.exit(0) - except KeyboardInterrupt, e: + except KeyboardInterrupt as e: sys.exit(0) - except ValueError, e: - for line in e: - for l in line: - sys.stderr.write("%s: %s\n" % (sys.argv[0], l)) + except ValueError as e: + sys.stderr.write("%s: %s\n" % (sys.argv[0], e)) sys.stderr.flush() sys.exit(1) - except IOError, e: + except IOError as e: sys.stderr.write("%s: %s: %s\n" % (sys.argv[0], e.filename, e.strerror)) sys.stderr.flush() sys.exit(1) - except OSError, e: + except OSError as e: sys.stderr.write("%s: %s\n" % (sys.argv[0], e)) sys.stderr.flush() sys.exit(1) - except GLib.GError, e: + except GLib.GError as e: sys.stderr.write("%s: %s\n" % (sys.argv[0], e)) sys.stderr.flush() sys.exit(1)
