mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-26 08:51:25 +02:00
288 lines
9.4 KiB
Plaintext
288 lines
9.4 KiB
Plaintext
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
|
|
# Contributor: Shiz <hi@shiz.me>
|
|
# Contributor: Jeizsm <jeizsm@gmail.com>
|
|
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
|
|
pkgname=rust
|
|
pkgver=1.31.1
|
|
# TODO: bump to 6 as soon as we add llvm6
|
|
_llvmver=5
|
|
_bootver=1.30.0
|
|
pkgrel=1
|
|
pkgdesc="The Rust Programming Language"
|
|
url="http://www.rust-lang.org"
|
|
arch="x86_64"
|
|
license="Apache-2.0 BSD ISC MIT"
|
|
|
|
# gcc is needed at runtime just for linking. Someday rustc might invoke
|
|
# the linker directly, and then we'll only need binutils.
|
|
# See: https://github.com/rust-lang/rust/issues/11937
|
|
depends="$pkgname-stdlib=$pkgver-r$pkgrel gcc llvm-libunwind-dev musl-dev"
|
|
|
|
# * Rust is self-hosted, so you need rustc (and cargo) to build rustc...
|
|
# The last revision of this abuild that does not depend on itself (uses
|
|
# prebuilt rustc and cargo) is 8cb3112594f10a8cee5b5412c28a846acb63167f.
|
|
# * libffi-dev is needed just because we compile llvm with LLVM_ENABLE_FFI.
|
|
makedepends="
|
|
rust-bootstrap>=$_bootver
|
|
cargo-bootstrap
|
|
cmake
|
|
curl-dev
|
|
file
|
|
libffi-dev
|
|
libgit2-dev
|
|
openssl-dev
|
|
libssh2-dev
|
|
llvm$_llvmver-dev
|
|
llvm$_llvmver-test-utils
|
|
python2
|
|
tar
|
|
zlib-dev
|
|
"
|
|
# XXX: This is a hack to allow this abuild to depend on itself. Adding "rust"
|
|
# to makedepends would not work, because abuild implicitly removes $pkgname
|
|
# and $subpackages from the abuild's dependencies.
|
|
provides="rust-bootstrap=$pkgver-r$pkgrel"
|
|
# This is needed for -src that contains some testing binaries.
|
|
options="!archcheck"
|
|
subpackages="
|
|
$pkgname-dbg
|
|
$pkgname-stdlib
|
|
$pkgname-analysis
|
|
$pkgname-gdb::noarch
|
|
$pkgname-lldb::noarch
|
|
$pkgname-doc
|
|
$pkgname-src::noarch
|
|
cargo
|
|
cargo-bash-completions:_cargo_bashcomp:noarch
|
|
cargo-zsh-completion:_cargo_zshcomp:noarch
|
|
cargo-doc:_cargo_doc:noarch
|
|
"
|
|
source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.gz
|
|
musl-fix-static-linking.patch
|
|
musl-fix-linux_musl_base.patch
|
|
llvm-with-ffi.patch
|
|
static-pie.patch
|
|
need-rpath.patch
|
|
minimize-rpath.patch
|
|
alpine-move-py-scripts-to-share.patch
|
|
alpine-change-rpath-to-rustlib.patch
|
|
alpine-target.patch
|
|
install-template-shebang.patch
|
|
bootstrap-tool-respect-tool-config.patch
|
|
cargo-tests-ignore-resolving_minimum_version_with_transitive_deps.patch
|
|
cargo-tests-fix-package-include-exclude.patch
|
|
check-rustc
|
|
"
|
|
builddir="$srcdir/rustc-$pkgver-src"
|
|
|
|
_rlibdir="usr/lib/rustlib/$CTARGET/lib"
|
|
_sharedir="usr/share/rust"
|
|
|
|
ldpath="/$_rlibdir"
|
|
|
|
export RUST_BACKTRACE=1
|
|
export RUSTC_CRT_STATIC="false"
|
|
# Convince libgit2-sys to use the distro libgit2.
|
|
export LIBGIT2_SYS_USE_PKG_CONFIG=1
|
|
|
|
prepare() {
|
|
default_prepare
|
|
|
|
cd "$builddir"
|
|
|
|
# Remove bundled dependencies.
|
|
rm -Rf src/llvm/
|
|
}
|
|
|
|
build() {
|
|
cd "$builddir"
|
|
|
|
# jemalloc is disabled, because it increases size of statically linked
|
|
# binaries produced by rustc (stripped hello_world 186 kiB vs. 358 kiB)
|
|
# for only tiny performance boost (even negative in some tests).
|
|
./configure \
|
|
--build="$CBUILD" \
|
|
--host="$CTARGET" \
|
|
--target="$CTARGET" \
|
|
--prefix="/usr" \
|
|
--release-channel="stable" \
|
|
--enable-local-rust \
|
|
--local-rust-root="/usr" \
|
|
--llvm-root="/usr/lib/llvm$_llvmver" \
|
|
--musl-root="/usr" \
|
|
--disable-docs \
|
|
--enable-extended \
|
|
--tools="analysis,cargo,src" \
|
|
--enable-llvm-link-shared \
|
|
--enable-option-checking \
|
|
--enable-locked-deps \
|
|
--enable-vendor \
|
|
--disable-jemalloc
|
|
|
|
./x.py build -v --jobs ${JOBS:-2}
|
|
}
|
|
|
|
check() {
|
|
cd "$builddir"
|
|
|
|
# At this moment lib/rustlib/$CTARGET/lib does not contain a complete
|
|
# copy of the .so libs from lib (they will be copied there during
|
|
# `x.py install`). Thus we must set LD_LIBRARY_PATH for tests to work.
|
|
# This is related to change-rpath-to-rustlib.patch.
|
|
export LD_LIBRARY_PATH="$builddir/build/$CTARGET/stage2/lib"
|
|
|
|
"$srcdir"/check-rustc "$builddir"/build/$CTARGET/stage2/bin/rustc
|
|
|
|
# XXX: There's some problem with these tests, we will figure it out later.
|
|
# cd "$builddir"
|
|
# make check \
|
|
# LD_LIBRARY_PATH="$_stage0dir/lib" \
|
|
# VERBOSE=1
|
|
|
|
msg "Running tests for cargo..."
|
|
CFG_DISABLE_CROSS_TESTS=1 ./x.py test --no-fail-fast src/tools/cargo
|
|
|
|
unset LD_LIBRARY_PATH
|
|
}
|
|
|
|
package() {
|
|
cd "$builddir"
|
|
|
|
DESTDIR="$pkgdir" ./x.py install -v
|
|
|
|
cd "$pkgdir"
|
|
|
|
# These libraries are identical to those under rustlib/. Since we have
|
|
# linked rustc/rustdoc against those under rustlib/, we can remove
|
|
# them. Read change-rpath-to-rustlib.patch for more info.
|
|
rm -r usr/lib/*.so
|
|
|
|
# These objects are for static linking with musl on non-musl systems.
|
|
rm $_rlibdir/crt*.o
|
|
|
|
# Shared objects should have executable flag.
|
|
chmod +x $_rlibdir/*.so
|
|
|
|
# Python scripts are noarch, so move them to /usr/share.
|
|
# Requires move-py-scripts-to-share.patch to be applied.
|
|
_mv usr/lib/rustlib/etc/*.py $_sharedir/etc/
|
|
rmdir -p usr/lib/rustlib/etc 2>/dev/null || true
|
|
|
|
# Remove some clutter.
|
|
cd usr/lib/rustlib
|
|
rm components install.log manifest-* rust-installer-version uninstall.sh
|
|
}
|
|
|
|
stdlib() {
|
|
pkgdesc="Standard library for Rust (static rlibs)"
|
|
|
|
_mv "$pkgdir"/$_rlibdir/*.rlib "$subpkgdir"/$_rlibdir/
|
|
}
|
|
|
|
analysis() {
|
|
pkgdesc="Compiler analysis data for the Rust standard library"
|
|
depends="$pkgname-stdlib=$pkgver-r$pkgrel"
|
|
|
|
_mv "$pkgdir"/$_rlibdir/../analysis "$subpkgdir"/${_rlibdir%/*}/
|
|
}
|
|
|
|
gdb() {
|
|
pkgdesc="GDB pretty printers for Rust"
|
|
depends="$pkgname gdb"
|
|
|
|
mkdir -p "$subpkgdir"
|
|
cd "$subpkgdir"
|
|
|
|
_mv "$pkgdir"/usr/bin/rust-gdb usr/bin/
|
|
_mv "$pkgdir"/$_sharedir/etc/gdb_*.py $_sharedir/etc/
|
|
}
|
|
|
|
lldb() {
|
|
pkgdesc="LLDB pretty printers for Rust"
|
|
depends="$pkgname lldb py2-lldb"
|
|
|
|
mkdir -p "$subpkgdir"
|
|
cd "$subpkgdir"
|
|
|
|
_mv "$pkgdir"/usr/bin/rust-lldb usr/bin/
|
|
_mv "$pkgdir"/$_sharedir/etc/lldb_*.py $_sharedir/etc/
|
|
}
|
|
|
|
src() {
|
|
pkgdesc="$pkgdesc (source code)"
|
|
depends="$pkgname"
|
|
license="$license OFL-1.1 GPL-3.0-or-later GPL-3.0-with-GCC-exception CC-BY-SA-3.0 LGPL-3.0"
|
|
|
|
_mv "$pkgdir"/usr/lib/rustlib/src/rust "$subpkgdir"/usr/src/
|
|
rmdir -p "$pkgdir"/usr/lib/rustlib/src 2>/dev/null || true
|
|
|
|
mkdir -p "$subpkgdir"/usr/lib/rustlib/src
|
|
ln -s ../../../src/rust "$subpkgdir"/usr/lib/rustlib/src/rust
|
|
}
|
|
|
|
cargo() {
|
|
pkgdesc="The Rust package manager"
|
|
license="Apache-2.0 MIT UNLICENSE"
|
|
depends="$pkgname"
|
|
# XXX: See comment on top-level provides=.
|
|
provides="cargo-bootstrap=$pkgver-r$pkgrel"
|
|
|
|
_mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin/
|
|
}
|
|
|
|
_cargo_bashcomp() {
|
|
pkgdesc="Bash completions for cargo"
|
|
license="Apache-2.0 MIT"
|
|
depends=""
|
|
install_if="cargo=$pkgver-r$pkgrel bash-completion"
|
|
|
|
cd "$pkgdir"
|
|
_mv etc/bash_completion.d/cargo \
|
|
"$subpkgdir"/usr/share/bash-completion/completions/
|
|
rmdir -p etc/bash_completion.d 2>/dev/null || true
|
|
}
|
|
|
|
_cargo_zshcomp() {
|
|
pkgdesc="ZSH completions for cargo"
|
|
license="Apache-2.0 MIT"
|
|
depends=""
|
|
install_if="cargo=$pkgver-r$pkgrel zsh"
|
|
|
|
cd "$pkgdir"
|
|
_mv usr/share/zsh/site-functions/_cargo \
|
|
"$subpkgdir"/usr/share/zsh/site-functions/_cargo
|
|
rmdir -p usr/share/zsh/site-functions 2>/dev/null || true
|
|
}
|
|
|
|
_cargo_doc() {
|
|
pkgdesc="The Rust package manager (documentation)"
|
|
license="Apache-2.0 MIT"
|
|
install_if="docs cargo=$pkgver-r$pkgrel"
|
|
|
|
# XXX: This is hackish!
|
|
cd "$pkgdir"/../$pkgname-doc
|
|
_mv usr/share/man/man1/cargo* "$subpkgdir"/usr/share/man/man1/
|
|
}
|
|
|
|
_mv() {
|
|
local dest; for dest; do true; done # get last argument
|
|
mkdir -p "$dest"
|
|
mv $@
|
|
}
|
|
|
|
sha512sums="76ca238c40694abab4982f4b788a0da34bbb3d8a6e4adb50b0b9138876407ac2cb4fc39cde057b8fa32729c543c5977d392167e96b82f76a01af31eaafe463cf rustc-1.31.1-src.tar.gz
|
|
6713d0d0ccac6b17ed47e486c6d74d1f913887bf88d42527576188fa98063a33a1ea903967847d52126b996f965577f1311344d6e57063b1625221847290a0ed musl-fix-static-linking.patch
|
|
3615b815cfb4eae60f3291dc07a292e1be6048eeddcb21c595bddbe8cca6a622e5b76be72a76f6b65b4d33abdc34a792ce010b024b2818a4d73bce3f85b3eb2b musl-fix-linux_musl_base.patch
|
|
e40d41a6dc5d400d6672f1836cd5b9e00391f7beb52e872d87db76bc95a606ce6aaae737a0256a1e5fba77c83bb223818d214dbe87028d47be65fb43c101595c llvm-with-ffi.patch
|
|
820e5dbeaea157859d0fb735f0bf9419cad1e148b074aea4ba84fdd4c2c0e1ce7e097b4fd6a2a5797299ecb918a4f9dbb57ce05e71638b31ccae415c256a9a66 static-pie.patch
|
|
487d479a15b43c3e1ee28c111206a4f488be933309f3c6571be7ec33da4e955cc1ee907b7729b4228cb292ca7b3324eb6ba4f32a01abc3d04573a0d96982569a need-rpath.patch
|
|
5e8557e72b250b8726b821541dc7d0e40d8179220cfdacd6d74ed19c756ffb214d9f882e82856acb4fbfbfe5c70f1c6de6813db3ba92a2c0e2e425bb5eb620ba minimize-rpath.patch
|
|
35e0619672843d9dd41df4a086404a59b57c12fa014e42d06102bc3856a96ed021e716f9d581ec5c89444acbaedd3edcd2b8a85576df3bb4451c0edde3afbba5 alpine-move-py-scripts-to-share.patch
|
|
61aa415d754e9e01236481a1f3c9d5242f2d633e6f11b998e9ffcc07bf5c182d87c0c973dab6f10e4bb3ab4b4a4857bf9ed8dd664c49a65f6175d27db2774db1 alpine-change-rpath-to-rustlib.patch
|
|
a69b2ae7ffddbacee4b400645a829fbc7f5313f2ebf796c2a5aa4f93d5f2eb62993c201fc0241684ad23e6b3a929a4674ee9b8ec98468ecfaae35cc34a941fdb alpine-target.patch
|
|
7d59258d4462eba0207739a5c0c8baf1f19d9a396e5547bb4d59d700eb94d50ba6add2e523f3e94e29e993821018594625ea4ac86304fb58f7f8c82622a26ab0 install-template-shebang.patch
|
|
c2ccab15d48c11cc3af549a3944ca0d29cb3790345468f4f3779e5ac931554dea603e5523281fc391ba4a555ee468b516961c4cb8ecee007eadacf114f3d8758 bootstrap-tool-respect-tool-config.patch
|
|
3d6f027088e1ec189ce864bf5ed150ccad8be5d9fc0973f1b4d202eec6eab865834403335a9f0765bbfa54638aed7f5d5f2183ba9dfeab9f5bc4ef48111a8427 cargo-tests-ignore-resolving_minimum_version_with_transitive_deps.patch
|
|
41ae208a8c06be8c65e3e95529c9298e0fc094607e25d60f5055f217f96a5382ece4b0c4d580a44bf86a50272377a9924637341ec1d9848fb297e8200a598d8f cargo-tests-fix-package-include-exclude.patch
|
|
c31fdfe8a9b3411576c75da46645cf0465b9053000a2ab49cf9b2f2733f679d6d33acbf236d67a20e14935d094a685453b7f1840180249f39d610fd0902c3125 check-rustc"
|