site  contact  subhomenews

woofQ2 now generates devx sfs

June 28, 2025 — BarryK

I recently posted some pictures of the structure of woofQ2:

There is a fundamental problem with the pups and pup-derivatives and pup-lookalikes; that they use a aufs/overlayfs layered filesystem, which traditional package managers such as APT do not recognise.

The "devx" squashfs file is an example. It has lots of packages. APT/dpkg maintains a database of installed packages in /var/lib/dpkg; in the case of EasyOS, that will be in the bottom layer, easy.sfs. Then you want to compile a source package and bootup with the devx .sfs layered on top; how can APT/dpkg be informed that there are a whole lot of new packages installed? Unfortunately, it is not a simple matter of having another layer of /var/lib/dpkg in the devx sfs.

There are some pup-lookalikes that just don't bother; they don't have a devx sfs. Instead, you have to install development packages directly into the read-write layer. It is very tedious to figure out what to install. Though, with APT, you can at least get started with:

# apt install build-essential

The great advantage of the devx sfs is that it has all the matching "-dev" packages for the packages in easy.sfs, plus heaps of tools such as git, gdb, cmake, etc.

In the new-generation of EasyOS, based on woofQ2, I have avoided the problem withe devx sfs, simply by, when it is loaded, just not telling APT/dpkg about the presence of all these new packages. APT/dpkg simply isn't aware of them. So if you remove the devx sfs, APT/dpkg can carry on as normal. There may be some gotchas with doing this, but it seems passable.

Regarding woofQ2, there is a new script, '2create-devx-sfs':

img1

Have run it, and currently this is what is in it:

