Skip to content

Latest commit

 

History

324 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mayflower

脱獄した iOS へパッケージを移植するためのビルドファイル集。原則として端末の上で (Mac を介さず)ソースからビルドし、.deb を作る。例外は Rust と Node と llvm(Clang 19)と swift(Swift 6.1) (ツールチェイン / V8 自身は Mac からクロスビルド、出来たバイナリは端末で動く)。

make.sh <パッケージ名> を叩くと、取得・パッチ適用・ビルド・検証・パッケージング までを順に行う。Arch Linux の PKGBUILD に似た構成で、パッケージごとの知識は packages/<名前>/ に閉じている。

./make.sh nim
# => packages/nim/arm64/nim_2.2.12-1_iphoneos-arm64.deb
sudo dpkg -i packages/nim/arm64/nim_*.deb

入れる

できた .deb は GitHub Pages で配っている。Sileo / Zebra / Cydia にはこれを入れる。

https://khronos31.github.io/Mayflower/

端末の apt から直接使うなら deb https://khronos31.github.io/Mayflower/ ./。 署名はしていない(脱獄リポジトリでは通例で、Sileo も警告を出さない)。

⚠️ Sileo はリポジトリを登録するときに URL を小文字へ変えてしまう。 GitHub Pages の パスは大文字小文字を区別するので /mayflower/ は 404 になる。起きるのは登録の1回だけ なので、/var/jb/etc/apt/sources.list.d/ の該当ファイルを開いて Mayflower に 直せば以後は通る。リポジトリ側の改名はしない。リポジトリの作り方や公開の手順は docs/apt.md を参照。

対象

rootless の脱獄のみ(palera1n / Dopamine などの Procursus ブートストラップ)。 接頭辞 /var/jb を前提に書いてある。rootful 時代(/usr 直下・iphoneos-arm)の 構成はタグ rootful-2021 に残してある。

項目 値
検証機 iPhone 8(iPhone10,1 / A11)・iOS 16.7.14・palera1n rootless
アーキテクチャ arm64 のみ(iphoneos-arm64)
必要なもの clang ldid make patch curl dpkg libiosexec1

sudo apt install -y clang ldid make patch curl でおおむね揃う。

収録パッケージ

パッケージ 版 備考
apple-a14 1.0 空のゲート。cy+model.iphone (>= 13.1) | cy+model.ipad (>= 13.1)。Claude Code が依存する
ast-grep 0.45.3 ast-grep / sg。端末の rustc で建てる。Procursus に無し
claude-code 2.1.282 非公式。ビルドは Mac。darwin-arm64 をパッチ。Depends apple-a14。ラッパーで自動更新と ~/.local 再生成を抑止
epgstation 2.10.0 epgstation。JS は Mac。sqlite3 は nodejs-sqlite3。PATH は Mach-O。
fd 10.5.0 fd-10 / fd-default。端末の rustc で建てる。Procursus 8.6.0 を置換
git 2.56.0 git-2.56 / git-default。端末で建てる。Procursus 2.39.1 を置換
git-delta 0.19.2 バイナリ delta。端末の rustc で建てる。Procursus に無し
glow 3.0.0 端末の Go で建てる。Procursus に無し
go 1.26.8 golang-1.26-go / golang-1.26-src / golang-default
grok 1.0.24 grok。端末の rustc。jemalloc オフ。vendor は git 外
jq 1.8.2 jq-1.8 / libjq1 / libjq-dev / jq-default。端末で建てる。Procursus 1.6 を置換
llvm 19.1.4 clang-19 / llvm-19 / llvm-19-linker-tools + clang-default / llvm-default。ビルドは Mac。default で Procursus clang / llvm を置換可。Swift は別パッケージ
lua 5.5.1 lua5.5 / liblua5.5-0 / liblua5.5-dev / lua-default
luarocks 3.13.0 Lua 5.5 用。ユーザートリーは ~/.luarocks
mirakc 3.4.86 Mirakurun 互換 PVR。端末の rustc で建てる(-p mirakc のみ)。Procursus に無し
mirakc-arib 0.9.1 mirakc-arib。ARIB TS の scan/EIT/filter。ビルドは Mac。Procursus に無し
nim 2.2.12 コンパイラ・nimble・atlas・nimsuggest・nimgrep・nimpretty・testament
node 24.21.0 nodejs-24 / node-default。ビルドだけ Mac。--jitless 既定。node-default が Procursus の npm 8.1.1 を置換
node-sqlite3 5.1.7 nodejs-sqlite3。npm の sqlite3 を Mac からクロス。Procursus の sqlite3 CLI とは別。PATH にコマンドは出さない
pcsc-lite 2.5.1-4 libpcsclite1 / pcscd / libpcsclite-dev。端末で建てる。Procursus に無し。Dopamine 向け再署名
px4-userland 0.1.9 Name: PX4 Driver。px4d / px4-ts / px4ctl + IFD dylib。ファーム非同梱
python 3.14.8 python3.14 / python3-default
recisdb 1.3.1 decode-only。公式タグ + iOS 向け libpcsclite
ripgrep 15.2.0 ripgrep-15 / ripgrep-default。端末の rustc で建てる。Procursus 12.1.1 を置換
ruby 4.0.7 インタプリタ。YJIT / ZJIT は建てない。subprocess は palera1n で建て Dopamine で確認
ruff 0.16.7 Python linter/formatter。端末の rustc で建てる。Procursus に無し
rust 1.98.1 rustc-1.98 / rust-std-1.98 / cargo-1.98 / rust-default。ツールチェインのビルドだけ Mac
sd 1.1.0 直感的な find & replace。端末の rustc で建てる。Procursus に無し
siano-userland 0.1.9 Name: Siano Driver。バイナリは siano-ts。Siano RIO (PX-S1UD) の ISDB-T
swiftformat 0.63.0 端末の swiftc-6.1 で建てる(SPM 無し・直 swiftc)。Procursus に無し
swift 6.1.1 swift-6.1。ビルドは Mac。Depends clang-19。Procursus swift は当面並立
tmux 3.7c tmux-3.7 / tmux-default。端末で建てる。Procursus 3.4 を置換

