development/rust: Updated for version 1.26.2.

This took longer than expected to get sorted out on my side. Building
1.26.2 from 1.25.0 on x86_64 was failing. I finally managed to track
down a workaround and have added a patch for that.

https://github.com/rust-lang/rust/issues/51698

Signed-off-by: Andrew Clemons <andrew.clemons@gmail.com>
This commit is contained in:
Andrew Clemons 2018-05-11 12:39:12 +02:00 committed by Willy Sudiarto Raharjo
parent 8c712cfc3c
commit 6102e63948
No known key found for this signature in database
GPG Key ID: 887B8374D7333381
4 changed files with 61 additions and 45 deletions

View File

@ -16,8 +16,8 @@ Here is a rough guide to bootstrap rust completely from source:
* Build and install mrustc (from slackbuilds.org). You now have a fully
functional rust 1.19.0.
* Now build for rust 1.20.0, 1.21.0, 1.22.1, 1.23.0, 1.24.1, and finally
1.25.0.
* Now build for rust 1.20.0, 1.21.0, 1.22.1, 1.23.0, 1.24.1, 1.25.0, and finally
1.26.2.
This slackbuild is currently compatible with each of those versions.
Since we are building completely from source, you only need the source
@ -32,6 +32,7 @@ Example:
VERSION=1.23.0 FULL_BOOTSTRAP=no LOCAL_BOOTSTRAP=yes ./rust.SlackBuild
VERSION=1.24.1 FULL_BOOTSTRAP=no LOCAL_BOOTSTRAP=yes ./rust.SlackBuild
VERSION=1.25.0 FULL_BOOTSTRAP=no LOCAL_BOOTSTRAP=yes ./rust.SlackBuild
VERSION=1.26.2 FULL_BOOTSTRAP=no LOCAL_BOOTSTRAP=yes ./rust.SlackBuild
You might prefer to do a full bootstrap for 1.20.0, which is what mrustc's own
bootstrap script suggests. The versions after that do not need a full bootstrap.

View File

@ -26,17 +26,22 @@
PRGNAM=rust
SRCNAM="${PRGNAM}c"
VERSION=${VERSION:-1.25.0}
# src/stage0.txt
RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.24.0}
RSTAGE0_DIR=${RSTAGE0_DIR:-2018-02-15}
CSTAGE0_VERSION=${CSTAGE0_VERSION:-0.25.0}
CSTAGE0_DIR=${CSTAGE0_DIR:-$RSTAGE0_DIR}
VERSION=${VERSION:-1.26.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
# Set this to YES to build with the system LLVM, or NO to use the bundled LLVM.
# YES is probably better (when it works...)
# LLVM in Slackware14.2 is now too old to build rust 1.26.0
SYSTEM_LLVM=${SYSTEM_LLVM:-NO}
SYSTEM_LLVM=$(echo "$SYSTEM_LLVM" | tr '[:lower:]' '[:upper:]')
# Bootstrap variables (might not be kept updated for latest Rust):
RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.25.0}
RSTAGE0_DIR=${RSTAGE0_DIR:-2018-03-29}
CSTAGE0_VERSION=${CSTAGE0_VERSION:-0.26.0}
CSTAGE0_DIR=${CSTAGE0_DIR:-$RSTAGE0_DIR}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@ -134,6 +139,11 @@ rm -rf $SRCNAM-$VERSION-src
tar xvf $CWD/$SRCNAM-$VERSION-src.tar.xz
cd $SRCNAM-$VERSION-src
# Link with -lffi in case of using system LLVM:
if [ "${SYSTEM_LLVM}" = "YES" ]; then
zcat $CWD/link_libffi.diff.gz | patch -p1 --verbose || exit 1
fi
if [ "$LOCAL_BOOTSTRAP" != "yes" ] ; then
# rust requires bootstrapping with the previous rust version.
# versions are defined in src/stage0.txt.
@ -149,14 +159,9 @@ fi
# Build configuration. We'll go ahead and build with rpath because it may be
# needed during the build, and then we'll strip the rpaths out of the
# binaries later.
# LLVM in Slackware14.2 is now too old to build rust 1.24.1, so the rust build
# falls back to building its own. You can force using the system LLVM with this
# flag.
SYSTEM_LLVM=${SYSTEM_LLVM:-no}
cat << EOF > config.toml
[llvm]
ccache = "/usr/bin/ccache"
targets = "X86"
[build]
@ -176,20 +181,20 @@ mandir = "man"
[rust]
codegen-units = 0
thinlto = false
channel = "stable"
rpath = true
codegen-tests = false
ignore-git = true
EOF
if [ "$ARCH" = "arm" ] ; then
sed -i 's/"X86"/"X86;ARM"//' config.toml
fi
if [ "$SYSTEM_LLVM" = "yes" ] ; then
if [ "${SYSTEM_LLVM}" = "YES" ]; then
cat << EOF >> config.toml
# Add this stuff to build with the system LLVM:
[target.i586-unknown-linux-gnu]
llvm-config = "/usr/bin/llvm-config"
@ -218,9 +223,6 @@ EOF
chmod 0755 local-llvm-config
sed -i "s|/usr/bin/llvm-config|$(pwd)/local-llvm-config|" config.toml
fi
# Link with -lffi in case of using system LLVM:
zcat $CWD/link_libffi.diff.gz | patch -p1 --verbose
fi
FULL_BOOTSTRAP="${FULL_BOOTSTRAP:-no}"
@ -233,6 +235,11 @@ if [ "$LOCAL_BOOTSTRAP" = "yes" ] ; then
sed -i "s|^\(extended = true\)$|\1\nrustc = \"/usr/bin/rustc\"\ncargo = \"/usr/bin/cargo\"|" config.toml
fi
if [ "$ARCH" = "x86_64" ] && [ "$LOCAL_BOOTSTRAP" = "yes" ] && [ "$(echo "$VERSION" | cut -d. -f 1)" -eq 1 ] && [ "$(echo "$VERSION" | cut -d. -f 2)" -gt 24 ] ; then
zcat $CWD/slackware64_local_bootstrap.diff.gz | patch -p1 --verbose || exit 1
fi
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@ -284,6 +291,14 @@ gzip -9 $PKG/usr/lib$LIBDIRSUFFIX/rustlib/manifest-*
# Correct permissions on shared libraries:
find $PKG/usr/lib$LIBDIRSUFFIX -name "*.so" -exec chmod 755 "{}" \;
# Evidently there are a lot of duplicated libraries in this tree, so let's
# try to save some space:
(
find "$PKG/usr/lib${LIBDIRSUFFIX}/rustlib" -type d -path '*/*-linux-gnu/*' -name 'lib' | while read -r dir ; do
cd "$dir" && for file in *.so ; do if cmp -s "$file" ../../../"$file" ; then ln -sf ../../../"$file" ; fi ; done
done
)
# Strip ELF objects:
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