autoconf automake autopoint autotools-dev bin86 binutils binutils-common binutils-dev binutils-x86-64-linux-gnu bison build-essential cargo checkinstall clang clang-19 cmake cmake-data comerr-dev cpp-14 curl cvs cvsps cython3 debhelper devscripts devscripts-devuan dh-autoreconf dh-strip-nondeterminism dictionaries-common-dev distro-info-data docbook docbook-to-man docbook-xml docbook-xsl doxygen dpkg-dev dwz flex fossil g++-14 g++ g++-14-x86-64-linux-gnu gcc-14 gcc gcc-14-locales gcc-14-plugin-dev gcc-14-x86-64-linux-gnu gcc-x86-64-linux-gnu gdb gettext gir1.2-freedesktop-dev gir1.2-gdesktopenums-3.0 gir1.2-girepository-2.0-dev gir1.2-glib-2.0-dev girepository-tools git git-all git-buildpackage git-cvs git-doc git-email git-gui gitk git-man git-mediawiki git-svn gitweb gnome-icon-theme gnu-efi groff gsettings-desktop-schemas-dev guile-3.0 guile-3.0-libs g++-x86-64-linux-gnu help2man highlight highlight-common intltool-debian itstool jq krb5-multidev libaa1-dev libacl1-dev libalgorithm-c3-perl libapr1t64 libaprutil1t64 libarchive-zip-perl libargon2-dev libasan8 libasound2-dev libattr1-dev libbabeltrace1 libb-hooks-endofscope-perl libb-hooks-op-check-perl libbinutils libblkid-dev libboost1.83-dev libboost-dev libbrotli-dev libbz2-dev libc6-dev libcairo2-dev libcc1-0 libcddb2-dev libc-dev-bin libcgi-pm-perl libclang1 libclang1-19 libclang-common-19-dev libclang-cpp19 libclass-c3-perl libclass-data-inheritable-perl libclass-inspector-perl libclass-method-modifiers-perl libclass-singleton-perl libclass-xsaccessor-perl libcrypt-dev libctf0 libctf-nobfd0 libcups2-dev libcupsimage2-dev libcupsimage2t64 libcurl4-openssl-dev libdata-optlist-perl libdatetime-format-builder-perl libdatetime-format-iso8601-perl libdatetime-format-strptime-perl libdatetime-locale-perl libdatetime-perl libdatetime-timezone-perl libdb5.3-dev libdbd-sqlite3-perl libdbi-perl libdebconfclient0-dev libdebhelper-perl libdebuginfod1t64 libdebuginfod-common libdeflate-dev libdevel-callchecker-perl libdevel-stacktrace-perl libdpkg-perl libdrm-dev libdv4-dev libdynaloader-functions-perl liberror-perl libeval-closure-perl libevent-2.1-7t64 libexception-class-perl libexpat1-dev libffi-dev libfile-dirlist-perl libfile-homedir-perl libfile-sharedir-perl libfile-stripnondeterminism-perl libfile-touch-perl libfile-which-perl libflac-dev libfltk1.3-dev libfltk-cairo1.3t64 libfltk-forms1.3t64 libfltk-gl1.3t64 libfltk-images1.3t64 libfmt10 libfontconfig1-dev libfontconfig-dev libfontenc-dev libfreetype-dev libgcc-14-dev libgcrypt20-dev libgio-2.0-dev libgio-2.0-dev-bin libgirepository-2.0-0 libgit2-1.9 libgl-dev libglib2.0-dev libglib2.0-dev-bin libglx-dev libgmp-dev libgmpxx4ldbl libgnutls28-dev libgnutls-dane0t64 libgnutls-openssl27t64 libgpg-error-dev libgprofng0 libgsm1-dev libgssrpc4t64 libhttp-parser2.9 libhwasan0 libice-dev libidn2-dev libimport-into-perl libinotifytools0-dev libipt2 libitm1 libjbig2dec0-dev libjbig-dev libjpeg62-turbo-dev libjpeg-dev libjq1 libjs-jquery libjsoncpp26 libjson-perl libjs-sphinxdoc libjs-underscore libkadm5clnt-mit12 libkadm5srv-mit12 libkdb5-10t64 libkrb5-dev libldap2-dev libldap-dev libldb-dev liblerc-dev liblsan0 liblua5.4-0 liblzma-dev libmailtools-perl libmbedtls21 libmbedx509-7 libmediawiki-api-perl libmodule-implementation-perl libmodule-runtime-perl libmoo-perl libmount-dev libmpc-dev libmpfr-dev libmpg123-dev libmro-compat-perl libnamespace-autoclean-perl libnamespace-clean-perl libncurses-dev libneon27-dev libnet-smtp-ssl-perl libnghttp2-dev libnghttp3-dev libnpth0-dev libnspr4-dev libnss3-dev libobjc-14-dev libobjc4 libogg-dev libonig5 libopenjp2-7-dev libopus-dev libosp5 libout123-0t64 libp11-kit-dev libpackage-stash-perl libpam0g-dev libparams-classify-perl libparams-util-perl libparams-validate-perl libparams-validationcompiler-perl libpciaccess-dev libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpfm4 libpixman-1-dev libpng-dev libpod-parser-perl libpopt-dev libpsl-dev libpython3.13-dev libpython3-all-dev libpython3-dev libraptor2-dev librasqal3-dev librdf0-dev librhash1 librole-tiny-perl librtmp-dev libsamplerate0-dev libselinux1-dev libsepol-dev libserf-1-1 libsframe1 libsharpyuv-dev libshout3-dev libshout-dev libslang2-dev libsm-dev libsndfile1-dev libsource-highlight4t64 libsource-highlight-common libspecio-perl libspeex-dev libssh2-1-dev libssl-dev libstartup-notification0-dev libstdc++-14-dev libstd-rust-1.85 libstd-rust-dev libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-name-perl libsub-quote-perl libsvn1 libsvn-perl libsyn123-0t64 libsyntax-keyword-try-perl libsysprof-capture-4-dev libtalloc-dev libtasn1-6-dev libtcl8.6 libtdb-dev libterm-readkey-perl libtevent-dev libtext-unidecode-perl libtheora-dev libtiff-dev libtiffxx6 libtk8.6 libtool libtsan2 libubsan1 libunbound8 libusb-1.0-0-dev libutf8proc3 libuv1-dev libvala-0.56-0 libvalacodegen-0.56-0 libvariable-magic-perl libvorbis-dev libwbclient-dev libwebpdecoder3 libwebp-dev libwrap0-dev libx11-dev libxapian30 libxau-dev libxaw7-dev libxcb1-dev libxcb-damage0-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb-xv0-dev libxcvt-dev libxdmcp-dev libxext-dev libxfont-dev libxkbfile-dev libxml2-dev libxmlsec1-dev libxmlsec1t64-gcrypt libxmlsec1t64-gnutls libxmlsec1t64-openssl libxmu-dev libxmu-headers libxpm-dev libxrender-dev libxslt1-dev libxs-parse-keyword-perl libxstring-perl libxt-dev libyajl-dev libyaml-perl libzstd-dev linux-libc-dev linux-libc-dev linux-libc-dev lld-19 llvm-19 llvm-19-linker-tools llvm-19-runtime m4 make man-db mesa-common-dev meson nasm native-architecture nettle-dev network-manager-dev ninja-build ntfs-3g-dev ocl-icd-dev opencl-c-headers opensp patchutils po4a po-debconf python3.13-dev python3-all python3-all-dev python3-cairo-dev python3-dateutil python3-dev python3-jaraco.text python3-libxml2 python3-setuptools python3-yaml python3-zipp re2c rman rpcsvc-proto rust-all rust-analyzer rustc rust-clippy rustfmt rust-gdb rust-llvm samba-dev scons sgml-base sgml-data strace subversion sysprofile tcl tcl8.6 tex-common texinfo texinfo-lib tk tk8.6 uuid-dev valac valac-0.56-vapi valac-bin wdiff x11proto-dev xdg-desktop-portal-dev xml-core xorg-sgml-doctools xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xtrans-dev xutils-dev yasm zlib1g-dev

I think that is enough to cover most compile needs, except not for Qt5 or Qt6. The devx sfs is currently 420MB.

I'm going through radical revisions with woofQ2, and one thing will be simplification of how sfs files work. Will post about that.

A note about the variable $PKGS_SPECS_TABLE; that has been in Woof* since the very beginning. Woof* developers and users will know about it. It is now gone, replaced with simple lists of required packages. Finding "-dev" packages for the devx sfs is done automatically.   

Tags: easy