From ca41397265999ad1b3a3a87ac961b12438e5a41e Mon Sep 17 00:00:00 2001 From: David Shea Date: Jan 31 2019 12:27:29 +0000 Subject: Allow file directives to be added to symlinks Add isConfig, isDoc, and isGhost to add_installed_symlink. --- diff --git a/rpmfluff.py b/rpmfluff.py index 8e409f4..28f6182 100644 --- a/rpmfluff.py +++ b/rpmfluff.py @@ -1140,12 +1140,19 @@ class SimpleRpmBuild(RpmBuild): sub.section_files += "/%s\n"%installPath self.add_payload_check(installPath, subpackageSuffix) - def add_installed_symlink(self, installedPath, target, subpackageSuffix=None): + def add_installed_symlink(self, installedPath, target, subpackageSuffix=None, isConfig=False, isDoc=False, isGhost=False): """Add a simple symlinking into the %install phase, and pick it up in the %files list""" self.create_parent_dirs(installedPath) self.section_install += "ln -s %s $RPM_BUILD_ROOT/%s\n"%(target, installedPath) sub = self.get_subpackage(subpackageSuffix) - sub.section_files += "/%s\n"%installedPath + tag = "" + if isConfig: + tag+="%config " + if isDoc: + tag+="%doc " + if isGhost: + tag+="%ghost " + sub.section_files += '%s"/%s"\n'%(tag, installedPath) self.add_payload_check(installedPath, subpackageSuffix) def add_simple_payload_file(self): @@ -1842,6 +1849,51 @@ class TestSimpleRpmBuild(unittest.TestCase): self.assertEqual(1, len(files)) self.assertEqual("/foo", files[0][0]) + def test_config_symlink(self): + self.rpmbuild.add_installed_symlink("foo", "bar", isConfig=True) + self.rpmbuild.make() + + rpmsDir = self.rpmbuild.get_rpms_dir() + self.assert_is_dir(rpmsDir) + + for arch in [expectedArch]: + # FIXME: sort out architecture properly + rpmFile = self.rpmbuild.get_built_rpm(arch) + h = get_rpm_header(rpmFile) + files = list(h.fiFromHeader()) + self.assertEqual(1, len(files)) + self.assertEqual("/foo", files[0][0]) + + def test_doc_symlink(self): + self.rpmbuild.add_installed_symlink("foo", "bar", isDoc=True) + self.rpmbuild.make() + + rpmsDir = self.rpmbuild.get_rpms_dir() + self.assert_is_dir(rpmsDir) + + for arch in [expectedArch]: + # FIXME: sort out architecture properly + rpmFile = self.rpmbuild.get_built_rpm(arch) + h = get_rpm_header(rpmFile) + files = list(h.fiFromHeader()) + self.assertEqual(1, len(files)) + self.assertEqual("/foo", files[0][0]) + + def test_ghost_symlink(self): + self.rpmbuild.add_installed_symlink("foo", "bar", isGhost=True) + self.rpmbuild.make() + + rpmsDir = self.rpmbuild.get_rpms_dir() + self.assert_is_dir(rpmsDir) + + for arch in [expectedArch]: + # FIXME: sort out architecture properly + rpmFile = self.rpmbuild.get_built_rpm(arch) + h = get_rpm_header(rpmFile) + files = list(h.fiFromHeader()) + self.assertEqual(1, len(files)) + self.assertEqual("/foo", files[0][0]) + def test_fake_virus(self): """Ensure that adding a fake virus works as expected""" self.rpmbuild.add_fake_virus('fake-virus-infectee.exe', 'fake-virus-infectee.exe')