View File

@ -1,28 +1,28 @@
PRGNAM="rust"
VERSION="1.25.0"
VERSION="1.26.2"
HOMEPAGE="https://www.rust-lang.org"
DOWNLOAD="https://static.rust-lang.org/dist/rustc-1.25.0-src.tar.xz \
https://static.rust-lang.org/dist/2018-02-15/cargo-0.25.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rust-std-1.24.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rustc-1.24.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/cargo-0.25.0-arm-unknown-linux-gnueabi.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rust-std-1.24.0-arm-unknown-linux-gnueabi.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rustc-1.24.0-arm-unknown-linux-gnueabi.tar.gz"
MD5SUM="57295a3c3bedfc21e3c643b397a1f017 \
b5aff8de6cf43993d6486d7ccc42bf8e \
d7e33d9b7226bda2ef68302af86ad503 \
c0a641b8dd8e96787169b35c9c1c2903 \
86701e7bf219b7ea7647ea35ec5104c7 \
4c0633ed46b931820ca09d9ce3e6ec2b \
f32f60683990bd3978aa284d69a4f7b9"
DOWNLOAD_x86_64="https://static.rust-lang.org/dist/rustc-1.25.0-src.tar.xz \
https://static.rust-lang.org/dist/2018-02-15/cargo-0.25.0-x86_64-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rust-std-1.24.0-x86_64-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-02-15/rustc-1.24.0-x86_64-unknown-linux-gnu.tar.gz"
MD5SUM_x86_64="57295a3c3bedfc21e3c643b397a1f017 \
3563bdec9bc620fcd0bd046424eb78af \
2dd480376768d227cd2925ff3c87d685 \
2e35e45653015fd85f65e9fc1e2f8270"
DOWNLOAD="https://static.rust-lang.org/dist/rustc-1.26.2-src.tar.xz \
https://static.rust-lang.org/dist/2018-03-29/cargo-0.26.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rust-std-1.25.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rustc-1.25.0-i686-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/cargo-0.26.0-arm-unknown-linux-gnueabi.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rust-std-1.25.0-arm-unknown-linux-gnueabi.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rustc-1.25.0-arm-unknown-linux-gnueabi.tar.gz"
MD5SUM="5185c661cab0d34121e78a2a5c28af5f \
d49b79a5425ea14c0f54d8d4abe48cc7 \
5f248be4a20a53419d0bf5c5120ebe04 \
d6c7c406e1a783b174aaf1414e9f0900 \
4fe96e55897f156fdbc80c96a0913516 \
3e1a27b11f17428290a6133a1b0211c8 \
5f277935c04a431fb64bbac160d53118"
DOWNLOAD_x86_64="https://static.rust-lang.org/dist/rustc-1.26.2-src.tar.xz \
https://static.rust-lang.org/dist/2018-03-29/cargo-0.26.0-x86_64-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rust-std-1.25.0-x86_64-unknown-linux-gnu.tar.gz \
https://static.rust-lang.org/dist/2018-03-29/rustc-1.25.0-x86_64-unknown-linux-gnu.tar.gz"
MD5SUM_x86_64="5185c661cab0d34121e78a2a5c28af5f \
b0de62d86f0ba71078471d09916873c6 \
37e9f9193413caba47134af3306328c5 \
6e9c8ae2946cf6626ad6511c7a1d6c2a"
REQUIRES="patchelf"
MAINTAINER="Andrew Clemons"
EMAIL="andrew.clemons@gmail.com"

Binary file not shown.