with the recent drop of the
*_core packages (foreman_remote_execution_core, foreman_ansible_core, etc) we ended up in a situation where users who upgrade from a previous release end up having the old (unused)
*_core package still installed.
We first tried to fix that by adding an
Obsoletes to the corresponding
smart_proxy_<plugin> package, but that turned out to be wrong (for details see the discussion in Katello-nightly-rpm-pipeline 1022 failed and Do not Obsolete foreman_remote_execution_core from smart_proxy_remote_execution_ssh by ehelms · Pull Request #6861 · theforeman/foreman-packaging · GitHub) and we reverted that change again.
However, the fact that users end up with the old core package still installed also means that if that package has any dependency constrains, these must be honored by
dnf. Which brings me to the source of this post: foreman-plugins-nightly-rpm-test-pipeline #8 [Jenkins] is red because the old foreman_ansible_core is still installed and
yum can’t upgrade:
Error: Package: tfm-rubygem-foreman_ansible_core-4.1.0-1.fm2_5.el7.noarch (@foreman-plugins) Requires: tfm-rubygem(foreman-tasks-core) < 0.4 Removing: tfm-rubygem-foreman-tasks-core-0.3.5-1.fm2_5.el7.noarch (@foreman-plugins) tfm-rubygem(foreman-tasks-core) = 0.3.5 Updated By: tfm-rubygem-foreman-tasks-core-0.4.0-1.fm2_6.el7.noarch (foreman-plugins-koji) tfm-rubygem(foreman-tasks-core) = 0.4.0
Thus we need a safe way to purge these old core packages. On EL7 we could abuse the
tfm package, but on EL8 there is no such thing.
@ekohl proposed to introduce a
foreman-obsolete-packages (or similar, like Fedora has) that should be used for that. I like the idea.
Essentially that’d be an empty package, with
Obsoletes for all ecosystem related obsoletes (dropped plugins etc).
What about y’all?