From f751950ee24bb2dfe677426e874a34446be2ea29 Mon Sep 17 00:00:00 2001 From: Michal Suchanek Date: Nov 22 2021 13:05:20 +0000 Subject: Merge remote-tracking branch 'scripts' into packaging --- diff --git a/scripts/git_sort/tests/opensuse-15.0/Dockerfile b/scripts/git_sort/tests/opensuse-15.0/Dockerfile deleted file mode 100644 index 0959660..0000000 --- a/scripts/git_sort/tests/opensuse-15.0/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -# https://hub.docker.com/r/opensuse/leap/ -FROM opensuse/leap:15.0 AS base - -RUN zypper -n ref - -FROM base AS packages - -RUN zypper -n in git python3 python3-dbm rcs - -RUN git config --global user.email "you@example.com" -RUN git config --global user.name "Your Name" - -RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/openSUSE_Leap_15.0/Kernel:tools.repo -RUN zypper -n in python3-pygit2 - -RUN zypper -n ar -G https://download.opensuse.org/repositories/home:/benjamin_poirier:/series_sort/openSUSE_Leap_15.0/home:benjamin_poirier:series_sort.repo -RUN zypper -n in --from home_benjamin_poirier_series_sort quilt - -FROM packages - -VOLUME /scripts - -WORKDIR /scripts/git_sort - -CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/opensuse-15.3/Dockerfile b/scripts/git_sort/tests/opensuse-15.3/Dockerfile new file mode 100644 index 0000000..6c45bc6 --- /dev/null +++ b/scripts/git_sort/tests/opensuse-15.3/Dockerfile @@ -0,0 +1,22 @@ +# https://hub.docker.com/r/opensuse/leap/ +FROM opensuse/leap:15.3 AS base + +RUN zypper -n ref + +FROM base AS packages + +RUN zypper -n in git python3 python3-dbm rcs + +RUN git config --global user.email "you@example.com" +RUN git config --global user.name "Your Name" + +RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/openSUSE_Leap_15.3/Kernel:tools.repo +RUN zypper -n in python3-pygit2 quilt + +FROM packages + +VOLUME /scripts + +WORKDIR /scripts/git_sort + +CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/opensuse-tumbleweed/Dockerfile b/scripts/git_sort/tests/opensuse-tumbleweed/Dockerfile index 182c8d0..3497815 100644 --- a/scripts/git_sort/tests/opensuse-tumbleweed/Dockerfile +++ b/scripts/git_sort/tests/opensuse-tumbleweed/Dockerfile @@ -10,8 +10,8 @@ RUN zypper -n in git python3 python3-dbm python3-pygit2 rcs RUN git config --global user.email "you@example.com" RUN git config --global user.name "Your Name" -RUN zypper -n ar -G https://download.opensuse.org/repositories/home:/benjamin_poirier:/series_sort/openSUSE_Tumbleweed/home:benjamin_poirier:series_sort.repo -RUN zypper -n in --from home_benjamin_poirier_series_sort quilt +RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/openSUSE_Factory/Kernel:tools.repo +RUN zypper -n in --from Kernel_tools quilt FROM packages diff --git a/scripts/git_sort/tests/run_all.sh b/scripts/git_sort/tests/run_all.sh index 8764b19..0177c1a 100755 --- a/scripts/git_sort/tests/run_all.sh +++ b/scripts/git_sort/tests/run_all.sh @@ -2,19 +2,11 @@ libdir=$(dirname "$(readlink -f "$0")") -# The sle12-sp2 image is not picked up by registry.suse.de, import it manually -if [ $(docker image ls -q benjamin_poirier/docker_images/sle-12-sp2:latest | wc -l) -ne 1 ]; then - echo "Fetching base image for sle12-sp2..." - wget -q -O - http://download.suse.de/ibs/home:/benjamin_poirier:/docker_images:/SLE-12-SP2/images/x86_64/sles12sp2-docker-image.rpm | \ - rpm2cpio - | cpio -i --quiet --to-stdout *.tar.xz | xzcat | \ - docker import - benjamin_poirier/docker_images/sle-12-sp2 -fi - for release in \ - sle12-sp2 \ - sle12-sp3 \ + sle12-sp4 \ + sle12-sp5 \ sle15 \ - opensuse-15.0 \ + opensuse-15.3 \ opensuse-tumbleweed \ ; do echo "Building container image for $release..." diff --git a/scripts/git_sort/tests/sle12-sp2/Dockerfile b/scripts/git_sort/tests/sle12-sp2/Dockerfile deleted file mode 100644 index f5bfc48..0000000 --- a/scripts/git_sort/tests/sle12-sp2/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM benjamin_poirier/docker_images/sle-12-sp2:latest AS base - -RUN zypper -n --no-gpg-checks ref - -FROM base AS packages - -RUN zypper -n in git python3 python3-dbm rcs - -RUN git config --global user.email "you@example.com" -RUN git config --global user.name "Your Name" - -RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/SLE_12_SP2/Kernel:tools.repo -RUN zypper -n in python3-pygit2 - -RUN zypper -n ar -G https://download.opensuse.org/repositories/home:/benjamin_poirier:/series_sort/SLE_12_SP2/home:benjamin_poirier:series_sort.repo -RUN zypper -n in --from home_benjamin_poirier_series_sort quilt - -FROM packages - -VOLUME /scripts - -WORKDIR /scripts/git_sort - -CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/sle12-sp3/Dockerfile b/scripts/git_sort/tests/sle12-sp3/Dockerfile deleted file mode 100644 index df097b6..0000000 --- a/scripts/git_sort/tests/sle12-sp3/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -# http://registry.suse.de/ -FROM registry.suse.de/home/benjamin_poirier/docker_images/sle-12-sp3/images/suse/sles12sp3:2.0.3 AS base - -RUN zypper -n ref - -FROM base AS packages - -RUN zypper -n in git python3 python3-dbm rcs - -RUN git config --global user.email "you@example.com" -RUN git config --global user.name "Your Name" - -RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/SLE_12_SP3/Kernel:tools.repo -RUN zypper -n in python3-pygit2 - -RUN zypper -n ar -G https://download.opensuse.org/repositories/home:/benjamin_poirier:/series_sort/SLE_12_SP3/home:benjamin_poirier:series_sort.repo -RUN zypper -n in --from home_benjamin_poirier_series_sort quilt - -FROM packages - -VOLUME /scripts - -WORKDIR /scripts/git_sort - -CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/sle12-sp4/Dockerfile b/scripts/git_sort/tests/sle12-sp4/Dockerfile new file mode 100644 index 0000000..e0c545b --- /dev/null +++ b/scripts/git_sort/tests/sle12-sp4/Dockerfile @@ -0,0 +1,31 @@ +# http://registry.suse.de/ +FROM registry.suse.de/suse/containers/sle-server/12-sp4/containers/suse/sles12sp4:latest AS base + +RUN rpm -e container-suseconnect +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-12:/GA/standard/SUSE:SLE-12:GA.repo +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-12:/Update/standard/SUSE:SLE-12:Update.repo +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP4-Server-GM/$(rpm -E %_arch)/DVD1/ DVD1 +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP4-Server-GM/$(rpm -E %_arch)/DVD2/ DVD2 +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP4-Server-GM/$(rpm -E %_arch)/DVD3/ DVD3 +# RUN zypper -n ar -G http://updates.suse.de/SUSE/Products/SLE-SDK/12-SP4/$(rpm -E %_arch)/product/ SDK +RUN zypper -n ar -G http://download.suse.de/update/build.suse.de/SUSE/Updates/SLE-SERVER/12-SP4/$(rpm -E %_arch)/update/SUSE:Updates:SLE-SERVER:12-SP4:$(rpm -E %_arch).repo + +RUN zypper -n ref + +FROM base AS packages + +RUN zypper -n in git-core python3 python3-dbm rcs + +RUN git config --global user.email "you@example.com" +RUN git config --global user.name "Your Name" + +RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/SLE_12_SP4/Kernel:tools.repo +RUN zypper -n in python3-pygit2 quilt + +FROM packages + +VOLUME /scripts + +WORKDIR /scripts/git_sort + +CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/sle12-sp5/Dockerfile b/scripts/git_sort/tests/sle12-sp5/Dockerfile new file mode 100644 index 0000000..c8b601d --- /dev/null +++ b/scripts/git_sort/tests/sle12-sp5/Dockerfile @@ -0,0 +1,31 @@ +# http://registry.suse.de/ +FROM registry.suse.de/suse/containers/sle-server/12-sp5/containers/suse/sles12sp5:latest AS base + +RUN rpm -e container-suseconnect +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-12:/GA/standard/SUSE:SLE-12:GA.repo +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-12:/Update/standard/SUSE:SLE-12:Update.repo +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP5-Server-GM/$(rpm -E %_arch)/DVD1/ DVD1 +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP5-Server-GM/$(rpm -E %_arch)/DVD2/ DVD2 +RUN zypper -n ar -G http://download.suse.de/install/SLP/SLE-12-SP5-Server-GM/$(rpm -E %_arch)/DVD3/ DVD3 +# RUN zypper -n ar -G http://updates.suse.de/SUSE/Products/SLE-SDK/12-SP5/$(rpm -E %_arch)/product/ SDK +RUN zypper -n ar -G http://download.suse.de/update/build.suse.de/SUSE/Updates/SLE-SERVER/12-SP5/$(rpm -E %_arch)/update/SUSE:Updates:SLE-SERVER:12-SP5:$(rpm -E %_arch).repo + +RUN zypper -n ref + +FROM base AS packages + +RUN zypper -n in git-core python3 python3-dbm rcs + +RUN git config --global user.email "you@example.com" +RUN git config --global user.name "Your Name" + +RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/SLE_12_SP5/Kernel:tools.repo +RUN zypper -n in python3-pygit2 quilt + +FROM packages + +VOLUME /scripts + +WORKDIR /scripts/git_sort + +CMD python3 -m unittest discover -v diff --git a/scripts/git_sort/tests/sle15/Dockerfile b/scripts/git_sort/tests/sle15/Dockerfile index 3b08991..3fd5bf4 100644 --- a/scripts/git_sort/tests/sle15/Dockerfile +++ b/scripts/git_sort/tests/sle15/Dockerfile @@ -1,20 +1,20 @@ # http://registry.suse.de/ -FROM registry.suse.de/home/david_chang/branches/devel/docker/images/sle15/images/suse/sles15:2.0.3 AS base +FROM registry.suse.de/suse/containers/sle-server/15/containers/bci/python:3.9 AS base +RUN rpm -e container-suseconnect +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-15:/GA/standard/SUSE:SLE-15:GA.repo +RUN zypper -n ar -G http://download.suse.de/ibs/SUSE:/SLE-15:/Update/standard/SUSE:SLE-15:Update.repo RUN zypper -n ref FROM base AS packages -RUN zypper -n in git python3 python3-dbm rcs awk +RUN zypper -n in git-core python3 python3-dbm rcs awk RUN git config --global user.email "you@example.com" RUN git config --global user.name "Your Name" RUN zypper -n ar -G https://download.opensuse.org/repositories/Kernel:/tools/SLE_15/Kernel:tools.repo -RUN zypper -n in python3-pygit2 - -RUN zypper -n ar -G https://download.opensuse.org/repositories/home:/benjamin_poirier:/series_sort/SLE_15/home:benjamin_poirier:series_sort.repo -RUN zypper -n in --from home_benjamin_poirier_series_sort quilt +RUN zypper -n in python3-pygit2 quilt FROM packages diff --git a/scripts/python/check-patchhdr b/scripts/python/check-patchhdr index bfa28fc..bcfb56d 100755 --- a/scripts/python/check-patchhdr +++ b/scripts/python/check-patchhdr @@ -24,15 +24,19 @@ if __name__ == "__main__": parser.error("Must either provide filename(s) or use --stdin") sys.exit(128) + if options.stdin and len(args) > 1 : + parser.error("Only one filename can be used with --stdin") + sys.exit(128) + errors = 0 if options.stdin: + if args: + fn = args[0] + else: + fn = "" try: - checker = header.Checker(sys.stdin, options.update) + checker = header.Checker(sys.stdin, options.update, fn) except header.HeaderException as e: - if args: - fn = args[0] - else: - fn = "" print(e.error_message(fn), file=sys.stderr) if not fn.startswith("patches.xen/"): errors += 1 @@ -40,7 +44,7 @@ if __name__ == "__main__": for fn in args: try: f = open(fn) - checker = header.Checker(f, options.update) + checker = header.Checker(f, options.update, fn) f.close() except header.HeaderException as e: print(e.error_message(fn), file=sys.stderr) diff --git a/scripts/python/suse_git/header.py b/scripts/python/suse_git/header.py index c12697d..1cbf0a9 100755 --- a/scripts/python/suse_git/header.py +++ b/scripts/python/suse_git/header.py @@ -13,6 +13,7 @@ tag_regex = re.compile("(\S+):[ \t]*(.*)") tag_map = { 'Patch-mainline' : { 'required' : True, + 'required_on_kabi' : False, 'accepted' : [ { # In mainline repo, tagged for release @@ -41,6 +42,7 @@ tag_map = { 'name' : 'No', 'match' : 'No,?\s+.+', 'excludes' : [ 'Git-commit', 'Git-repo' ], + 'error' : "Please use 'Not yet' or 'Never'", }, { # Never, typically used for patches that have been rejected # for upstream inclusion but still have a compelling reason @@ -276,9 +278,12 @@ class Tag: return False class HeaderChecker(patch.PatchChecker): - def __init__(self, stream, updating=False): + def __init__(self, stream, updating=False, filename=""): patch.PatchChecker.__init__(self) self.updating = updating + self.filename = filename + self.kabi = re.match("^patches[.]kabi/", self.filename) + if isinstance(stream, str): stream = StringIO(stream) self.stream = stream @@ -293,6 +298,10 @@ class HeaderChecker(patch.PatchChecker): def get_rulename(self, ruleset, rulename): if rulename in ruleset: + if self.kabi: + kabi_rule = "%s_on_kabi" % rulename + if kabi_rule in ruleset: + return kabi_rule if self.updating: updating_rule = "%s_on_update" % rulename if updating_rule in ruleset: @@ -438,6 +447,9 @@ class HeaderChecker(patch.PatchChecker): found = True if not found: required = True + if self.kabi and 'required_on_kabi' in tag_map[entry]: + if not tag_map[entry]['required_on_kabi']: + required = False if self.updating and 'required_on_update' in tag_map[entry]: if not tag_map[entry]['required_on_update']: required = False diff --git a/scripts/python/tests/test_header.py b/scripts/python/tests/test_header.py index 003c0c8..59a2906 100755 --- a/scripts/python/tests/test_header.py +++ b/scripts/python/tests/test_header.py @@ -368,7 +368,12 @@ Patch-mainline: No, handled differently upstream References: bsc#12345 Acked-by: developer@suse.com """ - self.header = header.Checker(text) + with self.assertRaises(header.HeaderException) as cm: + self.header = header.Checker(text) + + e = cm.exception + self.assertEqual(1, e.errors(header.FormatError)) + self.assertEqual(1, e.errors()) def test_patch_mainline_not_yet_detail(self): text = """ @@ -701,3 +706,12 @@ Acked-by: developer@suse.com self.assertEqual(1, e.errors(header.MissingTagError)) self.assertTrue(e.tag_is_missing('references')) self.assertEqual(1, e.errors()) + + def test_no_patch_mainline_for_kabi(self): + text = """ +From: developer@site.com +Subject: some patch +References: FATE#123456 +Acked-by: developer@suse.com +""" + self.header = header.Checker(text, False, "patches.kabi/FATE123456_fix_kabi.patch")