From 12cfc26858031a554307a92e3d5955c75685f130 Mon Sep 17 00:00:00 2001 From: Pau Aliagas Date: Fri, 9 Oct 2026 12:46:41 +0200 Subject: [PATCH] Remove CHANGELOG.md and every check that read it Git history is the changelog. debian/changelog and the spec's %changelog stay; the CI changelog job and conformance-packaging ARM 4 are gone. --- .github/workflows/ci.yml | 9 ----- .github/workflows/release.yml | 5 +-- BUILDING.md | 20 ++-------- CHANGELOG.md | 70 ---------------------------------- Makefile | 2 +- tests/conformance-packaging.sh | 9 +---- 6 files changed, 9 insertions(+), 106 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9ea961..8d0bca1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,15 +1,6 @@ name: ci on: [push, pull_request] jobs: - # CHANGELOG.md is the one changelog: the spec's %changelog and debian/changelog are generated from it, - # and a hand edit or a stale copy fails here - changelog: - runs-on: ubuntu-latest - timeout-minutes: 5 - steps: - - uses: actions/checkout@v4 - - uses: FreeMixer/.github/.github/actions/changelog@main - test: runs-on: ubuntu-latest # A backstop only: every test already carries its own timeout (tests/run-test.sh), diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1346d2b..c25c8d8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,8 @@ name: release -# Packages through the shared release workflows of FreeMixer/.github. A tag v that is the newest -# entry of CHANGELOG.md builds signed RPMs (Fedora 44, x86_64 and aarch64) and DEBs (Debian bookworm and +# Packages through the shared release workflows of FreeMixer/.github. A tag v builds signed RPMs (Fedora 44, x86_64 and aarch64) and DEBs (Debian bookworm and # trixie, amd64 and arm64), publishes them to the FreeMixer channel and attaches them to the GitHub -# release, whose notes are the entry. Any other run, a pull request or a branch, is a dry run: it +# release. Any other run, a pull request or a branch, is a dry run: it # builds and lints everything and publishes nothing. # # libreac is a build dependency of reac-pw, so publish a libreac release before the reac-pw release diff --git a/BUILDING.md b/BUILDING.md index 07c8d09..1f53939 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -50,29 +50,17 @@ One source builds two libraries, `libreac` and `libreac-transport`, as four bina `packaging/*.pc.in`. `openwrt/libreac/Makefile` is the OpenWrt package. The version and libreac's soname are defined once, in `include/reac/reac.h`; -`tests/conformance-packaging.sh` (part of `make test`) refuses a spec, `debian/` or `CHANGELOG.md` +`tests/conformance-packaging.sh` (part of `make test`) refuses a spec or `debian/` that disagrees. libreac-transport's soname is its own, in `%global tabi` of the spec and `TABI` of `debian/rules`, and names the `libreac-transport7` package. -### Changelog - -`CHANGELOG.md` is the one changelog. The spec's `%changelog` and `debian/changelog` are generated -from it with `changelog.sh` of [FreeMixer/.github](https://github.com/FreeMixer/.github) -(`.github/actions/changelog/changelog.sh`), and CI refuses a copy that was edited by hand: - -``` -changelog.sh sync # rewrite the spec's %changelog and debian/changelog -changelog.sh check -t vX.Y.Z # what CI runs; the tag must be the newest entry -``` - ### Releasing -Add the version's entry to `CHANGELOG.md`, run `changelog.sh sync`, set the version in -`include/reac/reac.h` and `Version:` in the spec, then tag `vX.Y.Z`. The tag runs +Set the version in `include/reac/reac.h`, `Version:` in the spec and the top entry of +`debian/changelog`, then tag `vX.Y.Z`. The tag runs `.github/workflows/release.yml`, which calls the shared `build-rpm.yml` and `build-deb.yml` workflows of FreeMixer/.github: signed RPMs for Fedora 44 (x86_64, aarch64) and DEBs for Debian bookworm and trixie -(amd64, arm64) are published to the FreeMixer channel and attached to the GitHub release, whose notes are -the changelog entry. A pull request or a branch runs the same workflows as a dry run that builds, lints +(amd64, arm64) are published to the FreeMixer channel and attached to the GitHub release. Git history is the changelog; no changelog file is maintained. A pull request or a branch runs the same workflows as a dry run that builds, lints and publishes nothing. Publish a libreac release before the reac-pw release that builds against it. diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index ad68370..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,70 +0,0 @@ -# Changelog - -## 1.7.1 - 2026-10-08 - -- libreac and libreac-transport are now installed from the FreeMixer package channel: signed RPMs for - Fedora 44 (x86_64, aarch64) and DEBs for Debian bookworm and trixie (amd64, arm64). Add the channel - once, then install or update with dnf or apt. The libraries themselves do not change. -- The Debian packages are libreac6, libreac-dev, libreac-transport7 and libreac-transport-dev, named - after the sonames they carry. The Fedora packages keep their names: libreac, libreac-devel, - libreac-transport and libreac-transport-devel. - -## 1.7.0 - 2026-10-07 - -- A connected stagebox is described only by what it says on the wire: its inputs and outputs from its - declaration, its family from its identity page, and its name from both (S-1608, S-4000S-3208, - S-4000S-1624, S-4000S-4000 ...). A box whose family has never been captured is named by its widths - (REAC-0816). -- The built-in model table is now a model catalogue, used only to emulate a box and to plan a show - offline. It never sizes or names a connected box; when the two disagree the box wins and the - difference can be reported. -- The S-0808's name, which arrives split across two frames, is now read. -- A box that joins after the console first asked for its identity is asked again, once a second, so its - firmware and hardware block are no longer left empty. -- A stagebox in master mode is recognised from what it announces or the width it broadcasts. A - 40-channel master that has not announced itself yet is waited on instead of being taken for a desk. -- Developers: reac_box_facts.h is new; the catalogue functions are renamed (reac_box_catalogue*), - reac_box_master_model is gone, and discovery reports declared widths. libreac's soname is 6 and - libreac-transport's is 7. - -## 1.6.0 - 2026-09-25 - -- A stagebox may declare any even width from 2 to 40 channels in each direction, and a 40-channel box is - legal. A box that returns 40 channels upstream is a box, not a desk. -- A sender that broadcasts is given a bounded time to show whether it is the desk or a stagebox, and is - treated as a box once that time passes without a desk-only message. -- Sample-rate detection measures one stream, so a 48 kHz session heard in both directions is no longer - read as 96 kHz. -- An identity reply is accepted only when both of its checksums close, and the plain-LE diagnostic - decode refuses a geometry wider than the frame. -- Developers: reac_cfg.h is the one declaration of the configuration vocabulary and reac_code.h the one - list of refusal codes. This is a source-level change; libreac's soname moves 4 to 5 and - libreac-transport's 5 to 6. - -## 1.5.0 - 2026-09-22 - -- A VLAN trunk names its VLANs by tagging, and the topology tap hears them: a VLAN whose stagebox is - still cold is discovered as soon as the switch tags any frame on it, without transmitting anything. -- Developers: reac_topo_heard_vids() and REAC_TOPO_TAGGED_OTHER are added. No existing symbol changes. - -## 1.4.0 - 2026-09-22 - -- The decisions about whether a wire is vacant and when to stop waiting for the topology tap are made by - the library, through reac_knock.h and reac_tapwait.h, instead of by each program that links it. - Behaviour is unchanged. - -## 1.3.2 - 2026-09-21 - -- A capture no longer hears frames from every network interface on the machine for the instant before - it is bound to its own. A cold cable could previously show a stagebox that was mastering another - interface as heard on it. -- The transmit socket is bound to its interface and ignores incoming traffic, instead of queueing every - REAC frame on the host. - -## 1.0.0 - 2026-09-11 - -- The protocol library as proven on real Roland desks and stageboxes at 44.1, 48 and 96 kHz. - -## Earlier releases - -- Versions before 1.0.0 and the notes of each release in between are kept in the git history. diff --git a/Makefile b/Makefile index c993546..dbd11ba 100644 --- a/Makefile +++ b/Makefile @@ -295,7 +295,7 @@ test: tests/test_reac_knock.c tests/test_reac_tapwait.c tests/test_reac_etf.c te # freereac-ops and are cited by bare slug: the public half refuses a docs path, a docs # tree or a build command in the README; the ops half resolves every slug in the # sibling checkout, and says OPS-ABSENT (SKIP) where there is none. - # THE VERSION AND THE SONAMES HAVE ONE DEFINITION (reac.h); the spec, debian/ and CHANGELOG.md copy + # THE VERSION AND THE SONAMES HAVE ONE DEFINITION (reac.h); the spec and debian/ copy # them, and a copy that lags is refused here instead of shipping a package that loads a stale ABI. $(RUN_TEST) tests/conformance-packaging.sh $(RUN_TEST) tests/conformance-public-docs.sh diff --git a/tests/conformance-packaging.sh b/tests/conformance-packaging.sh index 9781a12..33f6c7e 100755 --- a/tests/conformance-packaging.sh +++ b/tests/conformance-packaging.sh @@ -10,9 +10,7 @@ # ARM 1 the spec's Version and the top of debian/changelog equal the header's version; # ARM 2 the spec's %global abi, and the libreac package of debian/control, equal LIBREAC_ABI; # ARM 3 the spec's %global tabi, debian/rules' TABI and the libreac-transport package of -# debian/control agree (libreac-transport's soname is its own); -# ARM 4 CHANGELOG.md's newest entry is the header's version (the shared changelog check, in CI, -# holds the generated spec and debian/changelog to CHANGELOG.md). +# debian/control agree (libreac-transport's soname is its own). # It walks files, not `git ls-files`, so it also runs from the source tarball (%check). It carries a # planted good/bad pair, so it cannot pass (or fail) vacuously. # @@ -38,7 +36,6 @@ check() { deb_abi=$(sed -n 's/^Package: libreac\([0-9][0-9]*\)$/\1/p' "$t/debian/control") deb_tabi=$(sed -n 's/^Package: libreac-transport\([0-9][0-9]*\)$/\1/p' "$t/debian/control") rules_tabi=$(sed -n 's/^TABI *= *//p' "$t/debian/rules") - top=$(sed -n 's/^## \([0-9][0-9.]*\)\(-[0-9]*\)\{0,1\} - .*/\1/p' "$t/CHANGELOG.md" | head -1) [ "$spec_ver" = "$ver" ] || { echo " ARM 1: the spec says Version $spec_ver, reac.h says $ver"; bad=1; } [ "$deb_ver" = "$ver" ] || { echo " ARM 1: debian/changelog says $deb_ver, reac.h says $ver"; bad=1; } @@ -46,7 +43,6 @@ check() { [ "$deb_abi" = "$abi" ] || { echo " ARM 2: debian/control names libreac$deb_abi, reac.h says LIBREAC_ABI $abi"; bad=1; } [ -n "$spec_tabi" ] && [ "$spec_tabi" = "$deb_tabi" ] && [ "$spec_tabi" = "$rules_tabi" ] || { echo " ARM 3: libreac-transport's soname: spec '$spec_tabi', debian/control '$deb_tabi', debian/rules '$rules_tabi'"; bad=1; } - [ "$top" = "$ver" ] || { echo " ARM 4: CHANGELOG.md's newest entry is $top, reac.h says $ver"; bad=1; } return $bad } @@ -65,7 +61,6 @@ plant() { # : a copy of the files the arms read cp "$ROOT/include/reac/reac.h" "$P/$1/include/reac/" cp "$ROOT/packaging/libreac.spec" "$P/$1/packaging/" cp "$ROOT/debian/changelog" "$ROOT/debian/control" "$ROOT/debian/rules" "$P/$1/debian/" - cp "$ROOT/CHANGELOG.md" "$P/$1/" } plant good plant bad @@ -81,4 +76,4 @@ for arm in 1 2 3; do echo "$out" | grep -q "ARM $arm" || { echo "NOT A RESULT: the planted tree did not trip ARM $arm"; exit 2; } done -echo "conformance-packaging: PASS (version and sonames agree across reac.h, the spec, debian/ and CHANGELOG.md)" +echo "conformance-packaging: PASS (version and sonames agree across reac.h, the spec and debian/)"