Overview
Request 1227747 review
- Created by jankara
- In state review
- Open review for factory-staging
Request History
jankara created request
anag+factory set openSUSE:Factory:Staging:H as a staging project
Being evaluated by staging project "openSUSE:Factory:Staging:H"
anag+factory accepted review
Picked "openSUSE:Factory:Staging:H"
factory-auto added opensuse-review-team as a reviewer
Please review sources
factory-auto accepted review
Check script succeeded
dimstar accepted review
licensedigger accepted review
The legal review is accepted preliminary. The package may require actions later on.
anag+factory added factory-staging as a reviewer
Being evaluated by group "factory-staging"
anag+factory accepted review
Unstaged from project "openSUSE:Factory:Staging:H"
anag+factory set openSUSE:Factory:Staging:G as a staging project
Being evaluated by staging project "openSUSE:Factory:Staging:G"
anag+factory accepted review
Picked "openSUSE:Factory:Staging:G"
anag+factory added factory-staging as a reviewer
Being evaluated by group "factory-staging"
anag+factory accepted review
Unstaged from project "openSUSE:Factory:Staging:G"
@ailiopoulos
Package libarchive appears in cycle e2fsprogs/libarchive
@anag+factory
I've added libarchive-devel to e2fsprogs as it is required to enable a specific feature (creating a fs directly from a tarball).
In turn, libarchive relies on libext2fs-devel for certain things (e.g. for extfs-specific flags).
What is the exact problem for OBS, concretely?
You're creating a cycle between both packages. libarchive pulls libext2fs-devel and libext2fs for building and you're requiring here that e2fsprogs buildrequires libarchive to build.
How does OBS handle this? Because I haven't seen any build failures. We most likely have many more such cyclic dependencies between other packages, how do we handle those cases?
The problem is: you can't build e2fsprogs because you don't have a libarchive RPM yet, but you can't build libarchive either because you don't have a e2fsprogs RPM built yet.
I understand cyclic dependencies, I am just asking how we are dealing with those in OBS. This can't possibly be the first instance of this problem.
Essentially, by using two source packages / two build recipes / two runs of rpmbuild, the first one would be libarchive building just the library and without the use of e2fsprogs, and the second run would do the full set. (we have mechanisms to place the two runs in one .spec file, cf. libuna).
Right, but I still do not know what exactly needs to be done specifically (if anything) for libarchive or e2fsprogs, as I have no idea how OBS handles multiple build recipes/runs.
Looking at libuna, I see "@BUILD_FLAVOR" but I do not know how OBS handles this with multiple runs and when it sets this and to what value and under what circumstances.
I also notice that libarchive specfile builds with libext2fs-devel conditionally on centos/rhel version, which again I have no idea why this is there, but it seems like it should be already guarding against having libext2fs as a dep (even if this isn't necessarily the right way to encode this in the specfile).
As you said, you need to use multibuild with a flavour with libarchive and another without. An example would be gettext-runtime, you can see the "gettext-runtime:gettext-runtime-mini" flavour that we use in ring0
https://build.opensuse.org/package/show/openSUSE:Factory:Rings:0-Bootstrap/gettext-runtime
while the users install later the packages provided by "gettext-runtime".