File PKGBUILD of Package rust

# Maintainer: Yukari Chiba <[email protected]>

pkgbase=rust
pkgname=(rust rust-src)
pkgver=1.86.0
pkgrel=2
pkgdesc="Systems programming language focused on safety, speed and concurrency"
arch=(x86_64 aarch64 riscv64 loongarch64)
url='https://www.rust-lang.org/'
license=(MIT Apache)
options=(!lto)
source=(
  https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.gz
  config.toml.tpl
  0001-musl-static.patch
  0002-disable-no-default-libraries.patch
  0003-drop-latomic-for-riscv-targets.patch
)
sha256sums=('022a27286df67900a044d227d9db69d4732ec3d833e4ffc259c4425ed71eed80'
            'd5879bb6d754707d75791c2c7fd80aeeffbac3e0ac8d79495b2cb5edb2a368b2'
            '35a15feca59b93afd27590ba91b657c0ac2ef21d9da8e3d6eb9bc7f04bad29f0'
            'f9340dde4ba5ed44b21f36de3605994fc32fbeaf24234a1036b162c1ee94b58d'
            '623d6c35fac21a18bd95a40e6cda51aa5890ae0432f3dadf569c0914c814e52d')

depends=(musl llvm-libs musl-static curl libssh2 openssl)
makedepends=(rust llvm-devel libffi perl python cmake ninja llvm19-bootstrap)

prepare()
{
  _patch_ ${pkgbase}c-$pkgver-src
}

build()
{
  sed -i "s@%RUSTVER%@$pkgver@g" config.toml.tpl
  case $CARCH in
    riscv64)
      sed -i "s@%RUSTTARGET%@riscv64gc-unknown-linux-musl@g" config.toml.tpl
      ;;
    *)
      sed -i "s@%RUSTTARGET%@${CARCH}-unknown-linux-musl@g" config.toml.tpl
      ;;
  esac
  cp config.toml.tpl ${pkgbase}c-$pkgver-src/config.toml

  export RUST_BACKTRACE=1

  cd $srcdir/${pkgbase}c-${pkgver}-src
  DESTDIR="$srcdir/install" python ./x.py install -j "$(nproc)"

  cd $srcdir/install
  _pick_ rust-src usr/lib/rustlib/src
}

package_rust()
{
  provides=(cargo rustfmt)
  cp -r $srcdir/install/* "$pkgdir"

  rm $pkgdir/usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh}
  rm $pkgdir/usr/lib/rustlib/manifest-*

  install -d $pkgdir/usr/share/bash-completion
  install -d $pkgdir/usr/share/licenses/rust

  mv -t $pkgdir/usr/share/licenses/rust $pkgdir/usr/share/doc/rustc/COPYRIGHT*
}

package_rust-src() {
  pkgdesc="Source code for the Rust standard library"
  depends=(rust)

  cp -a pkgs/rust-src/* "$pkgdir"
}