Skip to content

feat(util-linux): drop configure-project-installer + sudo, inline autotools build#68

Merged
Sunrisepeak merged 1 commit intomainfrom
feat/cluster-b-util-linux-sandbox
May 1, 2026
Merged

feat(util-linux): drop configure-project-installer + sudo, inline autotools build#68
Sunrisepeak merged 1 commit intomainfrom
feat/cluster-b-util-linux-sandbox

Conversation

@Sunrisepeak
Copy link
Copy Markdown
Member

Summary

  • Switch fromsource:util-linux from xim:configure-project-installer shim to its own inline autotools build
  • Apply the cluster-A sandbox-fix template
  • Drop sudo from the install step; the legacy flow ran sudo configure-project-installer ... --install-by-sudo which was needed for setuid bits on mount/wall. Setuid is meaningless for files inside the per-user xpkg dir that get xvm-shimmed into subos/default/bin later, so we use --disable-makeinstall-{chown,setuid} and skip the elevation
  • Configure flags add --without-systemd*, --disable-asciidoc, --disable-bash-completion to keep the install confined to our prefix
  • Pin upstream url + sha256 (mirrors.edge.kernel.org, with v<MAJOR.MINOR>/ subdir derivation)
  • Cluster B leaf 7/8

Verification (local isolated xlings 0.4.9, with cluster-B 3 ncurses #64 merged)

  • ✅ clean install
  • ✅ produced bin/{uuidgen,lsblk,mount,fdisk,hwclock,…}
  • ✅ produced lib/{libuuid,libmount,libblkid,libfdisk,libsmartcols,liblastlog2}.so.1.* + soname symlinks
  • ✅ headers copied to subos sysroot/usr/include

Test plan

  • Local iso e2e
  • CI (linux-test, static-and-isolation, index-registration)

…otools build

Switch fromsource:util-linux to its own inline autotools build:

* paths derived from pkginfo.install_file()
* configure + make + install in single sh -c
* fixed -j8
* sysroot include dir wrapped in _sys_usr_includedir() helper
* shell cp -r replaces os.dirs / os.files glob (silent no-ops in 0.4.9)
* declare upstream url + sha256 (mirrors.edge.kernel.org, derives the
  v<MAJOR.MINOR>/ subdir from version)
* deps: explicit xim:gcc + xim:make + xim:xpkg-helper (previously
  pulled in transitively via xim:configure-project-installer)

Build flags:
  --disable-eject                     (skip scsi/scsi.h dep)
  --disable-makeinstall-chown
  --disable-makeinstall-setuid        (drop sudo install path; xpkg
                                       binaries get xvm-shimmed into
                                       subos/default/bin and root
                                       perms aren't useful inside the
                                       per-user xpkg dir anyway)
  --without-systemd
  --without-systemdsystemunitdir      (no systemd in xpkg sysroot)
  --disable-asciidoc                  (skip docs)
  --disable-bash-completion           (would write outside prefix to
                                       /usr/share/bash-completion)

Verified end-to-end in xlings 0.4.9 iso (with cluster-B leaf 3
ncurses MERGED upstream as #64):
  ✓ configure -> make -j8 -> make install
  ✓ produced bin/{uuidgen,lsblk,mount,fdisk,hwclock,…}
  ✓ produced lib/{libuuid,libmount,libblkid,libfdisk,libsmartcols,
    liblastlog2}.so.1.x.y + soname symlinks
  ✓ headers (incl. libmount/, blkid/, uuid/, …) shell-copied to
    subos sysroot
  ✓ "9 package(s) installed" exit 0

Cluster B leaf 7/8.
@Sunrisepeak Sunrisepeak merged commit f3629b3 into main May 1, 2026
5 checks passed
@Sunrisepeak Sunrisepeak deleted the feat/cluster-b-util-linux-sandbox branch May 1, 2026 18:36
Sunrisepeak added a commit that referenced this pull request May 1, 2026
#69)

Switch fromsource:python (cpython) to its own inline autotools build,
applying the cluster-A sandbox-fix template. This is the last cluster B
leaf and exercises every other cluster-B fix end-to-end (zlib, openssl,
ncurses, readline, libffi, bzip2, xz-utils, util-linux/libuuid).

* paths derived from pkginfo.install_file() (path.absolute is nil)
* configure + make + install chained in single sh -c (os.cd doesn't
  propagate to system.exec children)
* fixed -j8
* deps: explicit xim:gcc + xim:make + xim:xpkg-helper (previously
  pulled in transitively via xim:configure-project-installer)
* license: humanized string -> SPDX PSF-2.0
* env exports kept inline in sh -c (TZDIR, CPPFLAGS, LDFLAGS) so they
  reach the configure subprocess; os.setenv at lua scope didn't reach
  configure's grandchildren via xpkg-helper indirection in the legacy
  flow.

CPPFLAGS / LDFLAGS extensions:
  -I<sysroot>/usr/include             core stdlib deps
  -I<sysroot>/usr/include/ncurses     for `<termcap.h>` / `<curses.h>`
                                      flat lookup (ncurses installs
                                      these under the ncurses/ subdir)
  -I<sysroot>/usr/include/openssl     for openssl 3 headers (some are
                                      under the openssl/ subdir)
  -L<sysroot>/lib                     find xvm-shimmed shared libs
  -Wl,-rpath,/home/xlings/.xlings_data/subos/linux/lib
                                      bake canonical xlings runtime
                                      lib path so the produced python
                                      binary loads its dependent
                                      shared libs from a user-machine
                                      install, not the build host

Configure flags:
  --enable-shared                     ship libpython3.13.so for embedders
  --with-computed-gotos               faster main loop dispatch
  --enable-ipv6                       IPv6 sockets
  --enable-loadable-sqlite-extensions ready for future fromsource:sqlite3
  --with-system-ffi                   link against fromsource:libffi

Verified end-to-end in xlings 0.4.9 iso (with cluster B 1..7 all
MERGED upstream as #62..#68):
  ✓ configure -> make -j8 -> make install (~1m20s with deps cached)
  ✓ produced bin/python3, bin/pip3, bin/idle3, bin/python3-config
  ✓ produced lib/libpython3.13.so.1.0
  ✓ python3 --version -> 3.13.1
  ✓ stdlib import sanity:
    - zlib    (zlib 1.3.1)
    - ssl     (OpenSSL 3.1.5 30 Jan 2024)
    - hashlib (sha256 round-trip)
    - lzma    (xz-utils via _lzma)
    - bz2     (bzip2)
    - uuid    (util-linux libuuid)
    - readline (8.2 patched series)
    - ctypes  (libffi)

_sqlite3 is intentionally skipped (no fromsource:sqlite3 yet — tracked
under the existing "TODO: gdbm, sqlite3, tk/tkinter" line in deps).

Cluster B leaf 8/8 — sweep complete. Net effect across cluster B:
`grep -lR configure-project-installer pkgs/` should now match zero.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant