-
Notifications
You must be signed in to change notification settings - Fork 198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
core: Use SOLVER_LOCK for locking base packages #2125
Conversation
Skipping CI for Draft Pull Request. |
Requires: rpm-software-management/libdnf#974 |
well that would be amazing! |
Sample output in coreos/fedora-coreos-tracker#525 (comment). |
It also helps to more easily diagnose the split base/layered problem too (#415). Here the machine has
|
This will be useful in rpm-ostree for us to express the fact that base packages by default should be "locked"; i.e. we don't want libsolv to try to update them. For more information, see: coreos/rpm-ostree#2125
This will be useful in rpm-ostree for us to express the fact that base packages by default should be "locked"; i.e. we don't want libsolv to try to update them. For more information, see: coreos/rpm-ostree#2125 Closes: #974 Approved by: kontura
For the Fedora CoreOS extensions work, when layering packages, we need to be able to tell libsolv to pick the packages which will go with the base packages. IOW, it needs to know that the base packages shouldn't be uninstalled. While investigating coreos/fedora-coreos-tracker#525, I realized that libsolv does have a flag which allows us to express this: `SOLVER_LOCK`. This then allows libsolv to choose the right package for us (if found). And in the case where it can't find a matching package, libsolv itself will print exactly what the conflict is, which is more informative than the "forbidden replacements" error we currently print out. Update submodule: libdnf
Ready for review and now with (passing) tests! |
The added test describes what is now possible, but just for a more realistic example, here's an older f32-based FCOS stable release trying to overlay Before:
After, without the archive repo:
It's a little verbose, but it contains more precise information about the issue: But this is still a major improvement because we can actually trace which packages we're trying to layer wants the base to move. And now, retrying the same operation, but with Dusty's archive repo containing older packages:
IOW, libsolv correctly picks the older |
It is a MAJORRRRR improvement!
🎉🎉🎉🎉 |
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: cgwalters, jlebon The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. Fixes: coreos/fedora-coreos-tracker#400
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. Fixes: coreos/fedora-coreos-tracker#400
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. Fixes: coreos/fedora-coreos-tracker#400
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. For context see coreos/fedora-coreos-tracker#400 (cherry picked from commit 5ee6bce)
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. Fixes: coreos/fedora-coreos-tracker#400
This is the culmination of a lot of work to make package layering more reliable. This archive repo provides all packages that have ever been in the updates repository, which means there should always be a solution that will depsolve given the existing set of base layer packages. Pairing this along with coreos/rpm-ostree#2125 means that we should finally see less of the split base layer vs update repo problem and see less `Forbidden base package replacements` errors. For context see coreos/fedora-coreos-tracker#400
For the Fedora CoreOS extensions work, when layering packages, we need
to be able to tell libsolv to pick the packages which will go with the
base packages. IOW, it needs to know that the base packages shouldn't be
uninstalled.
While investigating
coreos/fedora-coreos-tracker#525, I realized
that libsolv does have a flag which allows us to express this:
SOLVER_LOCK
.This then allows libsolv to choose the right package for us (if found).
And in the case where it can't find a matching package, libsolv itself
will print exactly what the conflict is, which is more informative than
the "forbidden replacements" error we currently print out.
Update submodule: libdnf