[vlc-devel] [PATCHv2 5/8] contrib: add cargo-vendor-archive.sh script

Thomas Guillem thomas at gllm.fr
Wed Aug 26 14:42:02 CEST 2020


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.
---
 contrib/cargo-vendor-archive.sh | 50 +++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100755 contrib/cargo-vendor-archive.sh

diff --git a/contrib/cargo-vendor-archive.sh b/contrib/cargo-vendor-archive.sh
new file mode 100755
index 00000000000..45442e67364
--- /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
-- 
2.28.0



More information about the vlc-devel mailing list