From 6101a753f623b4effd8ae7f975980ed6db3ca8c6 Mon Sep 17 00:00:00 2001
From: Paul Menzel <pmenzel@molgen.mpg.de>
Date: Thu, 18 Apr 2024 12:39:45 +0200
Subject: [PATCH] rustc: Add version 1.77.2-0 with cbindgen 0.26.0

1.  https://blog.rust-lang.org/2024/04/09/Rust-1.77.2.html
---
 rustc-1.77.2-0.build.sh | 103 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
 create mode 100755 rustc-1.77.2-0.build.sh

diff --git a/rustc-1.77.2-0.build.sh b/rustc-1.77.2-0.build.sh
new file mode 100755
index 0000000..bfbb5a7
--- /dev/null
+++ b/rustc-1.77.2-0.build.sh
@@ -0,0 +1,103 @@
+#! /bin/bash
+
+PKG=rustc
+VERSION=1.77.2
+BUILD=0
+
+PREFIX=/pkg/$PKG-$VERSION-$BUILD
+if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi
+
+set -xe
+umask 022
+
+BUILD_TMPDIR=/dev/shm/$PKG-$VERSION-$BUILD.build.tmp
+test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR
+mkdir -p $BUILD_TMPDIR/home
+export TMPDIR=$BUILD_TMPDIR
+export HOME=$BUILD_TMPDIR/home
+
+exec </dev/null
+
+mkdir -p $PREFIX
+cat >$PREFIX/profile <<-EOF
+	PATH=$PREFIX/bin:\$PATH
+	LD_LIBRARY_PATH=$PREFIX/lib:\$LD_LIBRARY_PATH
+	export PATH LD_LIBRARY_PATH
+	if [ -d /pkg/${PKG}-${VERSION}-${BUILD}/.compatlibs ]; then LD_LIBRARY_PATH=${PREFIX}/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi
+EOF
+. $PREFIX/profile
+
+export MAKEFLAGS="-j $(nproc)"
+
+BUILDDIR=$PREFIX/build
+
+mkdir -p $BUILDDIR
+cd $BUILDDIR
+
+test -e $PKG-$VERSION-src.tar.gz || wget https://static.rust-lang.org/dist/$PKG-$VERSION-src.tar.gz
+test -d $PKG-$VERSION-src        || tar xvf $PKG-$VERSION-src.tar.gz
+cd $PKG-$VERSION-src
+
+cat << EOF > config.toml
+# see config.toml.example for more possible options
+[llvm]
+
+# use ninja
+ninja = true
+
+targets = "X86"
+# When compiling LLVM, the experimental targets (WebAssembly
+# and RISCV) are built by default - omit them
+experimental-targets = ""
+
+[build]
+# omit HTML docs to save time and space (comment this to build them)
+docs = false
+
+# install cargo as well as rust
+extended = true
+
+vendor = true
+
+[install]
+# Adjust the prefix for the desired destination
+prefix = "$PREFIX"
+sysconfdir = "etc"
+
+# docdir is used even if the full awesome docs are not installed
+docdir = "share/doc/rustc-${VERSION}"
+
+[rust]
+channel = "stable"
+rpath = false
+
+# BLFS does not install the FileCheck executable from llvm,
+# so disable codegen tests
+codegen-tests = false
+
+# get a trace if there is an Internal Compiler Exception
+backtrace-on-ice = false
+
+EOF
+
+export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" &&
+python3 ./x.py build --exclude src/tools/miri
+
+python3 ./x.py install
+
+cd ${BUILDDIR}
+
+BINDGENVERS=0.26.0
+
+test -e ${BUILDDIR}/cbindgen-${BINDGENVERS}.tar.gz || wget https://github.com/eqrion/cbindgen/archive/v${BINDGENVERS}/cbindgen-${BINDGENVERS}.tar.gz -O ${BUILDDIR}/cbindgen-${BINDGENVERS}.tar.gz
+test -d cbindgen-${BINDGENVERS} || tar xvf ${BUILDDIR}/cbindgen-${BINDGENVERS}.tar.gz
+
+cd cbindgen-${BINDGENVERS}
+
+source ${PREFIX}/profile
+
+cargo build --release
+install -Dm755 target/release/cbindgen $PREFIX/bin
+
+
+exit