diff options
-rw-r--r-- | development/rust/README.SLACKWARE | 5 | ||||
-rw-r--r-- | development/rust/rust.SlackBuild | 55 | ||||
-rw-r--r-- | development/rust/rust.info | 46 | ||||
-rw-r--r-- | development/rust/slackware64_local_bootstrap.diff.gz | bin | 0 -> 328 bytes |
4 files changed, 61 insertions, 45 deletions
diff --git a/development/rust/README.SLACKWARE b/development/rust/README.SLACKWARE index 2e925a7d46..86a0449d92 100644 --- a/development/rust/README.SLACKWARE +++ b/development/rust/README.SLACKWARE @@ -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. diff --git a/development/rust/rust.SlackBuild b/development/rust/rust.SlackBuild index 0dd10d6ac4..f7c8ad00ee 100644 --- a/development/rust/rust.SlackBuild +++ b/development/rust/rust.SlackBuild @@ -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 diff --git a/development/rust/rust.info b/development/rust/rust.info index ea5b7adeb6..d51965d6ba 100644 --- a/development/rust/rust.info +++ b/development/rust/rust.info @@ -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" diff --git a/development/rust/slackware64_local_bootstrap.diff.gz b/development/rust/slackware64_local_bootstrap.diff.gz Binary files differnew file mode 100644 index 0000000000..818b795dbb --- /dev/null +++ b/development/rust/slackware64_local_bootstrap.diff.gz |