diff options
Diffstat (limited to 'community/cargo')
-rw-r--r-- | community/cargo/APKBUILD | 87 | ||||
-rw-r--r-- | community/cargo/fix-test-build-auth.patch (renamed from community/cargo/tests-fix-build-auth-http_auth_offered.patch) | 5 | ||||
-rw-r--r-- | community/cargo/tests-ignore-ssh_something_happens.patch | 13 |
3 files changed, 58 insertions, 47 deletions
diff --git a/community/cargo/APKBUILD b/community/cargo/APKBUILD index f461b332a8..3089fecd36 100644 --- a/community/cargo/APKBUILD +++ b/community/cargo/APKBUILD @@ -1,21 +1,22 @@ # Contributor: Jakub Jirutka <jakub@jirutka.cz> # Maintainer: Jakub Jirutka <jakub@jirutka.cz> pkgname=cargo -pkgver=0.22.0 +pkgver=0.18.0 +# Git revision of prebuilt Cargo to use for bootstrapping. +_bootstrap_gitrev=6e0c18cccc8b0c06fba8a8d76486f81a792fb420 # 0.16.0 +# Git revision of rust-installer (submodule in cargo repo). +_installer_gitrev=4f994850808a572e2cc8d43f968893c8e942e9bf pkgrel=0 pkgdesc="The Rust package manager" url="https://crates.io" arch="x86_64" # limited by rust pkg license="MIT ASL-2.0" depends="rust" -# Note: Cargo is self-hosted, so you need cargo to build cargo (ugh). -# The last revision of this abuild that does not depend on itself (uses -# prebuilt cargo) is 2282bb03f12bd9c0175feb9972cab2292df46f1e. -makedepends="cargo cmake curl-dev libgit2-dev libssh2-dev libressl-dev - python2 zlib-dev" +makedepends="cmake curl-dev libgit2-dev libssh2-dev libressl-dev python2 zlib-dev" subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch $pkgname-zsh-completion:zshcomp:noarch" +# Note: Cargo is self-hosted, so you need cargo to build cargo (ugh). # XXX: Cargo depends on many crates (Rust packages) and currently downloads # them itself in the build phase. This quite violates our policy. However, # unlike some other package managers, Cargo does not download arbitrary @@ -25,44 +26,60 @@ subpackages="$pkgname-doc # adhere to this file and verify checksums. So it provides the same # guarantees as abuild. That said, for now it's exception only for cargo # package and should not be applied to other rust packages! +_cbuild="$CARCH-unknown-linux-musl" source="$pkgname-$pkgver.tar.gz::https://github.com/rust-lang/$pkgname/archive/$pkgver.tar.gz - tests-fix-build-auth-http_auth_offered.patch - tests-ignore-ssh_something_happens.patch" + https://github.com/rust-lang/rust-installer/archive/$_installer_gitrev/rust-installer-$_installer_gitrev.tar.gz + cargo-$_bootstrap_gitrev-$_cbuild.tar.gz::https://s3.amazonaws.com/rust-lang-ci/cargo-builds/$_bootstrap_gitrev/cargo-nightly-$_cbuild.tar.gz + fix-test-build-auth.patch" builddir="$srcdir/$pkgname-$pkgver" +_bootstrap_cargo="$srcdir/cargo-nightly-$_cbuild/cargo/bin/cargo" + +export CARGOFLAGS="--locked" export CARGO_HOME="$srcdir/.cargo" -_cargo_opts="--release --locked --verbose ${JOBS:+--jobs $JOBS}" +prepare() { + default_prepare + cd "$builddir" + + rmdir src/rust-installer + ln -s "$srcdir"/rust-installer-$_installer_gitrev src/rust-installer +} build() { cd "$builddir" - # Convince libgit2-sys to use the distro libgit2. - export LIBGIT2_SYS_USE_PKG_CONFIG=1 + ./configure \ + --prefix=/usr \ + --release-channel=stable \ + --cargo="$_bootstrap_cargo" - cargo build $_cargo_opts - cargo test $_cargo_opts --no-run + # LIBGIT2... Convince libgit2-sys to use the distro libgit2. + make LIBGIT2_SYS_USE_PKG_CONFIG=1 \ + VERBOSE=1 } check() { cd "$builddir" - ./target/release/cargo --version + ./target/$CTARGET/release/cargo --version - CFG_DISABLE_CROSS_TESTS=1 RUST_BACKTRACE=1 \ - cargo test $_cargo_opts --no-fail-fast + # XXX: ignore test failures for now + CFG_DISABLE_CROSS_TESTS=1 \ + "$_bootstrap_cargo" test \ + --release \ + --target "$CTARGET" \ + --no-fail-fast \ + --verbose || true } package() { cd "$builddir" - install -D -m 755 target/release/cargo "$pkgdir"/usr/bin/cargo + make install DESTDIR="$pkgdir" - mkdir -p "$pkgdir"/usr/share/man/man1 - install -m 644 -t "$pkgdir"/usr/share/man/man1/ src/etc/man/*.1 - - mkdir -p "$pkgdir"/usr/share/licenses/$pkgname - install -m 644 -t "$pkgdir"/usr/share/licenses/$pkgname/ LICENSE* + # Remove installer artifacts (manifests, uninstall scripts, etc.) + rm -rv "$pkgdir"/usr/lib } bashcomp() { @@ -70,9 +87,11 @@ bashcomp() { depends="" install_if="$pkgname=$pkgver-r$pkgrel bash" - cd "$builddir" - install -D -m 644 -D src/etc/cargo.bashcomp.sh \ - "$subpkgdir"/usr/share/bash-completion/completions/cargo + _mv "$pkgdir"/usr/etc/bash_completion.d/* \ + "$subpkgdir"/usr/share/bash-completion/completions/ + + # Clean directories which are supposed to be empty. + rmdir -p "$pkgdir"/usr/etc/bash_completion.d 2>/dev/null || true } zshcomp() { @@ -80,11 +99,17 @@ zshcomp() { depends="" install_if="$pkgname=$pkgver-r$pkgrel zsh" - cd "$builddir" - install -D -m 644 src/etc/_cargo \ - "$subpkgdir"/usr/share/zsh/site-functions/_cargo + _mv "$pkgdir"/usr/share/zsh "$subpkgdir"/usr/share/ + rmdir "$pkgdir"/usr/share +} + +_mv() { + local dest; for dest; do true; done # get last argument + mkdir -p "$dest" + mv $@ } -sha512sums="31764df0462fcd0e7ddd29aee63ed0916b0d05e44d72aa815b3b823256e90f85e582c468a517d048e4451dfc1a3b22434abf25d825d3d926ab7a95f7bb44ad40 cargo-0.22.0.tar.gz -4e9a0d409951a72b5c1d3578cb310c0efc5d98a5b963432ec4f485f1d58d2354f0050c31574d6bd9090b7247468ef1a13b04b133deabe6daed91032764468f97 tests-fix-build-auth-http_auth_offered.patch -17c669a71443e21cc5e5cc6eb99933c20562b7df9d859c493ff25252167eb1aea6dd7322a06207776eab1c769464f95a432d1520a949512a52592b1eb115a4be tests-ignore-ssh_something_happens.patch" +sha512sums="561d6817555da802e99964daa74550cc47a285903301da12a245bb62e5857c18069d87a520c5cefb62aecfe5561666352d57dca8f75758f81ea82709565577d2 cargo-0.18.0.tar.gz +9ceb4755890ad3ae68ce141231c5114077261e0279d3a9a6208053f8d3386c9198e6b94d6321b456648dd5baa86dfc3ae81df44b67d41b428d11afd6763f0cff rust-installer-4f994850808a572e2cc8d43f968893c8e942e9bf.tar.gz +4df33353b6be1af822220ca03f9ec5a3b6421c9b10ec17b864be586ba495c6210bac70d904b0e0b35eff62ef2c9a681ded526e5cbd37e326dc3146742aa659de cargo-6e0c18cccc8b0c06fba8a8d76486f81a792fb420-x86_64-unknown-linux-musl.tar.gz +6a789fc1bf0eb19dde9267a10f7506787d6a4bb8316b09f4dee5da083c0fb0bad87630b238d92ef3aaf114d9a337a87797c8ac427f71c53ac06106925d459ee0 fix-test-build-auth.patch" diff --git a/community/cargo/tests-fix-build-auth-http_auth_offered.patch b/community/cargo/fix-test-build-auth.patch index 8543c2897e..2fdb50c1c6 100644 --- a/community/cargo/tests-fix-build-auth-http_auth_offered.patch +++ b/community/cargo/fix-test-build-auth.patch @@ -1,6 +1,5 @@ From: Jakub Jirutka <jakub@jirutka.cz> Date: Thu, 13 Aug 2016 14:47:00 +0200 -Last-Updated: Sat, 28 Oct 2017 14:59:00 +0200 Subject: [PATCH] Fix test build-auth:http_auth_offered The test fails because of hard-coded libgit2 version, that may not be @@ -22,9 +21,9 @@ the same as actually used libgit2... let mut conn = BufStream::new(server.accept().unwrap().0); let req = headers(&mut conn); - let user_agent = if cfg!(windows) { -- "User-Agent: git/1.0 (libgit2 0.25.0)" +- "User-Agent: git/1.0 (libgit2 0.25.1)" - } else { -- "User-Agent: git/2.0 (libgit2 0.25.0)" +- "User-Agent: git/2.0 (libgit2 0.25.1)" - }; conn.write_all(b"\ HTTP/1.1 401 Unauthorized\r\n\ diff --git a/community/cargo/tests-ignore-ssh_something_happens.patch b/community/cargo/tests-ignore-ssh_something_happens.patch deleted file mode 100644 index 80cf1f28bd..0000000000 --- a/community/cargo/tests-ignore-ssh_something_happens.patch +++ /dev/null @@ -1,13 +0,0 @@ -This test fails when building cargo with system-provided libgit2, -but I don't have a clue why. - ---- a/tests/build-auth.rs -+++ b/tests/build-auth.rs -@@ -171,6 +171,7 @@ - - // Boy, sure would be nice to have an SSH implementation in rust! - #[test] -+#[ignore] - fn ssh_something_happens() { - let server = TcpListener::bind("127.0.0.1:0").unwrap(); - let addr = server.local_addr().unwrap(); |