Skip to content
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

Koschei doesn't recognize that dependencies are not resolvable in some cases #271

Open
ignatenkobrain opened this issue Oct 27, 2018 · 1 comment

Comments

@ignatenkobrain
Copy link

https://apps.fedoraproject.org/koschei/build/5583710

DEBUG util.py:439:  Error: 
DEBUG util.py:439:   Problem: package rust-parking_lot_core-devel-0.3.1-2.fc30.noarch requires (crate(rand) >= 0.5.0 with crate(rand) < 0.6.0), but none of the providers can be installed
DEBUG util.py:439:    - conflicting requests
DEBUG util.py:439:    - nothing provides (crate(rand_core) >= 0.2.0 with crate(rand_core) < 0.3.0) needed by rust-rand-devel-0.5.5-2.fc30.noarch

Basically the reason might be https://bugzilla.redhat.com/show_bug.cgi?id=1534123, but I guess nobody from DNF team cares.

@mizdebsk
Copy link
Member

mizdebsk commented Oct 27, 2018

From history of rust-parking_lot package it looks like Koschei did detect dependency problem. But it detected it after scratch builds were submitted.

This is a well known race condition. As soon as Koji generates new build repo Koschei will try to resolve all package dependencies in this repo, but in the meantime Koji can generate another repository. Eventually Koschei will process the new repo too, but for during some period of time scratch builds submitted will be ran in the new repo, while dependencies resolved by Koschei are from the old repo. Due to big performance regression in hawkey this race condition started to be more problematic in the last year as now it takes Koschei much more time to process repos.

This race condition is trivial to fix on Koschei side. It would be enough to simply request scratch builds in specific repo - the latest one for which Koschei resolved dependencies. Koji has existing API to do this (see koji build --help, it allows setting custom repo ID), but Fedora Koji policy does not allow Koschei to use this option ("builds from expired repos are only allowed for admins"). I wanted Koschei to run builds from specific repo ID from very beginning (as indicated eg. in a3db8c0 - the last item "Policy for scratch builds from repo ID"), but Fedora release engineering is not willing to enable it and would not listen to any arguments.

To summarize, I can easily fix this on Koschei side. But for the fix to be effective, you need to convince Fedora relengs to allow adjusting Koji hub policy to allow Koschei to submit scratch builds from expired repos. The patch for this policy change is trivial (single-line addition) and I can provide the patch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants