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
blacklist_groups:
@ -53,12 +60,19 @@ blacklist:
# We removed cronie a while ago, should nuke these too
- crontabs
- at
# This drags in a huge dependency set of dnf bits
- abrt-cli
- abrt-desktop
- abrt-java-connector
# Requires libreoffice
- unoconv
# Will change to git-core
- git
# Apps
- rhythmbox
- evolution
- evolution-ews
- evolution-help
# Random tools: container
- net-tools
- nmap-ncat

View File

@ -25,6 +25,7 @@ with open(base_pkgs_path) as f:
with open('comps-sync-blacklist.yml') as f:
doc = yaml.load(f)
comps_blacklist = doc['blacklist']
comps_whitelist = doc['whitelist']
comps_blacklist_groups = doc['blacklist_groups']
manifest_packages = set(manifest['packages'])
@ -38,16 +39,12 @@ workstation_product_packages = set()
# just the workstation environment.
comps = libcomps.Comps()
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
# 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 = {}
for gid in ws_environ.group_ids:
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])
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
n_manifest_new = len(comps_unknown)
if n_manifest_new == 0:
print("All manifest packages are already listed in comps.")
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):
print(' ' + pkg)
manifest_packages.remove(pkg)

View File

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