ccache: Fix for distcc cross-compiling / various improvements (#1026)

* ccache: Fix for distcc cross-compiling / various improvements

* Make ccache work when cross-compiling with distcc (fix #716)
* Allow to configure the ccache size in "pmbootstrap init"
* Moved ccache stats code from pmb/build/other.py to
  pmb/helpers/frontend.py
* Grouped job count, ccache size and timestamp based rebuilds
  together to "build options" and allow to skip them
* Sorted config options that had to be modified anyway
  alphabetically

* Improve comment in arch-bin-masquerade APKBUILD
This commit is contained in:
Oliver Smith 2017-12-21 16:42:29 +00:00 committed by GitHub
parent 27b59a47bf
commit 7589ce632a
3 changed files with 48 additions and 33 deletions

View file

@ -0,0 +1,43 @@
# This package gets installed in the native and foreign arch chroots.
# It creates files like /usr/lib/arch-bin-masquerade/armhf/gcc, which
# point in the native chroot to the armhf-cross-compiler, and in the
# armhf chroot to /usr/bin/gcc. That way compilation works fine, even
# when distcc gets the absolute path to the compiler passed (ccache does
# that).
pkgname=arch-bin-masquerade
pkgver=1
pkgrel=0
pkgdesc="Wrappers for ccache + distcc (native and foreign chroots)"
url="https://postmarketOS.org"
arch="all"
license="MIT"
options="!check !tracedeps"
package() {
# Architectures and binaries
_archs="x86_64 armhf aarch64"
_bins="c++ cc cpp g++ gcc"
# Iterate over architectures
for _arch in $_archs; do
# Create the arch-specific bin folder
_hostspec="$(arch_to_hostspec $_arch)"
_bindir="$pkgdir/usr/lib/arch-bin-masquerade/$_arch"
mkdir -p "$_bindir"
cd "$_bindir"
# Iterate over binaries and create wrappers
for _bin in $_bins; do
{
echo "#!/bin/sh"
if [ "$_arch" == "$CARCH" ]; then
echo "exec /usr/bin/${_bin} \"\$@\""
else
echo "exec /usr/bin/${_hostspec}-${_bin} \"\$@\""
fi
} > "$_bin"
chmod +x "$_bin"
done
done
}

View file

@ -1,16 +1,16 @@
# Maintainer: Oliver Smith <ollieparanoid@bitmessage.ch>
# NOTE: This could probably be upstreamed to the official ccache aport.
# This package gets installed in the native chroot only. When cross-
# compiling packages in the native chroot (e.g. kernel packages), the
# cross-compiler does not get called directly, but wrapped through
# ccache, which can then cache the results.
pkgname=ccache-cross-symlinks
pkgver=1
pkgrel=3
pkgrel=4
pkgdesc="Enable ccache for cross-compilers with symlinks"
url="https://ccache.samba.org/"
arch="noarch"
license="MIT"
depends="ccache"
makedepends=""
source=""
options="!check"
package() {

View file

@ -1,28 +0,0 @@
pkgname=gcc-cross-wrappers
pkgver=1
pkgrel=1
pkgdesc="GCC wrappers pointing to cross-compilers (for distcc + ccache)"
url="https://github.com/postmarketOS"
arch="noarch"
license="MIT"
depends=""
makedepends=""
source=""
options="!check"
package() {
local _archs="armhf aarch64"
local _bins="c++ cc cpp g++ gcc"
for _arch in $_archs; do
_bindir="$pkgdir/usr/lib/gcc-cross-wrappers/$_arch/bin"
_hostspec="$(arch_to_hostspec $_arch)"
mkdir -p "$_bindir"
for _bin in $_bins; do
{
echo "#!/bin/sh"
echo "${_hostspec}-${_bin} \"\$@\""
} > $_bindir/$_bin
chmod +x $_bindir/$_bin
done
done
}