comps-sync pass 3: Subset of workstation

The mental model here is simpler if our base package set is truly a subset of
Workstation.

Extend `comps-sync` to also support deleting packages not in the Workstation
set.  The only exception here is that we still want `kernel-modules-extra`
which for some reason is only in `livecd-tools`...I don't understand that.
For now I added a `whitelist`.

The set of resulting changes here generally makes sense.  We lose some
random unnecessary stuff like `teamd` and `dracut-network`, and `mactel-boot`.
We gain things like the desktop background packages, `sshpass`, and some `qt`
bits.

```
+  NetworkManager-openconnect-gnome-1.2.4-9.fc28.x86_64 (fedora-rawhide)
-  NetworkManager-team-1:1.10.2-1.fc28.x86_64 (fedora-rawhide)
+  NetworkManager-ssh-1.2.7-1.fc28.x86_64 (fedora-rawhide)
+  NetworkManager-ssh-gnome-1.2.7-1.fc28.x86_64 (fedora-rawhide)
-  adobe-source-han-sans-cn-fonts-1.004-6.fc28.noarch (fedora-rawhide)
-  adobe-source-han-sans-tw-fonts-1.004-7.fc28.noarch (fedora-rawhide)
+  alsa-ucm-1.1.5-2.fc28.x86_64 (fedora-rawhide)
-  autogen-libopts-5.18.12-6.fc28.x86_64 (fedora-rawhide)
+  cyrus-sasl-plain-2.1.26-37.fc28.x86_64 (fedora-rawhide)
+  desktop-backgrounds-gnome-27.0.0-2.fc28.noarch (fedora-rawhide)
-  dmraid-1.0.0.rc16-37.fc28.x86_64 (fedora-rawhide)
-  dmraid-events-1.0.0.rc16-37.fc28.x86_64 (fedora-rawhide)
-  dracut-config-generic-046-92.git20180118.fc28.1.x86_64 (fedora-rawhide)
-  dracut-network-046-92.git20180118.fc28.1.x86_64 (fedora-rawhide)
-  fcoe-utils-1.0.32-3.fc27.x86_64 (fedora-rawhide)
+  f27-backgrounds-base-27.0.1-3.fc28.noarch (fedora-rawhide)
+  f27-backgrounds-gnome-27.0.1-3.fc28.noarch (fedora-rawhide)
-  fedora-productimg-workstation-27-2.fc28.x86_64 (fedora-rawhide)
-  gnutls-dane-3.6.2-1.fc28.x86_64 (fedora-rawhide)
-  gnutls-utils-3.6.2-1.fc28.x86_64 (fedora-rawhide)
-  hfsplus-tools-540.1.linux3-15.fc28.x86_64 (fedora-rawhide)
-  highlight-3.39-3.fc27.x86_64 (fedora-rawhide)
-  libconfig-1.5-9.fc28.x86_64 (fedora-rawhide)
+  libdnet-1.12-25.fc28.x86_64 (fedora-rawhide)
+  libmspack-0.6-0.2.alpha.fc28.x86_64 (fedora-rawhide)
-  libnl3-cli-3.4.0-3.fc28.x86_64 (fedora-rawhide)
+  libsane-hpaio-3.17.11-8.fc28.x86_64 (fedora-rawhide)
-  libteam-1.27-6.fc28.x86_64 (fedora-rawhide)
-  libvirt-client-4.0.0-1.fc28.x86_64 (fedora-rawhide)
-  lldpad-1.0.1-9.git036e314.fc28.x86_64 (fedora-rawhide)
-  mactel-boot-0.9-16.fc27.x86_64 (fedora-rawhide)
-  naver-nanum-fonts-common-3.020-20.20140930.fc28.noarch (fedora-rawhide)
-  naver-nanum-gothic-fonts-3.020-20.20140930.fc28.noarch (fedora-rawhide)
+  open-vm-tools-10.2.0-3.fc28.x86_64 (fedora-rawhide)
+  open-vm-tools-desktop-10.2.0-3.fc28.x86_64 (fedora-rawhide)
+  pinentry-gnome3-1.1.0-2.fc28.x86_64 (fedora-rawhide)
+  pulseaudio-module-x11-11.1-11.fc28.x86_64 (fedora-rawhide)
+  pulseaudio-utils-11.1-11.fc28.x86_64 (fedora-rawhide)
+  qt5-qtdeclarative-5.10.1-1.fc28.x86_64 (fedora-rawhide)
+  qt5-qtxmlpatterns-5.10.1-1.fc28.x86_64 (fedora-rawhide)
+  realmd-0.16.3-9.fc28.x86_64 (fedora-rawhide)
-  sgpio-1.2.0.10-20.fc28.x86_64 (fedora-rawhide)
+  sshpass-1.06-5.fc28.x86_64 (fedora-rawhide)
-  teamd-1.27-6.fc28.x86_64 (fedora-rawhide)
-  unbound-libs-1.6.8-3.fc28.x86_64 (fedora-rawhide)
-  vlgothic-fonts-20141206-10.fc28.noarch (fedora-rawhide)
+  virtualbox-guest-additions-5.2.6-4.fc28.x86_64 (fedora-rawhide)
+  xmlsec1-openssl-1.2.25-3.fc28.x86_64 (fedora-rawhide)
```
This commit is contained in:
Colin Walters 2018-02-24 15:29:07 -05:00
parent d0b52b1f19
commit 369c6d4e81
3 changed files with 68 additions and 40 deletions

