pkgname=rust pkgver=1.89.0 pkgdesc="Systems programming language focused on safety, speed and concurrency" homepage=https://www.rust-lang.org/ arch=(x86_64) license=("Apache-2.0 OR MIT") sources=("rustc-${pkgver}-src.tar.xz") urls=("https://static.rust-lang.org/dist/${sources[0]}") md5sums=("982f087479302e6d91432efc81852b00") src_prepare() { tar -xf ${distdir}/${sources[0]} --strip-components=1 local clangdir clangdir="$(clang -print-resource-dir)" cat << EOF > bootstrap.toml # See bootstrap.toml.example for more possible options, # and see src/bootstrap/defaults/bootstrap.dist.toml for a few options # automatically set when building from a release tarball # (unfortunately, we have to override many of them). # Tell x.py the editors have reviewed the content of this file # and updated it to follow the major changes of the building system, # so x.py will not warn us to do such a review. change-id = 142379 profile = "dist" [llvm] #from gentoo download-ci-llvm = false optimize = true release-debuginfo = false # When using system llvm prefer shared libraries link-shared = true # If building the shipped LLVM source, only enable the x86 target # instead of all the targets supported by LLVM. targets = "X86" [build] description = "LFS 12.4-systemd ${pkgname}-${pkgver}" # Omit docs to save time and space (default is to build them). docs = false # Do not query new versions of dependencies online. locked-deps = true # Specify which extended tools (those from the default install). tools = ["cargo", "clippy", "rustdoc", "rustfmt"] sanitizers = true profiler = true [install] prefix = "/usr" [rust] channel = "stable" # Enable the same optimizations as the official upstream build. lto = "thin" codegen-units = 1 # Don't build lld which does not belong to this package and seems not # so useful for BLFS. Even if it turns out to be really useful we'd build # it as a part of the LLVM package instead. lld = false # Don't build llvm-bitcode-linker which is only useful for the NVPTX # backend that we don't enable. llvm-bitcode-linker = false [dist] compression-formats = ["gz"] compression-profile = "fast" [target.x86_64-unknown-linux-gnu] cc = "/usr/bin/gcc" cxx = "/usr/bin/g++" ar = "/usr/bin/gcc-ar" ranlib = "/usr/bin/gcc-ranlib" llvm-config = "/usr/bin/llvm-config" #optimized-compiler-builtins = "$clangdir/lib/linux/libclang_rt.builtins-x86_64.a" EOF } src_build() { leaf_clear_flags export LIBSQLITE3_SYS_USE_PKG_CONFIG=1 ./x.py build } src_check() { leaf_record_message "Some tests are known to fail. See BLFS handbook." set +e ./x.py test --verbose --no-fail-fast | tee rustc-testlog local -a ps=( "${PIPESTATUS[@]}" ) local rc="${ps[0]}" grep '^test result:' rustc-testlog | awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }' set -e return "$rc" } src_install() { export LIBSQLITE3_SYS_USE_PKG_CONFIG=1 DESTDIR="${pkgdir}" python ./x.py install -j "${PARALLEL_JOBS}" cd "${pkgdir}" rm -v usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh} rm -v usr/lib/rustlib/manifest-* install -dm755 usr/share/bash-completion/completions mv -v etc/bash_completion.d/cargo usr/share/bash-completion/completions rm -rfv etc/ # licenses for main rust package local ldir="usr/share/licenses/rust" f d mkdir -p "$ldir" for f in usr/share/doc/*/{COPYRIGHT,LICENSE}*; do d="$(dirname "$f")" case $f in */LICENSE-APACHE) rm -v "$f" ;; *) mv -v "$f" "$ldir/${f##*/}.${d##*/}" ;; esac rmdir -p --ignore-fail-on-non-empty "$d" done }