Skip to content

Build the payload

The payload is built from pinned upstream sources plus our patches. Everything happens on your own machine; there is no CI yet.

What you need

  • macOS on Apple Silicon, Xcode command line tools, CMake, Ninja
  • Node 20
  • A clone of the Euro-Office repositories (the build will fetch them if you have none)
  • Time and disk. V8 alone is about half an hour, and the build tree runs to several gigabytes.

Set BUILD_ROOT to somewhere with room:

export BUILD_ROOT=/Volumes/big-disk/euro-office-build

The steps

build/build.sh fetch        # clone or reset to the pinned revisions, apply patches
build/build.sh configure
build/build.sh build        # core: x2t and the native libraries
build/payload.sh            # sdkjs + web-apps + fonts + branding
build/dist.sh --fonts core  # the distributable tarballs and their manifest
build/smoke.sh              # check the result converts a document

Then install what you built:

muchado payload install --from "$BUILD_ROOT/out/dist/0.1"

Or skip packaging entirely while developing and point at the build tree:

export MUCHADO_PAYLOAD="$BUILD_ROOT/out/payload"

Linux

build/docker.sh runs the same scripts in a container. The infrastructure is written; it has not been run, so treat it as untested.

build/docker.sh image
build/docker.sh all

The upstream mirror is mounted read-only and BUILD_ROOT lives in a named volume — V8 wants a case-sensitive filesystem and thousands of small files, and both are miserable across Docker Desktop's shared-folder layer.

Windows

Not yet. It needs a build machine we do not have, which is what will eventually push this onto CI.

Notes

The pins are hashes, never branches. A patch queue is only meaningful against a fixed base, and "it built last week" has to stay reproducible. Bumping a pin is deliberate and may mean rebasing patches.

Check the output, not the exit code. build/smoke.sh converts a document and then looks inside the result for an embedded font and text-drawing operators, because a PDF of the right size with no glyphs in it is the failure that looks like success.