Skip to content

shortbread

Recipe card from the charly-versa plugin (Images — the deployable catalog).

shortbread — Shortbread vector-tile schema generation

Section titled “shortbread — Shortbread vector-tile schema generation”
Property Value
Dependencies supervisord (transitive; no service of its own)
Distros arch + fedora (tilemaker is source-built)
Build deps git, make, gcc/gcc-c++, lua/lua-devel, sqlite/sqlite-devel, boost+boost-libs/boost-devel, protobuf/protobuf-devel, shapelib/shapelib-devel, zlib-devel (Fedora only — Arch uses zlib-ng-compat)
Output dir /workspace/tiles/shortbread/ (versatiles serve watches this)
Tools installed /usr/local/bin/tilemaker, /opt/shortbread-tilemaker/{config.json,process.lua,...}

systemed/tilemaker ships no Arch/Fedora package and no GitHub release binaries. Build from source mirrors the existing tippecanoe pattern in /charly-versa:osm-tools-layer: shallow clone → make -j$(nproc)make install PREFIX=/usr/local. Build duration: ~2-3 minutes on a warm package cache; binary lands at /usr/local/bin/tilemaker.

shortbread-tiles/shortbread-tilemaker ships:

  • process.lua — per-feature Lua classifier (decides which OSM tags go into which vector-tile layer at which zoom)
  • config.json — layer/zoom schema definition consumed by tilemaker via --config
  • get-shapefiles.sh, build_test_dataset.sh — helper scripts (not used by the in-pod DAG; bundled for operator reference)

The bundle is cloned to /opt/shortbread-tilemaker/ at image-build time with .git/ removed (image-size reduction).

@task
def tilemaker_convert() -> str:
pbf = "/workspace/tiles/work/monaco.osm.pbf"
out = "/workspace/tiles/shortbread/monaco-shortbread.pmtiles"
subprocess.run([
"tilemaker",
"--input", pbf,
"--output", out,
"--config", "/opt/shortbread-tilemaker/config.json",
"--process", "/opt/shortbread-tilemaker/process.lua",
], check=True)
return out

Tilemaker v3.0+ detects the .pmtiles extension on --output and produces a PMTiles archive directly (no .mbtiles intermediate). Monaco-scale runs complete in ~30 seconds.

Build-scope:

  • tilemaker-installedtilemaker --version exit 0
  • shortbread-process-lua/opt/shortbread-tilemaker/process.lua exists
  • shortbread-config-json/opt/shortbread-tilemaker/config.json exists

Deploy-scope:

  • shortbread-tiles-dir-runtime/workspace/tiles/shortbread/ exists