A few packages does not build in Turris OS 5.x

I’m currently creating a full omnia build environment (on x86-64). With the goal of recreating the official medkit images, building additional packages like docker and custom patched kernel.

I’ve managed to :

  • (almost) fully compile, sign & package the whole turris-os using the turris-build repo (v5.1.6)
  • generate_lists for updater-ng
  • create local repository (for updater-ng)
  • generate_medkit from local repo (that is override the default nic.cz repo) (don’t know if image actually works though)
  • compile additional packages
  • compile modified packages (apply patches)

However i’m having a hard time with the following failing packages:
not in TOS opkg repo, but causing build to fail : (so not ok?)
=> fixed this one by renaming the Makefile so it doesn’t get picked up…

ERROR: package/devel/perf failed to build.
# Makefile.config:313: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.

in TOS opkg repo : (so not ok)

ERROR: package/feeds/packages/ulogd failed to build.
# cp: cannot stat 'build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/ulogd-2.0.7/ipkg-install/usr/lib/ulogd/ulogd_output_MYSQL.so': No such file or directory
ERROR: package/feeds/packages/apr-util failed to build.
# Package libaprutil-dbd-mysql is missing dependencies for the following libraries: ibcrypto.so.1.1 libmariadb.so.3 libssl.so.1.1 libz.so.1
ERROR: package/feeds/telephony/gsmlib failed to build.
# Makefile:206: *** missing separator.  Stop.
ERROR: package/feeds/telephony/freeswitch-stable-mod-bcg729 failed to build.
# mod_bcg729.c:30:10: fatal error: switch.h: No such file or directory

not in TOS opkg repo : (so probably ok)

ERROR: package/feeds/packages/botan failed to build.
# Could not figure out what compiler type 'staging_dir/toolchain-arm_cortex-a9+vfpv3-d16_gcc-7.5.0_musl_eabi/bin/ccache_cxx' is, use --cc to set
ERROR: package/feeds/packages/crtmpserver failed to build.
# staging_dir/host/bin/ccache: invalid option -- 'O'
ERROR: package/feeds/packages/ola failed to build.
# configure: error: Missing resolv, please install it
ERROR: package/feeds/packages/newt failed to build.
# undefined reference to `libintl_gettext'
ERROR: package/feeds/packages/gammu failed to build.
# Package gammu is missing dependencies for the following libraries: libmariadb.so.3
ERROR: package/feeds/packages/libmraa failed to build.
# staging_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/usr/include/node/v8.h:6126:46: note:   candidate expects 1 argument, 0 provided
ERROR: package/feeds/packages/gnunet-secushare failed to build.
# staging_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/usr/lib/libintl-full/lib/libintl.so.8: error adding symbols: DSO missing from command line
ERROR: package/feeds/packages/libgphoto2 failed to build.
# Package libgphoto2 is missing dependencies for the following libraries: libintl.so.8
ERROR: package/feeds/packages/gphoto2 failed to build.
# actions.h:24:10: fatal error: gphoto2/gphoto2-camera.h: No such file or directory
ERROR: package/feeds/node/node-ejdb2_node failed to build.
# build/src/extern_iowow/src/kv/iwal.c:401:30: error: 'MADV_SEQUENTIAL' undeclared (first use in this function); did you mean 'POSIX_MADV_SEQUENTIAL'?

cascading failures (because of errors above):

ERROR: package/feeds/telephony/freeswitch-stable failed to build.
ERROR: package/feeds/packages/apache failed to build.
ERROR: package/feeds/packages/ola [host] failed to build.
ERROR: package/feeds/packages/libupm failed to build.

as i’m a complete make newbie (but i work with maven/gradle/node daily) how the hell do i fix these?
or are these just broken for everyone? or am i missing some deps?
some have clearly missing dependencies… but i’m not getting what’s wrong… as far as i can understand it can’t find the mentioned so-files (like libmariadb.so.3). but i can find them under “staging_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/usr/lib/” (at least that’s were i think they should be… i’m guessing when reading the Makefiles), i’m clearly missing something and don’t understand what’s wrong here… (poking in the dark, i’ve tried adding libmariadb from openwrt-community repo to the build (which builds fine) and installing libmariadb-dev on debian but so far no luck…)
do i need to use something else than debian 10 (buster)? what are you guys using?

Also the medkit generation throws some errors but still completes. so i’m wondering if the medkits ok or broken?! :

ERROR:Unable to open os-release (/home/bernstein/target/medkit/root/etc/os-release): No such file or directory
ERROR:The uci library is not available. Continuing without it and expecting this is a test run on development PC.
ERROR:Can't open directory: /home/bernstein/target/medkit/root//etc/updater/hook_preupdate: No such file or directory
WARN:Collision with existing path. Moving /home/bernstein/target/medkit/root//usr/bin/wget to /home/bernstein/target/medkit/root/usr/share/updater/collided/home/bernstein/target/medkit/root/usr/bin

