[vlc-commits] contrib: add cargo-vendor-archive.sh script

Thomas Guillem git at videolan.org
Thu Sep 10 12:43:23 CEST 2020


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Aug 25 15:10:53 2020 +0200| [617f33c5b2317f26be1996a6670727140cb600c2] | committer: Thomas Guillem

contrib: add cargo-vendor-archive.sh script

This script can be used to package a cargo vendor archive containing all
dependencies of a Rust project. If this archive is uploaded to the VideoLAN
FTP, the contrib's cargo will try to use it instead of using crates.io.

This will also allow us to keep all Rust dependencies.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=617f33c5b2317f26be1996a6670727140cb600c2
---

 contrib/cargo-vendor-archive.sh | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/contrib/cargo-vendor-archive.sh b/contrib/cargo-vendor-archive.sh
new file mode 100755
index 0000000000..45442e6736
--- /dev/null
+++ b/contrib/cargo-vendor-archive.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+set -e
+
+usage()
+{
+cat << EOF
+usage: $0 <archive>
+
+Fetch and archive all dependencies from a Rust archive using 'cargo vendor'.
+EOF
+}
+
+if [ "x$1" = "x" ]; then
+    usage
+    exit 1
+fi
+
+# Setup cargo path
+CARGO=
+if [ -d "$(dirname $0)/bin/.cargo" ];then
+    CARGO_HOME=$(cd $(dirname $0)/bin/.cargo && pwd)
+    CARGO="CARGO_HOME=\"${CARGO_HOME}\" \"${CARGO_HOME}/bin/cargo\""
+else
+    CARGO=cargo
+fi
+
+# Extract archive into a tmp dir
+TMP_DIR=.tmp-$(basename $1)
+rm -rf ${TMP_DIR}
+mkdir ${TMP_DIR}
+
+tar xf "$1" -C ${TMP_DIR}
+cd ${TMP_DIR}/*
+
+# Fetch all dependencies
+eval ${CARGO} vendor --locked
+
+# Archive all dependencies
+name=$(basename `pwd`)-vendor
+tar -jcf "../../${name}.tar.bz2" vendor --transform "s,vendor,${name},"
+cd ../..
+rm -rf ${TMP_DIR}
+
+echo ""
+echo "Please upload this package '${name}.tar.bz2' to our VideoLAN FTP,"
+echo ""
+echo "and write the following checksum into the contrib/src/<project>/cargo-vendor-SHA512SUMS:"
+echo ""
+sha512sum ${name}.tar.bz2



More information about the vlc-commits mailing list