Commit graph fp6-img/build.sh
Author SHA1 Message Date
ff69f4d913 fp6-no-suspend -> fp6-device-tweaks: + the three IMU-critical /etc files
Full-system audit on the flashed phone found the IMU dead: the journal's
documented reinstall-loss trio (inv-icm42600-spi modules-load - fallback-only
SPI node never coldplugs; the accel poll udev rule for auto-rotate; the
iio-sensor-proxy libssc-crash restart drop-in). All device-critical, none
personal - now packaged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 00:03:09 +02:00
05cd1084b7 image completeness: fp6-no-suspend + imsd boot enablement
Two device-critical pieces previously applied only by the dev restore
script: masked sleep targets (idle-suspend resets the WCN combo firmware
and kills wifi ~40min - a device defect, not personalization) and imsd
enabled at boot, gated on /etc/imsd.env existing so unconfigured systems
don't boot a failing unit. A stranger now needs exactly: flash, wifi via
UI, write imsd.env, restart imsd.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 23:46:01 +02:00
8e5b8354d5 build.sh: build libqmi then modemmanager explicitly before install
pmbootstrap's install-time build plan is not topologically sorted; the
versioned makedep made that a hard error instead of a stale-dep build.
Explicit bottom-up build restores order; no-op when current.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 22:47:55 +02:00
2019e158aa modemmanager: versioned libqmi-dev makedep; kernel pkgver date stamping
pmbootstrap's build plan is not dependency-ordered: MM built first and
grabbed the cached 1.39.0 libqmi from the volume's package repo. The
versioned makedepend states the real requirement and forces our bumped
libqmi to build first. Kernel pkgver gains the source commit date so
registry-subscribed phones receive kernel updates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 22:39:14 +02:00
f8402f97a5 build.sh: retry flaky git clones; empty dist/ in place
The forgejo VM occasionally 500s under crawler load - a clone blip
should cost 10 seconds, not the run. dist/ keeps its inode so a shell
cd'd into it no longer breaks the next podman start.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 22:26:36 +02:00
da3d908b93 aports: GNSS via forked Alpine libqmi + modemmanager
libqmi: the upstream-merged (!470, in no release yet) LOC Register Events
client-identification TLVs, taken verbatim from upstream main (532de37e).
modemmanager: the AFW engine unlock + Position Report derivation (!1463,
still draft upstream, review-hardened and verified on device). Both as
patches on Alpine's git-snapshot aports, pkgrel=100.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 21:27:48 +02:00
4e43e6d57b image parity: imsd 0.3.0 (pinned public commit) + callaudioshim + modem-daemon override
imsd turns out to be fully public already (0.2.7 snapshot + emergency
stage 1 + the make build path) - no tag needed, same git-archive dance as
the kernel. callaudioshim was a load-bearing unpackaged home-dir script on
the phone (callaudiod replacement, working in-call mic mute); now an aport
autostarted at phase 1. kde-telephony's modem daemon autostart is hidden
via /etc/skel from the imsd package, mirroring the phone's user override.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 20:54:29 +02:00
719a10a997 aports: add soc-fairphone-fp6-audio (topology, amp config, UCM)
Files copied byte-identical from the tested dev phone; installed to the
exact deployed paths (the spaced tplg/UCM filenames come from the machine
driver's card name). Wired into the image via extra_packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 20:48:28 +02:00
939e2b84ba build.sh: require host /dev bind-mount instead of mknod snapshots
Some checks failed
image / image (push) Failing after 1h11m3s
Partition nodes (loopNpM) only appear via the host devtmpfs; a privileged
container's own /dev never gains them. Drop the static mknod dance, warn
when /dev is not the host's.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 20:28:46 +02:00
3dad95c4a1 build.sh: document host loop requirement; dump pmbootstrap log on failure
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 20:11:03 +02:00
6fb3ff27ef build.sh: create static loop + dm device nodes in the container
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 19:57:43 +02:00
95ec50d0b0 build.sh: mkdir /usr/local/sbin before writing the modprobe stub
Some checks are pending
image / image (push) Has started running
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 19:39:45 +02:00
c2c2e90d3a build.sh: stub modprobe in the container; loop autoloads host-side
Some checks failed
image / image (push) Failing after 16s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 19:36:55 +02:00
a1060024ac build.sh: add kpartx + util-linux losetup to the job container
Some checks failed
image / image (push) Failing after 59m28s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:43:26 +02:00
ca9e36c95c build.sh: pin pmbootstrap 3.11.1 from git
Some checks failed
image / image (push) Failing after 2m5s
Alpine's packaged pmbootstrap predates pmaports' master->main rename and
fails reading channels.cfg. Pinning also matches the version the rest of
this script was written against.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:40:11 +02:00
127b21e124 build.sh: create the pmbootstrap work dir + version stamp ourselves
Some checks failed
image / image (push) Failing after 1m45s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:35:01 +02:00
9e30e6b4ee build.sh: write pmbootstrap config directly; propagate errors; keep checkout root-owned
Some checks failed
image / image (push) Failing after 1m40s
'pmbootstrap config' demands an existing config file, so write
pmbootstrap_v3.cfg ourselves (INI, aports/device/ui/systemd). Explicit
set -eu because 'sh script' ignores shebang flags - run 3 shipped a
3.5KB 'image' because failures didn't propagate. dist/ is now the only
build-user-owned path, so the tag step's git works again.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:30:19 +02:00
2d38be3cf4 build.sh: set the executable bit
Some checks failed
image / image (push) Failing after 1m40s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:23:49 +02:00
074d1b1c90 build.sh: first runnable revision
Some checks failed
image / image (push) Failing after 11s
Learned from the pmbootstrap 3.11 source: aports overlays must replace
upstream dirs in one tree (duplicate pkgnames are a hard error), pmbootstrap
refuses root (drop to a sudo-capable build user), and export symlinks are
boot.img + fairphone-fp6.img. Stage 1 builds without imsd until the v0.3.0
tag exists. Temporary push trigger for bring-up.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:20:02 +02:00
de2e819a16 scaffold: aports overlay, build script, CI workflow, README
Kernel aport forked from pmaports 7.1.2-r0, repointed at milos-linux
combined-stable with the tested FP6 config (+EFI_ZBOOT for packaging);
imsd + nftables aports from the pending pmaports submission. build.sh
carries TODO(validate) markers - not yet run end-to-end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 15:42:45 +02:00