Skalibs: What's going on with the headers files?

I’m running Gobolinux with S6 as init system and for that I have built all the Skarnet softwares.
Skalibs is the first software that need to be built and the version 2.10.0.3 is used by the system as you can see below:

root@Gobo66 ] ls -l /Programs/Skalibs/Current
lrwxrwxrwx 1 root root 8 Feb 21 15:06 /Programs/Skalibs/Current → 2.10.0.3

and here is the list of the headers files:

root@Gobo66 ] ls -l /Programs/Skalibs/2.10.0.3/include/skalibs/
alarm.h bsdsnowflake.h disize.h fmtscan.h iopause.h random.h siovec.h surf.h unixmessage.h
alloc.h bufalloc.h diuint32.h functypes.h ip46.h rc4.h skaclient.h sysdeps.h unixonacid.h
allreadwrite.h buffer.h diuint.h gccattributes.h kolbak.h segfault.h skalibs.h tai.h unix-timed.h
ancil.h bytestr.h djbtime.h genalloc.h lolstdio.h selfpipe.h skamisc.h textclient.h unix-transactional.h
avlnode.h cbuffer.h djbunix.h genqdyn.h md5.h setgroups.h socket.h textmessage.h
avltree.h cdb.h envalloc.h gensetdyn.h netstring.h sgetopt.h stdcrypto.h types.h
avltreen.h cdb_make.h env.h genset.h nonposix.h sha1.h stddjb.h uint16.h
bigkv.h config.h environ.h genwrite.h nsig.h sha256.h stralloc.h uint32.h
biguint.h datastruct.h error.h getpeereid.h posixishard.h sha512.h strerr2.h uint64.h
bitarray.h direntry.h exec.h iobuffer.h posixplz.h sig.h strerr.h unixconnection.h

Now, I’m building and installing ( without symlinking ) a new version of Skalibs 2.11.0.0 and this is what the include folder contains:

root@Gobo66 ] ls /Programs/Skalibs/2.11.0.0/include/skalibs
cdbmake.h config.h ip46.h sysdeps.h types.h uint16.h uint32.h uint64.h

What’s going on with the headers files, why aren’t all of them in the folder as the previous version, where are my headers file :thinking: ?

You can find the entire build log with --debug option here and one thing I have noticed and maybe the source of this issue is:

Moving entries to: /Programs/Skalibs/2.11.0.0/.SandboxInstall_Root
Postprocessing Sandbox
Fixing files copied into previous version
.//Programs/Skalibs/2.10.0.3/include → /Programs/Skalibs/2.11.0.0/
.//Programs/Skalibs/2.10.0.3/lib → /Programs/Skalibs/2.11.0.0/

The recipe looks like that:

compile_version=017-GIT
url=“https://skarnet.org/software/skalibs/skalibs-2.11.0.0.tar.gz
file_size=216201
file_md5=c612df8f74a825c082da2ecf90691550
dir=‘skalibs-2.11.0.0’
recipe_type=configure

configure_options=(
–disable-static
)

And as additional information if I use build_in_programs=yes there is no such issue with the include files.

I do not understand what is happening.

I remember having fixed an issue similar to this one before. Do you have up-to-date snapshots of Compile and Scripts? (cd /Programs/Compile/Current; git pull, etc)

Yes, both software are up2date. I tried on my clean Gobo fresh installation in case I would have introduced errors during my work, Scripts and Compile up2date, but the same issues occur.

All of this strengthens me in the idea that it’s time for the Desktop to stop FHS aberration. We must stop trying to build something new while keeping a compatibility because it does not bring anything else than a layer of problems.

I am currently reading and grouping good numbers of documents from alternative compiler/linker like Clang/LLVM/LLD up to software management for the end-user. Obviously here we are talking about pure Desktop use case.

So, let’s try to imagine now the removal of all usual directories /usr /bin /sbin /var etc… how the new RootFS should look like for our Desktop.

Could you share the recipe for Skalibs 2.10.0.3? I’d like to reproduce this one on my end.

Also, could you check that your unionImplementations array defined in /System/Settings/Scripts/Directories.conf has “overlayfs” as its first entry? If that’s already the case, would you mind commenting-out “overlayfs” so that “unionfs-fuse” is used instead? We have seen problems with the overlayfs implementation on certain kernel versions before and I wouldn’t be surprised to hear that unionfs-fuse fixes the problem for you.

Skalibs 2.10.0.3

I have not idea if it is the expected behavior, by adding –prefix=$target in the Recipe and looking at the …/Sources/skalibs-2.10.0.3/config.mak file, I have a duplicate ‘–prefix=/usr’ as you can see below.

This file was generated by:
./configure --prefix=/usr --prefix=/usr --disable-static

I must admit that I have spent a significant time to get Fuse and UnionFs-Fuse compiled in their last version and after all of this I get errors:

Compile: Asserting that requirements are met…
SandboxInstall: unionfs-fuse is available. Using UnionSandbox.
SandboxInstall: Installing Skalibs…
fuse: unknown option(s): `-o nonempty’
UnionSandbox: Unable to mount unionfs
UnionSandbox: Cleaning up.
umount: /.union_mp.tmp.31ZHNHz52BI//proc: no mount point specified.
umount: /.union_mp.tmp.31ZHNHz52BI//dev: no mount point specified.
umount: /.union_mp.tmp.31ZHNHz52BI/Programs/Skalibs/Settings: no mount point specified.
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Programs/Skalibs/Settings
umount: /.union_mp.tmp.31ZHNHz52BI/Programs/Skalibs/2.11.0.0: no mount point specified.
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Programs/Skalibs/2.11.0.0
umount: /.union_mp.tmp.31ZHNHz52BI/Data/Compile/Sources/skalibs-2.11.0.0: no mount point specified.
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Data/Compile/Sources/skalibs-2.11.0.0
/Programs/Compile/017-GIT/bin/…/Functions/UnionFS: line 59: fusermount: command not found
Error unmounting /.union_mp.tmp.31ZHNHz52BI/usr
/Programs/Compile/017-GIT/bin/…/Functions/UnionFS: line 59: fusermount: command not found
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Users
/Programs/Compile/017-GIT/bin/…/Functions/UnionFS: line 59: fusermount: command not found
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Data
/Programs/Compile/017-GIT/bin/…/Functions/UnionFS: line 59: fusermount: command not found
Error unmounting /.union_mp.tmp.31ZHNHz52BI/System
/Programs/Compile/017-GIT/bin/…/Functions/UnionFS: line 59: fusermount: command not found
Error unmounting /.union_mp.tmp.31ZHNHz52BI/Programs
Compile: Skalibs 2.11.0.0 - Installation step failed.

May I ask you if we need Overlay only as a part of the installation process ? Is Overlay used for something else in Gobo ?