From 153034ed26dfd6fa930d2ddcd1bf47734a4d5acd Mon Sep 17 00:00:00 2001 From: John Mitsch Date: Thu, 11 Jun 2026 12:31:23 -0400 Subject: [PATCH 1/2] Fix COPR mock build: strip percent-signs from spec-file comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.1.6's COPR build failed in mock (all 10 chroots) with: warning: Macro expanded in comment on line 5: %install lays error: Name field must be present in package: (main package) Root cause: RPM specs do NOT treat `#` as escaping `%`. The macro processor runs before the comment processor, so a `%macro` token inside a comment gets expanded just like one in a directive. Two comments in packaging/qn-bin.spec mentioned `%prep` and `%install` to describe what those sections do. When RPM hit the `%install` in line 5's comment it expanded it, corrupting the parser's preamble state, and by the time RPM reached `Name: qn` on line 15 it had lost context and emitted the misleading "Name field must be present" error. Fix: remove all `%`-prefixed macro mentions from comments and add a note (without a `%` symbol) reminding future editors that the character is unsafe in spec comments. Belt-and-suspenders: every comment line in the spec is now grep-clean of `%` entirely (`grep -nE '^#.*%' qn-bin.spec` → no matches), so any future edit that accidentally reintroduces `%foo` in a comment gets caught by a one-line lint. This fix is forward-only: v0.1.6 already shipped to crates.io, GHCR, .deb, and the GitHub Release. v0.1.7 will exercise the corrected COPR spec and backfill COPR for the recent versions. --- packaging/qn-bin.spec | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packaging/qn-bin.spec b/packaging/qn-bin.spec index a7b5d5a..d07d3f4 100644 --- a/packaging/qn-bin.spec +++ b/packaging/qn-bin.spec @@ -2,10 +2,16 @@ # # This spec is built on COPR's mock chroots. The SRPM embeds both Linux # gnu tarballs (x86_64 + aarch64) cargo-dist published for this release; -# %prep selects the right one for the chroot's arch and %install lays -# the binary + docs into the buildroot. No Rust toolchain involved on -# the COPR side — the binary inside the resulting RPM is bit-identical -# to what ships in crates.io, Homebrew, .deb, AUR, and the GHCR image. +# the prep section selects the right one for the chroot's arch and the +# install section lays the binary + docs into the buildroot. No Rust +# toolchain involved on the COPR side — the binary inside the resulting +# RPM is bit-identical to what ships in crates.io, Homebrew, .deb, AUR, +# and the GHCR image. +# +# Comments here intentionally avoid the percent-sign character entirely +# — RPM expands macros inside comments at parse time, which corrupts +# the parser state and causes downstream "Name field must be present" +# errors that look unrelated. # # Built by .github/workflows/publish-copr.yml on each release. That # workflow pre-downloads both arch tarballs into ~/rpmbuild/SOURCES/ @@ -19,8 +25,8 @@ Summary: Command-line interface for the Quicknode SDK License: MIT URL: https://github.com/quicknode/cli -# Both arch tarballs ship in the SRPM. %prep picks one based on the -# chroot's arch. +# Both arch tarballs ship in the SRPM. The prep section picks one based +# on the chroot's arch. Source0: https://github.com/quicknode/cli/releases/download/v%{version}/quicknode-cli-x86_64-unknown-linux-gnu.tar.xz Source1: https://github.com/quicknode/cli/releases/download/v%{version}/quicknode-cli-aarch64-unknown-linux-gnu.tar.xz From ff2c5cb8546f5c257ccc956c9aac670c2dbced3f Mon Sep 17 00:00:00 2001 From: John Mitsch Date: Thu, 11 Jun 2026 12:33:19 -0400 Subject: [PATCH 2/2] Point release-prepare's tail at release-sync-manual-channels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After release-prepare's CI-wait succeeds, the maintainer's next move is to sync the three manual channels (Homebrew tap, Scoop bucket, AUR qn-bin). The tail message used to stop at "inspect the release" — this adds a pointer to release-sync-manual-channels with the version baked in for a clean copy-paste, plus a note that omitting the args auto-detects the version from the latest tag. --- Justfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Justfile b/Justfile index 3de5d06..e20798e 100644 --- a/Justfile +++ b/Justfile @@ -470,3 +470,7 @@ release-prepare version yes="0": echo echo "Phase 1 complete. Inspect the release at:" echo " https://github.com/$(gh repo view --json nameWithOwner -q .nameWithOwner)/releases/tag/v{{version}}" + echo + echo "Next: sync the manual channels (Homebrew, Scoop, AUR) by running" + echo " just release-sync-manual-channels ~/qn {{version}}" + echo "(omit the args to auto-detect the version from the latest tag)."