aboutsummaryrefslogtreecommitdiff
path: root/development/cargo
diff options
context:
space:
mode:
authorAndrew Clemons <andrew.clemons@gmail.com>2017-04-06 19:59:15 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2017-04-06 21:03:34 +0700
commit69d62faa221332af8bf7ebef73e48f956292556a (patch)
tree347d6a725a953da45228af3d34fab3cbe8164e13 /development/cargo
parent921c445b018b1cee4e72d9e079ba55c5af65ad8c (diff)
development/cargo: Optionally support vendored crate dependencies.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'development/cargo')
-rw-r--r--development/cargo/README12
-rw-r--r--development/cargo/cargo-mkvendortarball.sh34
-rw-r--r--development/cargo/cargo.SlackBuild180
3 files changed, 136 insertions, 90 deletions
diff --git a/development/cargo/README b/development/cargo/README
index 607d9f19d1635..dd89150e9211c 100644
--- a/development/cargo/README
+++ b/development/cargo/README
@@ -4,10 +4,18 @@ This will build cargo from source, which like rust, requires itself to
bootstrap. This will build cargo using the installed rust and previously stable
version of cargo.
-If you already have rust and cargo installed, this slackbuild will use these to
+If you already have cargo installed, this slackbuild will use it to
bootstrap this version of cargo instead of a downloaded one.
You can also force either behaviour through the LOCAL_BOOTSTRAP=yes|no
parameter.
- LOCAL_BOOTSTRAP=no ./cargo.SlackBuild \ No newline at end of file
+ LOCAL_BOOTSTRAP=no ./cargo.SlackBuild
+
+By default, the slackbuild requires all crate dependencies to be downloaded
+individually. Optionally, if you 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-mkvendortarball.sh will generate this for you. The slackbuild
+will automatically use this tarball if found in the current directory.
diff --git a/development/cargo/cargo-mkvendortarball.sh b/development/cargo/cargo-mkvendortarball.sh
new file mode 100644
index 0000000000000..98bdcc2e11641
--- /dev/null
+++ b/development/cargo/cargo-mkvendortarball.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# Script to build a vendored tarball for cargo
+
+# 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
+VERSION=${VERSION:-0.17.0}
+
+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
diff --git a/development/cargo/cargo.SlackBuild b/development/cargo/cargo.SlackBuild
index 7fbf7dcd262c0..b4862a9acfe22 100644
--- a/development/cargo/cargo.SlackBuild
+++ b/development/cargo/cargo.SlackBuild
@@ -121,94 +121,98 @@ replace-with = 'vendored-sources'
directory = '$(pwd)/vendor'
EOF
-# deps and versions come from Cargo.lock
-# cargo vender can be used to generate the checksums
-mkdir vendor
-(
- cd vendor
-
- for dependency in advapi32-sys=0.2.0 \
- aho-corasick=0.5.3 \
- bitflags=0.7.0 \
- bufstream=0.1.2 \
- cfg-if=0.1.0 \
- cmake=0.1.19 \
- crossbeam=0.2.10 \
- curl=0.4.1 \
- curl-sys=0.3.6 \
- docopt=0.6.86 \
- env_logger=0.3.5 \
- error-chain=0.7.2 \
- filetime=0.1.10 \
- flate2=0.2.14 \
- fs2=0.3.0 \
- gcc=0.3.39 \
- gdi32-sys=0.2.0 \
- git2=0.6.3 \
- git2-curl=0.7.0 \
- glob=0.2.11 \
- hamcrest=0.1.1 \
- idna=0.1.0 \
- kernel32-sys=0.2.2 \
- lazy_static=0.2.2 \
- libc=0.2.18 \
- libgit2-sys=0.6.6 \
- libssh2-sys=0.2.5 \
- libz-sys=1.0.13 \
- log=0.3.6 \
- matches=0.1.4 \
- memchr=0.1.11 \
- metadeps=1.1.1 \
- miniz-sys=0.1.7 \
- miow=0.1.3 \
- net2=0.2.26 \
- num=0.1.36 \
- num-bigint=0.1.35 \
- num-complex=0.1.35 \
- num-integer=0.1.32 \
- num-iter=0.1.32 \
- num-rational=0.1.35 \
- num-traits=0.1.36 \
- num_cpus=1.1.0 \
- openssl=0.9.6 \
- openssl-probe=0.1.0 \
- openssl-sys=0.9.6 \
- pkg-config=0.3.8 \
- psapi-sys=0.1.0 \
- rand=0.3.14 \
- regex=0.1.80 \
- regex-syntax=0.3.9 \
- rustc-serialize=0.3.21 \
- semver=0.5.1 \
- semver-parser=0.6.1 \
- shell-escape=0.1.3 \
- strsim=0.5.1 \
- tar=0.4.9 \
- 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.3 \
- unicode-normalization=0.1.2 \
- url=1.2.3 \
- 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
-
- dep="$(echo "$dependency" | cut -d= -f1)"
- ver="$(echo "$dependency" | cut -d= -f2)"
-
- tar xvf $CWD/$dep-$ver.crate
-
- mv $dep-$ver $dep
-
- touch $dep/.cargo-ok
- zcat $CWD/checksums/$dep-cargo-checksum.json.gz > $dep/.cargo-checksum.json
- done
-)
+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
+
+ for dependency in advapi32-sys=0.2.0 \
+ aho-corasick=0.5.3 \
+ bitflags=0.7.0 \
+ bufstream=0.1.2 \
+ cfg-if=0.1.0 \
+ cmake=0.1.19 \
+ crossbeam=0.2.10 \
+ curl=0.4.1 \
+ curl-sys=0.3.6 \
+ docopt=0.6.86 \
+ env_logger=0.3.5 \
+ error-chain=0.7.2 \
+ filetime=0.1.10 \
+ flate2=0.2.14 \
+ fs2=0.3.0 \
+ gcc=0.3.39 \
+ gdi32-sys=0.2.0 \
+ git2=0.6.3 \
+ git2-curl=0.7.0 \
+ glob=0.2.11 \
+ hamcrest=0.1.1 \
+ idna=0.1.0 \
+ kernel32-sys=0.2.2 \
+ lazy_static=0.2.2 \
+ libc=0.2.18 \
+ libgit2-sys=0.6.6 \
+ libssh2-sys=0.2.5 \
+ libz-sys=1.0.13 \
+ log=0.3.6 \
+ matches=0.1.4 \
+ memchr=0.1.11 \
+ metadeps=1.1.1 \
+ miniz-sys=0.1.7 \
+ miow=0.1.3 \
+ net2=0.2.26 \
+ num=0.1.36 \
+ num-bigint=0.1.35 \
+ num-complex=0.1.35 \
+ num-integer=0.1.32 \
+ num-iter=0.1.32 \
+ num-rational=0.1.35 \
+ num-traits=0.1.36 \
+ num_cpus=1.1.0 \
+ openssl=0.9.6 \
+ openssl-probe=0.1.0 \
+ openssl-sys=0.9.6 \
+ pkg-config=0.3.8 \
+ psapi-sys=0.1.0 \
+ rand=0.3.14 \
+ regex=0.1.80 \
+ regex-syntax=0.3.9 \
+ rustc-serialize=0.3.21 \
+ semver=0.5.1 \
+ semver-parser=0.6.1 \
+ shell-escape=0.1.3 \
+ strsim=0.5.1 \
+ tar=0.4.9 \
+ 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.3 \
+ unicode-normalization=0.1.2 \
+ url=1.2.3 \
+ 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
+
+ dep="$(echo "$dependency" | cut -d= -f1)"
+ ver="$(echo "$dependency" | cut -d= -f2)"
+
+ tar xvf $CWD/$dep-$ver.crate
+
+ mv $dep-$ver $dep
+
+ touch $dep/.cargo-ok
+ zcat $CWD/checksums/$dep-cargo-checksum.json.gz > $dep/.cargo-checksum.json
+ done
+ )
+fi
make
make install DESTDIR=$PKG