cross/crossdirect: partially use sccache for rust (MR 4310)
Wrap rustc commands with sccache when building native build scripts. More interesting will be using sscache for compiling for the target architecture, but sccache currently refuses to cache with --sysroot. This can be optimized further later on, get some initial support for sccache in here first. While at it, tweak the -vV logic to also support -V, start using semver with this and add myself as maintainer of the package. [ci:skip-build]: already built successfully in CI
This commit is contained in:
parent
63c85a7e3c
commit
d9830c6304
2 changed files with 22 additions and 6 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
# Maintainer: Oliver Smith <ollieparanoid@postmarketos.org>
|
||||||
|
# https://wiki.postmarketos.org/wiki/Pmbootstrap:_Cross_Compiling
|
||||||
|
#
|
||||||
# Wrapper for the "crossdirect" compilation method.
|
# Wrapper for the "crossdirect" compilation method.
|
||||||
# pmbootstrap mounts the native chroot in the foreign arch (e.g. armhf) chroot
|
# pmbootstrap mounts the native chroot in the foreign arch (e.g. armhf) chroot
|
||||||
# as /native. This package gets installed into the native chroot, and creates
|
# as /native. This package gets installed into the native chroot, and creates
|
||||||
|
@ -16,7 +19,7 @@
|
||||||
# version is implemented as simple shell wrappers.
|
# version is implemented as simple shell wrappers.
|
||||||
|
|
||||||
pkgname=crossdirect
|
pkgname=crossdirect
|
||||||
pkgver=5
|
pkgver=5.1.0
|
||||||
pkgrel=0
|
pkgrel=0
|
||||||
pkgdesc="Wrappers to launch native cross compilers in foreign chroots"
|
pkgdesc="Wrappers to launch native cross compilers in foreign chroots"
|
||||||
url="https://postmarketOS.org"
|
url="https://postmarketOS.org"
|
||||||
|
@ -76,9 +79,10 @@ package() {
|
||||||
ln -s ../rustc.sh rustc
|
ln -s ../rustc.sh rustc
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
sha512sums="
|
sha512sums="
|
||||||
0f4b48f250425dc57f63955fc8b38477d23db793bee367c3fbe03c3d2a559ba576434d07518310db4cae9d90d501af4051b80038b10fae94b980e537fc9374ad cargo.sh
|
0f4b48f250425dc57f63955fc8b38477d23db793bee367c3fbe03c3d2a559ba576434d07518310db4cae9d90d501af4051b80038b10fae94b980e537fc9374ad cargo.sh
|
||||||
500107e5aff8b34e74b54982ebcd447fc41bc8283956d506561b031a055cb30ec12698047c2604918b4b6d8560fe03db427a63dff2b83c907e8494b7f5233f29 crossdirect.c
|
500107e5aff8b34e74b54982ebcd447fc41bc8283956d506561b031a055cb30ec12698047c2604918b4b6d8560fe03db427a63dff2b83c907e8494b7f5233f29 crossdirect.c
|
||||||
2c41410a9ef2dab31403545e55e2464f2ee4e7056ffbcd3bc5810d582311801496b88d55307f17ce6acf766e9c867d30d05f2b0d8d46bf77a5e8f0495d6bc24e rustc.sh
|
de2aa6929bbff5db9132673e667f4525b333d062cb1f7a0597dd924de9e5c7215a9f8e2e6263b6fb5ace06f2c4b64f4ebfd0ede9b78add07c2cd08ec8613e98f rustc.sh
|
||||||
ea9bf8db3810d03d0a7395057f3d6e57f7127d87c55deaedc171c255288f5f3cc6fbcc680a5a1b92786cf573875d5dc22521173799fe2639acc97d0715ff905b rust-qemu-linker.sh
|
ea9bf8db3810d03d0a7395057f3d6e57f7127d87c55deaedc171c255288f5f3cc6fbcc680a5a1b92786cf573875d5dc22521173799fe2639acc97d0715ff905b rust-qemu-linker.sh
|
||||||
"
|
"
|
||||||
|
|
|
@ -5,8 +5,15 @@ if [ -n "$CROSSDIRECT_DEBUG" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# return the correct host architecture when cargo requests it
|
# return the correct host architecture when cargo requests it
|
||||||
if [ "$*" = "-vV" ]; then
|
if [ "$*" = "-vV" ] || [ "$*" = "-V" ]; then
|
||||||
exec /usr/bin/rustc -vV
|
exec /usr/bin/rustc "$*"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pmbootstrap installs sccache when building a rust program, unless --no-ccache
|
||||||
|
# is set. In that case it also sets CCACHE_DISABLE.
|
||||||
|
SCCACHE=/native/usr/bin/sccache
|
||||||
|
if ! [ -e "$SCCACHE" ] || [ -n "$CCACHE_DISABLE" ]; then
|
||||||
|
SCCACHE=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# We expect the right target to be set in the arguments if compiling for the
|
# We expect the right target to be set in the arguments if compiling for the
|
||||||
|
@ -14,12 +21,17 @@ fi
|
||||||
# automatically. If no target is provided, this is probably a macro or a
|
# automatically. If no target is provided, this is probably a macro or a
|
||||||
# build script, so it should be compiled for the native architecture.
|
# build script, so it should be compiled for the native architecture.
|
||||||
if echo "$*" | grep -qFe "--target"; then
|
if echo "$*" | grep -qFe "--target"; then
|
||||||
LD_LIBRARY_PATH=/native/lib:/native/usr/lib /native/usr/bin/rustc \
|
# Not using sccache when building for foreign architecture, as it
|
||||||
|
# doesn't cache the output with "Non-cacheable reasons: --sysroot"
|
||||||
|
LD_LIBRARY_PATH=/native/lib:/native/usr/lib \
|
||||||
|
/native/usr/bin/rustc \
|
||||||
-Clinker=/native/usr/lib/crossdirect/rust-qemu-linker \
|
-Clinker=/native/usr/lib/crossdirect/rust-qemu-linker \
|
||||||
--sysroot=/usr \
|
--sysroot=/usr \
|
||||||
"$@"
|
"$@"
|
||||||
else
|
else
|
||||||
PATH=/native/usr/bin:/native/bin LD_LIBRARY_PATH=/native/lib:/native/usr/lib \
|
PATH=/native/usr/bin:/native/bin \
|
||||||
|
LD_LIBRARY_PATH=/native/lib:/native/usr/lib \
|
||||||
|
$SCCACHE \
|
||||||
/native/usr/bin/rustc \
|
/native/usr/bin/rustc \
|
||||||
-Clink-arg=-Wl,-rpath,/native/lib:/native/usr/lib \
|
-Clink-arg=-Wl,-rpath,/native/lib:/native/usr/lib \
|
||||||
"$@"
|
"$@"
|
||||||
|
|
Loading…
Reference in a new issue