From 7784f1e86b15ae7a1b992860f6726388adf292cc Mon Sep 17 00:00:00 2001 From: David Shea Date: Jan 31 2019 12:26:58 +0000 Subject: Support subpackage scriptlets Add add_(pre|post|preun|postun) to Subpackage, and write out subpackage scriptlets in gather_spec_file --- diff --git a/rpmfluff.py b/rpmfluff.py index 2b10c27..8e409f4 100644 --- a/rpmfluff.py +++ b/rpmfluff.py @@ -580,6 +580,11 @@ class Subpackage: self.section_conflicts = "" self.section_files = "" + self.section_pre = "" + self.section_post = "" + self.section_preun = "" + self.section_postun = "" + self.triggers = [] def add_group(self, groupName): @@ -626,6 +631,18 @@ class Subpackage: "Add a Conflicts: line" self.section_conflicts += "Conflicts: %s\n"%conflicts + def add_pre(self, preLine): + self.section_pre += preLine + + def add_post(self, postLine): + self.section_post += postLine + + def add_preun(self, preunLine): + self.section_preun += preunLine + + def add_postun(self, postunLine): + self.section_postun += postunLine + def add_trigger(self, trigger): "Add a trigger" self.triggers.append(trigger) @@ -857,6 +874,26 @@ class SimpleRpmBuild(RpmBuild): self.basePackage.write_triggers(specFile) for sub in self.subPackages: + if sub.section_pre != '': + specFile.write("%%pre %s\n"%sub.suffix) + specFile.write(sub.section_pre) + specFile.write("\n") + + if sub.section_post != '': + specFile.write("%%post %s\n"%sub.suffix) + specFile.write(sub.section_post) + specFile.write("\n") + + if sub.section_preun != '': + specFile.write("%%preun %s\n"%sub.suffix) + specFile.write(sub.section_preun) + specFile.write("\n") + + if sub.section_postun != '': + specFile.write("%%postun %s\n"%sub.suffix) + specFile.write(sub.section_postun) + specFile.write("\n") + sub.write_triggers(specFile) specFile.write("%files\n") @@ -1603,6 +1640,58 @@ class TestSimpleRpmBuild(unittest.TestCase): self.assert_header_has_item(rpmFile, rpm.RPMTAG_POSTUN, script) + def test_add_sub_pre(self): + script = 'echo "Hello World!"' + self.rpmbuild.add_subpackage('subpackage-pre-test') + sub = self.rpmbuild.get_subpackage('subpackage-pre-test') + sub.add_pre(script) + self.rpmbuild.make() + # FIXME: sort out architecture properly + for arch in [expectedArch]: + rpmFile = self.rpmbuild.get_built_rpm(arch, "%s-%s" % (self.rpmbuild.name, sub.suffix)) + self.assert_is_file(rpmFile) + + self.assert_header_has_item(rpmFile, rpm.RPMTAG_PREIN, script) + + def test_add_sub_post(self): + script = 'echo "Hello World!"' + self.rpmbuild.add_subpackage('subpackage-post-test') + sub = self.rpmbuild.get_subpackage('subpackage-post-test') + sub.add_post(script) + self.rpmbuild.make() + # FIXME: sort out architecture properly + for arch in [expectedArch]: + rpmFile = self.rpmbuild.get_built_rpm(arch, "%s-%s" % (self.rpmbuild.name, sub.suffix)) + self.assert_is_file(rpmFile) + + self.assert_header_has_item(rpmFile, rpm.RPMTAG_POSTIN, script) + + def test_add_sub_preun(self): + script = 'echo "Hello World!"' + self.rpmbuild.add_subpackage('subpackage-preun-test') + sub = self.rpmbuild.get_subpackage('subpackage-preun-test') + sub.add_preun(script) + self.rpmbuild.make() + # FIXME: sort out architecture properly + for arch in [expectedArch]: + rpmFile = self.rpmbuild.get_built_rpm(arch, "%s-%s" % (self.rpmbuild.name, sub.suffix)) + self.assert_is_file(rpmFile) + + self.assert_header_has_item(rpmFile, rpm.RPMTAG_PREUN, script) + + def test_add_sub_postun(self): + script = 'echo "Hello World!"' + self.rpmbuild.add_subpackage('subpackage-postun-test') + sub = self.rpmbuild.get_subpackage('subpackage-postun-test') + sub.add_postun(script) + self.rpmbuild.make() + # FIXME: sort out architecture properly + for arch in [expectedArch]: + rpmFile = self.rpmbuild.get_built_rpm(arch, "%s-%s" % (self.rpmbuild.name, sub.suffix)) + self.assert_is_file(rpmFile) + + self.assert_header_has_item(rpmFile, rpm.RPMTAG_POSTUN, script) + def test_subpackage_names_A(self): self.assertEquals(self.rpmbuild.get_subpackage_names(), ["test-subpackage-names-A"])