Finally, success with OpenADK
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.
Tags: linux