bump(main/rust): 1.73.0

This commit is contained in:
Jia Yuan Lo 2023-09-30 10:13:26 +08:00
parent fec4502c52
commit 030e7768f9
5 changed files with 72 additions and 53 deletions

View File

@ -2,14 +2,17 @@ TERMUX_PKG_HOMEPAGE=https://www.rust-lang.org/
TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed and concurrency"
TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=1.72.1
TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz
TERMUX_PKG_SHA256=aea58d962ff1c19521b9f587aad88285f0fd35b6b6738b031a7a15bb1b70a7c3
TERMUX_PKG_VERSION=1.73.0
TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-${TERMUX_PKG_VERSION}-src.tar.xz
TERMUX_PKG_SHA256=6eaf672dbea2e6596af8c999f5e6924b9af4bb8b02166bfe0b928e68aa75ae62
_LLVM_MAJOR_VERSION=$(. $TERMUX_SCRIPTDIR/packages/libllvm/build.sh; echo $LLVM_MAJOR_VERSION)
_LLVM_MAJOR_VERSION_NEXT=$((_LLVM_MAJOR_VERSION + 1))
TERMUX_PKG_DEPENDS="libc++, clang, openssl, lld, zlib, libllvm (<< $_LLVM_MAJOR_VERSION_NEXT)"
TERMUX_PKG_RM_AFTER_INSTALL="bin/llvm-* bin/llc bin/opt"
TERMUX_PKG_DEPENDS="clang, libc++, libllvm (<< ${_LLVM_MAJOR_VERSION_NEXT}), lld, openssl, zlib"
TERMUX_PKG_RM_AFTER_INSTALL="
bin/llc
bin/llvm-*
bin/opt
"
termux_step_pre_configure() {
termux_setup_cmake
@ -54,7 +57,7 @@ termux_step_pre_configure() {
# https://github.com/termux/termux-packages/issues/11427
# Fresh build conflict: liblzma -> rust
# ld: error: /data/data/com.termux/files/usr/lib/liblzma.a(liblzma_la-common.o) is incompatible with elf64-x86-64
mv $TERMUX_PREFIX/lib/liblzma.a $TERMUX_PREFIX/lib/liblzma.a.tmp || true
mv "${TERMUX_PREFIX}"/lib/liblzma.a{,.tmp} || :
# ld: error: undefined symbol: getloadavg
# >>> referenced by rand.c
@ -78,20 +81,20 @@ termux_step_configure() {
# like 30 to 40 + minutes ... so lets get it right
# upstream only tests build ver one version behind $TERMUX_PKG_VERSION
local BOOTSTRAP_VERSION=1.71.1
local BOOTSTRAP_VERSION=1.72.1
rustup install $BOOTSTRAP_VERSION
rustup default $BOOTSTRAP_VERSION-x86_64-unknown-linux-gnu
export PATH=$HOME/.rustup/toolchains/$BOOTSTRAP_VERSION-x86_64-unknown-linux-gnu/bin:$PATH
local RUSTC=$(command -v rustc)
local CARGO=$(command -v cargo)
sed "s%\\@TERMUX_PREFIX\\@%$TERMUX_PREFIX%g" \
$TERMUX_PKG_BUILDER_DIR/config.toml \
| sed "s%\\@TERMUX_STANDALONE_TOOLCHAIN\\@%$TERMUX_STANDALONE_TOOLCHAIN%g" \
| sed "s%\\@triple\\@%$CARGO_TARGET_NAME%g" \
| sed "s%\\@RUSTC\\@%$RUSTC%g" \
| sed "s%\\@CARGO\\@%$CARGO%g" \
> config.toml
sed \
-e "s|@TERMUX_PREFIX@|${TERMUX_PREFIX}|g" \
-e "s|@TERMUX_STANDALONE_TOOLCHAIN@|${TERMUX_STANDALONE_TOOLCHAIN}|g" \
-e "s|@triple@|${CARGO_TARGET_NAME}|g" \
-e "s|@RUSTC@|${RUSTC}|g" \
-e "s|@CARGO@|${CARGO}|g" \
"${TERMUX_PKG_BUILDER_DIR}"/config.toml > config.toml
local env_host=$(printf $CARGO_TARGET_NAME | tr a-z A-Z | sed s/-/_/g)
export ${env_host}_OPENSSL_DIR=$TERMUX_PREFIX
@ -117,6 +120,9 @@ termux_step_make() {
termux_step_make_install() {
unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG RANLIB
# remove version suffix: beta, nightly
local TERMUX_PKG_VERSION=${TERMUX_PKG_VERSION//~*}
if [ $TERMUX_ARCH = "x86_64" ]; then
mv $TERMUX_PREFIX ${TERMUX_PREFIX}a
$TERMUX_PKG_SRCDIR/x.py build --host x86_64-unknown-linux-gnu --stage 1 cargo
@ -140,7 +146,7 @@ termux_step_make_install() {
mv $TERMUX_PREFIX/lib/libz.so.1.tmp $TERMUX_PREFIX/lib/libz.so.1
mv $TERMUX_PREFIX/lib/libz.so.tmp $TERMUX_PREFIX/lib/libz.so
mv $TERMUX_PREFIX/lib/liblzma.so.tmp $TERMUX_PREFIX/lib/liblzma.so.$LZMA_VERSION
mv $TERMUX_PREFIX/lib/liblzma.a.tmp $TERMUX_PREFIX/lib/liblzma.a || true
mv "${TERMUX_PREFIX}"/lib/liblzma.a{.tmp,} || :
ln -sf rustlib/$CARGO_TARGET_NAME/lib/*.so .
ln -sf $TERMUX_PREFIX/bin/lld $TERMUX_PREFIX/bin/rust-lld

View File

@ -1,5 +1,5 @@
# See documentation at
# https://github.com/rust-lang/rust/blob/master/config.toml.example
# https://github.com/rust-lang/rust/blob/master/config.example.toml
[llvm]
link-shared = true
@ -10,7 +10,7 @@ target = ["@triple@", "wasm32-unknown-unknown"]
rustc = "@RUSTC@"
cargo = "@CARGO@"
python = "python2.7"
python = "python3"
extended = true
sanitizers = false
@ -30,7 +30,7 @@ channel = "stable"
rpath = false
[target.x86_64-unknown-linux-gnu]
llvm-config = "/usr/bin/llvm-config-14"
llvm-config = "/usr/bin/llvm-config-15"
[target.@triple@]
android-ndk = "@TERMUX_STANDALONE_TOOLCHAIN@"

View File

@ -1,3 +1,4 @@
TERMUX_SUBPKG_DESCRIPTION="developer compiler libs"
INCLUDED=$(sed 's/^.....//' $TERMUX_PKG_BUILDDIR/rustc-dev-$TERMUX_PKG_VERSION-$CARGO_TARGET_NAME/rustc-dev/manifest.in | grep -v '\.so$' )
TERMUX_SUBPKG_INCLUDE="$INCLUDED"
TERMUX_SUBPKG_DESCRIPTION="Rust development compiler libs"
_VERSION=${TERMUX_PKG_VERSION//~*}
_INCLUDED=$(sed 's/^.....//' "${TERMUX_PKG_BUILDDIR}/rustc-dev-${_VERSION}-${CARGO_TARGET_NAME}/rustc-dev/manifest.in" | grep -v '\.so$')
TERMUX_SUBPKG_INCLUDE="${_INCLUDED}"

View File

@ -1,46 +1,58 @@
# shellcheck shell=bash disable=SC1091 disable=SC2086 disable=SC2155
termux_setup_rust() {
if [ $TERMUX_ARCH = "arm" ]; then
CARGO_TARGET_NAME=armv7-linux-androideabi
else
CARGO_TARGET_NAME=$TERMUX_ARCH-linux-android
export CARGO_TARGET_NAME="${TERMUX_ARCH}-linux-android"
if [[ "${TERMUX_ARCH}" == "arm" ]]; then
CARGO_TARGET_NAME="armv7-linux-androideabi"
fi
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
if [[ "$TERMUX_APP_PACKAGE_MANAGER" = "apt" && "$(dpkg-query -W -f '${db:Status-Status}\n' rust 2>/dev/null)" != "installed" ]] ||
[[ "$TERMUX_APP_PACKAGE_MANAGER" = "pacman" && ! "$(pacman -Q rust 2>/dev/null)" ]]; then
echo "Package 'rust' is not installed."
echo "You can install it with"
echo
echo " pkg install rust"
echo
echo " pacman -S rust"
echo
echo "or build it from source with"
echo
echo " ./build-package.sh rust"
echo
echo "Note that package 'rust' is known to be problematic for building on device."
if [[ "${TERMUX_ON_DEVICE_BUILD}" == "true" ]]; then
if [[ -z "$(command -v rustc)" ]]; then
cat <<- EOL
Package 'rust' is not installed.
You can install it with
pkg install rust
pacman -S rust
or build it from source with
./build-package.sh rust
Note that package 'rust' is known to be problematic for building on device.
EOL
exit 1
fi
local RUSTC_VERSION=$(rustc --version | awk '{ print $2 }')
if [[ -n "${TERMUX_RUST_VERSION-}" && "${TERMUX_RUST_VERSION-}" != "${RUSTC_VERSION}" ]]; then
cat <<- EOL >&2
WARN: On device build with old rust version is not possible!
TERMUX_RUST_VERSION = ${TERMUX_RUST_VERSION}
RUSTC_VERSION = ${RUSTC_VERSION}
EOL
fi
return
fi
local ENV_NAME=CARGO_TARGET_${CARGO_TARGET_NAME^^}_LINKER
ENV_NAME=${ENV_NAME//-/_}
export $ENV_NAME=$CC
export TARGET_CFLAGS="${CFLAGS-} $CPPFLAGS"
export $ENV_NAME="${CC}"
export TARGET_CFLAGS="${CFLAGS-} ${CPPFLAGS}"
# This was getting applied for the host build of Rust macros or whatever, so
# unset it.
unset CFLAGS
curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh
if [ -z "${TERMUX_RUST_VERSION-}" ]; then
TERMUX_RUST_VERSION=$(bash -c ". $TERMUX_SCRIPTDIR/packages/rust/build.sh; echo \$TERMUX_PKG_VERSION")
if [[ -z "${TERMUX_RUST_VERSION-}" ]]; then
TERMUX_RUST_VERSION=$(. "${TERMUX_SCRIPTDIR}"/packages/rust/build.sh; echo ${TERMUX_PKG_VERSION})
fi
if [[ "${TERMUX_RUST_VERSION}" == *"~beta"* ]]; then
TERMUX_RUST_VERSION="beta"
fi
sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain $TERMUX_RUST_VERSION
export PATH=$HOME/.cargo/bin:$PATH
curl https://sh.rustup.rs -sSf > "${TERMUX_PKG_TMPDIR}"/rustup.sh
sh "${TERMUX_PKG_TMPDIR}"/rustup.sh -y --default-toolchain "${TERMUX_RUST_VERSION}"
rustup target add $CARGO_TARGET_NAME
export PATH="${HOME}/.cargo/bin:${PATH}"
rustup target add "${CARGO_TARGET_NAME}"
}

View File

@ -148,9 +148,9 @@ PACKAGES+=" composer"
# Needed by package rust.
PACKAGES+=" libssl-dev" # Needed to build Rust
PACKAGES+=" llvm-14-dev"
PACKAGES+=" llvm-14-tools"
PACKAGES+=" clang-14"
PACKAGES+=" llvm-15-dev"
PACKAGES+=" llvm-15-tools"
PACKAGES+=" clang-15"
# Needed for package smalltalk.
PACKAGES+=" libsigsegv-dev"