The Baserock Definitions format aims to be a universal, declarative vocabulary for software build and integration instructions.

I thought it'd be useful to collect existing build instructions of various forms to help us reason about this better.

See also: https://en.wikipedia.org/wiki/List_of_build_automation_software

Feature comparison of build+integration instructions formats

Name Syntax Complete OS Artifact caching Cross compilation
Apache Ant + Apache Ivy XML ✘ Maven repo ✘
Baserock definitions YAML ✔ Baserock artifact cache ✘
BitBake recipes BitBake ✔ Setscene ✔
BOSH YAML ✘ ? ✘
Bazel Bazel (Python-like) ✘ ? ✘
Buildroot Make ✘ ✘ ✔
CMake ExternalProject / CPM / Hunter / biicode CMake ✘ ? ✔
Debian key-value (debian/control, debian/copyright, debian/changelog), Make (debian/rules) ✔ deb packages ✔
GNOME Continuous JSON ✘ ostree repo ✘
GNOME jhbuild XML ✘ ✘
GNU Guix GUILE (Scheme) ✔ hydra ✘
Gradle Gradle ✘ Maven repo ✘
Maven XML ✘ Maven repo ✘
Meson Meson ✘ ✘
Nix expressions Nix Expression Language ✔ Nix Binary Cache ✘
Ports-style Shell ✔ ✘
RPM .spec files RPM spec syntax ✔ rpm-ostree, rpm packages ✔
upkg XML ✔ upkg packages ✘
xdg-app builder JSON ✘ ostree repo ✘
ypkg and eopkg XML or YAML ✔ eopkg packages ✘

CPython (the standard interpeter for the Python language)