Closed JanZerebecki closed 5 years ago
When using a KIWI file in OBS with dependencies there are two cases I noticed that don't work like they would with zypper.
You are completely right but we can't change this behavior in the kiwi project. The buildservice does the following before it calls kiwi:
It takes the package list from the kiwi XML and runs its own satsolver based solver operation. This operation as you already found out does not take file provides into account as it would be the case if zypper would have done that resolver operation
obs now takes the resolved list of packages and creates temporary repositories inside of the obs worker (usually a VM or bare metal) that was selected to build your image.
obs now calls kiwi. The obs:// repotype used in the kiwi XML is resolved to point to that temporary created repos if the build happens in obs. That repos could now missing some packages and when kiwi calls zypper it will find out something is missing and the build fails
You are not the first one who stumbled over that issue. From a kiwi perspective I can only tell you that you need to explicitly list the packages that gets pulled in by file provides.
I'm afraid but a fix to this problem can only happen in the obs project and code, maybe you open an issue there and discuss this with the obs people ?
Thanks
Problem description
When using a KIWI file in OBS with dependencies there are two cases I noticed that don't work like they would with zypper.
When a package depends on foo and there is a package bar that provides foo and depends on a package that is not available, it may happen to select bar and fail to find a solution.
When a package depends on a file, the package that provides it is not selected so during installation of requirements the build fails.
Expected behaviour
Build doesn't fail in these cases.
Steps to reproduce the behaviour
Branch https://build.opensuse.org/package/show/openSUSE:Leap:15.1:Images/opensuse-leap-image and add a few required packages:
This fails to even start the build as libvirt-devel pulls in libunbound-devel-mini which on purpose has a non-existing requirement. To fix this add:
<package name="libunbound2"/>
.Then the build fails as something from the above requires ncurses-devel which requires /usr/bin/tack which somehow is not picked up as a dependency. To fix that add
<package name="tack"/>
.OS and Software information
python3-kiwi-9.17.42-lp151.2.1