diff --git a/.gitignore b/.gitignore index 58104b6..20f32cf 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /osc-0.165.1.tar.gz /osc-0.166.2.tar.gz /osc-0.167.1.tar.gz +/osc-0.169.1.tar.gz diff --git a/0001-fix-regression-in-osc-chroot.patch b/0001-fix-regression-in-osc-chroot.patch deleted file mode 100644 index b8e9fab..0000000 --- a/0001-fix-regression-in-osc-chroot.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 76793cc0ac34523aa237cad407cb8dcb816dac7b Mon Sep 17 00:00:00 2001 -From: lethliel -Date: Wed, 11 Dec 2019 14:20:54 +0100 -Subject: [PATCH] fix regression in osc chroot - -This fixes some regressions with osc chroot: - -- osc chroot --wipe --root=/dir/ can now be called outside - a working copy -- osc chroot --noinit --root=/dir/ can now be called outside - a working copy and behaves like the old code (Just entering - the chroot without any modifications) -- The confirmation of the deletion is implemented again and thus - the --force option was implemented too. ---- - osc/build.py | 32 ++++++++++++++++++++++++++------ - osc/commandline.py | 32 +++++++++++++++++++++++++++++--- - 2 files changed, 55 insertions(+), 9 deletions(-) - -diff --git a/osc/build.py b/osc/build.py -index 8f599b85..46bd61f0 100644 ---- a/osc/build.py -+++ b/osc/build.py -@@ -524,6 +524,32 @@ def get_kiwipath_from_buildinfo(apiurl, bi_filename, prj, repo): - kiwipath.insert(0, myprp) - return kiwipath - -+def calculate_prj_pac(opts, descr): -+ project = opts.alternative_project or store_read_project('.') -+ if opts.local_package: -+ package = os.path.splitext(os.path.basename(descr))[0] -+ else: -+ package = store_read_package('.') -+ return project, package -+ -+def calculate_build_root(apihost, prj, pac, repo, arch): -+ buildroot = os.environ.get('OSC_BUILD_ROOT', config['build-root']) \ -+ % {'repo': repo, 'arch': arch, 'project': prj, 'package': pac, 'apihost': apihost} -+ return buildroot -+ -+def run_build(*args): -+ cmd = [config['build-cmd']] -+ cmd += args -+ -+ sucmd = os.environ.get('OSC_SU_WRAPPER', config['su-wrapper']).split() -+ if sucmd[0] == 'su': -+ if sucmd[-1] == '-c': -+ sucmd.pop() -+ cmd = sucmd + ['-s', cmd[0], 'root', '--'] + cmd[1:] -+ else: -+ cmd = sucmd + cmd -+ return run_external(cmd[0], *cmd[1:]) -+ - def main(apiurl, opts, argv): - - repo = argv[0] -@@ -696,12 +722,6 @@ def main(apiurl, opts, argv): - - if opts.shell: - buildargs.append("--shell") -- if os.path.exists(build_root) and os.path.exists(bi_filename) and not opts.clean and not opts.extra_pkgs: -- opts.noinit = True -- opts.offline = True -- # we should check if the service did run before and only skip it then, -- # but we have no save point for this atm -- opts.noservice = True - - if opts.noinit: - buildargs.append('--noinit') -diff --git a/osc/commandline.py b/osc/commandline.py -index 78e66e02..cbb8dfe0 100644 ---- a/osc/commandline.py -+++ b/osc/commandline.py -@@ -6341,6 +6341,8 @@ Please submit there instead, or use --nodevelproject to force direct submission. - help=SUPPRESS_HELP) - @cmdln.option('--shell-cmd', metavar='COMMAND', - help='run specified command instead of bash') -+ @cmdln.option('-f', '--force', action='store_true', -+ help='Do not ask for confirmation to wipe') - @cmdln.option('--host', metavar='HOST', - help='perform the build on a remote server - user@server:~/remote/directory') - @cmdln.option('--trust-all-projects', action='store_true', -@@ -6425,9 +6427,6 @@ Please submit there instead, or use --nodevelproject to force direct submission. - if opts.debuginfo and opts.disable_debuginfo: - raise oscerr.WrongOptions('osc: --debuginfo and --disable-debuginfo are mutual exclusive') - -- if subcmd == 'chroot' or subcmd == 'shell': -- opts.shell = True -- - if subcmd == 'wipe': - opts.wipe = True - -@@ -6450,6 +6449,33 @@ Please submit there instead, or use --nodevelproject to force direct submission. - if not opts.vm_type: - opts.vm_type = lastbuildroot[2] - -+ vm_chroot = opts.vm_type or conf.config['build-type'] -+ if (subcmd in ('shell', 'chroot') or opts.shell or opts.wipe) and not vm_chroot: -+ if opts.root: -+ build_root = opts.root -+ else: -+ args = self.parse_repoarchdescr(args, opts.noinit or opts.offline, opts.alternative_project, False, opts.vm_type, opts.multibuild_package) -+ repo, arch, build_descr = args -+ prj, pac = osc.build.calculate_prj_pac(opts, build_descr) -+ apihost = urlsplit(self.get_api_url())[1] -+ build_root = osc.build.calculate_build_root(apihost, prj, pac, repo, -+ arch) -+ if opts.wipe and not opts.force: -+ # Confirm delete -+ print("Really wipe '%s'? [y/N]: " % build_root) -+ choice = raw_input().lower() -+ if choice != 'y': -+ print('Aborting') -+ sys.exit(0) -+ build_args = ['--root=' + build_root, '--noinit', '--shell'] -+ if opts.wipe: -+ build_args.append('--wipe') -+ sys.exit(osc.build.run_build(*build_args)) -+ elif subcmd in ('shell', 'chroot') or opts.shell: -+ print('--shell in combination with build-type %s is experimental.' % vm_chroot) -+ print('The semantics may change at any time!') -+ opts.shell = True -+ - args = self.parse_repoarchdescr(args, opts.noinit or opts.offline, opts.alternative_project, False, opts.vm_type, opts.multibuild_package) - - if not opts.local_package: --- -2.23.0 - diff --git a/0102-Fix-and-standardize-ElementTree-imports-for-Python-3.patch b/0102-Fix-and-standardize-ElementTree-imports-for-Python-3.patch new file mode 100644 index 0000000..a9931b9 --- /dev/null +++ b/0102-Fix-and-standardize-ElementTree-imports-for-Python-3.patch @@ -0,0 +1,254 @@ +From f58bdd01487af85f669abcb15d3b0dc72b6b976c Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Tue, 2 Jun 2020 13:22:17 -0700 +Subject: [PATCH] Fix and standardize ElementTree imports for Python 3.9 + +Importing `cElementTree` has been deprecated since Python 3.3 - +importing `ElementTree` automatically uses the fastest +implementation available - and is finally removed in Python 3.9. +Importing cElementTree directly (not as part of xml) is an even +older relic, it's for Ye Time Before ElementTree Was Added To +Python and it was instead an external module...which was before +Python 2.5. So let's just standardize on importing ElementTree +from xml.etree. Also, let's not repeat this import 12 times in +one file for some reason. + +Signed-off-by: Adam Williamson +--- + README | 4 ---- + osc/build.py | 5 +---- + osc/core.py | 7 ++----- + osc/util/repodata.py | 6 +----- + tests/common.py | 2 +- + tests/test_commit.py | 2 +- + tests/test_repairwc.py | 2 +- + tests/test_request.py | 15 ++------------- + 8 files changed, 9 insertions(+), 34 deletions(-) + +diff --git a/README b/README +index 9aa4c70d..7b77c7d7 100644 +--- a/README ++++ b/README +@@ -24,10 +24,6 @@ Alternatively, you can directly use osc-wrapper.py from the source dir + (which is easier if you develop on osc). + + +-The program needs the cElementTree python module installed. On SUSE, the +-respective package is called python-elementtree (before 10.2: python-xml). +- +- + + CONFIGURATION: + +diff --git a/osc/build.py b/osc/build.py +index 14d54564..5f26b001 100644 +--- a/osc/build.py ++++ b/osc/build.py +@@ -27,10 +27,7 @@ from osc.util.helper import decode_it + import osc.conf + from . import oscerr + import subprocess +-try: +- from xml.etree import cElementTree as ET +-except ImportError: +- import cElementTree as ET ++from xml.etree import ElementTree as ET + + from .conf import config, cookiejar + +diff --git a/osc/core.py b/osc/core.py +index e0cbe8a4..1fd33cee 100644 +--- a/osc/core.py ++++ b/osc/core.py +@@ -48,10 +48,7 @@ except ImportError: + from httplib import IncompleteRead + + +-try: +- from xml.etree import cElementTree as ET +-except ImportError: +- import cElementTree as ET ++from xml.etree import ElementTree as ET + + from . import oscerr + from . import conf +@@ -816,7 +813,7 @@ class Project: + + def read_packages(self): + """ +- Returns an ``xml.etree.cElementTree`` object representing the ++ Returns an ``xml.etree.ElementTree`` object representing the + parsed contents of the project's ``.osc/_packages`` XML file. + """ + global store +diff --git a/osc/util/repodata.py b/osc/util/repodata.py +index ac46455a..09ce1339 100644 +--- a/osc/util/repodata.py ++++ b/osc/util/repodata.py +@@ -5,11 +5,7 @@ information instead of scanning individual rpms.""" + import gzip + import os.path + +-# cElementTree can be standard or 3rd-party depending on python version +-try: +- from xml.etree import cElementTree as ET +-except ImportError: +- import cElementTree as ET ++from xml.etree import ElementTree as ET + + # project modules + import osc.util.rpmquery +diff --git a/tests/common.py b/tests/common.py +index 211cc63f..d0c2cb17 100644 +--- a/tests/common.py ++++ b/tests/common.py +@@ -4,7 +4,7 @@ import shutil + import tempfile + import os + import sys +-from xml.etree import cElementTree as ET ++from xml.etree import ElementTree as ET + EXPECTED_REQUESTS = [] + + if sys.version_info[0:2] in ((2, 6), (2, 7)): +diff --git a/tests/test_commit.py b/tests/test_commit.py +index 3eb27406..4fe11967 100644 +--- a/tests/test_commit.py ++++ b/tests/test_commit.py +@@ -3,7 +3,7 @@ import osc.oscerr + import os + import sys + from common import GET, PUT, POST, DELETE, OscTestCase +-from xml.etree import cElementTree as ET ++from xml.etree import ElementTree as ET + try: + from urllib.error import HTTPError + except ImportError: +diff --git a/tests/test_repairwc.py b/tests/test_repairwc.py +index f2b090b8..267bc371 100644 +--- a/tests/test_repairwc.py ++++ b/tests/test_repairwc.py +@@ -3,7 +3,7 @@ import osc.oscerr + import os + import sys + from common import GET, PUT, POST, DELETE, OscTestCase +-from xml.etree import cElementTree as ET ++from xml.etree import ElementTree as ET + FIXTURES_DIR = os.path.join(os.getcwd(), 'repairwc_fixtures') + + def suite(): +diff --git a/tests/test_request.py b/tests/test_request.py +index 96b5ba40..90d2441e 100644 +--- a/tests/test_request.py ++++ b/tests/test_request.py +@@ -1,3 +1,5 @@ ++from xml.etree import ElementTree as ET ++ + import osc.core + import osc.oscerr + import os +@@ -252,7 +254,6 @@ class TestRequest(OscTestCase): + + def test_action_from_xml1(self): + """create action from xml""" +- from xml.etree import cElementTree as ET + xml = """ + + +@@ -270,7 +271,6 @@ class TestRequest(OscTestCase): + + def test_action_from_xml2(self): + """create action from xml""" +- from xml.etree import cElementTree as ET + xml = """ + + +@@ -292,7 +292,6 @@ class TestRequest(OscTestCase): + + def test_action_from_xml3(self): + """create action from xml (with acceptinfo element)""" +- from xml.etree import cElementTree as ET + xml = """ + + +@@ -316,13 +315,11 @@ class TestRequest(OscTestCase): + + def test_action_from_xml_unknown_type(self): + """try to create action from xml with unknown type""" +- from xml.etree import cElementTree as ET + xml = '' + self.assertRaises(osc.oscerr.WrongArgs, osc.core.Action.from_xml, ET.fromstring(xml)) + + def test_read_request1(self): + """read in a request""" +- from xml.etree import cElementTree as ET + xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request1.xml'), 'r').read().strip() + r = osc.core.Request() + r.read(ET.fromstring(xml)) +@@ -354,7 +351,6 @@ class TestRequest(OscTestCase): + + def test_read_request2(self): + """read in a request (with reviews)""" +- from xml.etree import cElementTree as ET + xml = open(os.path.join(self._get_fixtures_dir(), 'test_read_request2.xml'), 'r').read().strip() + r = osc.core.Request() + r.read(ET.fromstring(xml)) +@@ -393,7 +389,6 @@ class TestRequest(OscTestCase): + + def test_read_request3(self): + """read in a request (with an "empty" comment+description)""" +- from xml.etree import cElementTree as ET + xml = """ + + +@@ -430,7 +425,6 @@ class TestRequest(OscTestCase): + + def test_request_list_view1(self): + """test the list_view method""" +- from xml.etree import cElementTree as ET + xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip() + exp = """\ + 62 State:new By:Admin When:2010-12-29T14:57:25 +@@ -448,7 +442,6 @@ class TestRequest(OscTestCase): + + def test_request_list_view2(self): + """test the list_view method (with history elements and description)""" +- from xml.etree import cElementTree as ET + xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view2.xml'), 'r').read().strip() + r = osc.core.Request() + r.read(ET.fromstring(xml)) +@@ -462,7 +455,6 @@ class TestRequest(OscTestCase): + self.assertEqual(exp, r.list_view()) + + def test_request_str1(self): +- from xml.etree import cElementTree as ET + """test the __str__ method""" + xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_str1.xml'), 'r').read().strip() + r = osc.core.Request() +@@ -496,7 +488,6 @@ History: 2010-12-12T00:00:00 creator revoked + + def test_request_str2(self): + """test the __str__ method""" +- from xml.etree import cElementTree as ET + xml = """\ + + +@@ -527,7 +518,6 @@ Comment: """ + + def test_legacy_request(self): + """load old-style submitrequest""" +- from xml.etree import cElementTree as ET + xml = """\ + + +@@ -563,7 +553,6 @@ Comment: """ + + def test_get_actions(self): + """test get_actions method""" +- from xml.etree import cElementTree as ET + xml = open(os.path.join(self._get_fixtures_dir(), 'test_request_list_view1.xml'), 'r').read().strip() + r = osc.core.Request() + r.read(ET.fromstring(xml)) +-- +2.26.2 + diff --git a/0102-Swap-all-usage-of-cgi.escape-with-html.escape.patch b/0102-Swap-all-usage-of-cgi.escape-with-html.escape.patch deleted file mode 100644 index 849de4b..0000000 --- a/0102-Swap-all-usage-of-cgi.escape-with-html.escape.patch +++ /dev/null @@ -1,190 +0,0 @@ -From ae41cdd0d2af39c3a6a1c5a256f865de71a93ce4 Mon Sep 17 00:00:00 2001 -From: Neal Gompa -Date: Mon, 18 Nov 2019 01:01:27 -0500 -Subject: [PATCH] Swap all usage of cgi.escape() with html.escape() - -In Python 3.8, cgi.escape() has been completely removed after -being deprecated since Python 3.2. The suggested replacement -is to use html.escape(). ---- - osc/commandline.py | 28 ++++++++++++++-------------- - osc/core.py | 14 +++++++------- - 2 files changed, 21 insertions(+), 21 deletions(-) - -diff --git a/osc/commandline.py b/osc/commandline.py -index 2b94b14..c3712c8 100644 ---- a/osc/commandline.py -+++ b/osc/commandline.py -@@ -1241,7 +1241,7 @@ class Osc(cmdln.Cmdln): - if len(args) < 2 and is_project_dir(os.getcwd()): - if opts.diff: - raise oscerr.WrongOptions('\'--diff\' is not supported in a project working copy') -- import cgi -+ import html - project = store_read_project(os.curdir) - - sr_ids = [] -@@ -1295,7 +1295,7 @@ class Osc(cmdln.Cmdln): - (project, target_prj_block, options_block) - actionxml += s - xml = """ %s %s """ % \ -- (actionxml, cgi.escape(opts.message or "")) -+ (actionxml, html.escape(opts.message or "", False)) - u = makeurl(apiurl, ['request'], query='cmd=create&addrevision=1') - f = http_POST(u, data=xml) - -@@ -1864,9 +1864,9 @@ Please submit there instead, or use --nodevelproject to force direct submission. - if not opts.message: - opts.message = edit_message() - -- import cgi -+ import html - xml = """ %s %s """ % \ -- (actionsxml, cgi.escape(opts.message or "")) -+ (actionsxml, html.escape(opts.message or "", False)) - u = makeurl(apiurl, ['request'], query='cmd=create') - f = http_POST(u, data=xml) - -@@ -1903,7 +1903,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - - ${cmd_option_list} - """ -- import cgi -+ import html - args = slash_split(args) - apiurl = self.get_api_url() - -@@ -1958,7 +1958,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - else: - r.add_action('add_role', tgt_project=project, tgt_package=package, - person_name=user, person_role=role) -- r.description = cgi.escape(opts.message or '') -+ r.description = html.escape(opts.message or '', False) - r.create(apiurl) - print(r.reqid) - -@@ -1983,7 +1983,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - osc deletereq [-m TEXT] PROJECT [--all|--repository REPOSITORY] - ${cmd_option_list} - """ -- import cgi -+ import html - - args = slash_split(args) - -@@ -2025,7 +2025,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - - r = Request() - r.add_action('delete', tgt_project=project, tgt_package=package, tgt_repository=repository) -- r.description = cgi.escape(opts.message) -+ r.description = html.escape(opts.message, False) - if opts.accept_in_hours: - r.accept_at_in_hours(int(opts.accept_in_hours)) - r.create(self.get_api_url()) -@@ -2046,7 +2046,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - - osc changedevelrequest PROJECT PACKAGE DEVEL_PROJECT [DEVEL_PACKAGE] - """ -- import cgi -+ import html - - if len(args) == 0 and is_package_dir('.') and find_default_project(): - wd = os.curdir -@@ -2075,7 +2075,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - r = Request() - r.add_action('change_devel', src_project=devel_project, src_package=devel_package, - tgt_project=project, tgt_package=package) -- r.description = cgi.escape(opts.message) -+ r.description = html.escape(opts.message, False) - r.create(self.get_api_url()) - print(r.reqid) - -@@ -2601,7 +2601,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - - # check for devel instances after accepted requests - if cmd in ['accept']: -- import cgi -+ import html - sr_actions = rq.get_actions('submit') - for action in sr_actions: - u = makeurl(apiurl, ['/search/package'], { -@@ -2641,7 +2641,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - project, package) - msg = "%s (forwarded request %s from %s)" % (rq.description, reqid, rq.creator) - rid = create_submit_request(apiurl, action.tgt_project, action.tgt_package, -- project, package, cgi.escape(msg)) -+ project, package, html.escape(msg, False)) - print(msg) - print("New request #", rid) - for req in reqs: -@@ -8270,9 +8270,9 @@ Please submit there instead, or use --nodevelproject to force direct submission. - else: - message = edit_message() - -- import cgi -+ import html - xml = """ %s %s """ % \ -- (requestactionsxml, cgi.escape(message or "")) -+ (requestactionsxml, html.escape(message or "", False)) - u = makeurl(apiurl, ['request'], query='cmd=create') - f = http_POST(u, data=xml) - -diff --git a/osc/core.py b/osc/core.py -index b1289e4..4dba361 100644 ---- a/osc/core.py -+++ b/osc/core.py -@@ -4172,18 +4172,18 @@ def clone_request(apiurl, reqid, msg=None): - - # create a maintenance release request - def create_release_request(apiurl, src_project, message=''): -- import cgi -+ import html - r = Request() - # api will complete the request - r.add_action('maintenance_release', src_project=src_project) - # XXX: clarify why we need the unicode(...) stuff -- r.description = cgi.escape(unicode(message, 'utf8')) -+ r.description = html.escape(unicode(message, 'utf8'), False) - r.create(apiurl) - return r - - # create a maintenance incident per request - def create_maintenance_request(apiurl, src_project, src_packages, tgt_project, tgt_releaseproject, opt_sourceupdate, message='', enforce_branching=False): -- import cgi -+ import html - r = Request() - if src_packages: - for p in src_packages: -@@ -4191,7 +4191,7 @@ def create_maintenance_request(apiurl, src_project, src_packages, tgt_project, t - else: - r.add_action('maintenance_incident', src_project=src_project, tgt_project=tgt_project, tgt_releaseproject=tgt_releaseproject, opt_sourceupdate = opt_sourceupdate) - # XXX: clarify why we need the unicode(...) stuff -- r.description = cgi.escape(unicode(message, 'utf8')) -+ r.description = html.escape(unicode(message, 'utf8'), False) - r.create(apiurl, addrevision=True, enforce_branching=enforce_branching) - return r - -@@ -4200,7 +4200,7 @@ def create_submit_request(apiurl, - dst_project=None, dst_package=None, - message="", orev=None, src_update=None, dst_updatelink=None): - -- import cgi -+ import html - options_block = "" - package = "" - if src_package: -@@ -4236,9 +4236,9 @@ def create_submit_request(apiurl, - orev or show_upstream_rev(apiurl, src_project, src_package), - targetxml, - options_block, -- cgi.escape(message)) -+ html.escape(message, False)) - -- # Don't do cgi.escape(unicode(message, "utf8"))) above. -+ # Don't do html.escape(unicode(message, "utf8")), False) above. - # Promoting the string to utf8, causes the post to explode with: - # uncaught exception: Fatal error: Start tag expected, '<' not found at :1. - # I guess, my original workaround was not that bad. --- -2.21.0 - diff --git a/0103-fix-broken-importsrcpkg-for-python3.patch b/0103-fix-broken-importsrcpkg-for-python3.patch deleted file mode 100644 index 55b0cde..0000000 --- a/0103-fix-broken-importsrcpkg-for-python3.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ae0b55de3bb2e8f2d6876140d6f4121af35e7b50 Mon Sep 17 00:00:00 2001 -From: Frank Schreiner -Date: Fri, 20 Dec 2019 08:36:08 +0100 -Subject: [PATCH] fix broken importsrcpkg for python3 - -without this patch, `importsrcpkg` breaks with the following output: - -``` - File "/usr/lib/python3.7/site-packages/osc/commandline.py", line 7868, in do_importsrcpkg - createPackageDir(os.path.join(project.dir, pac), project) - File "/usr/lib64/python3.7/posixpath.py", line 94, in join - genericpath._check_arg_types('join', a, *p) - File "/usr/lib64/python3.7/genericpath.py", line 151, in _check_arg_types - raise TypeError("Can't mix strings and bytes in path components") from None -TypeError: Can't mix strings and bytes in path components -``` - -Fixes #712 ---- - osc/commandline.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/osc/commandline.py b/osc/commandline.py -index 78e66e0..ba57985 100644 ---- a/osc/commandline.py -+++ b/osc/commandline.py -@@ -7860,7 +7860,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. - print('please specify a package name with the \'--name\' option. ' \ - 'The automatic detection failed', file=sys.stderr) - sys.exit(1) -- -+ pac = pac.decode() - if conf.config['do_package_tracking']: - createPackageDir(os.path.join(project.dir, pac), project) - else: --- -2.23.0 - diff --git a/osc.spec b/osc.spec index 9b52c95..8e891d2 100644 --- a/osc.spec +++ b/osc.spec @@ -2,7 +2,7 @@ # when rebasing check what they are using on # http://download.opensuse.org/repositories/openSUSE:/Tools/Fedora_31/src/ # update the obsrel to match the upstream release number -%global obsrel 281.1 +%global obsrel 303.1 # osc plugin support %global osc_plugin_dir %{_prefix}/lib/osc-plugins @@ -25,31 +25,24 @@ %endif # Real release number -%global baserelease 5 +%global baserelease 1 Name: osc Summary: Open Build Service Commander -Version: 0.167.1 +Version: 0.169.1 # Bump the release as necessary to ensure we're one level up from upstream Release: %{obsrel}.%{baserelease}%{?dist} License: GPLv2+ URL: https://github.com/openSUSE/osc Source: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -# Backports from upstream -## Fix various "osc chroot" regressions -Patch0001: 0001-fix-regression-in-osc-chroot.patch - # Proposed fixes ## Fix osc build --local-package runs ## From: https://github.com/openSUSE/osc/pull/573 Patch0101: 0101-Do-not-attempt-to-run-source-services-when-local-pac.patch -## Use html.escape instead of cgi.escape -## From: https://github.com/openSUSE/osc/pull/681 -Patch0102: 0102-Swap-all-usage-of-cgi.escape-with-html.escape.patch -## Fix broken importsrcpkg for Python 3 -## From: https://github.com/openSUSE/osc/pull/713 -Patch0103: 0103-fix-broken-importsrcpkg-for-python3.patch +## Fix ElementTree imports to work with Python 3.9 +## https://github.com/openSUSE/osc/pull/800 +Patch0102: 0001-Fix-and-standardize-ElementTree-imports-for-Python-3.patch BuildArch: noarch @@ -142,6 +135,11 @@ EOM %dir %{osc_plugin_dir} %changelog +* Tue Jun 02 2020 Adam Williamson - 0.169.1-303.1.1 +- Update to 0.169.1 +- Drop merged or otherwise-fixed PRs +- Backport PR #800 to fix build with Python 3.9 + * Tue May 26 2020 Miro HronĨok - 0.167.1-281.1.5 - Rebuilt for Python 3.9 diff --git a/sources b/sources index 20cda24..3a6d42d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (osc-0.167.1.tar.gz) = 523593d212c6377a8d5c6b1189be0a5fd197643b554a4a54f9d51eea126fb3dc87c0ed2989ffabf94fd466a8d8c07db10396c8993f00ce8e3a11df823f096274 +SHA512 (osc-0.169.1.tar.gz) = 9429864bcc61c47505c8924cdf35164289f55adf890bc6f28e3fb6063438a53722384594512e3c12662dffc1d31b84f2b292af873d72b3de552a27aa4403ab16