Cross Compiling on arm64

i want to be able to build Clear on my apple silicon MacBook pro. i know the idea of building from MacOS is a nightmare, but i have Asahi Linux installed in a dual boot configuration.

i’ve gotten this far… tried many things… but still failing… probably going to give up for now.

has anyone gotten this working? any ideas how to make it work?

victorstewart@scarymachine:~/linuxdev/clearlinux/clearlinux/packages/linux$ MOCK_OPTS="--rpmbuild-opts=--target x86_64" make build
Subject prefix email configured to: PATCH linux
rm -rf ./rpms
rm -f ./results/*.rpm
rm -f ./results/*.log
make[1]: Entering directory '/home/victorstewart/linuxdev/clearlinux/clearlinux/packages/linux'
make[1]: Leaving directory '/home/victorstewart/linuxdev/clearlinux/clearlinux/packages/linux'
sudo /usr/bin/mock -r /home/victorstewart/linuxdev/clearlinux/clearlinux/projects/common/conf/clear.cfg  --rpmbuild-opts=--target x86_64 --buildsrpm --source=./ --spec=linux.spec --result=results/ --no-cleanup-after --uniqueext=linux
INFO: mock.py version 5.3 starting (python version = 3.12.1, NVR = mock-5.3-1.fc39), args: /usr/libexec/mock/mock -r /home/victorstewart/linuxdev/clearlinux/clearlinux/projects/common/conf/clear.cfg --rpmbuild-opts=--target x86_64 --buildsrpm --source=./ --spec=linux.spec --result=results/ --no-cleanup-after --uniqueext=linux
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
INFO: Start(linux.spec)  Config(clear)
Start: clean chroot
Finish: clean chroot
Mock Version: 5.3
INFO: Mock Version: 5.3
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
Start: unpacking root cache
Finish: unpacking root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled ccache
INFO: enabled HW Info plugin
INFO: Package manager dnf detected and used (fallback)
INFO: Buildroot is handled by package management from host and used with --installroot:
  rpm-4.19.1-1.fc39.aarch64
  rpm-sequoia-1.5.0-2.fc39.aarch64
  python3-dnf-4.18.2-1.fc39.noarch
  python3-dnf-plugins-core-4.4.4-1.fc39.noarch
  yum-4.18.2-1.fc39.noarch
  dnf5-5.1.11-1.fc39.aarch64
  dnf5-plugins-5.1.11-1.fc39.aarch64
Start: dnf update
No matches found for the following disable plugin patterns: local, spacewalk, versionlock
Dependencies resolved.
Nothing to do.
Complete!
Finish: dnf update
Finish: chroot init
Start: buildsrpm
Start: rpmbuild -bs
/usr/bin/rpmbuild: error while loading shared libraries: libbz2.so.1.0: ELF load command address/offset not page-aligned
Finish: rpmbuild -bs
Finish: buildsrpm
ERROR: Exception(linux.spec) Config(clear) 0 minutes 19 seconds
INFO: Results and/or logs in: results/
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 96750f71cc6a4d6a9cc5a52cea8130fe -D /var/lib/mock/clear-linux/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.ppcf3ofv:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin '--setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007"' '--setenv=PS1=<mock-chroot> \s-\v\$ ' --setenv=LANG=C.UTF-8 --setenv=CCACHE_DIR=/var/tmp/ccache --setenv=CCACHE_UMASK=002 --setenv=CCACHE_COMPRESS=on --resolv-conf=off bash --login -c '/usr/bin/rpmbuild -bs  --target x86_64 --nodeps /builddir/build/SPECS/linux.spec'

make: *** [../common/Makefile.common:123: results/linux-dev-6.7-1400.src.rpm] Error 127
config_opts['root'] = 'clear'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('aarch64')
config_opts['chroot_setup_cmd'] = 'groupinstall build srpm-build'
config_opts['dist'] = 'clear'  # only useful for --resultdir variable subst
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['useradd'] = '/usr/sbin/useradd -m -u {{chrootuid}} -g {{chrootgid}} -d {{chroothome}}  {{chrootuser}}'
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['plugin_conf']['root_cache_opts']['compress_program'] = 'zstd -5'
config_opts['plugin_conf']['root_cache_opts']['extension'] = '.zst'
config_opts['releasever'] = 'clear'
config_opts['package_manager'] = 'dnf'
config_opts['chrootgroup'] = 'mockbuild'
config_opts['use_bootstrap'] = False
config_opts['plugin_conf']['ccache_enable'] = True
config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '8G'
config_opts['plugin_conf']['ccache_opts']['compress'] = 'on'
config_opts['plugin_conf']['ccache_opts']['dir'] = "%(cache_topdir)s/%(root)s/ccache/u%(chrootuid)s/"

config_opts['dnf.conf'] = """

[main]
cachedir=/var/cache/dnf
arch=x86_64
keepcache=1
debuglevel=1
reposdir=/dev/null
logfile=/var/log/dnf.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=

# repos


[local]
name=local
baseurl=https://cdn.download.clearlinux.org/current/x86_64/os/
gpgcheck=0
cost=2000
enabled=1


[debuginfo]
name=debuginfo
baseurl=https://cdn.download.clearlinux.org/current/x86_64/debug/
gpgcheck=0
cost=2000
enabled=1
"""