# Template file for 'rust-bootstrap'
pkgname=rust-bootstrap
version=1.97.1
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="
		 c096e21362fe1390e7aefc731671bce208a43828a83bcc32a35ffb8302f5802e
		 7f4be0697e96dd81f75f66f0e25a51d595223e7c58af6675810f066cab6ef584"
		;;
	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="
		 9819d0a32d56bd339585319c80260e332779f5541fd66838ab7e016d6c814819
		 1c1e704ae80126b7de34f72ea2825f7fd01736dec20732faed47374b95282fba"
		;;
	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="
		 1b1f926d3b5bf8036c858180dbc9518c6c317154718ee5c5460bb23d23bacf5d
		 51d83178680556f73a5fa8ad865b76a1ff541867445c00fc65dc67246bc2de66"
		;;
	aarch64)
		distfiles="
		 ${_bootstrap_url}/rustc-${version}-aarch64-unknown-linux-gnu.tar.xz
		 ${_bootstrap_url}/rust-std-${version}-aarch64-unknown-linux-gnu.tar.xz"
		checksum="
		 b344b81f0cd4c2246c7da8b197fe7a339d7dd02bb15cb69b2524115d9c75224c
		 46aed8e63186350004d8ec6afca798811e6530b514352e5a8a26f3dc4939b3be"
		;;
	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="
		 d6b7d9babbad6ad2bd68e98e41a06efd3df7b405f85f173f689bcace3cd9197f
		 49ff0879d94e2e8e86d5e85eb15a9215943e8c78b51363d6553443598cab5d31"
		;;
	# 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"
}
