Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
8546f02
feat: scaffold Android (aarch64-linux-android) cross-compile support
alekseifedotov Aug 20, 2026
9c16720
feat: exclude known-broken crates from Android builds; add CI gate
alekseifedotov Aug 20, 2026
2db3164
feat: stage per-crate Android APEX payloads
alekseifedotov Aug 20, 2026
a9eee5e
feat: generate canned_fs_config inline while staging APEX payloads
alekseifedotov Aug 20, 2026
16fec24
feat: package staged APEX payloads into real signed .apex files
alekseifedotov Aug 21, 2026
5c7f028
feat: use Google's own prebuilt mkfs.erofs instead of ext4
alekseifedotov Aug 21, 2026
6edf0e2
feat: wire APEX packaging into `cargo x android-apex`
alekseifedotov Aug 21, 2026
b421ca5
ci: build and upload Android APEX artifacts
alekseifedotov Aug 21, 2026
10ca0ac
fixup!
alekseifedotov Aug 21, 2026
5fb7c8d
fixup!
alekseifedotov Aug 21, 2026
fb7946f
fix: address PR #1357 review comments
alekseifedotov Aug 21, 2026
f5f95f3
fix: add missing aarch64-linux-android exclusion to agentwire/agent-iroh
alekseifedotov Aug 21, 2026
6750652
fix: fail fast with a clear error on non-x86_64-linux hosts
alekseifedotov Aug 21, 2026
915c57e
fix: remove dead key-cache check, sign CI builds with a real key
alekseifedotov Aug 21, 2026
1ec4974
fix: resolve target dir and flake ref from workspace root, not cwd
alekseifedotov Aug 21, 2026
8e033e9
fix: package every APEX before failing, instead of aborting on the first
alekseifedotov Aug 21, 2026
d00b1c7
fix: use a unique temp dir for the build-apex out-link, not a fixed path
alekseifedotov Aug 21, 2026
6d16e89
fix: reuse PayloadArgs's default_value instead of a duplicated literal
alekseifedotov Aug 21, 2026
4af2829
fix: use separate dev/prod signing-key environments, clean up key file
alekseifedotov Aug 21, 2026
b0054c5
fix: always sign APEXes with AOSP's well-known test key
alekseifedotov Aug 21, 2026
f52ce31
simplify: drop needless tempdir prefix, extra key derivation, dup utf…
alekseifedotov Aug 21, 2026
7ef21bf
simplify: shared fetch+decode helper for googlesource files, tighter …
alekseifedotov Aug 21, 2026
c2273e8
fix: APK-sign the outer APEX container with AOSP's test key/cert
alekseifedotov Aug 21, 2026
dc17425
fix: stop payload dir races and stale .apex outputs in run_apex
alekseifedotov Aug 21, 2026
a6906cf
fix: run apexer in an FHS environment instead of patching its hardcod…
alekseifedotov Aug 22, 2026
fb2ed37
remove: drop android-sweep and android-apex-payload subcommands
alekseifedotov Aug 22, 2026
09134db
feat: package APEXes concurrently
alekseifedotov Aug 22, 2026
11e4513
feat: add adb to the dev shell
alekseifedotov Aug 22, 2026
a7acaa9
fix treefmt
alekseifedotov Aug 22, 2026
160305e
fix: allow unprivileged user namespaces in CI for bubblewrap
alekseifedotov Aug 22, 2026
5db5359
simplify: collect packaging outcomes via join() instead of two Mutexes
alekseifedotov Aug 22, 2026
4493508
remove stupid comments
alekseifedotov Aug 22, 2026
169c821
strip 'orb-' prefix from apexes
alekseifedotov Aug 22, 2026
07e6752
trim comments
alekseifedotov Aug 22, 2026
88663c1
docs: explain why unbounded thread-per-package concurrency is fine
alekseifedotov Aug 22, 2026
42ed53b
fix: fetch cargo metadata once per android-apex run, not 4 times
alekseifedotov Aug 22, 2026
f27fbf6
simplify: only export buildApex from android-apex.nix
alekseifedotov Aug 22, 2026
fc120a5
docs: cross-reference the build-apex flake attribute name coupling
alekseifedotov Aug 22, 2026
02c28dc
simplify: share the program/args split between cmd and cmd_captured
alekseifedotov Aug 22, 2026
47f4aae
fix: shrink Android APEX debug info to line tables, stripped
alekseifedotov Aug 22, 2026
38fdfee
fix: return binary stream from cmd_captured
alekseifedotov Aug 22, 2026
ecb648f
fix: add version in the apks
alekseifedotov Aug 22, 2026
ecf354b
refactor: add macro to use cmd() more conviently
alekseifedotov Aug 22, 2026
2749c04
fix: bump 0.0.0 placeholder crates to 0.0.1 for Android APEX versioning
alekseifedotov Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,8 @@ runner = "docker/nix-cargo-runner.sh"
[target.x86_64-unknown-linux-gnu]
rustflags = ["-Clinker-features=-lld"] # dont use lld, it has issues with fenix rn

