cryolite / developers

Developers

The whole project is a handful of scripts. Read them; that's the documentation.

Getting started

$ git clone <cryolite pipeline repo> firefox && cd firefox
$ ./fetch-icecat.sh                 # gnuzilla + makeicecat + src/ (~1h, mostly download)
$ ./cryolite-release.sh FORCE_CYCLE=1
$ ./tests/smoke.sh obj-cryolite/dist/bin

Requirements: a 64-bit linux box with ~60GB free, the usual Firefox build deps (gtk3, libpulse, dbus-glib, python3-jsonschema), and wget/git. Rust, clang, node and cbindgen are fetched by ./mach bootstrap into ~/.mozbuild — no root needed for toolchains.

Working on patches

The patch layer is the product. Workflow:

  1. EditChange src/ directly — it's a git repo with a pristine baseline commit.
  2. Extractgit diff the change into cryolite/patches/NNN-name.patch.
  3. Proverm -rf src && ./cryolite-release.sh FORCE_CYCLE=1 — the patch must apply clean onto a fresh tree.
  4. QueueExperimental ideas live in cryolite/pending/ until they earn promotion.

Never edit gnuzilla/ — it's upstream's tree, pinned by tag. Everything Cryolite-specific belongs in the patch layer or the brand script.

Knobs

All knobs live in env.sh: JOBS (parallelism), GNUZILLA_TAG (pin a base instead of auto-resolving), TEST_CMD (your own gate), CYCLE_DAYS (cadence). Scripts are idempotent and safe to re-run; the cycle gate is cryolite/LAST_CYCLE, overridable with FORCE_CYCLE=1.