Skip to main content

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​

PathWhat 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.txtThe upstream source archive URL pinned for that package's build
build-order-xfce.ymlTiered dependency manifest β€” a package's tier can't build until every earlier tier is already in the repo
builder/ContainerfileThe Ubuntu 26.04 (resolute) build environment image
conf/, conf-unsigned/reprepro repository configuration (signed vs. unsigned intermediate imports)
scripts/build-chain.shBuilds one package in a fresh Podman container, then imports the resulting .debs into the local reprepro repo
tests/test-build-chain.shBash assertions covering scripts/build-chain.sh against fixture directories
.github/workflows/validate.ymlyamllint, shellcheck, and build-order manifest validation on every push/PR
.github/workflows/build-xfce-distributed.ymlManually dispatched build-and-publish-to-R2 workflow

Adding or updating a package​

  1. Add src/xfce-wayland/<package>/debian/ with standard Debian packaging (control, rules, changelog, copyright, source/format, and patches/ if needed) and upstream-source.txt naming the upstream archive.
  2. 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.
  3. 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.