extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/rustc-beta-x86_64-unknown-linux-gnu.tar.xz
extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz
extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/cargo-beta-x86_64-unknown-linux-gnu.tar.xz
Traceback (most recent call last):
File "/home/binarycat/src/rs/rust/x.py", line 53, in <module>
bootstrap.main()
~~~~~~~~~~~~~~^^
File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 1372, in main
bootstrap(args)
~~~~~~~~~^^^^^^
File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 1337, in bootstrap
build.download_toolchain()
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 696, in download_toolchain
shutil.rmtree(bootstrap_build_artifacts)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/shutil.py", line 763, in rmtree
_rmtree_safe_fd(stack, onexc)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3.13/shutil.py", line 704, in _rmtree_safe_fd
onexc(func, path, err)
~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/shutil.py", line 658, in _rmtree_safe_fd
os.rmdir(name, dir_fd=dirfd)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/binarycat/src/rs/rust/build/bootstrap/debug'
Summary
cargo uses lockfiles to protect the build directory, however these only protect against parallel invocations of cargo, and bootstrap does a bunch of other file manipulations that
Command used
./x tidy & ./x tidyExpected behaviour
One invocation acquires the lockfile, while the other blocks and waits for the lockfile to be unlocked, resuming once the first one is complete.
This is a problem because or rust-analyzer config recommends going through
./x check, which may cause build cache corruption if the user runs an./x.pycommand at the same time r-a decides to do a check.Actual behaviour
Both instances of bootstrap try to operate on the same files at the same time, causing one of them to crash.
Bootstrap configuration (bootstrap.toml)
Operating system
Arch Linux
HEAD
78a6e13
Additional context
Build Log
extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/rustc-beta-x86_64-unknown-linux-gnu.tar.xz extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz extracting /home/binarycat/src/rs/rust/build/cache/2025-06-24/cargo-beta-x86_64-unknown-linux-gnu.tar.xz Traceback (most recent call last): File "/home/binarycat/src/rs/rust/x.py", line 53, in <module> bootstrap.main() ~~~~~~~~~~~~~~^^ File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 1372, in main bootstrap(args) ~~~~~~~~~^^^^^^ File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 1337, in bootstrap build.download_toolchain() ~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/home/binarycat/src/rs/rust/src/bootstrap/bootstrap.py", line 696, in download_toolchain shutil.rmtree(bootstrap_build_artifacts) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/shutil.py", line 763, in rmtree _rmtree_safe_fd(stack, onexc) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/usr/lib/python3.13/shutil.py", line 704, in _rmtree_safe_fd onexc(func, path, err) ~~~~~^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/shutil.py", line 658, in _rmtree_safe_fd os.rmdir(name, dir_fd=dirfd) ~~~~~~~~^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/home/binarycat/src/rs/rust/build/bootstrap/debug'