From adcf8dd38215601024979abcee28b82997193788 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Mon, 12 Feb 2024 20:58:46 +0000 Subject: Mon Feb 12 20:58:46 UTC 2024 a/procps-ng-4.0.4-x86_64-1.txz: Upgraded. a/shadow-4.14.4-x86_64-1.txz: Upgraded. ap/man-pages-6.06-noarch-1.txz: Upgraded. ap/vim-9.1.0098-x86_64-1.txz: Upgraded. d/libgccjit-13.2.0-x86_64-1.txz: Added. If we can ship GCC's D and Modula-2 support, then we can ship this. We'll probably find a use for it. ;-) Thanks to Didier Spaier for hints on the build script. d/mercurial-6.6.3-x86_64-1.txz: Upgraded. d/rust-1.76.0-x86_64-1.txz: Upgraded. l/gegl-0.4.48-x86_64-1.txz: Upgraded. l/openexr-3.2.2-x86_64-1.txz: Upgraded. l/pango-1.51.2-x86_64-1.txz: Upgraded. l/python-calver-2022.6.26-x86_64-1.txz: Added. Needed for python-trove-classifiers. Thanks to lucabon. n/openvpn-2.6.9-x86_64-1.txz: Upgraded. xap/vim-gvim-9.1.0098-x86_64-1.txz: Upgraded. extra/rust-for-mozilla/rust-1.70.0-x86_64-4.txz: Added. Let's move this here since it's lagging behind the latest Rust. --- extra/rust-for-mozilla/README | 15 ++ extra/source/rust-for-mozilla/link_libffi.diff | 11 + extra/source/rust-for-mozilla/rust.SlackBuild | 314 +++++++++++++++++++++++++ extra/source/rust-for-mozilla/rust.url | 35 +++ extra/source/rust-for-mozilla/slack-desc | 19 ++ 5 files changed, 394 insertions(+) create mode 100644 extra/rust-for-mozilla/README create mode 100644 extra/source/rust-for-mozilla/link_libffi.diff create mode 100755 extra/source/rust-for-mozilla/rust.SlackBuild create mode 100644 extra/source/rust-for-mozilla/rust.url create mode 100644 extra/source/rust-for-mozilla/slack-desc (limited to 'extra') diff --git a/extra/rust-for-mozilla/README b/extra/rust-for-mozilla/README new file mode 100644 index 000000000..60aee6c4b --- /dev/null +++ b/extra/rust-for-mozilla/README @@ -0,0 +1,15 @@ +This is a version of Rust that's closer to what Mozilla is recommending for +compiling Firefox, Seamonkey, and Thunderbird. + +To see the recommended minimum and maximum versions of Rust that upstream +recommends for Firefox (or for Seamonkey/Thunderbird using the backend from the +same version of Firefox), see this link: + +https://firefox-source-docs.mozilla.org/writing-rust-code/update-policy.html + +This version of Rust has been compiled with the bundled version of LLVM to +avoid depending on any particular version of LLVM. + +This Rust package will be updated in place to follow the requirements for the +various Mozilla packages in the main tree (for -current), or in /patches (for +a stable release). diff --git a/extra/source/rust-for-mozilla/link_libffi.diff b/extra/source/rust-for-mozilla/link_libffi.diff new file mode 100644 index 000000000..dd5a3e0f0 --- /dev/null +++ b/extra/source/rust-for-mozilla/link_libffi.diff @@ -0,0 +1,11 @@ +--- ./compiler/rustc_llvm/build.rs.orig 2020-11-16 08:01:53.000000000 -0600 ++++ ./compiler/rustc_llvm/build.rs 2020-11-19 13:46:21.222785372 -0600 +@@ -234,6 +234,8 @@ + println!("cargo:rustc-link-lib={}={}", kind, name); + } + ++ println!("cargo:rustc-link-lib=dylib=ffi"); ++ + // LLVM ldflags + // + // If we're a cross-compile of LLVM then unfortunately we can't trust these diff --git a/extra/source/rust-for-mozilla/rust.SlackBuild b/extra/source/rust-for-mozilla/rust.SlackBuild new file mode 100755 index 000000000..b241b2e29 --- /dev/null +++ b/extra/source/rust-for-mozilla/rust.SlackBuild @@ -0,0 +1,314 @@ +#!/bin/bash + +# Copyright 2017 Andrew Clemons, Wellington, New Zealand +# Copyright 2017, 2018, 2019, 2020, 2021, 2022, 2023 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2017 Stuart Winter +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=rust +SRCNAM="${PKGNAM}c" +VERSION=${VERSION:-1.70.0} +BUILD=${BUILD:-4} + +# Set this to YES to build with the system LLVM, or NO to use the bundled LLVM. +# YES is probably better (when it works...) +SYSTEM_LLVM=${SYSTEM_LLVM:-NO} + +# Bootstrap variables (might not be kept updated for latest Rust): +RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.69.0} +RSTAGE0_DIR=${RSTAGE0_DIR:-2023-04-20} +CSTAGE0_VERSION=${CSTAGE0_VERSION:-1.69.0} +CSTAGE0_DIR=${CSTAGE0_DIR:-$RSTAGE0_DIR} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i686 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi +unset MARCH + +# For compiling i686 under an x86_64 kernel: +if [ "$(uname -m)" = "x86_64" -a "$(file -L /usr/bin/gcc | grep 80386 | grep 32-bit)" != "" ]; then + ARCH=i686 +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +# If the bootstrap binaries are present, use those. Otherwise bootstrap from +# installed compiler. +if /bin/ls *-unknown-linux-gnu.tar.?z 1> /dev/null 2> /dev/null ; then + LOCAL_BOOTSTRAP=no +else + LOCAL_BOOTSTRAP=yes +fi + +# https://forge.rust-lang.org/platform-support.html +# Bootstrapping ARCH: +if [ "$ARCH" = "i586" ]; then + if [ "$LOCAL_BOOTSTRAP" = "yes" ] ; then + if rustc -Vv | grep host | grep i586 > /dev/null ; then + BARCH="$ARCH" + else + BARCH="i686" + if case "$( uname -m )" in i586) true ;; *) false ;; esac ; then + echo "rust must be bootstrapped from an i686 machine" + exit 1 + fi + fi + else + # i586 must be built on a i686 machine, since the bootstrap compiler is i686 + BARCH="i686" + if case "$( uname -m )" in i586) true ;; *) false ;; esac ; then + echo "rust must be bootstrapped from an i686 machine" + exit 1 + fi + fi + TARCH="$ARCH" +elif [ "$ARCH" = "armv7hl" ]; then + BARCH="armv7" + TARCH="$BARCH" +else + BARCH="$ARCH" + TARCH="$ARCH" +fi + +# Bootstrapping ABI: +if [ "$ARCH" = "armv7hl" ]; then + BABI="gnueabihf" +else + BABI="gnu" +fi + +TMP=${TMP:-/tmp} +OUTPUT=${OUTPUT:-$TMP} +PKG=$TMP/package-$PKGNAM + +# Not needed, as the build will automatically use as many jobs as there are +# threads. +#NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} + +if [ "$ARCH" = "i586" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + LIBDIRSUFFIX="" +else + LIBDIRSUFFIX="" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $SRCNAM-$VERSION-src +echo "Extracting $CWD/$SRCNAM-$VERSION-src.tar.?z..." +tar xf $CWD/$SRCNAM-$VERSION-src.tar.?z || exit 1 +cd $SRCNAM-$VERSION-src || exit 1 + +# 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. + mkdir -p build/cache/$RSTAGE0_DIR + cp $CWD/$PKGNAM-std-$RSTAGE0_VERSION-$BARCH-unknown-linux-gnu.tar.?z \ + $CWD/$SRCNAM-$RSTAGE0_VERSION-$BARCH-unknown-linux-gnu.tar.?z \ + build/cache/$RSTAGE0_DIR + mkdir -p build/cache/$CSTAGE0_DIR + cp $CWD/cargo-$CSTAGE0_VERSION-$BARCH-unknown-linux-gnu.tar.?z build/cache/$CSTAGE0_DIR +fi + +# Build configuration: +cat << EOF > config.toml +[llvm] +ccache = "/usr/bin/ccache" +link-shared = true + +[build] +build = "$BARCH-unknown-linux-$BABI" +host = ["$TARCH-unknown-linux-$BABI"] +target = ["$TARCH-unknown-linux-$BABI"] +tools = ["analysis", "cargo", "clippy", "rls", "rustfmt", "src", "rust-analyzer", "rust-demangler"] +submodules = false +vendor = true +extended = true + +[install] +prefix = "/usr" +docdir = "doc/rust-$VERSION" +libdir = "lib$LIBDIRSUFFIX" +mandir = "man" + +[rust] +codegen-units = 0 +channel = "stable" +rpath = false +codegen-tests = false + +EOF + +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" + +[target.i686-unknown-linux-gnu] +llvm-config = "/usr/bin/llvm-config" + +[target.x86_64-unknown-linux-gnu] +llvm-config = "/usr/bin/llvm-config" + +[target.armv7-unknown-linux-gnueabihf] +llvm-config = "/usr/bin/llvm-config" +EOF +fi + +if [ "$LOCAL_BOOTSTRAP" = "yes" ] ; then + sed -i "s|^\(extended = true\)$|\1\nrustc = \"/usr/bin/rustc\"\ncargo = \"/usr/bin/cargo\"|" config.toml +fi + +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ + +export PKG_CONFIG_ALLOW_CROSS=1 + +if [ "$BARCH" = "i586" ] ; then + # when bootstrapping from i586 (rust already installed), also build a i686 + # rustlib: + sed -i 's/^target =.*$/target = ["i686-unknown-linux-gnu"]/' config.toml +elif [ "$BARCH" = "i686" ] ; then + if [ "$TARCH" = "i586" ] ; then + # this will cause some messages like: + # warning: redundant linker flag specified for library `m` + # but will keep the build from falling over when doing the stage1 compiler + # linking for the i586 compiler. seems the correct flags don't get passed + # through and we end up failures like: + # error: linking with `clang` failed: exit code: 1 + # /tmp/SBo/rustc-1.20.0-src/build/i686-unknown-linux-gnu/stage1-rustc/i586-unknown-linux-gnu/release/deps/librustc_llvm-4ab259c9aed547db.so: undefined reference to `xxx` + export RUSTFLAGS="$RUSTFLAGS -C link-args=-lrt -ldl -lcurses -lpthread -lz -lm" + fi +fi + +# Fix path to the rust libraries in rust-analyzer: +if [ -r src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs ]; then + if [ ! "$LIBDIRSUFFIX" = "" ]; then + sed -i "s,\"lib/rustlib,\"lib${LIBDIRSUFFIX}/rustlib,g" src/tools/rust-analyzer/crates/project-model/src/sysroot.rs + fi +fi + +# Build and install: +python3 ./x.py build || exit 1 +DESTDIR=$PKG python3 x.py install || exit 1 + +# In case the rls stub doesn't get installed by the 'install' target: +if [ ! -x $PKG/usr/bin/rls ]; then + install -m755 build/*-linux-gnu/stage1-tools-bin/rls $PKG/usr/bin/rls +fi + +# Fix path to lldb_commands: +if [ -x $PKG/usr/bin/rust-lldb ]; then + if [ ! "$LIBDIRSUFFIX" = "" ]; then + sed -i "s,/lib/rustlib/,/lib$LIBDIRSUFFIX/rustlib/,g" $PKG/usr/bin/rust-lldb + fi +fi + +# Eh, none of this is all that big. Might as well leave it around as a +# reference. +#rm -f $PKG/usr/lib$LIBDIRSUFFIX/rustlib/components +#rm -f $PKG/usr/lib$LIBDIRSUFFIX/rustlib/install.log +#rm -f $PKG/usr/lib$LIBDIRSUFFIX/rustlib/manifest-* +#rm -f $PKG/usr/lib$LIBDIRSUFFIX/rustlib/rust-installer-version +#rm -f $PKG/usr/lib$LIBDIRSUFFIX/rustlib/uninstall.sh +# Make sure the paths are correct, though: +sed -i "s,/tmp/package-rust/,/,g" $PKG/usr/lib$LIBDIRSUFFIX/rustlib/install.log $PKG/usr/lib$LIBDIRSUFFIX/rustlib/manifest-* +# And a little compression doesn't hurt either: +gzip -9 $PKG/usr/lib$LIBDIRSUFFIX/rustlib/manifest-* + +# Move bash completions to the system location: +if [ -d $PKG/etc/bash_completion.d ]; then + mkdir -p $PKG/usr/share/bash-completion + mv $PKG/etc/bash_completion.d $PKG/usr/share/bash-completion/completions + rmdir $PKG/etc 2> /dev/null +fi + +# 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: +( cd $PKG/usr/lib${LIBDIRSUFFIX}/rustlib/*-linux-gnu/lib && for file in *.so ; do if cmp -s $file ../../../$file ; then ln -sf ../../../$file .; fi; 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 + +# Get rid of possible .old files in these locations: +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.old +rm -f $PKG/usr/bin/*.old + +# Commented out (for now) since we disable rpaths in config.toml: +## Remove any compiled-in RPATHs: +#find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ +# | cut -f 1 -d : | while read elfobject ; do +# patchelf --remove-rpath $elfobject || exit 1 +#done + +# Compress man pages: +find $PKG/usr/man -type f -exec gzip -9 {} \+ +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +# Add some documentation: +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a *.md COPYRIGHT* COPYING* LICENSE* $PKG/usr/doc/$PKGNAM-$VERSION +# Include licenses from third party vendors: +mkdir $PKG/usr/doc/$PKGNAM-$VERSION/vendor +( cd vendor + tar cf - $(find . -maxdepth 2 | grep -e README -e LICENSE -e COPYING -e CHANGELOG -e PERFORMANCE -e UPGRADE ) | ( cd $PKG/usr/doc/$PKGNAM-$VERSION/vendor ; tar xf - ) +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/extra/source/rust-for-mozilla/rust.url b/extra/source/rust-for-mozilla/rust.url new file mode 100644 index 000000000..98cc2f672 --- /dev/null +++ b/extra/source/rust-for-mozilla/rust.url @@ -0,0 +1,35 @@ +# Source code (repacked to .tar.lz): +VERSION=1.70.0 +rm -f rustc-${VERSION}-src.tar.* +lftpget https://static.rust-lang.org/dist/rustc-${VERSION}-src.tar.gz +lftpget https://static.rust-lang.org/dist/rustc-${VERSION}-src.tar.gz.asc +if gpg --verify rustc-${VERSION}-src.tar.gz.asc ; then + rm -f rustc-${VERSION}-src.tar.gz.asc + gzip -d rustc-*tar.gz + plzip -9 -v rustc-*tar +else + echo "FATAL ERROR: Not recompressing since GPG signature failed." + exit 1 +fi + +# Please note that the bootstrap binary packages listed below might not be kept +# updated for later versions. The Rust compiler as shipped with Slackware +# should be able to compile the next released version of Rust. +# +# To find the expected date/versions for bootstrap binaries to be able to +# update the settings below, look at src/stage0.json in the Rust sources. +exit 0 + +BOOTSTRAP_DATE=2023-04-20 +BOOTSTRAP_VERSION=1.69.0 +BOOTSTRAP_CARGO=$BOOTSTRAP_VERSION + +# i686 bootstrap: +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/cargo-${BOOTSTRAP_CARGO}-i686-unknown-linux-gnu.tar.xz +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/rust-std-${BOOTSTRAP_VERSION}-i686-unknown-linux-gnu.tar.xz +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/rustc-${BOOTSTRAP_VERSION}-i686-unknown-linux-gnu.tar.xz + +# x86_64 bootstrap: +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/cargo-${BOOTSTRAP_CARGO}-x86_64-unknown-linux-gnu.tar.xz +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/rust-std-${BOOTSTRAP_VERSION}-x86_64-unknown-linux-gnu.tar.xz +lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/rustc-${BOOTSTRAP_VERSION}-x86_64-unknown-linux-gnu.tar.xz diff --git a/extra/source/rust-for-mozilla/slack-desc b/extra/source/rust-for-mozilla/slack-desc new file mode 100644 index 000000000..924b1907e --- /dev/null +++ b/extra/source/rust-for-mozilla/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +rust: rust (a safe, concurrent, practical language) +rust: +rust: Rust is a curly-brace, block-structured expression language. +rust: Its design is oriented toward concerns of "programming in the large", +rust: that is, of creating and maintaining boundaries - both abstract and +rust: operational - that preserve large-system integrity, availability, +rust: and concurrency. +rust: +rust: Homepage: https://rust-lang.org +rust: +rust: -- cgit v1.2.3