openSUSE / openSUSE/libsolv

Build Flavors

Open
#286 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

RFE :gift:
Dominant language
C
Stars
609
Forks
177
PR merge metrics
No merged PRs in 30d

Description

Following our conversation from IRC:

repo system 0 empty
repo available 0 testtags <inline>
#>=Pkg: platform:f28 2018 1 noarch
#>=Pkg: platform:f28 2019 1 noarch
#>=Pkg: platform:f29 2018 1 noarch
#>=Pkg: platform:f29 2019 1 noarch
#>=Pkg: gtk3:3.30 2019 1 noarch
#>=Req: platform:f28
#>=Pkg: gtk3:3.30 2019 1 noarch
#>=Req: platform:f29
#>=Pkg: app 1 1 noarch
#>=Req: gtk3:3.30

system x86_64 rpm system

poolflags implicitobsoleteusescolors
solverflags allowvendorchange keepexplicitobsoletes bestobeypolicy keeporphans yumobsoletes
job install name app
result transaction,problems,alternatives,reason,rules <inline>

This doesn't create alternatives, so if you add job install platform:f29, you end up with both f28 and f29, so the code for optimizing transaction doesn't know how to handle these. This might be bug unrelated to my issue, not sure.

In case above, I would like to get alternatives for two GTKs first (because all platforms are installable), and latest platforms (i.e. 2019).

@mlschroe pointed out that this is because prune_to_best_version filters by name.

So I think we need to prune by name+flavor to latest evr. However, this might result to having foo:latest 2010 which had "bar" flavor (and then it got deprecated). Pruning to latest version by just name, and keeping whatever left with different flavors is probably good way to go. I would prefer latter.

Probably we just need flag to tweak this.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the prune_to_best_version logic named in the issue and reproduce the inline solver case, then add the job install platform:f29 variant. Compare the resulting alternatives and transaction with the requested behavior: compatible GTK flavors should be alternatives, and the latest platform versions should be retained without losing valid flavors.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.