diff --git a/dev-lang/rust-1.89.0.PKGBUILD b/dev-lang/rust-1.89.0.PKGBUILD new file mode 100644 index 0000000..2b16efe --- /dev/null +++ b/dev-lang/rust-1.89.0.PKGBUILD @@ -0,0 +1,131 @@ +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 +}