Merge #65 Add initial comps-sync script, use it to trim package set

This commit is contained in:
Dennis Gilmore 2018-02-17 21:34:16 +00:00
commit 6d78cf5cd3
4 changed files with 411 additions and 400 deletions

98
comps-sync.py Executable file
View file

@ -0,0 +1,98 @@
#!/usr/bin/python3
# Usage: ./comps-sync.py /path/to/comps-f28.xml.in
# Currently just *removes* packages from the manifest
# which are not mentioned in comps.
import os, sys, subprocess, argparse, shlex, json
import libcomps
def fatal(msg):
print >>sys.stderr, msg
sys.exit(1)
parser = argparse.ArgumentParser()
parser.add_argument("--save", help="Write changes", action='store_true')
parser.add_argument("src", help="Source path")
args = parser.parse_args()
base_pkgs_path = 'fedora-workstation-base-pkgs.json'
with open(base_pkgs_path) as f:
manifest = json.load(f)
manifest_packages = set(manifest['packages'])
comps_unknown = set()
comps_packages = set()
workstation_product_packages = set()
# Parse comps, and build up a set of all packages so we
# can find packages not listed in comps *at all*, beyond
# 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_pkgs = {}
for gid in ws_environ.group_ids:
group = comps.groups_match(id=gid.name)[0]
for pkg in group.packages:
pkgname = pkg.name
if pkg.type not in (libcomps.PACKAGE_TYPE_DEFAULT,
libcomps.PACKAGE_TYPE_MANDATORY):
continue
pkgdata = ws_pkgs.get(pkgname)
if pkgdata is None:
ws_pkgs[pkgname] = pkgdata = (pkg.type, set([gid.name]))
if (pkgdata[0] == libcomps.PACKAGE_TYPE_DEFAULT and
pkg.type == libcomps.PACKAGE_TYPE_MANDATORY):
ws_pkgs[pkgname] = pkgdata = (pkg.type, pkgdata[1])
pkgdata[1].add(gid.name)
# 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))
for pkg in sorted(comps_unknown):
print(' ' + pkg)
manifest_packages.remove(pkg)
# Look for packages in workstation but not in the manifest
ws_added = {}
for (pkg,data) in ws_pkgs.items():
if pkg not in manifest_packages:
ws_added[pkg] = data
def format_pkgtype(n):
if n == libcomps.PACKAGE_TYPE_DEFAULT:
return 'default'
elif n == libcomps.PACKAGE_TYPE_MANDATORY:
return 'mandatory'
else:
assert False
n_comps_new = len(ws_added)
if n_comps_new == 0:
print("All comps packages are already listed in manifest.")
else:
print("{} packages not in manifest:".format(n_comps_new))
for pkg in sorted(ws_added):
(req, groups) = ws_added[pkg]
print(' {} ({}, groups: {})'.format(pkg, format_pkgtype(req), ', '.join(groups)))
if (n_manifest_new > 0 or n_comps_new > 0) and args.save:
manifest['packages'] = sorted(manifest_packages)
with open(base_pkgs_path, 'w') as f:
json.dump(manifest, f, indent=4, sort_keys=True)
f.write('\n')
print("Wrote {}".format(base_pkgs_path))

View file

