[vlc-devel] [PATCHv3 3/7] contrib: add rust rules

Steve Lhomme robux4 at ycbcr.xyz
Mon Aug 31 09:24:19 CEST 2020



On 2020-08-27 16:44, Thomas Guillem wrote:
> This adds CARGO_INSTALL and CARGOC_INSTALL, using the correct cargo path (from
> contribs) and using the correct install arguments.
> 
> cf. https://doc.rust-lang.org/cargo/commands/cargo-vendor.html
> 'cargo vendor' fetch all dependencies required by a Rust project.
> 
> Administrators will be able to create an archive (via the upcoming
> cargo-vendor-archive.sh script) containing all dependencies of a Rust project
> and upload it to the VideoLAN FTP.
> 
> *-vendor packages will try to use such archive as the only crates source. In
> case of failure (checksum failed, archive not uploaded), CARGO_INSTALL will
> fallback to crates.io (by not using the --frozen --offline arguments).
> 
> A warning is displayed when the crates.io source is used. This is like our
> download_pkg mechanism (try first VideoLAN FTP, or print a warning and use the
> original source).
> ---
>   contrib/src/main-rust.mak | 42 +++++++++++++++++++++++++++++++++++++++
>   1 file changed, 42 insertions(+)
> 
> diff --git a/contrib/src/main-rust.mak b/contrib/src/main-rust.mak
> index ca272e25e21..2a0654e4698 100644
> --- a/contrib/src/main-rust.mak
> +++ b/contrib/src/main-rust.mak
> @@ -18,3 +18,45 @@ RUST_TARGET = x86_64-sun-solaris
>   else ifdef HAVE_LINUX
>   RUST_TARGET = $(ARCH)-unknown-linux-gnu
>   endif
> +
> +CARGO_HOME = $(BUILDBINDIR)/.cargo
> +
> +CARGO = CARGO_HOME=$(CARGO_HOME) $(CARGO_HOME)/bin/cargo
> +
> +CARGO_INSTALL_ARGS = --target=$(RUST_TARGET) --prefix=$(PREFIX) \
> +	--library-type staticlib --release
> +
> +# Use the .cargo-vendor source if present, otherwise use crates.io
> +CARGO_INSTALL_ARGS += \
> +	$(shell test -d $<-vendor && echo --frozen --offline || echo --locked)
> +
> +CARGO_INSTALL = $(CARGO) install $(CARGO_INSTALL_ARGS)
> +
> +CARGOC_INSTALL = $(CARGO) capi install $(CARGO_INSTALL_ARGS)
> +
> +download_vendor = \
> +	$(call download,$(CONTRIB_VIDEOLAN)/$(1)) || (\
> +               echo "" && \
> +               echo "WARNING: cargo vendor archive for $(1) not found" && \
> +               echo "" && \
> +               touch $@);
> +
> +# Extract and move the vendor archive if the checksum is valid. Succeed even in
> +# case of error (download or checksum failed). In that case, the cargo-vendor
> +# archive won't be used (crates.io will be used directly).
> +.%-vendor: $(SRC)/%-vendor/SHA512SUMS
> +	$(RM) -R $(patsubst .%,%,$@)
> +	$(call checksum,$(SHA512SUM),SHA512,.) \
> +		$(foreach f,$(filter %.tar.bz2,$^), && tar xvjfo $(f) && \
> +		  mv $(patsubst %.tar.bz2,%,$(notdir $(f))) $(patsubst .%,%,$@)) || true
> +	touch $@

It seems you are processing all the *-vendor files for every *-vendor 
file that is found in the big Makefile ? Or is there one big checksum 
file for all the vendor files ?

> +
> +CARGO_VENDOR_SETUP = \
> +	if test -d $@-vendor; then \
> +		mkdir -p $(UNPACK_DIR)/.cargo; \
> +		echo "[source.crates-io]" > $(UNPACK_DIR)/.cargo/config.toml; \
> +		echo "replace-with = \"vendored-sources\"" >> $(UNPACK_DIR)/.cargo/config.toml; \
> +		echo "[source.vendored-sources]" >> $(UNPACK_DIR)/.cargo/config.toml; \
> +		echo "directory = \"../$@-vendor\"" >> $(UNPACK_DIR)/.cargo/config.toml; \
> +		echo "Using cargo vendor archive for $(UNPACK_DIR)"; \
> +	fi;
> -- 
> 2.28.0
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list