termux-packages/packages/rust/build.sh

72 lines
3.3 KiB
Bash
Raw Normal View History

2018-10-21 02:05:12 +02:00
TERMUX_PKG_HOMEPAGE=https://www.rust-lang.org/
TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed and concurrency"
2019-01-21 13:53:58 +01:00
TERMUX_PKG_LICENSE="MIT"
2018-10-30 22:17:57 +01:00
TERMUX_PKG_MAINTAINER="Kevin Cotugno @kcotugno"
TERMUX_PKG_VERSION=1.38.0
2018-11-30 22:46:37 +01:00
TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz
TERMUX_PKG_SHA256=3a7991aa4cb44ef941d71636e45a95468b520dc6fc7cf725364925bd3e3d3a34
2019-06-21 09:55:11 +02:00
TERMUX_PKG_DEPENDS="libc++, clang, openssl, lld, zlib"
2019-10-21 03:52:24 +02:00
TERMUX_PKG_REVISION=1
termux_step_configure() {
2018-10-21 02:05:12 +02:00
termux_setup_cmake
2018-11-30 22:46:37 +01:00
termux_setup_rust
2018-12-10 01:18:07 +01:00
2018-11-30 22:46:37 +01:00
# it breaks building rust tools without doing this because it tries to find
2018-12-10 01:18:07 +01:00
# ../lib from bin location:
2019-03-24 11:21:32 +01:00
# this is about to get ugly but i have to make sure a rustc in a proper bin lib
# configuration is used otherwise it fails a long time into the build...
2019-06-21 09:55:11 +02:00
# like 30 to 40 + minutes ... so lets get it right
2019-03-24 11:21:32 +01:00
2019-10-21 03:52:24 +02:00
# upstream only tests build ver one version behind $TERMUX_PKG_VERSION
rustup install 1.37.0
2019-10-23 22:29:11 +02:00
export PATH=$HOME/.rustup/toolchains/1.37.0-x86_64-unknown-linux-gnu/bin:$PATH
2018-11-30 22:46:37 +01:00
local RUSTC=$(which rustc)
2018-12-10 01:18:07 +01:00
local CARGO=$(which cargo)
2018-10-21 02:05:12 +02:00
sed "s%\\@TERMUX_PREFIX\\@%$TERMUX_PREFIX%g" \
$TERMUX_PKG_BUILDER_DIR/config.toml \
| sed "s%\\@TERMUX_STANDALONE_TOOLCHAIN\\@%$TERMUX_STANDALONE_TOOLCHAIN%g" \
2018-11-30 22:46:37 +01:00
| sed "s%\\@triple\\@%$CARGO_TARGET_NAME%g" \
| sed "s%\\@RUSTC\\@%$RUSTC%g" \
2018-12-10 01:18:07 +01:00
| sed "s%\\@CARGO\\@%$CARGO%g" \
2018-10-21 02:05:12 +02:00
> config.toml
2019-02-12 09:41:30 +01:00
local env_host=$(printf $CARGO_TARGET_NAME | tr a-z A-Z | sed s/-/_/g)
2019-04-24 00:39:40 +02:00
export LD_LIBRARY_PATH=$TERMUX_PKG_BUILDDIR/build/x86_64-unknown-linux-gnu/stage2/lib
export ${env_host}_OPENSSL_DIR=$TERMUX_PREFIX
export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu
export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include
export PKG_CONFIG_ALLOW_CROSS=1
2019-01-01 02:37:08 +01:00
# for backtrace-sys
export CC_x86_64_unknown_linux_gnu=gcc
export CFLAGS_x86_64_unknown_linux_gnu="-O2"
2019-04-24 00:39:40 +02:00
unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG AR RANLIB
2019-10-21 03:52:24 +02:00
# rust checks libs in PREFIX/lib because both host and target are x86_64. It then can't libc.so and libdl.so because rust program doesn't know
# where those are. Putting them temporarly in $PREFIX/lib prevents that failure
if [ $TERMUX_ARCH = "x86_64" ]; then
cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/x86_64-linux-android/$TERMUX_PKG_API_LEVEL/libc.so $TERMUX_PREFIX/lib/
cp $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/x86_64-linux-android/$TERMUX_PKG_API_LEVEL/libdl.so $TERMUX_PREFIX/lib/
fi
2018-10-21 02:05:12 +02:00
}
2019-10-21 04:07:25 +02:00
termux_step_make() {
return 0;
}
termux_step_make_install() {
2019-10-21 03:52:24 +02:00
# ugly fix to get extended tools working
$TERMUX_PKG_SRCDIR/x.py install --host $CARGO_TARGET_NAME --target $CARGO_TARGET_NAME --target wasm32-unknown-unknown || cp ./build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_macros-*.so ./build/x86_64-unknown-linux-gnu/stage2-tools/release/deps/librustc_macros-*.so
$TERMUX_PKG_SRCDIR/x.py install --host $CARGO_TARGET_NAME --target $CARGO_TARGET_NAME --target wasm32-unknown-unknown || true
2018-11-30 22:46:37 +01:00
cd "$TERMUX_PREFIX/lib"
2019-10-21 03:52:24 +02:00
rm -f libc.so libdl.so
2018-12-10 01:18:07 +01:00
ln -sf rustlib/$CARGO_TARGET_NAME/lib/*.so .
2018-11-30 22:46:37 +01:00
ln -sf $TERMUX_PREFIX/bin/lld $TERMUX_PREFIX/bin/rust-lld
cd "$TERMUX_PREFIX/lib/rustlib"
rm -rf components \
install.log \
uninstall.sh \
rust-installer-version \
manifest-* \
x86_64-unknown-linux-gnu
2018-10-21 02:05:12 +02:00
}