On Thursday, July 8, 2021 3:47:56 PM CEST Miro Hrončok wrote:
> Hello Copr users and developers.
> 
> 
> When we update packages in Fedora, we regularly use Copr to test the impact 
> of 
> the upgrade.
> 
> For me, the procedure usually goes like this:
> 
> 1) create a new copr with Fedora rawhide x86_64 chroot (and added Koji repo)
> 
>      $ copr create $COPR 
> --repo='http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/' 
> --chroot fedora-rawhide-x86_64 --delete-after-days 30
> 
> 
> 2) define and build the updated package in the copr
> 
>      $ copr add-package-distgit $COPR --name $PKG --webhook-rebuild on 
> --commit 
> $BRANCH --namespace forks/$(whoami)
>      $ copr build-package $COPR --name $PKG
> 
> 
> 3) get the list of dependent packages
> 
>      $ repoquery -q --repo=rawhide{,-source} [--whatrequires $spkg for each 
> subpackage] --recursive | grep src$ | pkgname
> 
> 
> 4) define and build the depended packages in the copr
> 
>      $ parallel copr add-package-distgit $COPR --webhook-rebuild on --commit 
> rawhide --name -- $(repoquery from above ...)
>      $ parallel copr build-package $COPR --nowait --background --name -- 
> $(repoquery from above ...)
> 
> 
> 5) analyze build failures, do a "control" rebuild in another copr if needed
> 
> 
> 
> However, this procedure has a flaw. Let's say I'm working on upgrading 
> python-click from 7.x to 8.x. And let's say a package (even transitively) 
> BuildRequires:
> 
>      python3dist(click) < 8
> 
> The way that dnf dependency resolution works, that package will be built with 
> Rawhide's python3-click 7.x and it will be marked as successful. However, I'd 
> like to see a failure here to be notified that such package cannot be build 
> and 
> will be negatively impacted by the update.
> 
> 
> Is there a way to solve this? 

I thought that 'best=1' is about to help here, but since we use that config
in mock-core-configs it is not.

> I have couple ideas, but none of them is fully 
> working:
>
> A) Compose my own repo with the updated package and Rawhide content without 
> it, 
> use that repo in the copr.
> 
> Pros:
> 
>   - this is similar to what will happen in Koji once the package is updated
> 
> Cons:
> 
>   - this requires tooling that I don't think exists
>   - this requires a place to put that repo to
>   - the repo creation could take a lot of time and would need to be repeated 
> on-demand each time rawhide changes
>   - Copr's Fedora chroots always include Fedora repos (maybe I can use 
> custom-1-x86_64 chroot?)
> 
> B) Create a Fedora side tag, explicitly block the package from it, use that 
> side tag's Koji repo.
> 
> Pros:
> 
>   - same as (A)
> 
> Cons:
> 
>   - I don't think on-demand side tags allow users to block packages
>   - Copr's Fedora chroots always include Fedora repos (same as (A))
>   - this wastes Koji's resources a bit
>   - requires waiting for the initial Koji regen-repo
> 
> 
> C) Block (exclude) python3-click < 8 from the chroot.
> 
> Pros:
> 
>   - no custom repos required
>   - no resources overhead
>   - no time overhead
> 
> Cons:
> 
>   - There is no way exclude packages in chroot settings. Mock settings 
> possibly 
> allow me to do this in config_opts['dnf.conf'].
>   - The exclude could obfuscate root.log resolution problems logs.
>   - Packager needs to figure out what exactly to exclude (possibly need to 
> exclude all subpackage's NEVRAs from rawhide compose (and Koji buildroot if 
> they differ))
> 
> 
> Is there another way? If not, I think (C) is easiest to actually implement, 
> if 
> the chroot settings page in copr gains an "excludes" option.

This is pre-production experiment, right?  Couldn't you just specify
"Provides: python3dist(click) = 7.9"?

We have an RFE https://pagure.io/copr/copr/issue/1336 that could help you if you
could specify dnf.conf excludepkgs= option for the rawhide repo.  But this is
not an easy one.

Pavel




_______________________________________________
copr-devel mailing list -- copr-devel@lists.fedorahosted.org
To unsubscribe send an email to copr-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/copr-devel@lists.fedorahosted.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to