diff --git a/osc/build.py b/osc/build.py index dc1eca29..3caf53e6 100644 --- a/osc/build.py +++ b/osc/build.py @@ -441,11 +441,11 @@ def get_prefer_pkgs(dirs, wanted_arch, type, cpio): packageQuery = packagequery.PackageQuery.query(path) packageQueries.add(packageQuery) - prefer_pkgs = dict((name, packageQuery.path()) + prefer_pkgs = dict((decode_it(name), packageQuery.path()) for name, packageQuery in packageQueries.items()) depfile = create_deps(packageQueries.values()) - cpio.add('deps', '\n'.join(depfile)) + cpio.add(b'deps', b'\n'.join(depfile)) return prefer_pkgs @@ -456,22 +456,22 @@ def create_deps(pkgqs): """ depfile = [] for p in pkgqs: - id = '%s.%s-0/0/0: ' % (p.name(), p.arch()) - depfile.append('P:%s%s' % (id, ' '.join(p.provides()))) - depfile.append('R:%s%s' % (id, ' '.join(p.requires()))) + id = b'%s.%s-0/0/0: ' % (p.name(), p.arch()) + depfile.append(b'P:%s%s' % (id, b' '.join(p.provides()))) + depfile.append(b'R:%s%s' % (id, b' '.join(p.requires()))) d = p.conflicts() if d: - depfile.append('C:%s%s' % (id, ' '.join(d))) + depfile.append(b'C:%s%s' % (id, b' '.join(d))) d = p.obsoletes() if d: - depfile.append('O:%s%s' % (id, ' '.join(d))) + depfile.append(b'O:%s%s' % (id, b' '.join(d))) d = p.recommends() if d: - depfile.append('r:%s%s' % (id, ' '.join(d))) + depfile.append(b'r:%s%s' % (id, b' '.join(d))) d = p.supplements() if d: - depfile.append('s:%s%s' % (id, ' '.join(d))) - depfile.append('I:%s%s-%s 0-%s' % (id, p.name(), p.evr(), p.arch())) + depfile.append(b's:%s%s' % (id, b' '.join(d))) + depfile.append(b'I:%s%s-%s 0-%s' % (id, p.name(), p.evr().encode(), p.arch())) return depfile diff --git a/osc/commandline.py b/osc/commandline.py index eccfc421..a58fcbc2 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -5798,7 +5798,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. build_descr_data = None if not build_descr is None: - build_descr_data = open(build_descr, 'r').read() + build_descr_data = open(build_descr, 'rb').read() if opts.prefer_pkgs and build_descr_data is None: raise oscerr.WrongArgs('error: a build description is needed if \'--prefer-pkgs\' is used') elif opts.prefer_pkgs: @@ -5809,7 +5809,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. prefer_pkgs = get_prefer_pkgs(opts.prefer_pkgs, arch, os.path.splitext(build_descr)[1], cpiodata) - cpiodata.add(os.path.basename(build_descr), build_descr_data) + cpiodata.add(os.path.basename(build_descr.encode()), build_descr_data) build_descr_data = cpiodata.get() if opts.multibuild_package: diff --git a/osc/util/packagequery.py b/osc/util/packagequery.py index e4307447..ac2c74c3 100644 --- a/osc/util/packagequery.py +++ b/osc/util/packagequery.py @@ -1,5 +1,6 @@ from __future__ import print_function +from osc.util.helper import decode_it class PackageError(Exception): """base class for all package related errors""" @@ -30,11 +31,11 @@ class PackageQueries(dict): self.__setitem__(query.name(), query) def __setitem__(self, name, query): - if name != query.name(): + if decode_it(name) != decode_it(query.name()): raise ValueError("key '%s' does not match " "package query name '%s'" % (name, query.name())) - architecture = query.arch() + architecture = decode_it(query.arch()) if (architecture in [self.wanted_architecture, 'noarch', 'all', 'any'] or self.wanted_architecture in self.architectureMap.get(architecture, @@ -149,10 +150,10 @@ class PackageQueryResult: raise NotImplementedError def evr(self): - evr = self.version() + evr = decode_it(self.version()) if self.release(): - evr += "-" + self.release() + evr += "-" + decode_it(self.release()) epoch = self.epoch() if epoch is not None and epoch != 0: diff --git a/osc/util/repodata.py b/osc/util/repodata.py index cb091139..92031706 100644 --- a/osc/util/repodata.py +++ b/osc/util/repodata.py @@ -177,13 +177,13 @@ class RepoDataQueryResult(osc.util.packagequery.PackageQueryResult): return None def vercmp(self, other): - res = osc.util.rpmquery.RpmQuery.rpmvercmp(str(self.epoch()), str(other.epoch())) + res = osc.util.rpmquery.RpmQuery.rpmvercmp(str(self.epoch()).encode(), str(other.epoch()).encode()) if res != 0: return res - res = osc.util.rpmquery.RpmQuery.rpmvercmp(self.version(), other.version()) + res = osc.util.rpmquery.RpmQuery.rpmvercmp(self.version().encode(), other.version().encode()) if res != 0: return res - res = osc.util.rpmquery.RpmQuery.rpmvercmp(self.release(), other.release()) + res = osc.util.rpmquery.RpmQuery.rpmvercmp(self.release().encode(), other.release().encode()) return res def version(self): diff --git a/osc/util/rpmquery.py b/osc/util/rpmquery.py index 2c8271f3..535cd37e 100644 --- a/osc/util/rpmquery.py +++ b/osc/util/rpmquery.py @@ -188,14 +188,14 @@ class RpmQuery(packagequery.PackageQuery, packagequery.PackageQueryResult): continue # RPMSENSE_SENSEMASK = 15 (see rpmlib.h) but ignore RPMSENSE_SERIAL (= 1 << 0) therefore use 14 if flags & 14: - name += ' ' + name += b' ' if flags & self.GREATER: - name += '>' + name += b'>' elif flags & self.LESS: - name += '<' + name += b'<' if flags & self.EQUAL: - name += '=' - name += ' %s' % ver + name += b'=' + name += b' %s' % ver res.append(name) return res @@ -322,6 +322,8 @@ class RpmQuery(packagequery.PackageQuery, packagequery.PackageQueryResult): if ver1 == ver2: return 0 res = 0 + ver1 = decode_it(ver1) + ver2 = decode_it(ver2) while res == 0: # remove all leading non alphanumeric or tilde chars ver1 = re.sub('^[^a-zA-Z0-9~]*', '', ver1)