aportgen: build gcc-x86_64 etc. pkgs for aarch64

Instead of building cross packages for the native architecture, add a
new get_cross_packages_arches() function that returns the desired
architectures no matter what the current native architecture is.

So gcc-x86_64 will always have arch="aarch64", and gcc-aarch64 will
always have arch="x86_64".

We can tweak the function in the future if e.g. it becomes viable to
cross compile from riscv64. Or even better, remove this and the cross
compile packages upstreamed into alpine (see pmb#551).

Link: https://lists.sr.ht/~postmarketos/pmbootstrap-devel/%3C20231126104823.3723-1-ollieparanoid@postmarketos.org%3E
This commit is contained in:
Oliver Smith 2023-11-26 11:48:19 +01:00
parent bcfdc3fb1b
commit 62a05d4fbc
No known key found for this signature in database
GPG Key ID: 5AE7F5513E0885CB
4 changed files with 16 additions and 5 deletions

View File

@ -13,6 +13,18 @@ import pmb.config
import pmb.helpers.cli
def get_cross_package_arches(pkgname):
"""
Get the arches for which we want to build cross packages.
:param pkgname: package name, e.g. "gcc-aarch64", "gcc-x86_64"
:returns: string of architecture(s) (space separated)
"""
if pkgname.endswith("-x86_64"):
return "aarch64"
else:
return "x86_64"
def properties(pkgname):
"""
Get the `pmb.config.aportgen` properties for the aport generator, based on

View File

@ -47,7 +47,7 @@ def generate(args, pkgname):
url="http://busybox.net"
license="GPL2"
arch="{pmb.config.arch_native}"
arch="{pmb.aportgen.get_cross_package_arches(pkgname)}"
options="!check !strip"
pkgdesc="Statically linked Busybox for $_arch"
_target="$(arch_to_hostspec $_arch)"

View File

@ -23,12 +23,11 @@ def generate(args, pkgname):
" gcc6.")
pmb.helpers.run.user(args, ["cp", "-r", upstream, f"{args.work}/aportgen"])
# Rewrite APKBUILD (only building for native covers most use cases and
# saves a lot of build time, can be changed on demand)
# Rewrite APKBUILD
fields = {
"pkgname": pkgname,
"pkgdesc": f"Stage2 cross-compiler for {arch}",
"arch": pmb.config.arch_native,
"arch": pmb.aportgen.get_cross_package_arches(pkgname),
"depends": f"binutils-{arch} mpc1",
"makedepends_build": "gcc g++ bison flex texinfo gawk zip"
" gmp-dev mpfr-dev mpc1-dev zlib-dev",

View File

@ -42,7 +42,7 @@ def generate(args, pkgname):
pkgname={pkgname}
pkgver={pkgver}
pkgrel={pkgrel}
arch="{pmb.config.arch_native}"
arch="{pmb.aportgen.get_cross_package_arches(pkgname)}"
subpackages="musl-dev-{arch}:package_dev"
_arch="{arch}"