@ -8,6 +8,7 @@
"mutate-os-release": "28",
"packages": [
"flatpak",
"atomic",
"buildah",
"git-core",

View file

@ -0,0 +1,311 @@
{
"00packages-comment": "DO NOT EDIT! This content is generated from comps-sync.py",
"packages": [
"ModemManager",
"NetworkManager",
"NetworkManager-adsl",
"NetworkManager-bluetooth",
"NetworkManager-config-connectivity-fedora",
"NetworkManager-openconnect",
"NetworkManager-openvpn-gnome",
"NetworkManager-pptp-gnome",
"NetworkManager-team",
"NetworkManager-vpnc-gnome",
"NetworkManager-wifi",
"NetworkManager-wwan",
"PackageKit-gstreamer-plugin",
"aajohan-comfortaa-fonts",
"adobe-source-han-sans-cn-fonts",
"adobe-source-han-sans-tw-fonts",
"adwaita-qt4",
"adwaita-qt5",
"alsa-plugins-pulseaudio",
"alsa-utils",
"at-spi2-atk",
"at-spi2-core",
"atmel-firmware",
"attr",
"audit",
"authconfig",
"avahi",
"b43-fwcutter",
"b43-openfwwf",
"baobab",
"basesystem",
"bash",
"bash-completion",
"bc",
"bind-utils",
"bluez-cups",
"bridge-utils",
"btrfs-progs",
"bzip2",
"caribou",
"caribou-gtk2-module",
"caribou-gtk3-module",
"cheese",
"chrony",
"cifs-utils",
"control-center",
"coreutils",
"cryptsetup",
"cups",
"cups-filters",
"curl",
"dejavu-sans-fonts",
"dejavu-sans-mono-fonts",
"dejavu-serif-fonts",
"device-mapper-multipath",
"dmraid",
"dos2unix",
"dracut-config-generic",
"dracut-network",
"ebtables",
"efibootmgr",
"eog",
"ethtool",
"fcoe-utils",
"fedora-bookmarks",
"fedora-productimg-workstation",
"fedora-release-workstation",
"fedora-user-agent-chrome",
"file-roller",
"firefox",
"firewalld",
"foomatic",
"foomatic-db-ppds",
"fpaste",
"fprintd-pam",
"fros-gnome",
"gdm",
"gedit",
"glib-networking",
"glibc",
"glibc-all-langpacks",
"gnome-backgrounds",
"gnome-bluetooth",
"gnome-boxes",
"gnome-calculator",
"gnome-characters",
"gnome-classic-session",
"gnome-clocks",
"gnome-color-manager",
"gnome-contacts",
"gnome-disk-utility",
"gnome-font-viewer",
"gnome-getting-started-docs",
"gnome-initial-setup",
"gnome-logs",
"gnome-maps",
"gnome-screenshot",
"gnome-session-wayland-session",
"gnome-session-xsession",
"gnome-settings-daemon",
"gnome-shell",
"gnome-shell-extension-background-logo",
"gnome-software",
"gnome-system-monitor",
"gnome-terminal",
"gnome-themes-standard",
"gnome-user-docs",
"gnome-user-share",
"gnome-weather",
"gnu-free-mono-fonts",
"gnu-free-sans-fonts",
"gnu-free-serif-fonts",
"gnupg2",
"google-noto-emoji-fonts",
"google-noto-sans-lisu-fonts",
"google-noto-sans-mandaic-fonts",
"google-noto-sans-meetei-mayek-fonts",
"google-noto-sans-tagalog-fonts",
"google-noto-sans-tai-tham-fonts",
"google-noto-sans-tai-viet-fonts",
"gutenprint",
"gutenprint-cups",
"gvfs-afc",
"gvfs-afp",
"gvfs-archive",
"gvfs-fuse",
"gvfs-goa",
"gvfs-gphoto2",
"gvfs-mtp",
"gvfs-smb",
"gzip",
"hfsplus-tools",
"highlight",
"hostname",
"hplip",
"hyperv-daemons",
"ibus-gtk2",
"ibus-gtk3",
"ibus-hangul",
"ibus-kkc",
"ibus-libpinyin",
"ibus-libzhuyin",
"ibus-m17n",
"ibus-qt",
"ibus-rawcode",
"ibus-typing-booster",
"initscripts",
"iproute",
"iptstate",
"iputils",
"ipw2100-firmware",
"ipw2200-firmware",
"iwl100-firmware",
"iwl1000-firmware",
"iwl105-firmware",
"iwl135-firmware",
"iwl2000-firmware",
"iwl2030-firmware",
"iwl3160-firmware",
"iwl3945-firmware",
"iwl4965-firmware",
"iwl5000-firmware",
"iwl5150-firmware",
"iwl6000-firmware",
"iwl6000g2a-firmware",
"iwl6000g2b-firmware",
"iwl6050-firmware",
"iwl7260-firmware",
"jomolhari-fonts",
"jwhois",
"kbd",
"kernel",
"kernel-modules-extra",
"khmeros-base-fonts",
"less",
"libcanberra-gtk2",
"libcanberra-gtk3",
"libertas-usb8388-firmware",
"libproxy-mozjs",
"libvirt-client",
"libvirt-daemon-kvm",
"logrotate",
"lohit-assamese-fonts",
"lohit-bengali-fonts",
"lohit-devanagari-fonts",
"lohit-gujarati-fonts",
"lohit-gurmukhi-fonts",
"lohit-kannada-fonts",
"lohit-odia-fonts",
"lohit-tamil-fonts",
"lohit-telugu-fonts",
"lrzsz",
"lsof",
"lvm2",
"lzop",
"m17n-db",
"mactel-boot",
"man-db",
"man-pages",
"mcelog",
"mesa-dri-drivers",
"microcode_ctl",
"mlocate",
"mousetweaks",
"mpage",
"mtr",
"nautilus",
"nautilus-sendto",
"naver-nanum-gothic-fonts",
"nfs-utils",
"nss-altfiles",
"nss-mdns",
"openssh-clients",
"openssh-server",
"orca",
"paktype-naskh-basic-fonts",
"pam_krb5",
"paps",
"paratype-pt-sans-fonts",
"passwd",
"passwdqc",
"pciutils",
"pinfo",
"plymouth",
"plymouth-system-theme",
"policycoreutils",
"polkit",
"poppler-utils",
"procps-ng",
"psacct",
"qemu-guest-agent",
"qemu-kvm",
"qgnomeplatform",
"radvd",
"rdist",
"rng-tools",
"rootfiles",
"rp-pppoe",
"rsync",
"rygel",
"samba-client",
"sane-backends-drivers-scanners",
"scl-utils",
"selinux-policy-targeted",
"setup",
"setuptool",
"shadow-utils",
"sheepdog",
"sil-abyssinica-fonts",
"sil-mingzat-fonts",
"sil-nuosu-fonts",
"sil-padauk-fonts",
"smc-meera-fonts",
"sos",
"spice-vdagent",
"sssd",
"sssd-common",
"stix-fonts",
"sudo",
"sushi",
"symlinks",
"system-config-printer-udev",
"systemd",
"tabish-eeyek-fonts",
"tar",
"tcpdump",
"teamd",
"telnet",
"thai-scalable-waree-fonts",
"time",
"totem",
"totem-nautilus",
"traceroute",
"tree",
"usb_modeswitch",
"usbutils",
"util-linux",
"vconfig",
"vim-minimal",
"vlgothic-fonts",
"wget",
"which",
"wireless-tools",
"words",
"wvdial",
"xdg-user-dirs-gtk",
"xfsprogs",
"xorg-x11-drv-ati",
"xorg-x11-drv-evdev",
"xorg-x11-drv-fbdev",
"xorg-x11-drv-intel",
"xorg-x11-drv-libinput",
"xorg-x11-drv-nouveau",
"xorg-x11-drv-openchrome",
"xorg-x11-drv-qxl",
"xorg-x11-drv-vesa",
"xorg-x11-drv-vmware",
"xorg-x11-drv-wacom",
"xorg-x11-server-Xorg",
"xorg-x11-utils",
"xorg-x11-xauth",
"xorg-x11-xinit",
"xz",
"yelp",
"zd1211-firmware",
"zip"
]
}

View file

@ -1,5 +1,6 @@
{
"ref": "fedora/rawhide/x86_64/workstation-base",
"include": "fedora-workstation-base-pkgs.json",
"selinux": true,
"documentation": true,
@ -13,406 +14,6 @@
"check-passwd": { "type": "file", "filename": "passwd" },
"check-groups": { "type": "file", "filename": "group" },
"packages": [
"aajohan-comfortaa-fonts",
"adobe-source-han-sans-cn-fonts",
"adobe-source-han-sans-tw-fonts",
"adwaita-qt4",
"adwaita-qt5",
"alsa-plugins-pulseaudio",
"alsa-utils",
"atmel-firmware",
"at-spi2-atk",
"at-spi2-core",
"attr",
"audit",
"authconfig",
"avahi",
"b43-fwcutter",
"b43-openfwwf",
"baobab",
"basesystem",
"bash",
"bash-completion",
"bc",
"bcache-tools",
"bind-license",
"bind-utils",
"bluez-cups",
"bridge-utils",
"btrfs-progs",
"bzip2",
"caribou",
"caribou-gtk2-module",
"caribou-gtk3-module",
"cheese",
"chrony",
"cifs-utils",
"control-center",
"coreutils",
"crda",
"cryptsetup",
"cups",
"cups-client",
"cups-filesystem",
"cups-filters",
"curl",
"dejavu-sans-fonts",
"dejavu-sans-mono-fonts",
"dejavu-serif-fonts",
"device-mapper-multipath",
"dmidecode",
"dmraid",
"dmraid-events",
"dos2unix",
"dracut-config-generic",
"dracut-network",
"ebtables",
"efibootmgr",
"eog",
"ethtool",
"fcoe-utils",
"fedora-bookmarks",
"fedora-productimg-workstation",
"fedora-release-workstation",
"fedora-user-agent-chrome",
"file-roller",
"firefox",
"firewalld",
"firewalld-filesystem",
"flatpak",
"foomatic",
"foomatic-db",
"foomatic-db-filesystem",
"foomatic-db-ppds",
"fpaste",
"fprintd-pam",
"fros",
"fros-gnome",
"gdm",
"gedit",
"glibc",
"glibc-all-langpacks",
"glib-networking",
"gnome-backgrounds",
"gnome-bluetooth",
"gnome-boxes",
"gnome-calculator",
"gnome-characters",
"gnome-classic-session",
"gnome-clocks",
"gnome-color-manager",
"gnome-contacts",
"gnome-disk-utility",
"gnome-font-viewer",
"gnome-getting-started-docs",
"gnome-initial-setup",
"gnome-logs",
"gnome-maps",
"gnome-screenshot",
"gnome-session-wayland-session",
"gnome-session-xsession",
"gnome-settings-daemon",
"gnome-shell",
"gnome-shell-extension-background-logo",
"gnome-software",
"gnome-system-monitor",
"gnome-terminal",
"gnome-themes-standard",
"gnome-user-docs",
"gnome-user-share",
"gnome-weather",
"gnu-free-fonts-common",
"gnu-free-mono-fonts",
"gnu-free-sans-fonts",
"gnu-free-serif-fonts",
"gnupg",
"gnupg2",
"google-noto-emoji-fonts",
"google-noto-sans-lisu-fonts",
"google-noto-sans-mandaic-fonts",
"google-noto-sans-meetei-mayek-fonts",
"google-noto-sans-tagalog-fonts",
"google-noto-sans-tai-tham-fonts",
"google-noto-sans-tai-viet-fonts",
"gutenprint",
"gutenprint-cups",
"gvfs-afc",
"gvfs-afp",
"gvfs-archive",
"gvfs-fuse",
"gvfs-goa",
"gvfs-gphoto2",
"gvfs-mtp",
"gvfs-smb",
"gzip",
"hfsplus-tools",
"highlight",
"hostname",
"hplip",
"hyperv-daemons",
"hyperv-daemons-license",
"hypervfcopyd",
"hypervkvpd",
"hypervvssd",
"ibus",
"ibus-gtk2",
"ibus-gtk3",
"ibus-hangul",
"ibus-kkc",
"ibus-libpinyin",
"ibus-libzhuyin",
"ibus-m17n",
"ibus-qt",
"ibus-rawcode",
"ibus-setup",
"ibus-typing-booster",
"initscripts",
"iproute",
"ipset",
"iptstate",
"iputils",
"ipw2100-firmware",
"ipw2200-firmware",
"isomd5sum",
"iw",
"iwl1000-firmware",
"iwl100-firmware",
"iwl105-firmware",
"iwl135-firmware",
"iwl2000-firmware",
"iwl2030-firmware",
"iwl3160-firmware",
"iwl3945-firmware",
"iwl4965-firmware",
"iwl5000-firmware",
"iwl5150-firmware",
"iwl6000-firmware",
"iwl6000g2a-firmware",
"iwl6000g2b-firmware",
"iwl6050-firmware",
"iwl7260-firmware",
"jomolhari-fonts",
"jwhois",
"kbd",
"kbd-legacy",
"kbd-misc",
"kernel",
"kernel-modules-extra",
"kexec-tools",
"keybinder3",
"khmeros-base-fonts",
"khmeros-fonts-common",
"langtable",
"langtable-data",
"langtable-python3",
"less",
"libcanberra-gtk2",
"libcanberra-gtk3",
"libertas-usb8388-firmware",
"libproxy-mozjs",
"libsss_idmap",
"libsss_nss_idmap",
"libvirt-daemon",
"libvirt-daemon-driver-interface",
"libvirt-daemon-driver-network",
"libvirt-daemon-driver-nodedev",
"libvirt-daemon-driver-nwfilter",
"libvirt-daemon-driver-qemu",
"libvirt-daemon-driver-secret",
"libvirt-daemon-driver-storage",
"libvirt-daemon-kvm",
"libvirt-client",
"libvirt-gconfig",
"libvirt-glib",
"libvirt-gobject",
"libXxf86dga",
"lldpad",
"logrotate",
"lohit-assamese-fonts",
"lohit-bengali-fonts",
"lohit-devanagari-fonts",
"lohit-gujarati-fonts",
"lohit-gurmukhi-fonts",
"lohit-kannada-fonts",
"lohit-odia-fonts",
"lohit-tamil-fonts",
"lohit-telugu-fonts",
"lpsolve",
"lrzsz",
"lsof",
"lttng-ust",
"lvm2",
"lzop",
"m17n-db",
"m17n-lib",
"mactel-boot",
"man-db",
"man-pages",
"mcelog",
"media-player-info",
"mesa-dri-drivers",
"mesa-libxatracker",
"microcode_ctl",
"mlocate",
"ModemManager",
"mousetweaks",
"mpage",
"mtools",
"mtr",
"nautilus",
"nautilus-sendto",
"naver-nanum-fonts-common",
"naver-nanum-gothic-fonts",
"NetworkManager",
"NetworkManager-adsl",
"NetworkManager-bluetooth",
"NetworkManager-config-connectivity-fedora",
"NetworkManager-openconnect",
"NetworkManager-openvpn-gnome",
"NetworkManager-pptp-gnome",
"NetworkManager-team",
"NetworkManager-vpnc-gnome",
"NetworkManager-wifi",
"NetworkManager-wwan",
"nfs-utils",
"nss-altfiles",
"nss-mdns",
"nss-softokn-freebl",
"numad",
"opencc",
"openssh-clients",
"openssh-server",
"orca",
"PackageKit-gstreamer-plugin",
"paktype-naskh-basic-fonts",
"pam_krb5",
"paps",
"paratype-pt-sans-fonts",
"passwd",
"passwdqc",
"passwdqc-lib",
"pciutils",
"pinfo",
"plymouth",
"plymouth-plugin-label",
"plymouth-plugin-two-step",
"plymouth-system-theme",
"plymouth-theme-charge",
"policycoreutils",
"polkit",
"poppler-utils",
"procps-ng",
"psacct",
"qemu-common",
"qemu-guest-agent",
"qemu-img",
"qemu-kvm",
"qemu-system-x86",
"qgnomeplatform",
"radvd",
"rdist",
"rng-tools",
"rootfiles",
"rp-pppoe",
"rsync",
"rygel",
"samba-client",
"sane-backends-drivers-scanners",
"scl-utils",
"seabios-bin",
"seavgabios-bin",
"selinux-policy-targeted",
"setup",
"setuptool",
"sgabios-bin",
"sgpio",
"shadow-utils",
"sheepdog",
"shim",
"sil-abyssinica-fonts",
"sil-mingzat-fonts",
"sil-nuosu-fonts",
"sil-padauk-fonts",
"skkdic",
"smc-fonts-common",
"smc-meera-fonts",
"sos",
"spice-server",
"spice-vdagent",
"sssd",
"sssd-ad",
"sssd-client",
"sssd-common",
"sssd-common-pac",
"sssd-ipa",
"sssd-krb5",
"sssd-krb5-common",
"sssd-ldap",
"stix-fonts",
"sudo",
"sushi",
"symlinks",
"system-config-printer-udev",
"systemd",
"tabish-eeyek-fonts",
"tar",
"tcl",
"tcpdump",
"teamd",
"telnet",
"thai-scalable-fonts-common",
"thai-scalable-waree-fonts",
"time",
"totem",
"totem-nautilus",
"traceroute",
"tree",
"usb_modeswitch",
"usb_modeswitch-data",
"usbutils",
"usermode",
"userspace-rcu",
"util-linux",
"vconfig",
"vim-minimal",
"virglrenderer",
"vlgothic-fonts",
"wget",
"which",
"wireless-tools",
"words",
"wpa_supplicant",
"wvdial",
"xcb-util-image",
"xcb-util-keysyms",
"xcb-util-renderutil",
"xcb-util-wm",
"xdg-user-dirs-gtk",
"xdg-utils",
"xen-licenses",
"xfsprogs",
"xorg-x11-drv-ati",
"xorg-x11-drv-evdev",
"xorg-x11-drv-fbdev",
"xorg-x11-drv-intel",
"xorg-x11-drv-libinput",
"xorg-x11-drv-nouveau",
"xorg-x11-drv-openchrome",
"xorg-x11-drv-qxl",
"xorg-x11-drv-vesa",
"xorg-x11-drv-vmware",
"xorg-x11-drv-wacom",
"xorg-x11-server-Xorg",
"xorg-x11-utils",
"xorg-x11-xauth",
"xorg-x11-xinit",
"xz",
"yelp",
"zd1211-firmware",
"zip"
],
"default_target": "graphical.target",
"comment-for-packages": "Keep this in sync with fedora-atomic-host.json from fedora-atomic",