site  contact  subhomenews

Finally, success with OpenADK

March 06, 2018 — BarryK

I wanted the 'dmsetup' utility compiled statically, for use in initramfs. This is in the LVM2 package. It turned out to be a saga of many many hours...

Unfortunately, both OpenEmbedded and Landley Aboriginal dropped support for uClibc, going over to musl. What is really odd, is the developers on both of these projects gave the same reason, that uClibc is a dead project. That is very odd, as uClibc-ng is very active. Were they ignorant of the existence of uClib-ng? -- incredible if so.

Anyway, musl. have used it many time, just don't like it. uClibc is far more glibc-compatible, and hence far easier to compile source packages.

I did attempt to compile 'dmsetup' in an Alpine Linux x86_64 musl rootfs, but finally used Landley's Aboriginal x86_64 uClibc rootfs, version 1.2.0 -- very old, but it works great. year 2012 in fact.

However, uClibc does not have the fmemopen() function, so I had to compile an older LVM2 that does not require that function -- version 2.02.119. Success, compiled it statically, about 500KB stripped.

OpenADK

I ruminated on what other rootfs's and toolchains there are out there, that will have a recent version of uClibc. One of them is OpenADK, that I have tried a few times over the years, always failed, see these reports:

http://bkhome.org/news/201606/playing-with-cross-compile-toolsets.html

http://bkhome.org/news/201704/openembedded-morty.html

Decided to have another go!

Downloaded the latest snapshot, ran "make menuconfig" and then "make", hit some failures, fixed them, but finally gcc compile failed with "unable to determine size of (long long)".

Scratched my head for sometime over that, but then it occurred to me that my host system might not support "long long". That does not seem to good, but anyway. My host is EasyOS Pyro64, the packages were compiled in OpenEmbedded, targeting embedded systems, and perhaps this is one compromise.

So, went over to Quirky Xerus64 8.5, which is built with Ubuntu 16.04.4 DEBs. This time success:

# make distclean
copy DOTconfig to .config
# make menuconfig
# export FORCE_UNSAFE_CONFIGURE=1
# make
copy /usr/bin/autom4te to openadk/host_x86_64-oe-linux/usr/bin/
# make

...as you can see above, a couple of little tricks were required, the "export FORCE_UNSAFE_CONFIGURE=1", and coreutils wanted a "autom4te" file.

It finished, and built a toolchain. Now I need to study the docs, see how to compile packages, and built a development rootfs.

Tags: linux