Build
Source available with release 1. The repositories are private until then, so these steps can’t be followed yet.
Getting the source
mkdir open-mapple && cd open-mapple
repo init -u https://github.com/open-mapple/manifest -b main
repo sync
Clone over SSH or HTTPS; the manifest names the other repositories relative to itself, so they come
the same way. The dual boot is not in the default checkout: repo init ... -g default,splitboot.
Building
You need macOS with your usual Xcode and Xcode 15.4 beside it (the kernel and the phone’s programs are built
with 15.4), the Kernel Debug Kit 13.5 (22G74) from Apple’s developer site, python3 and zig (brew install zig).
. build/envsetup.sh
lunch mapple_spaced_single-userdebug
mka mapple
lunch picks the phone and the layout: mapple_spaced_single is the one the install guide uses. user
builds a release kernel, userdebug a development one. The steps that need sudo (the root image) print
the command and stop; run it, then mka again.
Out of out/target/product/spaced/ come root.img for fastboot and mapple-...-PERSONAL.zip for the
recovery. Then follow the install guide from its backup step.
mka takes a few options: IPSW=path uses your own copy of iOS, KERNEL=path a kernel you already built,
XCODE15_DEVELOPER_DIR=path points at Xcode 15.4 if Spotlight can’t find it.
iOS comes from Apple, not from us
No file of iOS is in any Open Mapple repository or release. mka downloads iOS 16.7.16 for the iPhone X from
Apple’s servers and checks it against a pinned size and SHA-256; running mka is your consent to that
download. The release script does the same. Either takes your own copy instead.
What you build contains iOS. It is for you and your phone only: don’t share it.
Repositories
| Path | Repository | What |
|---|---|---|
build/mapple | mapple_build | envsetup, lunch, mka; the iOS download; image and zip packaging |
vendor/mapple | mapple_vendor | shared configuration, release tooling, credits |
kernel/mediatek/common | xnu_kernel_mediatek_common | XNU for MediaTek phones |
kernel/mediatek/mt6781 | xnu_kernel_mediatek_mt6781 | the MT6781’s layer of the kernel |
device/realme/spaced | xnu_device_realme_spaced | the realme 8i |
mapple/loader | mapple_loader | the boot loaders |
mapple/userland | mapple_userland | programs on the phone |
mapple/gpu/mali | mapple_gpu_mali | the Metal driver for Mali GPUs |
mapple/splitboot | mapple_splitboot | the optional dual boot |
external/mesa | Mesa | Panfrost and the Valhall compiler |