From 4e993d60b5de3cad1afea7abc2b1dff8f229c540 Mon Sep 17 00:00:00 2001 From: Leonid Plyushch Date: Thu, 7 Nov 2019 23:20:50 +0200 Subject: [PATCH] rust: build fix --- packages/rust/build.sh | 12 +++++++----- scripts/build/termux_step_start_build.sh | 23 ++++++++++++++++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/packages/rust/build.sh b/packages/rust/build.sh index 32440425a..87757ac4e 100644 --- a/packages/rust/build.sh +++ b/packages/rust/build.sh @@ -3,10 +3,11 @@ TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed an TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="Kevin Cotugno @kcotugno" TERMUX_PKG_VERSION=1.38.0 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz TERMUX_PKG_SHA256=3a7991aa4cb44ef941d71636e45a95468b520dc6fc7cf725364925bd3e3d3a34 -TERMUX_PKG_DEPENDS="libc++, clang, openssl, lld, zlib" -TERMUX_PKG_REVISION=1 +TERMUX_PKG_DEPENDS="libc++, clang, openssl, lld, zlib, libllvm" + termux_step_configure() { termux_setup_cmake termux_setup_rust @@ -17,7 +18,7 @@ termux_step_configure() { # configuration is used otherwise it fails a long time into the build... # like 30 to 40 + minutes ... so lets get it right - # upstream only tests build ver one version behind $TERMUX_PKG_VERSION + # upstream only tests build ver one version behind $TERMUX_PKG_VERSION rustup install 1.37.0 export PATH=$HOME/.rustup/toolchains/1.37.0-x86_64-unknown-linux-gnu/bin:$PATH local RUSTC=$(which rustc) @@ -54,8 +55,9 @@ termux_step_make() { } termux_step_make_install() { # 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 + $TERMUX_PKG_SRCDIR/x.py dist --stage 2 --host $CARGO_TARGET_NAME --target $CARGO_TARGET_NAME --target wasm32-unknown-unknown || true + $TERMUX_PKG_SRCDIR/x.py install --stage 2 --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 cd "$TERMUX_PREFIX/lib" rm -f libc.so libdl.so ln -sf rustlib/$CARGO_TARGET_NAME/lib/*.so . diff --git a/scripts/build/termux_step_start_build.sh b/scripts/build/termux_step_start_build.sh index d68fc71ed..2c0da7963 100644 --- a/scripts/build/termux_step_start_build.sh +++ b/scripts/build/termux_step_start_build.sh @@ -107,7 +107,28 @@ termux_step_start_build() { TERMUX_BUILD_IGNORE_LOCK=true ./build-package.sh -s "${PKG_DIR}" done<<<$(./scripts/buildorder.py "$TERMUX_PKG_BUILDER_DIR" $TERMUX_PACKAGES_DIRECTORIES || echo "ERROR") fi - + if [ "$TERMUX_INSTALL_DEPS" == true ] && [ "$TERMUX_PKG_DEPENDS" != "${TERMUX_PKG_DEPENDS/libllvm/}" ]; then + LLVM_DEFAULT_TARGET_TRIPLE=$TERMUX_HOST_PLATFORM + if [ $TERMUX_ARCH = "arm" ]; then + LLVM_TARGET_ARCH=ARM + elif [ $TERMUX_ARCH = "aarch64" ]; then + LLVM_TARGET_ARCH=AArch64 + elif [ $TERMUX_ARCH = "i686" ]; then + LLVM_TARGET_ARCH=X86 + elif [ $TERMUX_ARCH = "x86_64" ]; then + LLVM_TARGET_ARCH=X86 + fi + LIBLLVM_VERSION=$(grep "TERMUX_PKG_VERSION=" $TERMUX_SCRIPTDIR/packages/libllvm/build.sh | cut -c20- ) + echo "$LIBLLVM_VERSION" + sed $TERMUX_SCRIPTDIR/packages/libllvm/llvm-config.in \ + -e "s|@TERMUX_PKG_VERSION@|$LIBLLVM_VERSION|g" \ + -e "s|@TERMUX_PREFIX@|$TERMUX_PREFIX|g" \ + -e "s|@TERMUX_PKG_SRCDIR@|$TERMUX_TOPDIR/libllvm/src|g" \ + -e "s|@LLVM_TARGET_ARCH@|$LLVM_TARGET_ARCH|g" \ + -e "s|@LLVM_DEFAULT_TARGET_TRIPLE@|$LLVM_DEFAULT_TARGET_TRIPLE|g" \ + -e "s|@TERMUX_ARCH@|$TERMUX_ARCH|g" > $TERMUX_PREFIX/bin/llvm-config + chmod 755 $TERMUX_PREFIX/bin/llvm-config + fi # Following directories may contain files with read-only permissions which # makes them undeletable. We need to fix that. [ -d "$TERMUX_PKG_BUILDDIR" ] && chmod +w -R "$TERMUX_PKG_BUILDDIR"