Please organise your knowledge here. All of you should have edit access to all post tagged Documentation.
As the state of the tooling is still in flux, the best thing to do to get an idea for how things work is to look at the recipes in the main snekpit recipe repo.
The other thing to do is to look at the macro
%(definitions) in the boulder code repo.
The naming of concepts has been tweaked compared to what some of you might be used to, with the primary purpose being more sensible and clear semantics in terms of natural speech and its supporting mental models.
Additionally, it might be worth pointing out that this is not $otheros!
You are encouraged to forget everything you thought you knew about how things are supposed to work and be open to the different goals of Serpent OS which spawned the tooling you're about to use. The fully fleshed out workflow is also not yet ready for you to use, so things will feel rather manual initially.
How to get started writing a recipe
To get a basic recipe, use
boulder new -h to get started.
Thanks to work done by our contributors, git upstreams can now be used in recipes .
Follow these guidelines and build consensus by talking to your peers if a situation arise that they don't cover. If the BDFL chips in, listen carefully.
Package names and categories (=dirs) are
-devel packages. If a package is all headers, they should be in the
pkg/ dir and
Place extra files such as patches, vendor configs etc. in the
pkg/ dir inside the recipe dir. Files inside
pkg/ will automatically be copied over to
%(pkgdir) during boulder builds, from where each can be referenced as
%(pkgdir)/path/filename in the recipe. The directory name
pkg/ was chosen because it's short and stands out in
What to commit
git add manifest.x86_64.bin manifest.x86_64.jsonc monitoring.yml stone.yml
manifest.x86_64.bin Binary moss readable file used to create moss collection stone.index files for dep resolution etc.
manifest.x86_64.jsonc Human readable version of manifest.bin used for git diff introspection purposes
monitoring.yml See the security monitoring discussion
stone.yml The actual build recipe
The goal here is to make the git shortlog of the monorepos easy to read at a glance.
category/pkg: verb <foo> format with one commit per package change.
shells/fish: Add vX.Y
shells/fish: Update to vX.Y
shells/fish: Fix (...)
Bump release for functional recipe changes only; do not bump release for no functional change commits (documentation typos, formatting).
No functional change commits use the [NFC] tag (policy in clang, worth adopting):
shells/fish: [NFC] Tweak comments.
We only accept Zlib licensed code and recipe contributions due to Zlib's uncomplicated nature.
boulder new has been updated to use a REUSE compliant Zlib header, but existing recipes will need to be updated with the following REUSE-compliant verbiage at the top:
# SPDX-FileCopyrightText: © 2020-2023 Serpent OS Developers
# SPDX-License-Identifier: Zlib