[target.aarch64-linux-android]
rustflags = ["-C", "debuginfo=line-tables-only", "-C", "strip=debuginfo"]

[alias]
x = "run -q --package x --"
47 changes: 47 additions & 0 deletions .github/workflows/rust-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,54 @@
if-no-files-found: error
retention-days: 14

android-build:
name: Android Build
runs-on: public-ubuntu-24.04-8core
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # pin@v3
with:
token: ${{ secrets.ORB_GIT_HUB_TOKEN }}
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # pin@v31.8.4
with:
github_access_token: ${{ secrets.ORB_GIT_HUB_TOKEN }}
- uses: cachix/cachix-action@ad2ddac53f961de1989924296a1f236fcfbaa4fc # pin@v15
continue-on-error: true
with:
name: worldcoin
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Authorize private git repos
run: git config --global url."https://${{ secrets.ORB_GIT_HUB_TOKEN }}@github.com".insteadOf https://github.com
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # pin@v2.8.0
with:
key: custom-${{ hashFiles('**/*.nix', 'flake.lock') }}
- name: Print environment
run: |
uname -a
nix develop -c env

- name: Allow unprivileged user namespaces for bubblewrap
# apexer's bubblewrap FHS sandbox (nix/packages/android-apex.nix)
# always creates a user namespace for CAP_SYS_ADMIN, which Ubuntu
# 24.04's AppArmor blocks for unprofiled binaries like nix store
# paths ("bwrap: setting up uid map: Permission denied"). Safe to
# relax repo-wide here since this runner is ephemeral (ARC); a
# persistent host should ship a scoped AppArmor exception instead.
run: sudo sysctl --write kernel.apparmor_restrict_unprivileged_userns=0
- name: Build and package Android APEXes
run: |
nix develop -c \
cargo x android-apex

- name: Upload APEX artifacts
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # pin@v4.3.3
with:
name: android-apex
path: target/android-apex/*.apex
if-no-files-found: error
retention-days: 14

cargo-deny:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: Cargo Deny
runs-on: ubuntu-24.04
if: ${{ !inputs.skip_cargo_deny }}
Expand Down
17 changes: 9 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion agentwire/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,8 @@ tracing = "0.1"
tokio = { version = "1", features = ["macros"] }

[package.metadata.orb]
unsupported_targets = ["aarch64-apple-darwin", "x86_64-apple-darwin"]
unsupported_targets = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-linux-android",
]
3 changes: 3 additions & 0 deletions bidiff-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,6 @@ test-log.workspace = true

[build-dependencies]
orb-build-info = { workspace = true, features = ["build-script"] }

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
3 changes: 3 additions & 0 deletions bidiff-squashfs/lib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ cmd_lib.workspace = true
color-eyre.workspace = true
orb-telemetry = { workspace = true, default-features = false }
tempfile.workspace = true

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
3 changes: 3 additions & 0 deletions bidiff-squashfs/shim/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ cc.workspace = true
license-stub-glib.workspace = true
license-stub-libsquashfs1.workspace = true
pkg-config.workspace = true

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
6 changes: 5 additions & 1 deletion can/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,8 @@ thiserror = { workspace = true, features = ["std"] }
isotp = []

[package.metadata.orb]
unsupported_targets = ["aarch64-apple-darwin", "x86_64-apple-darwin"]
unsupported_targets = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-linux-android",
]
3 changes: 3 additions & 0 deletions efivar/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ rust-version.workspace = true
[dependencies]
color-eyre.workspace = true
libc.workspace = true

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
3 changes: 3 additions & 0 deletions gst-jpeg/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@ gstreamer-app.workspace = true
gstreamer-video.workspace = true
license-stub-gstreamer.workspace = true
tracing.workspace = true

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
3 changes: 3 additions & 0 deletions hil/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,6 @@ zbus.workspace = true

[build-dependencies]
orb-build-info = { path = "../build-info", features = ["build-script"] }

[package.metadata.orb]
unsupported_targets = ["aarch64-linux-android"]
2 changes: 1 addition & 1 deletion jwk-util/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "orb-jwk-util"
version = "0.0.0"
version = "0.0.1"
authors = ["Ryan Butler <thebutlah@users.noreply.github.com>"]
description = "CLI utility for manipulating Json Web Keys"
publish = false
Expand Down
6 changes: 5 additions & 1 deletion mcu-interface/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ tokio.workspace = true
tracing.workspace = true

[package.metadata.orb]
unsupported_targets = ["aarch64-apple-darwin", "x86_64-apple-darwin"]
unsupported_targets = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-linux-android",
]

[dev-dependencies]
futures.workspace = true
Expand Down
6 changes: 5 additions & 1 deletion mcu-util/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ tracing.workspace = true
orb-build-info = { path = "../build-info", features = ["build-script"] }

[package.metadata.orb]
unsupported_targets = ["aarch64-apple-darwin", "x86_64-apple-darwin"]
unsupported_targets = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
"aarch64-linux-android",
]

[package.metadata.deb]
assets = [
Expand Down
Loading
Loading