Yann E. MORIN c9a184cf31 package/pkg-cargo: don't install crates tracking
By default, 'cargo install' also installs a kind of "registry" in
/usr/.crates2.json and /usr/.crates.toml [0]:
    To track information of installed executables, some extra files,
    such as .crates.toml and .crates2.json, are also created under this
    root.

Presumably, this would be used by "cargo uninstall" to properly cleanup
the package [1]:
    By default all binaries are removed for a crate [...].

However, in the context of Buildroot, this is useless, as we do not
uninstall packages, and thus those files are superfluous.

Tell cargo to not create that tracking information, by using --no-track
to "cargo install".

Note that this would cause cargo to fail to install a file that already
exists [2], like would be the case when running foo-reinstall for example:
    --no-track
    By default, Cargo keeps track of the installed packages with a
    metadata file stored in the installation root directory. This flag
    tells Cargo not to use or create that file. With this flag, Cargo
    will refuse to overwrite any existing files unless the --force flag
    is used. This also disables Cargo’s ability to protect against
    multiple concurrent invocations of Cargo installing at the same
    time.

However, we do already use --force which allows cargo to overwrite
existing files without any further ado, so in our case, --no-track will
only disable the tracking information.

Also, in Buildroot, we do not have concurrent installation _to the same
location_: either PPD is disabled, in which case only one package will
be installed to the common target/ at a time, or we're using PPD, so
each package will get installed into its own target/. Thus, --no-track
has no adverse side effect for us.

Fixes:

  https://gitlab.com/buildroot.org/buildroot/-/issues/17

[0] https://doc.rust-lang.org/cargo/reference/config.html#installroot
[1] https://doc.rust-lang.org/cargo/commands/cargo-uninstall.html
[2] https://doc.rust-lang.org/cargo/commands/cargo-install.html

Reported-by: Thomas Kindler @thomask77
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Tested-by: Thomas Kindler @thomask77
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-09-05 21:02:39 +02:00
2024-06-05 23:31:18 +02:00
2024-08-08 22:55:41 +02:00
2024-08-08 22:55:41 +02:00

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
Description
No description provided
Readme 207 MiB
Languages
Makefile 62.5%
Python 19%
C 8.5%
Shell 6.1%
PHP 1.4%
Other 2.1%