BinaryBuilder sandbox No space left on device

Trying to build a binary with BinaryBuilder fails with “No space left on device”:

sandbox:${WORKSPACE}/srcdir/Slint.jl/deps/SlintWrapper # df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                   1.0G      1.0G         0 100% /
df: /opt/x86_64-linux-musl/nonce: No such file or directory
df: /opt/x86_64-linux-musl/GCCBootstrap-5.2.0: No such file or directory
df: /opt/x86_64-linux-musl/PlatformSupport-2025.8.13: No such file or directory
df: /opt/x86_64-linux-musl/RustToolchain-1.91.0-x86_64-linux-musl): No such file or directory
df: /opt/x86_64-linux-musl/RustToolchain-1.91.0-x86_64-linux-gnu): No such file or directory
df: /opt/x86_64-linux-musl/RustBase-1.91.0: No such file or directory
df: /opt/x86_64-linux-musl/LLVMBootstrap-18.1.7: No such file or directory
df: /opt/x86_64-linux-gnu/GCCBootstrap-5.2.0: No such file or directory
df: /opt/x86_64-linux-gnu/PlatformSupport-2025.8.13: No such file or directory
overlay                   1.0G      1.0G         0 100% /opt/x86_64-linux-gnu
overlay                   1.0G      1.0G         0 100% /opt/x86_64-linux-musl
udev                      7.8G         0      7.8G   0% /dev/null
udev                      7.8G         0      7.8G   0% /dev/tty
udev                      7.8G         0      7.8G   0% /dev/urandom
/dev/vda4               384.3G    103.6G    261.1G  28% /etc/resolv.conf
/dev/vda4               384.3G    103.6G    261.1G  28% /opt/toolchains
/dev/vda4               384.3G    103.6G    261.1G  28% /opt/bin
/dev/vda4               384.3G    103.6G    261.1G  28% /meta
/dev/vda4               384.3G    103.6G    261.1G  28% /workspace
overlay                 384.3G    103.6G    261.1G  28% /workspace/srcdir

What I found, like
mount -t tmpfs -o size=12G tmpfs /workspace/srcdir
seems not to apply.

What can I do?

That’s not very specific, is it? What’s the partition where you don’t have more space? For what is worth, /tmp is mounted on a tiny 1 GB, that’s easy to fill out, but /workspace/srcdir should have access to your entire disk space.

Summary: find what’s writing where, if possible direct it to partitions where you have plenty of space. Temporary directories can be changed by setting the TMPDIR environment variable (that’s a general Unix thing)

I provided the output of df -h inside the sandbox. So that’s most specific I can be with my knowledge about this.

You didn’t show the error message, which should hopefully tell you where the file is being attempted to be written to.

This is the error:

warning: build failed, waiting for other jobs to finish...
error: failed to write /tmp/rustczDZ2xr/lib.rmeta: No space left on device (os error 28)

error: could not compile `jiff` (lib) due to 1 previous error
error: failed to write /tmp/rustcNcVkJj/lib.rmeta: No space left on device (os error 28)

error: could not compile `i-slint-backend-winit` (lib) due to 1 previous error
error: failed to write /tmp/rustc2qVfV6/lib.rmeta: No space left on device (os error 28)

error: could not compile `slint-interpreter` (lib) due to 1 previous error

It is /tmp.

So I am going to use TMPDIR with /workspace/srcdir/tmp and let you know, if this resolves the problem.

I wasn’t just providing another /tmp folder but a folder /opt/x86_64-linux-musl/registry which is created during the build and filled up.

Doing

mkdir opt-x86_64-linux-musl
mkdir opt-x86_64-linux-musl/registry
ln -s /workspace/srcdir/opt-x86_64-linux-musl/registry /opt/x86_64-linux-musl/registry

in the sandbox before building made the build successful.

After hours of hours of waiting for failed builts (like riscv64-linux-gnu, arm-unknown-linux and others) and silent ending except for WizardState [step5c] I give this up for now. Only the first build (x86_64-linux-gnu) worked. Thanks for your help anyways.

If you just search for your error messages on Yggdrasil you should find the answers to your problems, most recent PR which solved all these problems: [Qiskit] Bump to version 2.3.0 by garrison · Pull Request #12935 · JuliaPackaging/Yggdrasil · GitHub.

I don’t know how to stress it more than what it’s already in the documentation, but the wizard isn’t really great if you need to fiddle with a build.

1 Like

Thanks, especially this part:

To generate this file (explained in greater detail in Building Packages), one can clone Yggdrasil , copy an existing build recipe, modify it, and submit a new pull request.

gives me new hope. I am still a bit concerned about copy an existing build recipe. Sounds easy enough but my guess is, not just copy any recipe, but I would do best to copy a recipe which is similar to my needs (with rust e.g.) and the sheer number of recipes let me doubt my search skills… but anyways, I will give it a try as soon as I have time (somewhere during next week).

Thanks again for your encouragement :folded_hands::man_raising_hand: