vlc | branch: master | Thomas Guillem <[email protected]> | Tue Aug 25 15:07:35 2020 +0200| [ac229130f207cb35b2601a0feb3baa2ab778311f] | committer: Thomas Guillem
contrib: add rust rules 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). Co-Authored-By: Kartik Ohri <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ac229130f207cb35b2601a0feb3baa2ab778311f --- contrib/src/main-rust.mak | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/contrib/src/main-rust.mak b/contrib/src/main-rust.mak index ea32e69029..e31629dea6 100644 --- a/contrib/src/main-rust.mak +++ b/contrib/src/main-rust.mak @@ -37,3 +37,49 @@ endif ifneq ($(RUST_TARGET),) BUILD_RUST="1" endif + +RUSTUP_HOME= $(BUILDBINDIR)/.rustup +CARGO_HOME = $(BUILDBINDIR)/.cargo + +CARGO = . $(CARGO_HOME)/env && RUSTUP_HOME=$(RUSTUP_HOME) CARGO_HOME=$(CARGO_HOME) 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 = export TARGET_CC=$(CC) && export TARGET_AR=$(AR) && \ + export TARGET_CFLAGS="$(CFLAGS)" && \ + export RUSTFLAGS="-C lto -C panic=abort -C opt-level=z" && \ + $(CARGO) capi install $(CARGO_INSTALL_ARGS) + +download_vendor = \ + $(call download,$(CONTRIB_VIDEOLAN)/$(2)/$(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 .%,%,$@)) + touch $@ + +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; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
