DebianパッケージがホストされているGitLabでGitLab CIをぐるぐると回すための設定としてSalsa Pipelineが提供されている。ざっというとdebian/salsa-ci.yml
という形で以下のような設定を保存・GitLab側で参照を指定してからgit pushするとDebianパッケージ用の各種ビルドテストが走ってくれる。
---
include:
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
variables:
SALSA_CI_DISABLE_BLHC: 1
SALSA_CI_DISABLE_BUILD_PACKAGE_ANY: 1
reprotest:
allow_failure: true
include
では実行テストとその関係を規定、その上でvariables
でこのパッケージでは不要なテストをスキップしている。
テストの中でreproducible buildsのテストが走るが、若干不安定であったり、直すまでに目処が立たなかったりすることが多い…のだけど、明示的にdisableにするのも微妙という位置づけであることが多い。そのため最後に「失敗してもヨシ!」と指定している。
結構この「package archはallなのでany関連なテストは不要」「reprotestはallow_failureしたい」のコンビネーションが多いので、ファイルをコピーして追加することが多かったり。
FSFAPライセンス(FSF All Permissive License)というライセンスがあった。AppStreamのmetadataに使われたりするらしい。
debhelper-compat 13
では dh_missing
が強制的に enable になる。これによってパッケージにインストールされていなかったファイルを洗い出せた。
なお「意図的にインストールしたくないファイル」(.laなど)は debian/not-installed
というファイルに記述しておけば良い。
Debian パッケージは一旦作ると、依存関係などの大幅な変更以外はDebian Policyの更新に従ってチマチマとした修正をすることがほとんどです。気がついたところは手直しをするわけですが、些細な問題については見逃していることが多く、この発見と修正を自動化できるとメンテナは楽ができます。Policyに追随するツールとしてはlintian
がありますが、解釈不要な機械的な変更についてはlintian-brush
というツールが利用できます。最近まで存在は知っていたものの利用はしていなかったので試してみました。
$ sudo apt install lintian-brush
(snip)
$ cd package-dir
$ lintian-brush
Lintian tags fixed: {'file-contains-trailing-whitespace', 'out-of-date-standards-version', 'field-name-typo-dep5-copyright'}
$
どうやら3つほど問題を発見して修正をかけてくれたようです。変更点はgitにコミットされていました。
ommit 2aab55f3d809396ab8250014cc082210662d327a (HEAD -> master)
Author: Hideki Yamane <henrich@debian.org>
Date: Wed May 6 18:43:12 2020 +0900
Update standards version to 4.5.0, no changes needed.
Fixes: lintian: out-of-date-standards-version
See-also: https://lintian.debian.org/tags/out-of-date-standards-version.html
commit bfdc944abb5485e8c0ba1361a74f0dfd632722ca
Author: Hideki Yamane <henrich@debian.org>
Date: Wed May 6 18:43:12 2020 +0900
Fix field name typos in debian/copyright.
Fixes: lintian: field-name-typo-dep5-copyright
See-also: https://lintian.debian.org/tags/field-name-typo-dep5-copyright.html
commit f78f21cc22c1f9749f412fbd8a874711c6cbee6c
Author: Hideki Yamane <henrich@debian.org>
Date: Wed May 6 18:43:01 2020 +0900
Trim trailing whitespace.
Fixes: lintian: file-contains-trailing-whitespace
See-also: https://lintian.debian.org/tags/file-contains-trailing-whitespace.html
内容をちょっと見てみます。
commit bfdc944abb5485e8c0ba1361a74f0dfd632722ca
Author: Hideki Yamane <henrich@debian.org>
Date: Wed May 6 18:43:12 2020 +0900
Fix field name typos in debian/copyright.
Fixes: lintian: field-name-typo-dep5-copyright
See-also: https://lintian.debian.org/tags/field-name-typo-dep5-copyright.html
diff --git a/debian/changelog b/debian/changelog
index 833204f..148cbe4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
fonts-kanjistrokeorders (4.002~dfsg-4) UNRELEASED; urgency=medium
* Trim trailing whitespace.
+ * Fix field name typos in debian/copyright.
-- Hideki Yamane <henrich@debian.org> Wed, 06 May 2020 18:43:01 +0900
diff --git a/debian/copyright b/debian/copyright
index 0f08c52..26f22f2 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,7 +1,7 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ttf-kanjistrokeorders
Source: https://www.nihilist.org.uk/
-Upstream-contact: Tim Eyre <mail |at| nihilist (dot) org (dot) uk>
+Upstream-Contact: Tim Eyre <mail |at| nihilist (dot) org (dot) uk>
Files: KanjiStrokeOrders_v*.ttf readme_en_*.txt
Copyright: 2004-2018, Ulrich Apel, the AAAA project and the Wadoku project
@@ -34,4 +34,3 @@ Copyright: 2008-2019, Hideki Yamane (Debian-JP) <henrich@debian.or.jp>
License: GPL-3
On Debian systems the full text of the GNU General Public License Version 3
can be found in the `/usr/share/common-licenses/GPL-3' file.
…?となりましたがよくよく見てみるとUpstream-contact
フィールドがUpstream-Contact
フィールドとCが大文字に修正されてます。こんなの気づかねぇよ…(´・ω・`)
とまぁ、手動作業では見つけられないような重箱の隅も直せていいツールですね。
超久々にパッケージをアップデートした。
ruby-serverengineのは以下の問題。
mv lib .gem2deb.lib
RUBYLIB=. GEM_PATH= ruby2.5 -S rake -f debian/ruby-tests.rake
/usr/bin/ruby2.5 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation
[!] There was an error parsing `Gemfile`:
[!] There was an error while loading `serverengine.gemspec`: cannot load such file -- /tmp/autopkgtest-lxc.1jlmt47i/downtmp/build.eOn/src/lib/serverengine/version
Does it try to require a relative path? That's been removed in Ruby 1.9. Bundler cannot continue.
# from /tmp/autopkgtest-lxc.1jlmt47i/downtmp/build.eOn/src/serverengine.gemspec:1
# -------------------------------------------
> require File.expand_path 'lib/serverengine/version', File.dirname(__FILE__)
#
# -------------------------------------------
. Bundler cannot continue.
# from /tmp/autopkgtest-lxc.1jlmt47i/downtmp/build.eOn/src/Gemfile:2
# -------------------------------------------
# source 'https://rubygems.org/'
> gemspec
# -------------------------------------------
Run `bundle install` to install missing gems
/usr/bin/ruby2.5 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation failed
Java系パッケージはCIが有効にできないので問い合わせ、Perl系パッケージは何故かautopkgtestでlxcなtestbed関連でfailureになるのでお預け。
autopkgtest [15:34:19]: test autodep8-perl: [-----------------------
bash: line 0: cd: /tmp/autopkgtest-lxc.5hqs7t01/downtmp/build.dc3/src: No such file or directory
autopkgtest [15:34:19]: test autodep8-perl: -----------------------]
Unexpected error:
Traceback (most recent call last):
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 738, in mainloop
command()
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 667, in command
r = f(c, ce)
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 605, in cmd_copyup
copyupdown(c, ce, True)
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 490, in copyupdown
copyupdown_internal(ce[0], c[1:], upp)
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 515, in copyupdown_internal
copyup_shareddir(sd[0], sd[1], dirsp, downtmp_host)
File "/usr/share/autopkgtest/lib/VirtSubproc.py", line 429, in copyup_shareddir
shutil.copy(tb, host)
File "/usr/lib/python3.7/shutil.py", line 248, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib/python3.7/shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/autopkgtest-lxc.5hqs7t01/downtmp/autodep8-perl-stdout'
autopkgtest [15:34:20]: ERROR: testbed failure: unexpected eof from the testbed
delayed/5 queue
にいれたpython-arucoがtestingに落ちないので「?」と思ってたのだが、debian/changelog
ファイルにきちんとclose書き忘れていた…仕方がないのでcloseメールを送ったりした。いかんいかん。unblockもしないとダメかな。久々にダウンロードしたパッケージが壊れている、というのを体験。
thunderbird (1:60.7.1-1) で (1:60.7.0-1 に) 上書き展開しています ...
dpkg-deb (サブプロセス): アーカイブメンバーを伸張しています: lzma エラー: 圧縮データが壊れています
dpkg-deb: エラー: <伸張> subprocess returned error exit status 2
dpkg: アーカイブ /tmp/apt-dpkg-install-72mWan/34-thunderbird_1%3a60.7.1-1_amd64.deb の処理中にエラーが発生しました (--unpack):
'./usr/lib/thunderbird/libxul.so' の展開済みデータを '/usr/lib/thunderbird/libxul.so.dpkg-new' にコピーできません: ファイルまたは
ストリームの予期しない終わりです
apt clean
して対処。
debian/.gitlab-ci.yml
からsalsa-ciチームのpipelineを使う方向に転換した。gitlabのCI設定を変更してdebian/salsa-ci.yml
を参照するようにし、ファイルには以下の3行を書くだけで、ビルドからpiuparts
, lintian
, reproducible test
, autopkgtest
, blhc
の5つのテストが走る。include:
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
debian/rules
いじって不要そうなのを削ったらビルド自体は通った。なんであんなやり方してたのだろう? それよりは同じoverride
ルールが2度に渡って書いてある方も気になったが、手は加えなかった。unreproducible
タグつけて来たfixed-upstream
タグは着けるが、testingからは削除バグを登録しておいた。
fontconfigのRCバグ、直ってるよという報告者の話があったのに閉じてなかったので閉じた
jrubyのCVEバグだが、rubygem由来でパッチそのものがあったので適用して閉じた
snapdのCVEバグ、あとで確認しよう…
gucharmapのFTBFS、unicode-data 12.0由来なので弄ってビルド通るようにしてアップロードした
ghostscriptのunblockをメンテナに代わって実施してあげた
Linuxパッケージのバグ、upstreamで直ってたのでタグ付け
リリースノートをいじる
notoフォントパッケージのバグじゃない?という問い合わせに対応
firmware-atherosパッケージ変、というのがあったのでreplyしてみた