Rework Silverblue to split packages common to all variants

This commit is contained in:
Timothée Ravier 2018-07-15 20:10:38 +02:00 committed by Colin Walters
parent 6d028cb372
commit 04c703cede
8 changed files with 221 additions and 126 deletions

View file

@ -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

View file

@ -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))

View file

@ -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"
]
}

View file

@ -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"
]

View file

@ -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,

View file

@ -1 +0,0 @@
fedora-atomic-workstation.json

66
gnome-desktop-pkgs.json Normal file
View file

@ -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": []
}

12
silverblue.json Normal file
View file

@ -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"
]
}