#352 RFE: Allow package.cfg to specify building for all allowed release targets when in master
Opened 4 years ago by ngompa. Modified 4 years ago

I have been wanting to simplify my package maintenance workflows for a while, and I'm trying to adopt package.cfg to reduce my need to for managing branches.

However, it seems that package.cfg is missing a way to specify to build for all targets, especially when you don't know what they are.

For example, I expect something like the following to work:

[koji]
targets = *

What I expect this to do is make it build for every release target available in PDC when this is present in master. However, for cases where I'm required to maintain a branch (soversion bump or whatever), this would be rendered ineffective and it would just build for the fXX/epelXX branch.

So for example, on the master branch, it'll build for F29, F30, F31, and F32 (rawhide). However, if I branch that to an f29 branch, then that will revert to the standard behavior of building only for that target (as if I didn't have a package.cfg).

Could this be made possible with fedpkg?


In case it wasn't clear, what I mean here is that I'd like to maintain a package with just a master branch, as nearly all of my packages work this way effectively.

However, in the case where I need to branch for maintenance purposes (preserving ABI stability, targeted security fix, some other thing, etc.), I'd like to be able to branch master at a specific point, and have it build for that release only. In this scenario, this target gets excluded from master builds going forward. A future master build will build for everything except that target, and that branch will cover that target.

The main case for this I have is capnproto. master and the current fedora release branches are effectively the same, whereas epel7 is older and different for stability reasons.

In this model, capnproto would be continually updated everywhere until I hit a soversion bump, and in that case, I would make branches for where I want to avoid the soversion bump so that they're automatically excluded. and handled separately from that point on. When those releases become EOL, they become a non-concern going forward.

I think what you want should be possible by specifying targets = fedora, which should get all active Fedora releases. There should also be a epel shortcut available.

@lsedlar There's a few problems right now.

  1. package.cfg doesn't work on the master branch right now.
  2. targets = fedora epel has different semantics than what I described with targets = *. Note that I want to be able to break out into branches without having to change package.cfg files all the time.
  3. I'm not sure what happens when I don't have a release enabled in PDC for my package that is still active.

Looking at my RFE in https://pagure.io/fedpkg/issue/354 I think the "magic keyword" approach is interesting but I wonder how it can be revolved when pdc isn't available (for any reason).

I would have a preference on using "all" instead of "*".

On a side note, I wonder if you already assume that you are only using one branch for all distro releases, because this workflow assume no merge is done on the related git branches.
This could be an issue if one come to fix a stable branch and get an "outdated" git ref.

(For my own use-case, I'm using a script that merges, checks and requests build for all branches that I want to update).

@kwizart I'm trying to move my packages to just use a single master branch unless I have a reason not to. From my attempt with this with libeconf, it didn't work anything like I expected it to. :broken_heart:

I would have a preference on using "all" instead of "*".

I'm okay with this keyword as an alternative to *.

Login to comment on this ticket.

Metadata