----- Original Message -----
Hi all,
I have a proposal that would change how dependencies are defined in copr:
Problem:
Currently, copr allows to add a link to an arbitrary repo URL that is
available for installing dependencies during building in copr. Using
this dependent repo link we are able to build packages in coprA with
dependencies in another coprB.
However, when enabling only coprA and installing some packages from this
copr, we can miss some packages from coprB, because those packages are
not available since coprB is not enabled.
Solution:
We should be able to define dependency between coprs correctly. When
creating coprA, we would add one or more depended coprs ('userB/coprB')
instead of repo link. Then all packages from these coprs would be
available during build, correct buildroots would be used (no need to
specify variables $releasever and in addition, we would be able to
provide correct (all) RPMs also when *installing* coprs.
There are basically two ways how to implement this on the users' side:
1) Simpler, preferred by Mirek, copr maintainer (CC'd):
'copr' plugin in dnf would include -r option, which would basically
installed all related coprs. That means when running `dnf copr enable -r
userA/coprA`, user would end with two coprs enabled: userA/coprA and
userB/coprB.
2) More complicated, preferred by me :) :
copr A repository from example above would not only include RPMs build
as part of this copr, but would include also packages from copr B. That
means that when running `dnf copr enable userA/coprA`, user would not
need to install userB/coprB repository and would have all packages
available.
3) (And I think that I've already heard this idea from someone) I think it'd be
better to:
- Put the copr repofiles into RPMs and put all these RPMs in a single repo.
- These repofile RPMs can depend on each other.
- "dnf copr enable" installs an RPM from this repo.
- When a dependency between repos change, repofile RPMs will be updated. When user runs
"dnf update", he will get the new repofile RPM build, which will have
dependencies changed properly - so dnf will install these, too.
Both ways struggle with refreshing data:
* in 1) we might need to refresh coprs enabled (on the users' side)
* in 2) we would need to re-create repodata in depended coprA if coprB
I think that 3) is ok from this POV. The problem here can be, that in 3), dnf would on
update technically enable other copr repos without explicit user approval. I'm not
sure whether this is a problem or not, though.
gets changed (on the server's side).
Let's discuss this a bit, I'm eager to hear your opinions.
Cheers,
Honza
--
Regards,
Slavek Kabrda