From 04c703cede3d8c2e7c41bc94ea98951dcdae70b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Ravier?= Date: Sun, 15 Jul 2018 20:10:38 +0200 Subject: [PATCH] Rework Silverblue to split packages common to all variants --- comps-sync-blacklist.yml | 66 +++++++++++---- comps-sync.py | 79 ++++++++++++++++- fedora-atomic-workstation.json | 21 ----- ...kgs.json => fedora-common-ostree-pkgs.json | 84 ------------------- ...ion-base.json => fedora-common-ostree.json | 18 +++- fedora-ostree-workstation.json | 1 - gnome-desktop-pkgs.json | 66 +++++++++++++++ silverblue.json | 12 +++ 8 files changed, 221 insertions(+), 126 deletions(-) delete mode 100644 fedora-atomic-workstation.json rename fedora-workstation-base-pkgs.json => fedora-common-ostree-pkgs.json (72%) rename fedora-workstation-base.json => fedora-common-ostree.json (73%) delete mode 120000 fedora-ostree-workstation.json create mode 100644 gnome-desktop-pkgs.json create mode 100644 silverblue.json diff --git a/comps-sync-blacklist.yml b/comps-sync-blacklist.yml index 0458716..65d6b7f 100644 --- a/comps-sync-blacklist.yml +++ b/comps-sync-blacklist.yml @@ -10,7 +10,10 @@ whitelist: # Entirely skip all packages in libreoffice blacklist_groups: - libreoffice + - gnome-desktop + - container-management +# Common blacklist for all ostree desktop versions blacklist: core: # We use rpm-ostree for the host @@ -28,24 +31,12 @@ blacklist: # Needs to be arch specific - powerpc-utils - lsvpd + # KDE specific? + - sssd-kcm base-x: # These are for arm...need to handle arch-specific bits - xorg-x11-drv-armsoc - xorg-x11-drv-omap - gnome-desktop: - # https://github.com/pbrezina/authselect/issues/48 - - fprintd-pam - # We use rpm-ostree for the host - - PackageKit-command-not-found - - PackageKit-gtk3-module - # Apps - - evince - - evince-djvu - - evince-nautilus - - file-roller-nautilus - - gnome-calendar - - gnome-documents - - gnome-photos workstation-product: # We use rpm-ostree for the host - dnf @@ -88,9 +79,15 @@ blacklist: - net-tools - nmap-ncat # filesystem tools, again priv container - - symlinks - dosfstools - ntfs-3g + # Misc + - dos2unix + # Gnome specific + - desktop-backgrounds-gnome + - gnome-shell-extension-background-logo + - pinentry-gnome3 + - qgnomeplatform networkmanager-submodules: # Let's use the builtin one by default - dhcp-client @@ -99,3 +96,42 @@ blacklist: - cups-pk-helper # For now... - ghostscript + +# Desktop environment specific blacklists +desktop_blacklist: + gnome-desktop: + # https://github.com/pbrezina/authselect/issues/48 + - fprintd-pam + # We use rpm-ostree for the host + - PackageKit-command-not-found + - PackageKit-gtk3-module + # Non-critical apps -> Flatpak + - baobab + - cheese + - eog + - evince + - evince-djvu + - evince-nautilus + - file-roller + - file-roller-nautilus + - gedit + - gnome-calculator + - gnome-calendar + - gnome-clocks + - gnome-contacts + - gnome-documents + - gnome-font-viewer + - gnome-logs + - gnome-maps + - gnome-photos + - gnome-screenshot + - gnome-weather + - nautilus + - nautilus-sendto + - orca + - sane-backends-drivers-scanners + - simple-scan + - sushi + - totem + - totem-nautilus + - yelp diff --git a/comps-sync.py b/comps-sync.py index 24532aa..5c98da1 100755 --- a/comps-sync.py +++ b/comps-sync.py @@ -1,5 +1,5 @@ #!/usr/bin/python3 -# Usage: ./comps-sync.py /path/to/comps-f28.xml.in +# Usage: ./comps-sync.py /path/to/comps-f29.xml.in # # Can both remove packages from the manifest # which are not mentioned in comps, and add packages from @@ -18,15 +18,18 @@ parser.add_argument("src", help="Source path") args = parser.parse_args() -base_pkgs_path = 'fedora-workstation-base-pkgs.json' +print("Syncing packages common to all ostree based desktop versions:") + +base_pkgs_path = 'fedora-common-ostree-pkgs.json' with open(base_pkgs_path) as f: manifest = json.load(f) with open('comps-sync-blacklist.yml') as f: - doc = yaml.load(f) + doc = yaml.safe_load(f) comps_blacklist = doc['blacklist'] comps_whitelist = doc['whitelist'] comps_blacklist_groups = doc['blacklist_groups'] + comps_desktop_blacklist = doc['desktop_blacklist'] manifest_packages = set(manifest['packages']) @@ -116,3 +119,73 @@ if (n_manifest_new > 0 or n_comps_new > 0) and args.save: json.dump(manifest, f, indent=4, sort_keys=True) f.write('\n') print("Wrote {}".format(base_pkgs_path)) + + +# Generate treefiles for all desktops +for desktop in [ 'gnome-desktop' ]: + print() + print("Syncing packages for {} specific version:".format(desktop)) + + base_pkgs_path = '{}-pkgs.json'.format(desktop) + with open(base_pkgs_path) as f: + manifest = json.load(f) + + manifest_packages = set(manifest['packages']) + ws_ostree_name = desktop + + comps_unknown = set() + comps_packages = set() + workstation_product_packages = set() + + # Parse the desktop group + ws_pkgs = set() + for pkg in comps.groups_match(id=desktop)[0].packages: + pkgname = pkg.name + blacklist = comps_desktop_blacklist.get(ws_ostree_name, set()) + if pkgname in blacklist: + continue + ws_pkgs.add(pkg.name) + + for pkg in manifest_packages: + if pkg not in ws_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 {}:".format(n_manifest_new, ws_ostree_name)) + for pkg in sorted(comps_unknown): + print(' ' + pkg) + manifest_packages.remove(pkg) + + # Look for packages in workstation but not in the manifest + ws_added = set() + for pkg in ws_pkgs: + if pkg not in manifest_packages: + ws_added.add(pkg) + manifest_packages.add(pkg) + + 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): + print(' {}'.format(pkg)) + + 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)) diff --git a/fedora-atomic-workstation.json b/fedora-atomic-workstation.json deleted file mode 100644 index 962e4f5..0000000 --- a/fedora-atomic-workstation.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "ref": "fedora/rawhide/x86_64/workstation", - "repos": ["fedora-rawhide"], - - "include": "fedora-workstation-base.json", - - "automatic_version_prefix": "29", - "mutate-os-release": "29", - - "packages": [ - "flatpak", - "flatpak-builder", - "atomic", - "buildah", - "git-core", - "rpm-ostree", - "podman", - "skopeo", - "docker" - ] -} diff --git a/fedora-workstation-base-pkgs.json b/fedora-common-ostree-pkgs.json similarity index 72% rename from fedora-workstation-base-pkgs.json rename to fedora-common-ostree-pkgs.json index cdda8e2..26aece5 100644 --- a/fedora-workstation-base-pkgs.json +++ b/fedora-common-ostree-pkgs.json @@ -1,16 +1,8 @@ { "00packages-comment": "DO NOT EDIT! This content is generated from comps-sync.py", "packages": [ - "ModemManager", "NetworkManager", - "NetworkManager-adsl", "NetworkManager-bluetooth", - "NetworkManager-openconnect-gnome", - "NetworkManager-openvpn-gnome", - "NetworkManager-ppp", - "NetworkManager-pptp-gnome", - "NetworkManager-ssh-gnome", - "NetworkManager-vpnc-gnome", "NetworkManager-wifi", "NetworkManager-wwan", "PackageKit-gstreamer-plugin", @@ -22,16 +14,11 @@ "alsa-plugins-pulseaudio", "alsa-ucm", "alsa-utils", - "at-spi2-atk", - "at-spi2-core", "atmel-firmware", - "atomic", "attr", "audit", - "avahi", "b43-fwcutter", "b43-openfwwf", - "baobab", "basesystem", "bash", "bash-completion", @@ -41,7 +28,6 @@ "bridge-utils", "btrfs-progs", "bzip2", - "cheese", "chrony", "cifs-utils", "colord", @@ -52,23 +38,17 @@ "cups-filters", "curl", "cyrus-sasl-plain", - "dconf", "dejavu-sans-fonts", "dejavu-sans-mono-fonts", "dejavu-serif-fonts", - "desktop-backgrounds-gnome", "dhcp-client", "dnsmasq", - "docker", - "dos2unix", "e2fsprogs", - "eog", "ethtool", "fedora-bookmarks", "fedora-release-workstation", "fedora-user-agent-chrome", "file", - "file-roller", "filesystem", "firefox", "firewalld", @@ -76,41 +56,9 @@ "foomatic-db-ppds", "fpaste", "fros-gnome", - "gdm", - "gedit", - "glib-networking", "glibc", "glibc-all-langpacks", "glx-utils", - "gnome-backgrounds", - "gnome-bluetooth", - "gnome-boxes", - "gnome-calculator", - "gnome-characters", - "gnome-classic-session", - "gnome-clocks", - "gnome-color-manager", - "gnome-contacts", - "gnome-control-center", - "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-extra", - "gnome-user-docs", - "gnome-user-share", - "gnome-weather", "gnu-free-mono-fonts", "gnu-free-sans-fonts", "gnu-free-serif-fonts", @@ -124,14 +72,6 @@ "gstreamer1-plugins-good", "gutenprint", "gutenprint-cups", - "gvfs-afc", - "gvfs-afp", - "gvfs-archive", - "gvfs-fuse", - "gvfs-goa", - "gvfs-gphoto2", - "gvfs-mtp", - "gvfs-smb", "hostname", "hplip", "hunspell", @@ -176,15 +116,10 @@ "kernel-modules-extra", "khmeros-base-fonts", "less", - "libcanberra-gtk2", - "libcanberra-gtk3", "liberation-mono-fonts", "liberation-sans-fonts", "liberation-serif-fonts", "libertas-usb8388-firmware", - "libproxy-mozjs", - "librsvg2", - "libsane-hpaio", "linux-firmware", "logrotate", "lohit-assamese-fonts", @@ -203,14 +138,10 @@ "mcelog", "mdadm", "mesa-dri-drivers", - "mesa-libEGL", "microcode_ctl", "mlocate", - "mousetweaks", "mpage", "mtr", - "nautilus", - "nautilus-sendto", "nfs-utils", "nss-altfiles", "nss-mdns", @@ -218,7 +149,6 @@ "open-vm-tools-desktop", "openssh-clients", "openssh-server", - "orca", "paktype-naskh-basic-fonts", "pam_krb5", "paps", @@ -226,7 +156,6 @@ "passwd", "passwdqc", "pciutils", - "pinentry-gnome3", "pinfo", "plymouth", "plymouth-system-theme", @@ -237,7 +166,6 @@ "pulseaudio-module-x11", "pulseaudio-utils", "qemu-guest-agent", - "qgnomeplatform", "qt", "qt-settings", "qt-x11", @@ -252,9 +180,7 @@ "rp-pppoe", "rpm", "rsync", - "rygel", "samba-client", - "sane-backends-drivers-scanners", "scl-utils", "selinux-policy-targeted", "setup", @@ -264,7 +190,6 @@ "sil-mingzat-fonts", "sil-nuosu-fonts", "sil-padauk-fonts", - "simple-scan", "smc-meera-fonts", "sos", "spice-vdagent", @@ -273,17 +198,12 @@ "sssd-kcm", "stix-fonts", "sudo", - "sushi", "system-config-printer-udev", "systemd", "systemd-udev", "tar", "thai-scalable-waree-fonts", "time", - "totem", - "totem-nautilus", - "tracker", - "tracker-miners", "tree", "unzip", "usb_modeswitch", @@ -296,9 +216,6 @@ "which", "wireless-tools", "words", - "xdg-desktop-portal", - "xdg-desktop-portal-gtk", - "xdg-user-dirs-gtk", "xorg-x11-drv-ati", "xorg-x11-drv-evdev", "xorg-x11-drv-fbdev", @@ -314,7 +231,6 @@ "xorg-x11-utils", "xorg-x11-xauth", "xorg-x11-xinit", - "yelp", "zd1211-firmware", "zip" ] diff --git a/fedora-workstation-base.json b/fedora-common-ostree.json similarity index 73% rename from fedora-workstation-base.json rename to fedora-common-ostree.json index 3b0f32b..af20171 100644 --- a/fedora-workstation-base.json +++ b/fedora-common-ostree.json @@ -1,6 +1,20 @@ { - "ref": "fedora/rawhide/x86_64/workstation-base", - "include": "fedora-workstation-base-pkgs.json", + "ref": "fedora/rawhide/x86_64/ostree-base", + "repos": [], + + "include": "fedora-common-ostree-pkgs.json", + + "packages": [ + "atomic", + "buildah", + "docker", + "flatpak", + "git-core", + "podman", + "rpm-ostree", + "skopeo", + "xdg-desktop-portal" + ], "selinux": true, "documentation": true, diff --git a/fedora-ostree-workstation.json b/fedora-ostree-workstation.json deleted file mode 120000 index 995dcc3..0000000 --- a/fedora-ostree-workstation.json +++ /dev/null @@ -1 +0,0 @@ -fedora-atomic-workstation.json \ No newline at end of file diff --git a/gnome-desktop-pkgs.json b/gnome-desktop-pkgs.json new file mode 100644 index 0000000..f5b0db4 --- /dev/null +++ b/gnome-desktop-pkgs.json @@ -0,0 +1,66 @@ +{ + "00packages-comment": "DO NOT EDIT! This content is generated from comps-sync.py", + "include": "fedora-common-ostree.json", + "packages": [ + "ModemManager", + "NetworkManager-adsl", + "NetworkManager-openconnect-gnome", + "NetworkManager-openvpn-gnome", + "NetworkManager-ppp", + "NetworkManager-pptp-gnome", + "NetworkManager-ssh-gnome", + "NetworkManager-vpnc-gnome", + "NetworkManager-wwan", + "at-spi2-atk", + "at-spi2-core", + "avahi", + "dconf", + "fprintd-pam", + "gdm", + "glib-networking", + "gnome-backgrounds", + "gnome-bluetooth", + "gnome-boxes", + "gnome-characters", + "gnome-classic-session", + "gnome-color-manager", + "gnome-control-center", + "gnome-disk-utility", + "gnome-getting-started-docs", + "gnome-initial-setup", + "gnome-session-wayland-session", + "gnome-session-xsession", + "gnome-settings-daemon", + "gnome-shell", + "gnome-software", + "gnome-system-monitor", + "gnome-terminal", + "gnome-themes-extra", + "gnome-user-docs", + "gnome-user-share", + "gvfs-afc", + "gvfs-afp", + "gvfs-archive", + "gvfs-fuse", + "gvfs-goa", + "gvfs-gphoto2", + "gvfs-mtp", + "gvfs-smb", + "libcanberra-gtk2", + "libcanberra-gtk3", + "libproxy-mozjs", + "librsvg2", + "libsane-hpaio", + "mesa-libEGL", + "mousetweaks", + "polkit", + "rygel", + "tracker", + "tracker-miners", + "xdg-desktop-portal", + "xdg-desktop-portal-gtk", + "xdg-user-dirs-gtk" + ], + "ref": "fedora/rawhide/x86_64/gnome-desktop", + "repos": [] +} diff --git a/silverblue.json b/silverblue.json new file mode 100644 index 0000000..adcb7b7 --- /dev/null +++ b/silverblue.json @@ -0,0 +1,12 @@ +{ + "ref": "fedora/rawhide/x86_64/silverblue", + "repos": ["fedora-rawhide"], + "automatic_version_prefix": "29", + "mutate-os-release": "29", + + "include": "gnome-desktop-pkgs.json", + + "packages": [ + "xdg-desktop-portal-gtk" + ] +}