Procursus と同じパッケージ名は使わない。あちらは /var/jb/etc/apt/preferences.d/procursus で Package: * を Pin-Priority: 1001 に 固定しており、同名では apt upgrade で戻されるためである。preferences.d を配って 自分を上に置くのは第三者リポジトリのすべきことではないので、名前を変え Provides / Conflicts / Replaces で置き換える形にしている。

構成

make.sh                 ドライバ。パッケージ側の関数を順に呼ぶ
entitlements.plist      ldid に渡す entitlements
bin/cc, bin/c++         リンク後に ldid 署名する clang ラッパー
util/common.sh          download / applyPatch / makedeb
util/options.sh         tidy の on/off(staticlibs / zipman / resign)
util/tidy.sh            pkgdir の後始末
example/                新しいパッケージの雛形
packages/<名前>/
  make.sh               pkgname / pkgver / source と prepare/build/check/package
  patches/*.patch       `patch -p1` で srcdir に当たるもの
  deb/DEBIAN/control    @VERSION@ / @ARCH@ / @INSTALLED_SIZE@ を置換して使う

make.sh が呼ぶ順序は clean → download → prepare → applyPatch → build → check(定義されていれば)→ package → tidy → makedeb。脱獄環境特有の 署名・シェバン・ライブラリ探索への対処など、ビルドの勘所は docs/building.md を参照。パッケージを足す・版を上げる手順は docs/adding.md。

追加予定

移植の基準は「Procursus(apt.procurs.us の rootless スイート)で間に合わないもの」。 在庫の調べ方や詳細な経緯は docs/roadmap.md を参照。

種別 パッケージ
Procursus に無いもの ghc, openjdk, mariadb
あるが古いもの perl, openssl, git, sqlite3, curl, meson

ライセンス

ビルドファイル(make.sh / util/ / bin/ / 各 packages/*/make.sh / shim/ / test/)は MIT。LICENSE を見ること。

packages/*/patches/ の下は例外で、パッチは当てる先の派生物なので、その処理系の ライセンスに従う。現在収録している Nim のパッチは Nim 自身が MIT なので MIT と 衝突しない。今後 GPL の処理系を足す場合、そのパッチは GPL になる。

entitlements.plist は Apple が公開している entitlement キー2つを plist の定型に 入れただけのもので、他に書きようがない。

各パッケージのソースそのものは、それぞれのライセンスに従う(.deb には /var/jb/usr/share/licenses/ に同梱する)。

About

build files for porting packages to jailbroken iOS

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages