mirror of
https://github.com/browseros-ai/BrowserOS.git
synced 2026-05-19 19:41:06 +00:00
* fix: install linux sysroot in configure, not via gclient hook `gn gen` was failing on the arm64 leg with `Missing sysroot (//build/linux/debian_bullseye_arm64-sysroot)`. The previous design relied on `git_setup` writing `target_cpus` to `.gclient` so that `gclient sync`'s DEPS hook would download the cross-arch sysroot. That chain breaks for any chromium_src that was synced before cross-arch support landed (the hook is gated on .gclient state at sync time) and for partial pipeline runs that skip git_setup entirely. Nothing in configure declared or verified its sysroot precondition. Make configure self-healing: on Linux, invoke `build/linux/sysroot_scripts/install-sysroot.py --arch=<target>` directly before `gn gen`. install-sysroot.py is idempotent (stamp file + SHA check), fast when already installed, and decoupled from .gclient — it's exactly what the failing assertion's error message recommends. The script accepts our arch names directly: `x64` translates to `amd64` internally via ARCH_TRANSLATIONS, and `arm64` is a valid pass-through. Also temporarily pin release.linux.yaml to x64 only while we validate the sysroot bootstrap end-to-end. Flip back to `[x64, arm64]` once arm64 is green. * chore: pin release.linux.yaml to arm64-only for sysroot bootstrap test x64 already builds cleanly — the failing leg is arm64 cross-compile from an x64 host. Pin the config to arm64 to exercise the new install-sysroot.py path in configure without burning time on x64. Flip back to [x64, arm64] once arm64 is green.
53 lines
1.2 KiB
YAML
53 lines
1.2 KiB
YAML
# BrowserOS Linux Release Build Configuration
|
|
#
|
|
# Pinned to arm64-only to validate the cross-compile sysroot bootstrap
|
|
# end-to-end on a Linux x64 host. Flip back to `[x64, arm64]` once arm64
|
|
# is green.
|
|
#
|
|
# Run:
|
|
# browseros build --config build/config/release.linux.yaml
|
|
#
|
|
# Environment Variables:
|
|
# Use !env tag to reference environment variables:
|
|
# Example: chromium_src: !env CHROMIUM_SRC
|
|
|
|
build:
|
|
type: release
|
|
architecture: arm64
|
|
|
|
gn_flags:
|
|
file: build/config/gn/flags.linux.release.gn
|
|
|
|
# Explicit module execution order. Runs once per architecture above.
|
|
modules:
|
|
# Phase 1: Setup
|
|
- clean
|
|
- git_setup
|
|
|
|
# Phase 2: Patches & Resources
|
|
- download_resources
|
|
- resources
|
|
- bundled_extensions
|
|
- chromium_replace
|
|
- string_replaces
|
|
- series_patches
|
|
- patches
|
|
|
|
# Phase 3: Build
|
|
- configure
|
|
- compile
|
|
|
|
# Phase 4: Package (Linux doesn't require code signing)
|
|
- package_linux
|
|
|
|
# Phase 5: Upload
|
|
- upload
|
|
|
|
# Required environment variables
|
|
# Note: CHROMIUM_SRC can be provided via --chromium-src CLI flag, YAML config, or env var
|
|
# Linux release builds don't require code signing, only upload
|
|
|
|
# Notification settings
|
|
notifications:
|
|
slack: true
|