View file

@ -1,4 +1,11 @@
# This file has a list of packages to skip from comps that we don't want. # This file has a list of packages to skip from comps that we don't want, plus
# a few whitelisted things.
# For some reason today these are just in livecd-tools...
whitelist:
- kernel
- kernel-modules
- kernel-modules-extra
# Entirely skip all packages in libreoffice # Entirely skip all packages in libreoffice
blacklist_groups: blacklist_groups:
@ -53,12 +60,19 @@ blacklist:
# We removed cronie a while ago, should nuke these too # We removed cronie a while ago, should nuke these too
- crontabs - crontabs
- at - at
# This drags in a huge dependency set of dnf bits
- abrt-cli
- abrt-desktop
- abrt-java-connector
# Requires libreoffice # Requires libreoffice
- unoconv - unoconv
# Will change to git-core # Will change to git-core
- git - git
# Apps # Apps
- rhythmbox - rhythmbox
- evolution
- evolution-ews
- evolution-help
# Random tools: container # Random tools: container
- net-tools - net-tools
- nmap-ncat - nmap-ncat

View file

@ -25,6 +25,7 @@ with open(base_pkgs_path) as f:
with open('comps-sync-blacklist.yml') as f: with open('comps-sync-blacklist.yml') as f:
doc = yaml.load(f) doc = yaml.load(f)
comps_blacklist = doc['blacklist'] comps_blacklist = doc['blacklist']
comps_whitelist = doc['whitelist']
comps_blacklist_groups = doc['blacklist_groups'] comps_blacklist_groups = doc['blacklist_groups']
manifest_packages = set(manifest['packages']) manifest_packages = set(manifest['packages'])
@ -38,16 +39,12 @@ workstation_product_packages = set()
# just the workstation environment. # just the workstation environment.
comps = libcomps.Comps() comps = libcomps.Comps()
comps.fromxml_f(args.src) comps.fromxml_f(args.src)
for group in comps.groups:
for pkg in group.packages:
comps_packages.add(pkg.name)
for pkg in manifest_packages:
if pkg not in comps_packages:
comps_unknown.add(pkg)
# Parse the workstation-product environment, gathering # Parse the workstation-product environment, gathering
# default or mandatory packages. # default or mandatory packages.
ws_environ = comps.environments['workstation-product-environment'] ws_env_name = 'workstation-product-environment'
ws_ostree_name = 'workstation-ostree-support'
ws_environ = comps.environments[ws_env_name]
ws_pkgs = {} ws_pkgs = {}
for gid in ws_environ.group_ids: for gid in ws_environ.group_ids:
group = comps.groups_match(id=gid.name)[0] group = comps.groups_match(id=gid.name)[0]
@ -69,12 +66,22 @@ for gid in ws_environ.group_ids:
ws_pkgs[pkgname] = pkgdata = (pkg.type, pkgdata[1]) ws_pkgs[pkgname] = pkgdata = (pkg.type, pkgdata[1])
pkgdata[1].add(gid.name) pkgdata[1].add(gid.name)
ws_ostree_pkgs = set()
for pkg in comps.groups_match(id=ws_ostree_name)[0].packages:
ws_ostree_pkgs.add(pkg.name)
for pkg in manifest_packages:
if (pkg not in comps_whitelist and
pkg not in ws_pkgs and
pkg not in ws_ostree_pkgs):
comps_unknown.add(pkg)
# Look for packages in the manifest but not in comps at all # Look for packages in the manifest but not in comps at all
n_manifest_new = len(comps_unknown) n_manifest_new = len(comps_unknown)
if n_manifest_new == 0: if n_manifest_new == 0:
print("All manifest packages are already listed in comps.") print("All manifest packages are already listed in comps.")
else: else:
print("{} packages not in comps:".format(n_manifest_new)) print("{} packages not in {}:".format(n_manifest_new, ws_env_name))
for pkg in sorted(comps_unknown): for pkg in sorted(comps_unknown):
print(' ' + pkg) print(' ' + pkg)
manifest_packages.remove(pkg) manifest_packages.remove(pkg)

