# Template file for 'rust-bootstrap'
pkgname=rust-bootstrap
version=1.96.0
revision=1
short_desc="Rust programming language bootstrap toolchain"
maintainer="Orphaned <orphan@voidlinux.org>"
license="Apache-2.0 OR MIT"
homepage="https://www.rust-lang.org/"
conflicts="rust>=0 rust-std>=0"
lib32disabled=yes
nostrip=yes
repository=bootstrap

if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
	depends="libexecinfo-devel"
fi

_bootstrap_url="https://static.rust-lang.org/dist"

case "$XBPS_TARGET_MACHINE" in
	x86_64*|i686|aarch64*) ;;
	# See srcpkgs/rust-bootstrap/files/generating-distfiles.md for details
	*) _bootstrap_url="https://repo-default.voidlinux.org/distfiles";;
esac

# hardcode platform triplets
# because this info isn't available here without hacky workarounds
case "$XBPS_TARGET_MACHINE" in
	i686)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-i686-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-i686-unknown-linux-gnu.tar.xz"
		checksum="
		 8caea1b6a1e76c9452cd2041c78680a9948b01abdc06be90c2e5ab3121793398
		 2d13b8c801c9ad1ff55dceacaf1d1777601e328bc56cd390c4209a2f61d76ce2"
		;;
	x86_64)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-x86_64-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-x86_64-unknown-linux-gnu.tar.xz"
		checksum="
		 7d7fa1d0cfb0fab71a956bb78f41107202c17f30ab56c45288e869a37fd9633d
		 c09c7c646248f14f473f5f7a029af15ee57c3a9f9bc93dfa72d9621938586b82"
		;;
	x86_64-musl)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-x86_64-unknown-linux-musl.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-x86_64-unknown-linux-musl.tar.xz"
		checksum="
		 550670a3ed467fbcf989f6f3f3649bb590658fc9490206f56bcbdf943f3c8e34
		 4db24564076c243b377585bec0b938388638301ea5003d6245c4cbf9d86b11d0"
		;;
	aarch64)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-aarch64-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-aarch64-unknown-linux-gnu.tar.xz"
		checksum="
		 76b1a6e8dd1636e364d4bbba685485ff44eee5ff6434add089bab4c703c7e19d
		 538e85452709687797d990579a491ff9b02f8bffba4a5d54cfa945e28868053e"
		;;
	aarch64-musl)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-aarch64-unknown-linux-musl.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-aarch64-unknown-linux-musl.tar.xz"
		checksum="
		 3c4cab44cb4a531cf7a71a02ee64f33e4370adacdf839673615ddfa8ff0f9608
		 e7d89a29abcc2cf2f31cfe3d898c1713fb12f395e788809d3b01b23fdd5813b4"
		;;
	# placeholders for user-supplied distfiles
	ppc64le)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-powerpc64le-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-powerpc64le-unknown-linux-gnu.tar.xz"
		checksum="
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb"
		;;
	ppc64le-musl)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-powerpc64le-unknown-linux-musl.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-powerpc64le-unknown-linux-musl.tar.xz"
		checksum="
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb"
		;;
	ppc64)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-powerpc64-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-powerpc64-unknown-linux-gnu.tar.xz"
		checksum="
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb"
		;;
	ppc)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-powerpc-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-powerpc-unknown-linux-gnu.tar.xz"
		checksum="
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb
		 badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb"
		;;
	*) broken="rust bootstrap binaries unavailable for ${XBPS_TARGET_MACHINE}";;
esac

do_install() {
	for d in *; do
		cd $d
		./install.sh --prefix=/usr --destdir="${DESTDIR}"
		cd ..
	done

	vlicense rustc-${version}-${RUST_TARGET}/COPYRIGHT
	vlicense rustc-${version}-${RUST_TARGET}/LICENSE-APACHE
	vlicense rustc-${version}-${RUST_TARGET}/LICENSE-MIT

	rm -rf ${DESTDIR}/usr/share/doc/rust

	# move from a non-compliant path
	vmkdir usr/share/rust
	mv "${DESTDIR}/usr/etc/target-spec-json-schema.json" \
		"${DESTDIR}/usr/share/rust/target-spec-json-schema.json"
}
