Getting Started¶
This walks through resolving and building AmiBake's own smoke-test
manifest, manifests/aros68k.toml — the zero-encumbrance target: it
builds from a freely-available AROS 68k nightly, with no licensed
media required, so it's the one every session (including CI) can build
from nothing. It assumes amibake is on your PATH (see
Installation) and that you're running commands from
the repository root.
See CLI Reference for every flag used below, and Manifest Format for the full schema.
1. Look at the manifest¶
# manifests/aros68k.toml
base = "aros68k"
machine = { cpu = "68020" }
output = ["hdf", "dir"]
One base (aros68k), a machine floor of a 68020, no packages, and two
output formats — a bootable RDB/hard-disk image (hdf) and a plain
host directory tree (dir).
2. Resolve it¶
amibake resolve validates the manifest and every recipe it touches,
resolves package versions and requirements against the chosen base and
machine, and writes a lockfile recording exactly what was resolved —
without fetching or building anything yet:
$ amibake resolve manifests/aros68k.toml
resolved manifests/aros68k.toml: base=aros68k, packages=[(none)]
wrote manifests/aros68k.lock.toml
--print writes the lockfile to stdout instead, useful for a quick
look without touching the filesystem:
$ amibake resolve manifests/aros68k.toml --print
# Generated by `amibake resolve`. Do not hand-edit.
output = ["hdf", "dir"]
emit = []
[base]
name = "aros68k"
os-version = "3.1"
dos-type = "ffs-intl-longname"
version = "20260814"
recipe-sha256 = "ee1ddca0c512a622ea5fc5887ad7cb0767c239215fad3ad04d7089498829fcd8"
[base.sources.url]
filename = "AROS-20260814-amiga-m68k-boot-iso.zip"
sha256 = "dcd80e76de846575864d07493667e67628996f8cd907fd7a4717024e4d09a43a"
url = "https://sourceforge.net/projects/aros/files/nightly2/20260814/Binaries/AROS-20260814-amiga-m68k-boot-iso.zip/download"
[machine]
cpu = "68020"
Every source is pinned by exact URL and checksum — rebuilding from this lockfile later fetches exactly the same bytes, or fails loudly if they ever changed.
3. Build it¶
amibake build re-runs resolve internally, then fetches every source
(verifying its checksum), extracts and layers it into an internal
tree, runs the recipe's [verify] checks, and emits every requested
output format:
$ amibake build manifests/aros68k.toml --assets assets
built manifests/aros68k.toml: base=aros68k, packages=[(none)]
wrote manifests/aros68k.hdf
wrote manifests/aros68k
--assets assetspoints at a directory of user-supplied proprietary media (ROMs, OS install disks) — the AROS base doesn't need any, but most manifests eventually will, so it's worth getting in the habit of passing it.- Downloads are cached content-addressed under
.amibake-cache/(see--cache) — a second build of the same manifest, or a different manifest sharing the same base/packages, reuses the cache instead of re-fetching or re-extracting. manifests/aros68k.hdfis a bootable RDB/partitioned hard-disk image (mountable directly by Copperline/Amiberry/WinUAE, or written to a CompactFlash card for real hardware);manifests/aros68k/is the same content as a plain host directory tree.
4. Emit a ready-to-boot emulator config¶
Add emit to the manifest (or pass a variant of it) and AmiBake writes
a Copperline/Amiberry/WinUAE config pointed straight at the build:
base = "aros68k"
machine = { cpu = "68020" }
output = ["hdf", "dir"]
emit = ["copperline", "amiberry"]
$ amibake build manifests/aros68k.toml --assets assets
built manifests/aros68k.toml: base=aros68k, packages=[(none)]
wrote manifests/aros68k.hdf
wrote manifests/aros68k
wrote manifests/aros68k.copperline.toml
wrote manifests/aros68k-amiberry.uae
emit needs a dir output (no hardfile/RDB mount support in the
config emitters yet — see Emulator Configs) and
a Kickstart ROM at assets/roms/kickstart-{version}.rom under the
--assets root; AROS ships its own ROM as part of its base build, so
this works with no user-supplied ROM at all.
Where to go next¶
- CLI Reference for every flag, including
lint(validate without resolving),--no-cache, and--allow-hooks. - Manifest Format for the full
base/machine/packages/output/emitschema, including constraint syntax ("amissl = 5.20","picasso96-3 >= 3.2") and typed package options. - Recipe Library to see what's available to add to
packages. - Emulator Configs for what Copperline/Amiberry/ WinUAE configs actually contain, and how a recipe contributes to one.