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 # Entirely skip all packages in libreoffice
blacklist_groups: blacklist_groups:
- libreoffice - libreoffice
- gnome-desktop
- container-management
# Common blacklist for all ostree desktop versions
blacklist: blacklist:
core: core:
# We use rpm-ostree for the host # We use rpm-ostree for the host
@ -28,24 +31,12 @@ blacklist:
# Needs to be arch specific # Needs to be arch specific
- powerpc-utils - powerpc-utils
- lsvpd - lsvpd
# KDE specific?
- sssd-kcm
base-x: base-x:
# These are for arm...need to handle arch-specific bits # These are for arm...need to handle arch-specific bits
- xorg-x11-drv-armsoc - xorg-x11-drv-armsoc
- xorg-x11-drv-omap - 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: workstation-product:
# We use rpm-ostree for the host # We use rpm-ostree for the host
- dnf - dnf
@ -88,9 +79,15 @@ blacklist:
- net-tools - net-tools
- nmap-ncat - nmap-ncat
# filesystem tools, again priv container # filesystem tools, again priv container
- symlinks
- dosfstools - dosfstools
- ntfs-3g - ntfs-3g
# Misc
- dos2unix
# Gnome specific
- desktop-backgrounds-gnome
- gnome-shell-extension-background-logo
- pinentry-gnome3
- qgnomeplatform
networkmanager-submodules: networkmanager-submodules:
# Let's use the builtin one by default # Let's use the builtin one by default
- dhcp-client - dhcp-client
@ -99,3 +96,42 @@ blacklist:
- cups-pk-helper - cups-pk-helper
# For now... # For now...
- ghostscript - 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 #!/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 # Can both remove packages from the manifest
# which are not mentioned in comps, and add packages from # 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() 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: with open(base_pkgs_path) as f:
manifest = json.load(f) manifest = json.load(f)
with open('comps-sync-blacklist.yml') as f: with open('comps-sync-blacklist.yml') as f:
doc = yaml.load(f) doc = yaml.safe_load(f)
comps_blacklist = doc['blacklist'] comps_blacklist = doc['blacklist']
comps_whitelist = doc['whitelist'] comps_whitelist = doc['whitelist']
comps_blacklist_groups = doc['blacklist_groups'] comps_blacklist_groups = doc['blacklist_groups']
comps_desktop_blacklist = doc['desktop_blacklist']
manifest_packages = set(manifest['packages']) 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) json.dump(manifest, f, indent=4, sort_keys=True)
f.write('\n') f.write('\n')
print("Wrote {}".format(base_pkgs_path)) 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", "00packages-comment": "DO NOT EDIT! This content is generated from comps-sync.py",
"packages": [ "packages": [
"ModemManager",
"NetworkManager", "NetworkManager",
"NetworkManager-adsl",
"NetworkManager-bluetooth", "NetworkManager-bluetooth",
"NetworkManager-openconnect-gnome",
"NetworkManager-openvpn-gnome",
"NetworkManager-ppp",
"NetworkManager-pptp-gnome",
"NetworkManager-ssh-gnome",
"NetworkManager-vpnc-gnome",
"NetworkManager-wifi", "NetworkManager-wifi",
"NetworkManager-wwan", "NetworkManager-wwan",
"PackageKit-gstreamer-plugin", "PackageKit-gstreamer-plugin",
@ -22,16 +14,11 @@
"alsa-plugins-pulseaudio", "alsa-plugins-pulseaudio",
"alsa-ucm", "alsa-ucm",
"alsa-utils", "alsa-utils",
"at-spi2-atk",
"at-spi2-core",
"atmel-firmware", "atmel-firmware",
"atomic",
"attr", "attr",
"audit", "audit",
"avahi",
"b43-fwcutter", "b43-fwcutter",
"b43-openfwwf", "b43-openfwwf",
"baobab",
"basesystem", "basesystem",
"bash", "bash",
"bash-completion", "bash-completion",
@ -41,7 +28,6 @@
"bridge-utils", "bridge-utils",
"btrfs-progs", "btrfs-progs",
"bzip2", "bzip2",
"cheese",
"chrony", "chrony",
"cifs-utils", "cifs-utils",
"colord", "colord",
@ -52,23 +38,17 @@
"cups-filters", "cups-filters",
"curl", "curl",
"cyrus-sasl-plain", "cyrus-sasl-plain",
"dconf",
"dejavu-sans-fonts", "dejavu-sans-fonts",
"dejavu-sans-mono-fonts", "dejavu-sans-mono-fonts",
"dejavu-serif-fonts", "dejavu-serif-fonts",
"desktop-backgrounds-gnome",
"dhcp-client", "dhcp-client",
"dnsmasq", "dnsmasq",
"docker",
"dos2unix",
"e2fsprogs", "e2fsprogs",
"eog",
"ethtool", "ethtool",
"fedora-bookmarks", "fedora-bookmarks",
"fedora-release-workstation", "fedora-release-workstation",
"fedora-user-agent-chrome", "fedora-user-agent-chrome",
"file", "file",
"file-roller",
"filesystem", "filesystem",
"firefox", "firefox",
"firewalld", "firewalld",
@ -76,41 +56,9 @@
"foomatic-db-ppds", "foomatic-db-ppds",
"fpaste", "fpaste",
"fros-gnome", "fros-gnome",
"gdm",
"gedit",
"glib-networking",
"glibc", "glibc",
"glibc-all-langpacks", "glibc-all-langpacks",
"glx-utils", "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-mono-fonts",
"gnu-free-sans-fonts", "gnu-free-sans-fonts",
"gnu-free-serif-fonts", "gnu-free-serif-fonts",
@ -124,14 +72,6 @@
"gstreamer1-plugins-good", "gstreamer1-plugins-good",
"gutenprint", "gutenprint",
"gutenprint-cups", "gutenprint-cups",
"gvfs-afc",
"gvfs-afp",
"gvfs-archive",
"gvfs-fuse",
"gvfs-goa",
"gvfs-gphoto2",
"gvfs-mtp",
"gvfs-smb",
"hostname", "hostname",
"hplip", "hplip",
"hunspell", "hunspell",
@ -176,15 +116,10 @@
"kernel-modules-extra", "kernel-modules-extra",
"khmeros-base-fonts", "khmeros-base-fonts",
"less", "less",
"libcanberra-gtk2",
"libcanberra-gtk3",
"liberation-mono-fonts", "liberation-mono-fonts",
"liberation-sans-fonts", "liberation-sans-fonts",
"liberation-serif-fonts", "liberation-serif-fonts",
"libertas-usb8388-firmware", "libertas-usb8388-firmware",
"libproxy-mozjs",
"librsvg2",
"libsane-hpaio",
"linux-firmware", "linux-firmware",
"logrotate", "logrotate",
"lohit-assamese-fonts", "lohit-assamese-fonts",
@ -203,14 +138,10 @@
"mcelog", "mcelog",
"mdadm", "mdadm",
"mesa-dri-drivers", "mesa-dri-drivers",
"mesa-libEGL",
"microcode_ctl", "microcode_ctl",
"mlocate", "mlocate",
"mousetweaks",
"mpage", "mpage",
"mtr", "mtr",
"nautilus",
"nautilus-sendto",
"nfs-utils", "nfs-utils",
"nss-altfiles", "nss-altfiles",
"nss-mdns", "nss-mdns",
@ -218,7 +149,6 @@
"open-vm-tools-desktop", "open-vm-tools-desktop",
"openssh-clients", "openssh-clients",
"openssh-server", "openssh-server",
"orca",
"paktype-naskh-basic-fonts", "paktype-naskh-basic-fonts",
"pam_krb5", "pam_krb5",
"paps", "paps",
@ -226,7 +156,6 @@
"passwd", "passwd",
"passwdqc", "passwdqc",
"pciutils", "pciutils",
"pinentry-gnome3",
"pinfo", "pinfo",
"plymouth", "plymouth",
"plymouth-system-theme", "plymouth-system-theme",
@ -237,7 +166,6 @@
"pulseaudio-module-x11", "pulseaudio-module-x11",
"pulseaudio-utils", "pulseaudio-utils",
"qemu-guest-agent", "qemu-guest-agent",
"qgnomeplatform",
"qt", "qt",
"qt-settings", "qt-settings",
"qt-x11", "qt-x11",
@ -252,9 +180,7 @@
"rp-pppoe", "rp-pppoe",
"rpm", "rpm",
"rsync", "rsync",
"rygel",
"samba-client", "samba-client",
"sane-backends-drivers-scanners",
"scl-utils", "scl-utils",
"selinux-policy-targeted", "selinux-policy-targeted",
"setup", "setup",
@ -264,7 +190,6 @@
"sil-mingzat-fonts", "sil-mingzat-fonts",
"sil-nuosu-fonts", "sil-nuosu-fonts",
"sil-padauk-fonts", "sil-padauk-fonts",
"simple-scan",
"smc-meera-fonts", "smc-meera-fonts",
"sos", "sos",
"spice-vdagent", "spice-vdagent",
@ -273,17 +198,12 @@
"sssd-kcm", "sssd-kcm",
"stix-fonts", "stix-fonts",
"sudo", "sudo",
"sushi",
"system-config-printer-udev", "system-config-printer-udev",
"systemd", "systemd",
"systemd-udev", "systemd-udev",
"tar", "tar",
"thai-scalable-waree-fonts", "thai-scalable-waree-fonts",
"time", "time",
"totem",
"totem-nautilus",
"tracker",
"tracker-miners",
"tree", "tree",
"unzip", "unzip",
"usb_modeswitch", "usb_modeswitch",
@ -296,9 +216,6 @@
"which", "which",
"wireless-tools", "wireless-tools",
"words", "words",
"xdg-desktop-portal",
"xdg-desktop-portal-gtk",
"xdg-user-dirs-gtk",
"xorg-x11-drv-ati", "xorg-x11-drv-ati",
"xorg-x11-drv-evdev", "xorg-x11-drv-evdev",
"xorg-x11-drv-fbdev", "xorg-x11-drv-fbdev",
@ -314,7 +231,6 @@
"xorg-x11-utils", "xorg-x11-utils",
"xorg-x11-xauth", "xorg-x11-xauth",
"xorg-x11-xinit", "xorg-x11-xinit",
"yelp",
"zd1211-firmware", "zd1211-firmware",
"zip" "zip"
] ]

View File

@ -1,6 +1,20 @@
{ {
"ref": "fedora/rawhide/x86_64/workstation-base", "ref": "fedora/rawhide/x86_64/ostree-base",
"include": "fedora-workstation-base-pkgs.json", "repos": [],
"include": "fedora-common-ostree-pkgs.json",
"packages": [
"atomic",
"buildah",
"docker",
"flatpak",
"git-core",
"podman",
"rpm-ostree",
"skopeo",
"xdg-desktop-portal"
],
"selinux": true, "selinux": true,
"documentation": 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"
]
}