From cedebe77358c26c7c10604d0471797b793b806e6 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Mon, 30 Oct 2017 03:06:30 +0000 Subject: Revert "community/cargo: upgrade to 0.22.0" This change causes the package to be unbuildable without manual intervention, which violates policy. Reverting the change is theoretically harmless, as the old cargo has not been removed from the archive. This reverts commit c6e8dbdbd42fc99d297045cf6bd0e3d9474e53ad. --- community/cargo/APKBUILD | 87 ++++++++++++++-------- community/cargo/fix-test-build-auth.patch | 46 ++++++++++++ .../tests-fix-build-auth-http_auth_offered.patch | 47 ------------ .../cargo/tests-ignore-ssh_something_happens.patch | 13 ---- 4 files changed, 102 insertions(+), 91 deletions(-) create mode 100644 community/cargo/fix-test-build-auth.patch delete mode 100644 community/cargo/tests-fix-build-auth-http_auth_offered.patch delete mode 100644 community/cargo/tests-ignore-ssh_something_happens.patch 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 # Maintainer: Jakub Jirutka 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/fix-test-build-auth.patch b/community/cargo/fix-test-build-auth.patch new file mode 100644 index 0000000000..2fdb50c1c6 --- /dev/null +++ b/community/cargo/fix-test-build-auth.patch @@ -0,0 +1,46 @@ +From: Jakub Jirutka +Date: Thu, 13 Aug 2016 14:47:00 +0200 +Subject: [PATCH] Fix test build-auth:http_auth_offered + +The test fails because of hard-coded libgit2 version, that may not be +the same as actually used libgit2... + +--- a/tests/build-auth.rs ++++ b/tests/build-auth.rs +@@ -20,7 +20,7 @@ + let addr = server.local_addr().unwrap(); + + fn headers(rdr: &mut BufRead) -> HashSet { +- let valid = ["GET", "Authorization", "Accept", "User-Agent"]; ++ let valid = ["GET", "Authorization", "Accept"]; + rdr.lines().map(|s| s.unwrap()) + .take_while(|s| s.len() > 2) + .map(|s| s.trim().to_string()) +@@ -33,11 +33,6 @@ + let t = thread::spawn(move|| { + 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.1)" +- } else { +- "User-Agent: git/2.0 (libgit2 0.25.1)" +- }; + conn.write_all(b"\ + HTTP/1.1 401 Unauthorized\r\n\ + WWW-Authenticate: Basic realm=\"wheee\"\r\n +@@ -46,7 +41,6 @@ + assert_eq!(req, vec![ + "GET /foo/bar/info/refs?service=git-upload-pack HTTP/1.1", + "Accept: */*", +- user_agent, + ].into_iter().map(|s| s.to_string()).collect()); + drop(conn); + +@@ -61,7 +55,6 @@ + "GET /foo/bar/info/refs?service=git-upload-pack HTTP/1.1", + "Authorization: Basic Zm9vOmJhcg==", + "Accept: */*", +- user_agent, + ].into_iter().map(|s| s.to_string()).collect()); + }); + diff --git a/community/cargo/tests-fix-build-auth-http_auth_offered.patch b/community/cargo/tests-fix-build-auth-http_auth_offered.patch deleted file mode 100644 index 8543c2897e..0000000000 --- a/community/cargo/tests-fix-build-auth-http_auth_offered.patch +++ /dev/null @@ -1,47 +0,0 @@ -From: Jakub Jirutka -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 -the same as actually used libgit2... - ---- a/tests/build-auth.rs -+++ b/tests/build-auth.rs -@@ -20,7 +20,7 @@ - let addr = server.local_addr().unwrap(); - - fn headers(rdr: &mut BufRead) -> HashSet { -- let valid = ["GET", "Authorization", "Accept", "User-Agent"]; -+ let valid = ["GET", "Authorization", "Accept"]; - rdr.lines().map(|s| s.unwrap()) - .take_while(|s| s.len() > 2) - .map(|s| s.trim().to_string()) -@@ -33,11 +33,6 @@ - let t = thread::spawn(move|| { - 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)" -- } else { -- "User-Agent: git/2.0 (libgit2 0.25.0)" -- }; - conn.write_all(b"\ - HTTP/1.1 401 Unauthorized\r\n\ - WWW-Authenticate: Basic realm=\"wheee\"\r\n -@@ -46,7 +41,6 @@ - assert_eq!(req, vec![ - "GET /foo/bar/info/refs?service=git-upload-pack HTTP/1.1", - "Accept: */*", -- user_agent, - ].into_iter().map(|s| s.to_string()).collect()); - drop(conn); - -@@ -61,7 +55,6 @@ - "GET /foo/bar/info/refs?service=git-upload-pack HTTP/1.1", - "Authorization: Basic Zm9vOmJhcg==", - "Accept: */*", -- user_agent, - ].into_iter().map(|s| s.to_string()).collect()); - }); - 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(); -- cgit v1.2.3