comps allows for a package to be included in a group only on
specified arches, with a line like this:
<packagereq arch="aarch64,x86_64" type="default">kio-gdrive</packagereq>
up till now, `comps-sync.py` effectively ignored this, treating
such a line exactly the same as this:
<packagereq type="default">kio-gdrive</packagereq>
and attempting to include the package even when building on e.g.
ppc64le.
Solving this is unfortunately tricky due to exactly how libcomps
handles these arch restrictions. It does not expose the list of
arches as a property of each returned 'package' object when you
do a group search. Instead you're supposed to filter the group
search down to the arch(es) you are interested in, and it only
includes the appropriate packages for that arch. So all we can
do is run our queries multiple times, once for each arch we may
wish to build on, keep track of the results per arch as we go,
and do some fancy footwork to keep track of the mapping between
"archful" comps entries and the lists in the YAML files.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
We were trying to be accurate by filtering by group but
PackageKit is spread across all of them and has various subpackages,
so just add a global regexp-based blacklist.
This doesn't actually drop PK yet because `gnome-software` hard
requires it, but is prep for fixing that.
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)
```
`comps-sync.py` now has support for explicitly syncing *from* the
workstation comps. In order to do this sanely though, we need a
"blacklist" of things we don't want to sync.
There are a few issues here:
- desktop applications
- dubious CLI apps
- dnf
- dubious misc things: e.g. `tcp_wrappers`, `crontabs`
- arch-specific bits (not handled right now)
This script looks for packages not in comps at all, which
helps us lose things that were there only as dependencies.
Also, it now supports showing packages in the workstation environment
but not in the manifest. (I'm not yet taking action on those though)
Some leaf packages do drop out. All of these I believe are right to stop
shipping by default with the possible exception of `media-player-info`...I'm not
sure if that was intentional or not. Anyways let's start this sync process.
```
-Installing 1344 packages:
+Installing 1335 packages:
- bcache-tools-1.0.8-10.fc27.x86_64 (fedora-rawhide)
- isomd5sum-1:1.2.2-1.fc28.x86_64 (fedora-rawhide)
- kexec-tools-2.0.16-3.fc28.x86_64 (fedora-rawhide)
- keybinder3-0.3.2-3.fc27.x86_64 (fedora-rawhide)
- langtable-0.0.38-2.fc28.noarch (fedora-rawhide)
- langtable-data-0.0.38-2.fc28.noarch (fedora-rawhide)
- langtable-python3-0.0.38-2.fc28.noarch (fedora-rawhide)
- lpsolve-5.5.2.0-16.fc27.x86_64 (fedora-rawhide)
- media-player-info-23-1.fc28.noarch (fedora-rawhide)
```