Inspired by recent fedora-devel list discussion, here's a patch to save some space from images by excluding obsoleted packages. Arguably those packages should just die and not hang around in the repos, but these undead packages seem fairly persistent...

This is what I see with F18 install DVD:

Before patch:
-rw-r--r--. 1 root root 4687134720 Nov 12 21:10 Fedora-18-x86_64-DVD.iso

With the patch:
-rw-r--r--. 1 root root 4550819840 Nov 12 21:01 Fedora-18-x86_64-DVD.iso

This is what makes up the difference:
[root@turre tmp]# grep obsoleted pungi-exclude-obsoletes.log
Pungi:INFO: Excluding ql2100-firmware.noarch (obsoleted by linux-firmware.noarch)
Pungi:INFO: Excluding grub.x86_64 (obsoleted by grub2.x86_64)
Pungi:INFO: Excluding rt61pci-firmware.noarch (obsoleted by linux-firmware.noarch) Pungi:INFO: Excluding ql23xx-firmware.noarch (obsoleted by linux-firmware.noarch) Pungi:INFO: Excluding ql2200-firmware.noarch (obsoleted by linux-firmware.noarch) Pungi:INFO: Excluding rt73usb-firmware.noarch (obsoleted by linux-firmware.noarch)
Pungi:INFO: Excluding module-init-tools.x86_64 (obsoleted by kmod.x86_64)
Pungi:INFO: Excluding maven-shared-common-artifact-filters.noarch (obsoleted by maven-common-artifact-filters.noarch)
Pungi:INFO: Excluding jaxen-bootstrap.noarch (obsoleted by jaxen.noarch)
Pungi:INFO: Excluding maven-shared-dependency-tree.noarch (obsoleted by maven-dependency-tree.noarch)
Pungi:INFO: Excluding dvipng.x86_64 (obsoleted by texlive-dvipng-bin.x86_64)
Pungi:INFO: Excluding xdvik.x86_64 (obsoleted by texlive-xdvi-bin.x86_64)
Pungi:INFO: Excluding dvipdfmx.x86_64 (obsoleted by texlive-dvipdfmx-bin.x86_64) Pungi:INFO: Excluding dvipdfm.x86_64 (obsoleted by texlive-dvipdfm-bin.noarch)
Pungi:INFO: Excluding nfs-utils-lib.x86_64 (obsoleted by libnfsidmap.x86_64)
[root@turre tmp]#

        - Panu -
>From 1c789008c8f4c3647e5087e7f9a2126a8645d660 Mon Sep 17 00:00:00 2001
From: Panu Matilainen <[email protected]>
Date: Tue, 13 Nov 2012 08:45:40 +0200
Subject: [PATCH] Exclude obsoleted packages from images

Avoid dragging undead packages which would just be replaced by something
else in the next 'yum update' into space-constrained images.
---
 src/pypungi/__init__.py |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/pypungi/__init__.py b/src/pypungi/__init__.py
index a2ac2fc..2894dcd 100644
--- a/src/pypungi/__init__.py
+++ b/src/pypungi/__init__.py
@@ -336,6 +336,15 @@ class Pungi(pypungi.PungiBase):
                         pkg_sack.remove(pkg)
                         break
 
+            # weed out obsoleted packages
+            if pkg.nvra not in self.excluded_pkgs:
+                obsoleters = pkg.obsoletedBy(self.ayum.pkgSack.searchObsoletes(pkg.name), limit=1)
+                if obsoleters:
+                    obs = obsoleters[0]
+                    self.logger.info("Excluding %s.%s (obsoleted by %s.%s)" % (pkg.name, pkg.arch, obs.name, obs.arch))
+                    self.excluded_pkgs[pkg.nvra] = pkg
+                    pkg_sack.remove(pkg)
+                
         return pkg_sack
 
     def getPackageDeps(self, po):
-- 
1.7.7.6

--
buildsys mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/buildsys

Reply via email to