Setup
host : x86-64 (xeon coffee lake), Proxmox VE 6.x
lxc container : (unprivileged) debian 10 (buster)
using : complile_pkgs -t omnia -f1
and for failing packages: make packages/…/compile -j1 V=sc

Hi @bernstein,

It’s common that all packages do not compile while you are running a full build. From time to time, we are looking into it, but these are not critical and it has a low priority as most of them come from packages feed, which is community maintained. Some packages were fixed/removed in an upcoming version of OpenWrt.

Failed list of packages in HBS branch for Turris Omnia*|
|—|—|—|
| package/feeds/packages/gphoto2.compile|
| package/feeds/packages/libgphoto2.compile|
| package/feeds/node/node-aws-crt.compile (local issue, reported to DevOps already)|
| package/feeds/node/node-ejdb2_node.compile (same)|
| package/feeds/node/node-simple-xmpp.compile (same)|
| package/feeds/packages/ola.compile
| package/feeds/packages/rxtx.compile (It fails for OpenWrt - faillog)|
| package/devel/perf.compile (fixed for OpenWrt master) |
| package/feeds/packages/ulogd.compile|
| package/feeds/packages/apr-util.compile|
| package/feeds/packages/libupm.compile|
| package/feeds/packages/botan.compile (issue)|
| package/feeds/packages/apache.compile|
| package/feeds/packages/crtmpserver.compile (issue)|
| package/feeds/packages/libmraa.compile|
| package/feeds/packages/gnunet-secushare.compile|
| package/feeds/packages/classpath.compile (It fails for OpenWrt as well - faillog)|

I should mention that some of them are indeed caused by MariaDB, which we maintain in our Turris OS packages repository, but we become maintainers in the OpenWrt packages feed and that’s should narrow it down.

  • List of failed packages differs a little bit for each router.

Medkit

ERROR:Can’t open directory: /home/bernstein/target/medkit/root//etc/updater/hook_preupdate: No such file or directory

I see this issue on our build servers and also when using GitLab CI for it, so nothing to worry about it.

1 Like

@Pepe thanks a lot for the quick, comprehensive answers. @TurrisTeam rocks!

is the hbs build log publicly accessible somewhere? afaik only the pipeline for hbd/hbl is accessible in gitlab. and it “just” tests compile_pkgs prepare & generate_lists.

Packages

for me it is a bit shocking to hear that a release commit won’t build flawlessly. but i guess that’s a concession one has to make with non-essential community maintained packages. :smiley:

to sum up: i have mostly the same packages that won’t build. following differences:
can build:

  • package/feeds/node/node-aws-crt
  • package/feeds/node/node-simple-xmpp

can’t build:

  • package/feeds/packages/gammu
  • package/feeds/telephony/gsmlib

differences weird but won’t investigate further, as i’m not interested in these packages.

Medkit

ERROR:Unable to open os-release (/home/bernstein/target/medkit/root/etc/os-release): No such file or directory
ERROR:The uci library is not available. Continuing without it and expecting this is a test run on development PC.
WARN:Collision with existing path. Moving /home/bernstein/target/medkit/root//usr/bin/wget to /home/bernstein/target/medkit/root/usr/share/updater/collided/home/bernstein/target/medkit/root/usr/bin

any advice about these? pretty sure i can ignore all of them as:

  1. root/etc/os-release is identical with the one on my omnia
  2. root/sbin/uci has same sha as the one on my omnia, so i assume this is expected. or do you build the medkits in an openwrt container?
  3. as far as i can see these are all symlinks and the targets are identical (sha) to the ones on my omnia. also root/usr/share/updater/collided/home/bernstein/target/medkit/root/usr/bin is empty

do i understand the schnapps export/import docs correctly, that i can import any medkit image using it? this seems to be the safest way to see if the medkit works correctly, or am i mistaken? if so i will try this with the self-built medkit on my omnia next month (after creating another medkit of the current live setup obviously)

now i only need to write a guide so i can remember how to recreate it next year… this stuff is so much easier if you have the time to work on it regularly… :smiley:

Unfortunately, it is not. It’s my wish to have fail logs/error logs accessible publicly. So users will know what failed and what was the reason, but we will see what will happen in the future.

Yes, we are working on this one. We wanted to have some small tests to see if patches apply and if package lists can be generated and also if we can generate medkits. I don’t want to extend these smalls tests so much as the full build can take a few hours and I would not say now that this belongs to Gitlab CI and we want to use Jenkins/Buildbot for that.

You can share it with us! You might want to choose turris-build repository and there will be a short guide in README soon, how you can generate your medkit and what you need. Also, there is user-docs repository or you might want to use wiki for that.

For medkit, there will be more replies, soon.

1 Like

I am waiting for your repo to add just docker package. Or maybe @TurrisTeam will simply adopt your implementation.