Message ID | 20221025100200.78438-1-simon.richter@ptwdosimetry.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2] support/download/cargo-post-process: cargo output for vendor config | expand |
Simon, All, On 2022-10-25 12:02 +0200, Simon Richter spake thusly: > Use the output of `cargo vendor` to generate the vendor configuration. > > Fixes the need to patch the generated configuration if there are > non-crates.io dependencies. > > Note: > `cargo vendor` currently prints a newline before it prints the > needed configuration. > > This is fixed in +nightly, will end up in +stable soon and must > be considered when updating cargo. > See: https://github.com/rust-lang/cargo/pull/11273 This is going to need care when we bump, so I added a little comment in rust-bin.mk and rust.mk tocheck that a version bump still generates the same archives. > Until then it is needed to remove this first line to make sure > that the contents of .cargo/config will be the same as they were > generated with the earlier version of the script. Thus, the > hashes of the packages that use this script remain the same. > > Signed-off-by: Simon Richter <simon.richter@ptwdosimetry.com> Applied to master, thanks. Regards, Yann E. MORIN. > --- > support/download/cargo-post-process | 26 +++++++++++++++++++------- > 1 file changed, 19 insertions(+), 7 deletions(-) > > diff --git a/support/download/cargo-post-process b/support/download/cargo-post-process > index a4a4718a2a..186e9eb69b 100755 > --- a/support/download/cargo-post-process > +++ b/support/download/cargo-post-process > @@ -1,6 +1,7 @@ > #!/usr/bin/env bash > > set -e > +set -o pipefail > > . "${0%/*}/helpers" > > @@ -22,17 +23,28 @@ post_process_unpack "${base_name}" "${output}" > > # Do the Cargo vendoring > pushd "${base_name}" > /dev/null > -cargo vendor --manifest-path ${BR_CARGO_MANIFEST_PATH-Cargo.toml} --locked VENDOR > > # Create the local .cargo/config with vendor info > +# > +# The first line of the output to stdout is empty. > +# So skip it to have the file start with the vendoring > +# configuration (`tail --lines=+2`). > +# > +# NOTE: > +# There is a patch for cargo to remove the first empty line: > +# See: https://github.com/rust-lang/cargo/pull/11273 > +# > +# The patch already landed in +nightly and will end up > +# in +stable soon. > +# > +# -> When updating rust/cargo, the call to `tail` must be removed. > +# > mkdir -p .cargo/ > -cat <<EOF >.cargo/config > -[source.crates-io] > -replace-with = "vendored-sources" > +cargo vendor \ > + --manifest-path ${BR_CARGO_MANIFEST_PATH-Cargo.toml} \ > + --locked VENDOR \ > + | tail --lines=+2 | tee .cargo/config > > -[source.vendored-sources] > -directory = "VENDOR" > -EOF > popd > /dev/null > > post_process_repack "$(pwd)" "${base_name}" "${output}" > -- > 2.38.1 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/support/download/cargo-post-process b/support/download/cargo-post-process index a4a4718a2a..186e9eb69b 100755 --- a/support/download/cargo-post-process +++ b/support/download/cargo-post-process @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -e +set -o pipefail . "${0%/*}/helpers" @@ -22,17 +23,28 @@ post_process_unpack "${base_name}" "${output}" # Do the Cargo vendoring pushd "${base_name}" > /dev/null -cargo vendor --manifest-path ${BR_CARGO_MANIFEST_PATH-Cargo.toml} --locked VENDOR # Create the local .cargo/config with vendor info +# +# The first line of the output to stdout is empty. +# So skip it to have the file start with the vendoring +# configuration (`tail --lines=+2`). +# +# NOTE: +# There is a patch for cargo to remove the first empty line: +# See: https://github.com/rust-lang/cargo/pull/11273 +# +# The patch already landed in +nightly and will end up +# in +stable soon. +# +# -> When updating rust/cargo, the call to `tail` must be removed. +# mkdir -p .cargo/ -cat <<EOF >.cargo/config -[source.crates-io] -replace-with = "vendored-sources" +cargo vendor \ + --manifest-path ${BR_CARGO_MANIFEST_PATH-Cargo.toml} \ + --locked VENDOR \ + | tail --lines=+2 | tee .cargo/config -[source.vendored-sources] -directory = "VENDOR" -EOF popd > /dev/null post_process_repack "$(pwd)" "${base_name}" "${output}"
Use the output of `cargo vendor` to generate the vendor configuration. Fixes the need to patch the generated configuration if there are non-crates.io dependencies. Note: `cargo vendor` currently prints a newline before it prints the needed configuration. This is fixed in +nightly, will end up in +stable soon and must be considered when updating cargo. See: https://github.com/rust-lang/cargo/pull/11273 Until then it is needed to remove this first line to make sure that the contents of .cargo/config will be the same as they were generated with the earlier version of the script. Thus, the hashes of the packages that use this script remain the same. Signed-off-by: Simon Richter <simon.richter@ptwdosimetry.com> --- support/download/cargo-post-process | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-)