Automated build system to handle multiple packages

I wrote a small tool for building such projects: https://github.com/rinigus/tbuilder

This tool allows you to build multiple RPM SPECs while parsing and finding the dependencies through rpmspec. Unfortunately, it has limitations - rpmspec doesn’t determine all provided symbols (pkg-config(libname) for example) and dependency resolution powers are significantly impacted. There are manual workarounds for now, but I don’t think it is a long term solution to have them.

The above limitation is filed as https://github.com/rinigus/tbuilder/issues/1 . Limitation discussed on sfos-porters channel and picked up by Thaodan as well.

Bugs experienced:

  • Sfdk does not handle rpmbuild options properly

  • several packages refused to build in AppSDK, but were fine when using OBS and PlatformSDK. They seem to be hitting sb2 limitations and among them are:

    • collectd and flatpak/ostree. These projects are using bison and while running, bison is starts m4 as a process. That m4 was started out of sb2 env and was missing in AppSDK. “Cure” was to install bison into the AppSDK main environment as in docker exec sailfish-os-build-engine zypper --non-interactive in bison

    • flatpak/libappstream-glib - complains about missing lib while it is installed and required in the target. I suspect that somehow it is managing to escape sb2. Edit: seems like issue is limited to x86 target, aarch64 (me) and armv7hl (elros1) managed to build just fine. elros1 was also able to build x86 target without issues. Why it failed for me, I don’t know.

As PlatformSDK seems to be much more stable for some reason, would be great to have an option to communicate with it via sfdk or similar tool. Even if it requires starting some daemon in it manually.

Edit: added note regarding libappstream-glib and used arch; + reproducibility

2 Likes