Skip to content

Conversation

@pmenzel
Copy link
Collaborator

This pull request description was generated by an LLM (Claude Code) on behalf of Paul Menzel (@pmenzel).

Rebuilding one package against dependencies newer than the host's — for example mesa against the released LLVM 23.1.3 — meant putting the whole dependency chain on the command line and rebuilding all of it, although the packages were already built and in /src/mariux/beeroot/packages.

-p, --preinstall PKG installs such packages into the overlay before the first bee-file is built:

scripts/bee-mxqsub -p llvm-23.1.3-0 -p spirv-llvm-translator-23.1.2-0 mesalib.be0
  • PKG is a package archive path, or an exact name-version-revision[.arch] looked up in --preinstall-from DIR (default /src/mariux/beeroot/packages). A prefix does not count, so llvm-23.1 does not quietly pick llvm-23.1.3-0.
  • Names are resolved at submit time, so a typo fails before the job waits in the queue; --dry-run shows the resolved paths.
  • Installation uses the same bee update --force --remove-all and bee list --installed --exact check as the chain, so the host's version of the package is hidden in the overlay. The shared part is factored out into install_archive_into_overlay().
  • --preinstall turns the overlay on even for a single bee-file; with --no-overlay it is an error.
  • A failed pre-install builds no bee-file, --keep-going or not.

Tests

  • Dry runs: name, name with .arch, archive path, prefix (llvm-23.1), bare name, missing path and --no-overlay all behave as described.

  • MXQ job 60600434 on platypus: pre-installed giflib-4.1.6-0 by name (the host has -1) and whois by archive path, then built a throwaway recipe checking the overlay:

    === [preinstall] giflib-4.1.6-0.x86_64.bee.tar.bz2: 2026-10-15 06:42:33 install into the overlay exited with 0
    === [preinstall] whois-5.6.6-0.x86_64.bee.tar.bz2: 2026-10-15 06:42:34 install into the overlay exited with 0
    PROBE OK
    === [1/1] preinstall-probe.be0: 2026-10-15 06:42:35 beesh exited with 0
    === preinstall-probe: 2026-10-15 06:42:36 done, exit 0
    
  • Abort path: an empty file passed as an archive fails to install and nothing is built, even with -k:

    === [preinstall] broken-1.0-0.x86_64.bee.tar.bz2: 2026-10-15 06:43:05 install into the overlay exited with 1
    === stopping, 1 bee-file(s) not built
    === preinstall-probe: 2026-10-15 06:43:05 done, exit 1
    

Not addressed here

  • The job runs the live scripts/bee-mxqsub from the checkout; only the bee-files are staged.
  • The default build root and overlay root (/dev/shm/bee-$USER, /dev/shm/bee-overlay-$USER) are shared by all of a user's jobs, so two jobs landing on the same node would remove each other's trees.

🤖 Generated with Claude Code

Rebuilding one package against dependencies newer than the host's, for
example mesa against the released LLVM 23.1.3, meant putting the whole
dependency chain on the command line and rebuilding all of it, although
the packages were already built and in /src/mariux/beeroot/packages.

`-p, --preinstall PKG` installs such a package into the overlay before
the first bee-file is built, with the same `bee update --force
--remove-all` and `bee list --installed --exact` check the chain uses.
PKG is a package archive, or name-version-revision[.arch], looked up in
`--preinstall-from DIR` (default /src/mariux/beeroot/packages). Only an
exact match counts, so `llvm-23.1` does not quietly pick llvm-23.1.3-0.
The names are resolved when submitting, so a typo fails before the job
waits in the queue:

    $ scripts/bee-mxqsub -d -p llvm-23.1 mesalib.be0
    bee-mxqsub: no package 'llvm-23.1' in /src/mariux/beeroot/packages, pass name-version-revision or an archive

A pre-installed package turns the overlay on even for a single
bee-file, and goes with --no-overlay not at all. If installing one
fails, no bee-file is built, --keep-going or not, as they were all
meant to build against it:

    === [preinstall] broken-1.0-0.x86_64.bee.tar.bz2: 2026-10-15 06:43:05 install into the overlay exited with 1
    === stopping, 1 bee-file(s) not built
    === preinstall-probe: failed: broken-1.0-0.x86_64.bee.tar.bz2
    === preinstall-probe: 2026-10-15 06:43:05 done, exit 1

Tested in MXQ job 60600434 on platypus: giflib-4.1.6-0 by name, whose
host has -1, and whois by archive path, then a throwaway recipe checking
that `bee list` in the overlay shows giflib-4.1.6-0 and whois, and not
giflib-4.1.6-1:

    === [preinstall] giflib-4.1.6-0.x86_64.bee.tar.bz2: 2026-10-15 06:42:33 install into the overlay exited with 0
    === [preinstall] whois-5.6.6-0.x86_64.bee.tar.bz2: 2026-10-15 06:42:34 install into the overlay exited with 0
    PROBE OK
    === [1/1] preinstall-probe.be0: 2026-10-15 06:42:35 beesh exited with 0
    === preinstall-probe: 2026-10-15 06:42:36 done, exit 0

Assisted-by: claude-opus-5.5 (Claude Code)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign in to join this conversation on GitHub.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant