development/cargo-vendor: Support vendored crate dependencies.

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
Andrew Clemons 2017-04-06 20:00:26 +07:00 committed by Willy Sudiarto Raharjo
parent 69d62faa22
commit a938357494
3 changed files with 122 additions and 73 deletions

View file

@ -4,3 +4,11 @@ This is a Cargo subcommand which vendors all crates.io dependencies into a
local directory using Cargo's support for source replacement.
cargo-vendor is helpful for packaging applications which use cargo (rust).
By default, the slackbuild requires all crate dependencies to be downloaded
individually. Optionally, if you already have cargo-vendor installed, you can
create a "vendored" tarball which contains all the crate dependencies exploded
into a single directory and then compressed together as a tarball.
The script cargo-vendor-mkvendortarball.sh will generate this for you. The slackbuild
will automatically use this tarball if found in the current directory.

View file

@ -0,0 +1,34 @@
#!/bin/sh
# Script to build a vendored tarball for cargo-vendor
# Copyright 2017 Andrew Clemons, Wellington New Zealand
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
set -e
PRGNAM=cargo-vendor
VERSION=${VERSION:-0.1.5}
rm -rf "$PRGNAM-$VERSION" "$PRGNAM-$VERSION-vendor.tar.gz"
tar xvf "$PRGNAM-$VERSION.tar.gz"
cd "$PRGNAM-$VERSION"
cargo vendor
tar cvfz ../"$PRGNAM-$VERSION-vendor.tar.gz" vendor

View file

@ -82,84 +82,91 @@ replace-with = 'vendored-sources'
directory = '$(pwd)/vendor'
EOF
mkdir vendor
(
cd vendor
for dependency in advapi32-sys=0.2.0 \
aho-corasick=0.5.3 \
bitflags=0.7.0 \
cargo=0.16.0 \
cfg-if=0.1.0 \
cmake=0.1.20 \
crates-io=0.5.0 \
crossbeam=0.2.10 \
curl=0.4.4 \
curl-sys=0.3.7 \
docopt=0.6.86 \
env_logger=0.3.5 \
error-chain=0.7.2 \
filetime=0.1.10 \
flate2=0.2.17 \
fs2=0.3.0 \
gcc=0.3.43 \
gdi32-sys=0.2.0 \
git2=0.6.4 \
git2-curl=0.7.0 \
glob=0.2.11 \
idna=0.1.0 \
kernel32-sys=0.2.2 \
lazy_static=0.2.2 \
libc=0.2.20 \
libgit2-sys=0.6.6 \
libssh2-sys=0.2.5 \
libz-sys=1.0.12 \
log=0.3.6 \
matches=0.1.4 \
memchr=0.1.11 \
metadeps=1.1.1 \
miniz-sys=0.1.9 \
miow=0.1.5 \
net2=0.2.26 \
num_cpus=1.2.1 \
openssl=0.9.6 \
openssl-probe=0.1.0 \
openssl-sys=0.9.6 \
pkg-config=0.3.9 \
psapi-sys=0.1.0 \
rand=0.3.15 \
regex=0.1.80 \
regex-syntax=0.3.9 \
rustc-serialize=0.3.22 \
semver=0.5.1 \
semver-parser=0.6.2 \
strsim=0.5.2 \
tar=0.4.10 \
tempdir=0.3.5 \
term=0.4.4 \
thread-id=2.0.0 \
thread_local=0.2.7 \
toml=0.2.1 \
unicode-bidi=0.2.4 \
unicode-normalization=0.1.3 \
url=1.4.0 \
user32-sys=0.2.0 \
utf8-ranges=0.1.3 \
winapi=0.2.8 \
winapi-build=0.1.1 \
ws2_32-sys=0.2.1 ; do
if [ -e $CWD/$PRGNAM-$VERSION-vendor.tar.gz ] ; then
tar xvf $CWD/$PRGNAM-$VERSION-vendor.tar.gz
else
# deps and versions come from Cargo.lock
# cargo vender can be used to generate the checksums
mkdir vendor
(
cd vendor
dep="$(echo "$dependency" | cut -d= -f1)"
ver="$(echo "$dependency" | cut -d= -f2)"
for dependency in advapi32-sys=0.2.0 \
aho-corasick=0.5.3 \
bitflags=0.7.0 \
cargo=0.16.0 \
cfg-if=0.1.0 \
cmake=0.1.20 \
crates-io=0.5.0 \
crossbeam=0.2.10 \
curl=0.4.4 \
curl-sys=0.3.7 \
docopt=0.6.86 \
env_logger=0.3.5 \
error-chain=0.7.2 \
filetime=0.1.10 \
flate2=0.2.17 \
fs2=0.3.0 \
gcc=0.3.43 \
gdi32-sys=0.2.0 \
git2=0.6.4 \
git2-curl=0.7.0 \
glob=0.2.11 \
idna=0.1.0 \
kernel32-sys=0.2.2 \
lazy_static=0.2.2 \
libc=0.2.20 \
libgit2-sys=0.6.6 \
libssh2-sys=0.2.5 \
libz-sys=1.0.12 \
log=0.3.6 \
matches=0.1.4 \
memchr=0.1.11 \
metadeps=1.1.1 \
miniz-sys=0.1.9 \
miow=0.1.5 \
net2=0.2.26 \
num_cpus=1.2.1 \
openssl=0.9.6 \
openssl-probe=0.1.0 \
openssl-sys=0.9.6 \
pkg-config=0.3.9 \
psapi-sys=0.1.0 \
rand=0.3.15 \
regex=0.1.80 \
regex-syntax=0.3.9 \
rustc-serialize=0.3.22 \
semver=0.5.1 \
semver-parser=0.6.2 \
strsim=0.5.2 \
tar=0.4.10 \
tempdir=0.3.5 \
term=0.4.4 \
thread-id=2.0.0 \
thread_local=0.2.7 \
toml=0.2.1 \
unicode-bidi=0.2.4 \
unicode-normalization=0.1.3 \
url=1.4.0 \
user32-sys=0.2.0 \
utf8-ranges=0.1.3 \
winapi=0.2.8 \
winapi-build=0.1.1 \
ws2_32-sys=0.2.1 ; do
tar xvf $CWD/$dep-$ver.crate
dep="$(echo "$dependency" | cut -d= -f1)"
ver="$(echo "$dependency" | cut -d= -f2)"
mv $dep-$ver $dep
tar xvf $CWD/$dep-$ver.crate
touch $dep/.cargo-ok
zcat $CWD/checksums/$dep-cargo-checksum.json.gz > $dep/.cargo-checksum.json
done
)
mv $dep-$ver $dep
touch $dep/.cargo-ok
zcat $CWD/checksums/$dep-cargo-checksum.json.gz > $dep/.cargo-checksum.json
done
)
fi
cargo build --release