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)
- Arch Linux: PKGBUILD (packages/extra/x86_64/python info)
- Baserock reference systems: strata/core/cpython.morph
- buildroot: package/python3/python3.mk, package/python3/Config.in
- Debian: debian/rules, debian/control (pkg-python project main page)
- Fedora: python.spec
- Gentoo: dev-lang/python/python-3.4.3.ebuild
- GNU Guix software distribution: gnu/packages/python.scm (this describes many Python add-on libraries in addition to the 'cpython' Python interpreter)
- NixOS: pkgs/development/interpreters/python/3.4/default.nix
- OpenSuSE: python/python-base.spec (openSUSE:Factory/python package info)
- Paldo: Python.xml
- SolusOS: programming/python/python3/pspec.xml
- Ubuntu: Debian packaging is used directly. (Ubuntu python-defaults package info)
- Yocto: meta/recipes-devtools/python/python3_3.4.3.bb