View file

@ -5,22 +5,21 @@
"NetworkManager", "NetworkManager",
"NetworkManager-adsl", "NetworkManager-adsl",
"NetworkManager-bluetooth", "NetworkManager-bluetooth",
"NetworkManager-config-connectivity-fedora", "NetworkManager-openconnect-gnome",
"NetworkManager-openconnect",
"NetworkManager-openvpn-gnome", "NetworkManager-openvpn-gnome",
"NetworkManager-pptp-gnome", "NetworkManager-pptp-gnome",
"NetworkManager-team", "NetworkManager-ssh-gnome",
"NetworkManager-vpnc-gnome", "NetworkManager-vpnc-gnome",
"NetworkManager-wifi", "NetworkManager-wifi",
"NetworkManager-wwan", "NetworkManager-wwan",
"PackageKit-gstreamer-plugin", "PackageKit-gstreamer-plugin",
"aajohan-comfortaa-fonts", "aajohan-comfortaa-fonts",
"abattis-cantarell-fonts", "abattis-cantarell-fonts",
"adobe-source-han-sans-cn-fonts", "acl",
"adobe-source-han-sans-tw-fonts",
"adwaita-qt4", "adwaita-qt4",
"adwaita-qt5", "adwaita-qt5",
"alsa-plugins-pulseaudio", "alsa-plugins-pulseaudio",
"alsa-ucm",
"alsa-utils", "alsa-utils",
"at-spi2-atk", "at-spi2-atk",
"at-spi2-core", "at-spi2-core",
@ -50,30 +49,27 @@
"colord", "colord",
"control-center", "control-center",
"coreutils", "coreutils",
"cpio",
"cryptsetup", "cryptsetup",
"cups", "cups",
"cups-filters", "cups-filters",
"curl", "curl",
"cyrus-sasl-plain",
"dconf",
"dejavu-sans-fonts", "dejavu-sans-fonts",
"dejavu-sans-mono-fonts", "dejavu-sans-mono-fonts",
"dejavu-serif-fonts", "dejavu-serif-fonts",
"device-mapper-multipath", "desktop-backgrounds-gnome",
"dhcp-client", "dhcp-client",
"dmraid",
"dnsmasq", "dnsmasq",
"dos2unix", "dos2unix",
"dracut-config-generic",
"dracut-network",
"e2fsprogs", "e2fsprogs",
"ebtables",
"efibootmgr",
"eog", "eog",
"ethtool", "ethtool",
"fcoe-utils",
"fedora-bookmarks", "fedora-bookmarks",
"fedora-productimg-workstation",
"fedora-release-workstation", "fedora-release-workstation",
"fedora-user-agent-chrome", "fedora-user-agent-chrome",
"file",
"file-roller", "file-roller",
"filesystem", "filesystem",
"firefox", "firefox",
@ -141,6 +137,9 @@
"google-noto-serif-kr-fonts", "google-noto-serif-kr-fonts",
"google-noto-serif-sc-fonts", "google-noto-serif-sc-fonts",
"google-noto-serif-tc-fonts", "google-noto-serif-tc-fonts",
"gstreamer1-plugin-mpg123",
"gstreamer1-plugins-bad-free",
"gstreamer1-plugins-good",
"gutenprint", "gutenprint",
"gutenprint-cups", "gutenprint-cups",
"gvfs-afc", "gvfs-afc",
@ -151,11 +150,9 @@
"gvfs-gphoto2", "gvfs-gphoto2",
"gvfs-mtp", "gvfs-mtp",
"gvfs-smb", "gvfs-smb",
"gzip",
"hfsplus-tools",
"highlight",
"hostname", "hostname",
"hplip", "hplip",
"hunspell",
"hyperv-daemons", "hyperv-daemons",
"ibus-gtk2", "ibus-gtk2",
"ibus-gtk3", "ibus-gtk3",
@ -205,8 +202,8 @@
"liberation-serif-fonts", "liberation-serif-fonts",
"libertas-usb8388-firmware", "libertas-usb8388-firmware",
"libproxy-mozjs", "libproxy-mozjs",
"libvirt-client", "librsvg2",
"libvirt-daemon-kvm", "libsane-hpaio",
"lklug-fonts", "lklug-fonts",
"logrotate", "logrotate",
"lohit-assamese-fonts", "lohit-assamese-fonts",
@ -220,13 +217,10 @@
"lohit-telugu-fonts", "lohit-telugu-fonts",
"lrzsz", "lrzsz",
"lsof", "lsof",
"lvm2",
"lzop",
"m17n-db",
"mactel-boot",
"man-db", "man-db",
"man-pages", "man-pages",
"mcelog", "mcelog",
"mdadm",
"mesa-dri-drivers", "mesa-dri-drivers",
"microcode_ctl", "microcode_ctl",
"mlocate", "mlocate",
@ -235,10 +229,11 @@
"mtr", "mtr",
"nautilus", "nautilus",
"nautilus-sendto", "nautilus-sendto",
"naver-nanum-gothic-fonts",
"nfs-utils", "nfs-utils",
"nss-altfiles", "nss-altfiles",
"nss-mdns", "nss-mdns",
"ntfsprogs",
"open-vm-tools-desktop",
"openssh-clients", "openssh-clients",
"openssh-server", "openssh-server",
"orca", "orca",
@ -249,19 +244,29 @@
"passwd", "passwd",
"passwdqc", "passwdqc",
"pciutils", "pciutils",
"pinentry-gnome3",
"pinfo", "pinfo",
"plymouth", "plymouth",
"plymouth-system-theme", "plymouth-system-theme",
"policycoreutils", "policycoreutils",
"polkit", "polkit",
"poppler-utils",
"procps-ng", "procps-ng",
"psacct", "psacct",
"pulseaudio",
"pulseaudio-module-x11",
"pulseaudio-utils",
"qemu-guest-agent", "qemu-guest-agent",
"qemu-kvm",
"qgnomeplatform", "qgnomeplatform",
"radvd", "qt",
"qt-settings",
"qt-x11",
"qt5-qtbase",
"qt5-qtbase-gui",
"qt5-qtdeclarative",
"qt5-qtxmlpatterns",
"quota",
"rdist", "rdist",
"realmd",
"rng-tools", "rng-tools",
"rootfiles", "rootfiles",
"rp-pppoe", "rp-pppoe",
@ -275,7 +280,6 @@
"setup", "setup",
"setuptool", "setuptool",
"shadow-utils", "shadow-utils",
"sheepdog",
"sil-abyssinica-fonts", "sil-abyssinica-fonts",
"sil-mingzat-fonts", "sil-mingzat-fonts",
"sil-nuosu-fonts", "sil-nuosu-fonts",
@ -291,30 +295,34 @@
"symlinks", "symlinks",
"system-config-printer-udev", "system-config-printer-udev",
"systemd", "systemd",
"systemd-udev",
"tabish-eeyek-fonts", "tabish-eeyek-fonts",
"tar", "tar",
"tcpdump", "tcpdump",
"teamd",
"telnet", "telnet",
"thai-scalable-waree-fonts", "thai-scalable-waree-fonts",
"time", "time",
"totem", "totem",
"totem-nautilus", "totem-nautilus",
"traceroute", "traceroute",
"tracker",
"tracker-miners",
"tree", "tree",
"unzip",
"usb_modeswitch", "usb_modeswitch",
"usbutils", "usbutils",
"util-linux", "util-linux",
"vconfig", "vconfig",
"vim-minimal", "vim-minimal",
"vlgothic-fonts", "virtualbox-guest-additions",
"wget", "wget",
"which", "which",
"wireless-tools", "wireless-tools",
"words", "words",
"wvdial", "wvdial",
"xdg-desktop-portal",
"xdg-desktop-portal-gtk",
"xdg-user-dirs-gtk", "xdg-user-dirs-gtk",
"xfsprogs",
"xorg-x11-drv-ati", "xorg-x11-drv-ati",
"xorg-x11-drv-evdev", "xorg-x11-drv-evdev",
"xorg-x11-drv-fbdev", "xorg-x11-drv-fbdev",
@ -330,7 +338,6 @@
"xorg-x11-utils", "xorg-x11-utils",
"xorg-x11-xauth", "xorg-x11-xauth",
"xorg-x11-xinit", "xorg-x11-xinit",
"xz",
"yelp", "yelp",
"zd1211-firmware", "zd1211-firmware",
"zip" "zip"