From c65b587f0c680e316f65dd65650c7587f306974f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Tue, 23 Feb 2021 14:53:23 +0100 Subject: [PATCH] main() --- rediff-patches.py | 82 +++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 39 deletions(-) diff --git a/rediff-patches.py b/rediff-patches.py index d2d6c59..6b2f760 100755 --- a/rediff-patches.py +++ b/rediff-patches.py @@ -37,42 +37,46 @@ def diff(diffdir_org, diffdir, builddir, output): if err.returncode != 1: raise -specfile = sys.argv[1] - -tempdir = tempfile.TemporaryDirectory(dir="/dev/shm") -topdir = tempdir.name -builddir = os.path.join(topdir, 'BUILD') - -rpm.addMacro("_builddir", builddir) - -r = rpm.spec(specfile) - -patches = {} - -for (name, nr, flags) in r.sources: - if flags & RPMBUILD_ISPATCH: - patches[nr] = name - -applied_patches = {} -re_patch = re.compile(r'^%patch(?P\d+)\w*(?P.*)') -for line in r.parsed.split('\n'): - m = re_patch.match(line) - if not m: - continue - patch_nr = int(m.group('patch_number')) - patch_args = m.group('patch_args') - applied_patches[patch_nr] = patch_args - -appsourcedir = rpm.expandMacro("%{_sourcedir}") -appbuilddir = rpm.expandMacro("%{_builddir}/%{?buildsubdir}") - -for (patch_nr, patch_name) in sorted(patches.items()): - if patch_nr not in applied_patches: - continue - print("*** patch %d: %s" % (patch_nr, patch_name), file=sys.stderr) - unpack(specfile, builddir, patch_nr) - os.rename(appbuilddir, appbuilddir + ".org") - unpack(specfile, builddir, patch_nr + 1) - diff(appbuilddir + ".org", appbuilddir, builddir, os.path.join(topdir, os.path.join(appsourcedir, patch_name + ".rediff"))) - shutil.rmtree(builddir) -tempdir.cleanup() +def main(): + specfile = sys.argv[1] + + tempdir = tempfile.TemporaryDirectory(dir="/dev/shm") + topdir = tempdir.name + builddir = os.path.join(topdir, 'BUILD') + + rpm.addMacro("_builddir", builddir) + + r = rpm.spec(specfile) + + patches = {} + + for (name, nr, flags) in r.sources: + if flags & RPMBUILD_ISPATCH: + patches[nr] = name + + applied_patches = {} + re_patch = re.compile(r'^%patch(?P\d+)\w*(?P.*)') + for line in r.parsed.split('\n'): + m = re_patch.match(line) + if not m: + continue + patch_nr = int(m.group('patch_number')) + patch_args = m.group('patch_args') + applied_patches[patch_nr] = patch_args + + appsourcedir = rpm.expandMacro("%{_sourcedir}") + appbuilddir = rpm.expandMacro("%{_builddir}/%{?buildsubdir}") + + for (patch_nr, patch_name) in sorted(patches.items()): + if patch_nr not in applied_patches: + continue + print("*** patch %d: %s" % (patch_nr, patch_name), file=sys.stderr) + unpack(specfile, builddir, patch_nr) + os.rename(appbuilddir, appbuilddir + ".org") + unpack(specfile, builddir, patch_nr + 1) + diff(appbuilddir + ".org", appbuilddir, builddir, os.path.join(topdir, os.path.join(appsourcedir, patch_name + ".rediff"))) + shutil.rmtree(builddir) + tempdir.cleanup() + +if __name__ == '__main__': + main() -- 2.44.0