PICBLOBS // guide

Building

The build system is Bazel 9 with bzlmod. Cross-compilation toolchains are fetched from Bootlin automatically on first build.

Targets describe what to build. Configs describe how to build it.

Build a single platform

bazel build //release:full --config=linux_x86_64
bazel build //release:full --config=linux_x86_64 --config=debug

Build a single blob

bazel build --config=linux_aarch64 //src/payload:hello
bazel build --config=windows_x86_64 //src/payload:hello_windows

Build and stage all platforms

./buildall

This runs tools/stage_blobs.py, which builds all supported blobs, non-Linux runners for FreeBSD and Windows, plus the Linux ul_exec verifier fixtures. It then stages build outputs into the package trees and regenerates the runtime sidecar catalog:

python/picblobs/_blobs/{os}/{arch}/{name}.so          # build-time input
python/picblobs/blobs/{name}.{os}.{arch}.{bin,json}  # runtime artifacts
python/picblobs/manifest.json                        # runtime catalog
python_cli/picblobs_cli/_runners/{freebsd,windows}/{arch}/runner
python_cli/picblobs_cli/_test_binaries/ul_exec/linux/{arch}/hello_et_exec

Build specific targets or platforms:

python tools/stage_blobs.py --targets hello --configs linux:x86_64
python tools/stage_blobs.py --configs windows:x86_64 windows:i686 windows:aarch64

Available platform configs

Generated by tools/generate.py from tools/registry.py:

linux_x86_64  linux_i686  linux_aarch64  linux_armv5_arm  linux_armv5_thumb
linux_armv7_thumb  linux_s390x  linux_mipsel32  linux_mipsbe32
linux_sparcv8  linux_powerpc  linux_ppc64le  linux_riscv64

freebsd_x86_64  freebsd_i686  freebsd_aarch64  freebsd_armv5_arm
freebsd_armv5_thumb  freebsd_armv7_thumb  freebsd_mipsel32  freebsd_mipsbe32

windows_x86_64  windows_i686  windows_aarch64

Build mode configs

Config Effect
(default) Optimized (-Os from toolchain)
--config=debug Adds -g and -DPIC_LOG_ENABLE, strip=never
--config=release Explicit strip=always

Platform and build mode are orthogonal: --config=linux_x86_64 --config=debug.