めんてなのおしごと

Sat, Dec 15, 2018 in debian debian

ruby-arubaパッケージをアップデートした。

autopkgtestが debian/control での Testsuite: autopkgtest-pkg-ruby 行を起点として実施される(実際は debian/ruby-tests.rake ファイルが実行されるのかな?)のだけど、この際に gemspec ファイルの中身が実行される。ところがここで git コマンドを使ってファイルの有無を確認するという形になってしまっていて、git への依存関係がないのでコケるという悲しい状態だった。

  s.files            = `git ls-files`.split("\n")
  s.test_files       = `git ls-files -- {spec,features}/*`.split("\n")
  s.executables      = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }

しかもどうやらこれはbundlerの雛形がそうなってるという…何なんだRuby。daiさんに Dir 使うというのを教えてもらってパッチを作って対処、Bug#910953をクローズ。

diff --git a/aruba.gemspec b/aruba.gemspec
index c6ac3e7..1581e98 100644
--- a/aruba.gemspec
+++ b/aruba.gemspec
@@ -40,9 +40,9 @@ With aruba >= 1.0 there will be breaking changes. Make sure to read https://gith
 EOS
   end

-  s.files            = `git ls-files`.split("\n")
-  s.test_files       = `git ls-files -- {spec,features}/*`.split("\n")
-  s.executables      = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
+  s.files            = Dir['**/*'].reject { |f| f =~ %r{^debian/} }
+  s.test_files       = Dir['spec/*,features/*']
+  s.executables      = Dir['bin/*'].map{ |f| File.basename(f) }
   s.rdoc_options     = ["--charset=UTF-8"]
   s.require_path     = "lib"
 end