Skip to content

fix: update debian changelog and rpm spec to 2.6.11 - #138

Merged
go-kazuhiko-yamashita merged 1 commit into
masterfrom
fix/update-changelog-for-2.6.11
Aug 25, 2026
Merged

go-kazuhiko-yamashita merged 1 commit into
masterfrom
fix/update-changelog-for-2.6.11

Conversation

@go-kazuhiko-yamashita

Copy link
Copy Markdown
Contributor

背景

debian/changelog と rpm/stns.spec が 2.6.8 (2024-10-08) で止まったまま、タグだけが v2.6.11 まで進んでいました。この不一致により v2.6.9 以降のリリースで deb / rpm が1つも生成されていません。

タグ リリース成果物
v2.6.11 tar.gz のみ (deb=0, rpm=0)
v2.6.10 tar.gz のみ (deb=0, rpm=0)
v2.6.9 tar.gz のみ (deb=0, rpm=0)
v2.6.8 18件 (deb=13, rpm=4)

破綻の仕組み

VERSION は git describe --tags から取得されるのに、パッケージのバージョンは changelog / spec のハードコード値から取られます。両者がズレると、生成済み tarball の名前と探しにいく名前が食い違ってビルドが落ちます。

graph TD
    A["make version: git describe → 2.6.11"] --> B["source_for_deb / source_for_rpm<br/>libnss-stns-v2_2.6.11.orig.tar.xz を生成"]
    B --> C{"changelog / spec は 2.6.8 と宣言"}
    C --> D["dpkg-source: 2.6.8 の orig tarball を探す → 不在<br/>rpmbuild: 2.6.8 の Source を探す → 不在"]
    D --> E["deb / rpm ビルド失敗"]
    B --> F["tar.gz だけ builds/ に残りリリースに添付される"]
Loading

リリースに tar.gz だけが残っていたのは、make rpm の前段 source_for_rpm が tar.gz を builds/ にコピーした後、rpmbuild で落ちるためです。

変更内容

debian/changelog と rpm/stns.spec に 2.6.9 / 2.6.10 / 2.6.11 のエントリを追加し、rpm/stns.spec の Version: を 2.6.11 に更新します。既存エントリは変更していません。

各エントリの内容はタグ間のコミット履歴から起こしています。

deb の distribution 欄は既存に倣って jammy にしています。Makefile の deb ターゲットが sed -e 's/xenial/$(DIST)/g' -e 's/jammy/$(DIST)/g' でディストリ名を置換するため、ここが jammy でないと置換されません。

検証

Ubuntu 26.04 (resolute) コンテナで確認しました。

$ dpkg-parsechangelog -l debian/changelog
Source: libnss-stns-v2
Version: 2.6.11-1
Distribution: jammy
Date: Tue, 25 Aug 2026 12:00:00 +0900
→ exit 0

$ rpmspec -P rpm/stns.spec
Version:          2.6.11
→ exit 0

rpmspec は %changelog の日付(曜日と日付の整合)が不正だとここで落ちるため、日付フォーマットの妥当性も担保されています。

マージ後の手順

再タグは不要です。make version は master HEAD から git describe --tags --abbrev=0 で 2.6.11 を返すため、Release ワークフローを workflow_dispatch で再実行するだけで v2.6.11 に成果物が追加されます(ghr --replace が既存リリースに上書きします)。

これにより #137 で追加された Ubuntu 26.04 (resolute) の deb が生成され、STNS/package 側の debrepo-resolute が動くようになります。

補足: 2年近く気づかれなかった理由

build.sh が docker compose up の終了コードを検査していないため、ビルド失敗が握り潰されています。

start_service() {
    docker compose up "$service" &     # 終了コードを見ていない
    pids[$!]=$service
}
...
for pid in "${!pids[@]}"; do
    wait "$pid"                        # 戻り値を捨てている
done

さらに make github_release の ghr -u STNS --replace v$(VERSION) builds/ は builds/ が空でもエラーになりません。この2段構えで失敗が隠れ、Release ワークフローは v2.6.9 / v2.6.10 / v2.6.11 とも conclusion: success のままでした。

再発防止には終了コードの伝播が必要ですが、本PRのスコープ外としています。

Refs: STNS/STNS#394

They were left at 2.6.8 (2024-10-08) while tags moved on to v2.6.11.
Since VERSION comes from git describe, the generated tarball name never
matched what dpkg-source and rpmbuild looked for, so every release since
v2.6.9 shipped only the source tar.gz with no deb or rpm.
@go-kazuhiko-yamashita
go-kazuhiko-yamashita merged commit 7e7ff1d into master Aug 25, 2026
1 check failed
@go-kazuhiko-yamashita
go-kazuhiko-yamashita deleted the fix/update-changelog-for-2.6.11 branch August 25, 2026 04:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants