8450b76918
CARGO_HOME is where Cargo stores its downloaded artefacts. See https://doc.rust-lang.org/cargo/reference/environment-variables.html: CARGO_HOME — Cargo maintains a local cache of the registry index and of git checkouts of crates. By default these are stored under $HOME/.cargo (%USERPROFILE%\.cargo on Windows), but this variable overrides the location of this directory. Once a crate is cached it is not removed by the clean command. For more details refer to the guide. We currently make it point to $(HOST_DIR)/share/cargo, but this has a number of drawbacks: (1) It is not shared between Buildroot builds. Each Buildroot build will re-download the crates index, and the crates themselves, unless of course the final vendored tarball is already there. (2) With BR2_PER_PACKAGE_DIRECTORIES=y, it is even worse: CARGO_HOME is not even shared between packages, as $(HOST_DIR)/share/cargo is per package. So each package in the build that needs vendoring of Cargo crates will download the crates index and the crates in its own CARGO_HOME location. To solve this, this commit moves CARGO_HOME into $(DL_DIR), so that it is shared between builds and packages. Even though not the best/most authoritative source, https://github.com/rust-lang/cargo/issues/6930 indicates that there is a lock when accessing CARGO_HOME, because a user even complains that this lock has even become more coarse-grained than it used to be (which for us is fine, it just means that two Cargo fetch operations from two different packages will be serialized, not a big deal). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Moritz Bitsch <moritz@h6t.eu> [yann.morin.1998@free.fr: rename directory: s/\.cargo/br-cargo-home/] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.clang-format | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
.shellcheckrc | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches