# Maintainer: pingplug < aur at pingplug dot me > _pkgname=rust _cargo=0.43.0 pkgname=mingw-w64-rust-bin pkgver=1.42.0 pkgrel=1 pkgdesc="Systems programming language focused on safety, speed and concurrency (PLEASE READ COMMENTS FIRST) (official build, mingw-w64)" arch=('x86_64') url="https://www.rust-lang.org" license=('MIT' 'Apache' 'custom') depends=('gcc-libs' 'curl' 'mingw-w64-crt' 'libgit2' 'mingw-w64-gcc') optdepends=('mingw-w64-wine: for cargo test support') provides=("mingw-w64-rust=${pkgver}") conflicts=('mingw-w64-rust') options=('!strip' 'staticlibs' '!buildflags') source=("https://static.rust-lang.org/dist/cargo-${_cargo}-x86_64-unknown-linux-gnu.tar.xz"{,.asc} "https://static.rust-lang.org/dist/rustc-${pkgver}-x86_64-unknown-linux-gnu.tar.xz"{,.asc} "https://static.rust-lang.org/dist/rust-std-${pkgver}-x86_64-unknown-linux-gnu.tar.xz"{,.asc} "https://static.rust-lang.org/dist/rust-std-${pkgver}-i686-pc-windows-gnu.tar.xz"{,.asc} "https://static.rust-lang.org/dist/rust-std-${pkgver}-x86_64-pc-windows-gnu.tar.xz"{,.asc}) sha256sums=('fe7e40786f6e013d471f2f8ed51ba268611122065930a6d5a10bf20146997270' 'SKIP' '3d2e4dccbeec8866c7d1d151abe06526f331ea1dac9f8ae3cbe30ac6568fefb2' 'SKIP' '21405992fa02411a7a5bbd88e8218cd3e4609fe18bee687bb5ad6bab81e3f783' 'SKIP' '6fabcddb5cc8efa29141aaf0ed2c851c92517b939b2f87ff71376062e513b533' 'SKIP' 'de2c7a44cb3027a4b57735c05eb543d426ce440b2c48ea1df1344c123e1a20f0' 'SKIP') validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE') # Rust Language (Tag and Release Signing Key) backup=("opt/${_pkgname}/cargo/config") PKGEXT=".pkg.tar.gz" prepare() { cd ${srcdir} mkdir -p "rust-${pkgver}-x86_64-unknown-linux-gnu" cp "cargo-${_cargo}-x86_64-unknown-linux-gnu/install.sh" "rust-${pkgver}-x86_64-unknown-linux-gnu" mv "cargo-${_cargo}-x86_64-unknown-linux-gnu/cargo" "rust-${pkgver}-x86_64-unknown-linux-gnu" cat "cargo-${_cargo}-x86_64-unknown-linux-gnu/components" >> "rust-${pkgver}-x86_64-unknown-linux-gnu/components" mv "rustc-${pkgver}-x86_64-unknown-linux-gnu/rustc" "rust-${pkgver}-x86_64-unknown-linux-gnu" cat "rustc-${pkgver}-x86_64-unknown-linux-gnu/components" >> "rust-${pkgver}-x86_64-unknown-linux-gnu/components" mv "rust-std-${pkgver}-x86_64-unknown-linux-gnu/rust-std-x86_64-unknown-linux-gnu" "rust-${pkgver}-x86_64-unknown-linux-gnu" cat "rust-std-${pkgver}-x86_64-unknown-linux-gnu/components" >> "rust-${pkgver}-x86_64-unknown-linux-gnu/components" mv "rust-std-${pkgver}-i686-pc-windows-gnu/rust-std-i686-pc-windows-gnu" "rust-${pkgver}-x86_64-unknown-linux-gnu" cat "rust-std-${pkgver}-i686-pc-windows-gnu/components" >> "rust-${pkgver}-x86_64-unknown-linux-gnu/components" mv "rust-std-${pkgver}-x86_64-pc-windows-gnu/rust-std-x86_64-pc-windows-gnu" "rust-${pkgver}-x86_64-unknown-linux-gnu" cat "rust-std-${pkgver}-x86_64-pc-windows-gnu/components" >> "rust-${pkgver}-x86_64-unknown-linux-gnu/components" } package() { cd "${srcdir}/rust-${pkgver}-x86_64-unknown-linux-gnu" # rustc, cargo, and libs. ./install.sh \ --disable-ldconfig \ --destdir="${pkgdir}" \ --components=rustc,cargo,rust-std-x86_64-unknown-linux-gnu,rust-std-i686-pc-windows-gnu,rust-std-x86_64-pc-windows-gnu \ --prefix=/opt/${_pkgname} # license install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}/"{rust,cargo} mv "${pkgdir}/opt/${_pkgname}/share/doc/cargo/"LICENSE-* "${pkgdir}/usr/share/licenses/${pkgname}/cargo/" mv "${pkgdir}/opt/${_pkgname}/share/doc/rust/"{LICENSE-*,COPYRIGHT} "${pkgdir}/usr/share/licenses/${pkgname}/rust/" # remove unused files rm -r "${pkgdir}/opt/${_pkgname}/"{etc,share} rm "${pkgdir}/opt/${_pkgname}/lib/rustlib/"{manifest-*,install.log,uninstall.sh,components,rust-installer-version} # link shared libraries pushd "${pkgdir}/opt/${_pkgname}/lib" ln -sf "rustlib/x86_64-unknown-linux-gnu/lib/"*.so . popd install -dm755 "${pkgdir}/usr/i686-w64-mingw32/bin" && pushd "${pkgdir}/usr/i686-w64-mingw32/bin" ln -sf "../../../opt/${_pkgname}/lib/rustlib/i686-pc-windows-gnu/lib/"*.dll . popd install -dm755 "${pkgdir}/usr/x86_64-w64-mingw32/bin" && pushd "${pkgdir}/usr/x86_64-w64-mingw32/bin" ln -sf "../../../opt/${_pkgname}/lib/rustlib/x86_64-pc-windows-gnu/lib/"*.dll . popd # use system MinGW provided crt2.o and dllcrt2.o pushd "${pkgdir}/opt/${_pkgname}/lib/rustlib/i686-pc-windows-gnu/lib" ln -sf "../../../../../../usr/i686-w64-mingw32/lib/"{crt2.o,dllcrt2.o} . popd pushd "${pkgdir}/opt/${_pkgname}/lib/rustlib/x86_64-pc-windows-gnu/lib" ln -sf "../../../../../../usr/x86_64-w64-mingw32/lib/"{crt2.o,dllcrt2.o} . popd # strip strip --strip-all "${pkgdir}/opt/${_pkgname}/bin/"{cargo,rustc,rustdoc} strip --strip-all "${pkgdir}/opt/${_pkgname}/lib/rustlib/x86_64-unknown-linux-gnu/bin/"rust-lld strip --strip-unneeded "${pkgdir}/opt/${_pkgname}/lib/librustc"*.so strip --strip-unneeded "${pkgdir}/opt/${_pkgname}/lib/rustlib/x86_64-unknown-linux-gnu/lib/"*.so i686-w64-mingw32-strip --strip-unneeded "${pkgdir}/opt/${_pkgname}/lib/rustlib/i686-pc-windows-gnu/lib/"*.dll x86_64-w64-mingw32-strip --strip-unneeded "${pkgdir}/opt/${_pkgname}/lib/rustlib/x86_64-pc-windows-gnu/lib/"*.dll # config install -dm777 "${pkgdir}/opt/${_pkgname}/cargo" cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" [target.i686-pc-windows-gnu] linker = "/usr/bin/i686-w64-mingw32-gcc" ar = "/usr/i686-w64-mingw32/bin/ar" EOF if pacman -T "mingw-w64-wine" ; then cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" runner = "/usr/bin/i686-w64-mingw32-wine" EOF fi cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" rustflags = [ EOF if [[ ! -f "/usr/i686-w64-mingw32/bin/libgcc_s_dw2-1.dll" ]] ; then cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" "-C", "panic=abort", EOF fi cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" ] EOF cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" [target.x86_64-pc-windows-gnu] linker = "/usr/bin/x86_64-w64-mingw32-gcc" ar = "/usr/x86_64-w64-mingw32/bin/ar" EOF if pacman -T "mingw-w64-wine" ; then cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" runner = "/usr/bin/x86_64-w64-mingw32-wine" EOF fi cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" rustflags = [ EOF if [[ ! -f "/usr/x86_64-w64-mingw32/bin/libgcc_s_seh-1.dll" ]] ; then cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" "-C", "panic=abort", EOF fi cat << EOF >> "${pkgdir}/opt/${_pkgname}/cargo/config" ] EOF } # vim:set ts=2 sw=2 et: