This is my fifth post of my Google Summer of Code 2018 series. Links for the previous posts can be found below:
My GSoC contributions can be seen at the following links
OBS supports building Debian packages. To do so, one must properly configure a
project so OBS knows it is building a
.deb package and to have the packages
needed to handle and build debian packages installed.
We will use base Debian projects in our OBS instance as Download on Demand projects and use subprojects to achieve our final goal (build packages agains Clang). By using the same configurations as the ones in the openSUSE public projects, we could perform builds in Debian 8 and Debian 9 in our local OBS deploys. However, builds for Debian Testing and Unstable were failing.
With further investigation, we realized the OBS version packaged in Debian
control.tar.xz files in
.deb packages, which is the
default compression format for the control tarball since
dpkg-1.19 (it used
to be control.tar.gz before that). This issue was reported on the OBS
repositories and was fixed
on a Pull Request that is
not included in the current Debian OBS version yet. For now, we apply this
patch in our OBS instance on our salt states.
After applying the patch, the builds on Debian 8 and 9 are still finishing with
success, but builds against Debian Testing and Unstable are getting stuck in a
blocked state: dependencies are being downloaded, the OBS scheduler stalls
for a while, the downloaded packages get cleaned up, and then the dependencies
are downloaded again. OBS backend enters in a loop doing the described
procedure and never assigns a build to a worker. No logs with hints leading to
a possible issue are issued, giving us no clue of the current problem.
Although I am inclined to believe we have a problem with our dependencies list, I am still debugging this issue during this week and will bring more news on my next post.
Reshabh opened a Pull Request in our salt
with the OBS configuration files for Ubuntu, also based on the openSUSE’s OBS
public configurations. Based on Sylvestre comments, I have been refactoring the
Debian configuration files based on the OBS
One of the proposed improvements is to use
debootstrap to mount the builder
chroot. This will allow us to reduce the number of dependencies listed in the
projects configuration files. The issue which generated debootstrap support in
OBS is available at https://github.com/openSUSE/obs-build/issues/111 and may lead
to more interesting resources on the matter.