Contributing
Thanks for helping build the Wayland-native XFCE .deb stack for TunaOS's
grouper (Ubuntu bootc) variant. This is the apt-world sibling of
tunaos-packages β read that
repo's docs too if you haven't packaged for TunaOS before, since the tiered
build model is shared between both.
Project layoutβ
| Path | What lives here |
|---|---|
src/xfce-wayland/<package>/debian/ | Debian packaging (control, rules, changelog, copyright, install, source/format) for one component |
src/xfce-wayland/<package>/upstream-source.txt | The upstream source archive URL pinned for that package's build |
build-order-xfce.yml | Tiered dependency manifest β a package's tier can't build until every earlier tier is already in the repo |
builder/Containerfile | The Ubuntu 26.04 (resolute) build environment image |
conf/, conf-unsigned/ | reprepro repository configuration (signed vs. unsigned intermediate imports) |
scripts/build-chain.sh | Builds one package in a fresh Podman container, then imports the resulting .debs into the local reprepro repo |
tests/test-build-chain.sh | Bash assertions covering scripts/build-chain.sh against fixture directories |
.github/workflows/validate.yml | yamllint, shellcheck, and build-order manifest validation on every push/PR |
.github/workflows/build-xfce-distributed.yml | Manually dispatched build-and-publish-to-R2 workflow |
Adding or updating a packageβ
- Add
src/xfce-wayland/<package>/debian/with standard Debian packaging (control,rules,changelog,copyright,source/format, andpatches/if needed) andupstream-source.txtnaming the upstream archive. - Add the package to the correct tier in
build-order-xfce.ymlβ it can only build once every package in earlier tiers is already published. - Validate locally (see below) before opening a PR.
Validate changes locallyβ
Install yamllint, shellcheck, and PyYAML, then run the same checks CI
runs in validate.yml:
yamllint -d '{extends: default, rules: {line-length: disable}}' \
build-order-xfce.yml conf/distributions .github/workflows/
shellcheck scripts/*.sh
Then run the packaging-manifest check (validate.yml
has the full script) to confirm every build-order-xfce.yml entry resolves
to real debian/control and upstream-source.txt files.
To exercise scripts/build-chain.sh itself:
bash tests/test-build-chain.sh
To exercise a real package build (needs podman, reprepro, flock):
podman build -t localhost/debian-copr-builder:resolute \
-f builder/Containerfile builder/
./scripts/build-chain.sh --package src/xfce-wayland/xfwl4
Pull requestsβ
- Keep each PR focused on one package or one tooling change.
- Run the validation commands above before opening β CI runs the same checks and will otherwise fail on the same things.
- Explain which upstream release/artifact a packaging change targets.
Project docsβ
- README.md β why this repo exists and its architecture.
- ROADMAP.md β what's planned next.