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

PathRepositoryWhat
build/mapplemapple_buildenvsetup, lunch, mka; the iOS download; image and zip packaging
vendor/mapplemapple_vendorshared configuration, release tooling, credits
kernel/mediatek/commonxnu_kernel_mediatek_commonXNU for MediaTek phones
kernel/mediatek/mt6781xnu_kernel_mediatek_mt6781the MT6781’s layer of the kernel
device/realme/spacedxnu_device_realme_spacedthe realme 8i
mapple/loadermapple_loaderthe boot loaders
mapple/userlandmapple_userlandprograms on the phone
mapple/gpu/malimapple_gpu_malithe Metal driver for Mali GPUs
mapple/splitbootmapple_splitbootthe optional dual boot
external/mesaMesaPanfrost and the Valhall compiler