«前の日記(2013-01-03(木)) 最新 次の日記(2013-01-05(土))»

vdrめも

検索キーワード:
[PR]:「Chef活用ガイド コードではじめる構成管理 (大型本), (Kindle版)」発売中です。


2013-01-04(金) 真似 [長年日記]

_ [debian] pkg-ruby-extras めも

続々々々々々々・mikutter パッケージングから派生した話題で、DebianでのRuby関連パッケージのことはじめの自分なりのめも。

まずたどりついたのは Teams/Ruby - Debian Wiki で、ライブラリのパッケージングをしたいので pkg-ruby-extras team の Teams/Ruby/Packaging - Debian Wiki のほうに移動する。

Joining the pkg-ruby-extras team では、まず Maintainers of the Debian Ruby Extras packages か IRC で声をかけてほしいとあるので ML ログを 2011/1 までさかのぼったけどそれらしいのがなかった。とりあえず pkg-ruby-extras-maintainersdebian-ruby を subscribe。alioth のアカウントは持っているし、pkg-ruby-extras team の join request に詳しく書くことで代用できるかな(ruby-typed-array の ITP やその他 ruby パッケージの作業をしたいと記載)。承認が出るまで Debian/Ruby teams の Wiki を一通り読んでおく。

承認が出たら作業開始。Obtaining the master repository に従って pkg-ruby-extras レポジトリを取得。あれ、少ないな...と思ったらこれで取れるのは設定ファイルだけで、mr というコマンドでごっそり取ってくるようだ。で、実際やってみると、

mr: illegal section "[DEFAULT]" in untrusted /usr/src/deb/pkg-ruby-extras/.mrconfig line 1
(To trust this file, list it in ~/.mrtrust.)

となってしまった。

Add .mrconfig path to ~/.mrtrust

[Known Issuesより引用]

とあったけど書式がよくわからない。man を見たら、

To configure mr to trust other mrconfig files, list them in ~/.mrtrust. One mrconfig file should be listed per line. Either the full pathname should be listed, or the pathname can start with ~/ to specify a file relative to your home directory.

[mr(1)より引用]

と書式が書いてあった。

% echo "/usr/src/deb/pkg-ruby-extras/.mrconfig" > ~/.mrtrust

として解決。

Creating a new git repository and pushing an existing package to git.debian.org に従って、これから作業する対象のパッケージを git.debian.org 上で登録する。ローカルマシンに戻り、先程 checkout した pkg-ruby-extras を更新する。作業する対象のパッケージが checkout して出てくるので、その中でパッケージング作業を行う。ただし、

At this point, please do not make any change to the package generated by gem2deb. It is important to track all the changes in git.

[Creating a new git repository and pushing an existing package to git.debian.orgより引用]

とあるように、gem2deb で変換した直後のものを最初に push し、

git tag -d debian/0.7-1 # because the package is not ready yet

[Creating a new git repository and pushing an existing package to git.debian.orgより引用]

とあるように、git import-dsc --pristine-tar で自動的で振られる tag は削除しておく。この状態で push してから、ようやく変更作業を開始する。変更が終わったら、先程削除した tag を改めて振り直し、push する。

あとの注意点といえば、ITP する際の X-Debbugs-CC に pkg-ruby-extras-maintainers を含めておくくらい?

_ [debian] ruby-typed-array test めも

だいたいは gem2deb がよきにはからってくれるけど、test の部分が特に厄介だと思うので ruby-typed-array でやったときのめも。

typed-array には

% ls -n spec/
合計 16
-rw-r--r-- 1 1000 1000  361 12月 29 16:04 spec_helper.rb
-rw-r--r-- 1 1000 1000 9425 12月 29 16:04 typed-array_spec.rb
%

というディレクトリ/ファイルがあり、どうやらこれは RSpec によるテストケースらしい(RSpec の用語では executable examples と言うらしい)。

ためしに rspec コマンドを叩いてみると、

% /usr/bin/ruby1.8 /usr/bin/rspec
............................................................................................................................................................

Finished in 0.03744 seconds
156 examples, 0 failures
% /usr/bin/ruby1.9.1 /usr/bin/rspec
............................................................................................................................................................

Finished in 0.02634 seconds
156 examples, 0 failures
%

のようにパスする。これをパッケージ生成の際に実行するようにしてやればいい。gem2deb は debian/ruby-tests.rb という雛形を準備してくれるので、これに記載する。RSpec の場合は、

require 'rspec/autorun'
require 'typed-array_spec.rb'

のように、rspec/autorun と spec/ ディレクトリ内の *_spec.rb を require すれば、パッケージ生成の際に、

  Entering dh_ruby --install
        :
/usr/bin/ruby1.9.1 -I/usr/lib/ruby/vendor_ruby /usr/lib/ruby/vendor_ruby/gem2deb
/test_runner.rb
................................................................................
............................................................................

Finished in 0.02921 seconds
156 examples, 0 failures
/usr/bin/ruby1.8 -I/usr/lib/ruby/vendor_ruby /usr/lib/ruby/vendor_ruby/gem2deb/t
est_runner.rb
................................................................................
............................................................................

Finished in 0.03664 seconds
156 examples, 0 failures
  Leaving dh_ruby --install

自動的にテストしてくれる。

RSpec 以外にもテストフレームワークはあるし、dh_ruby(1) によれば debian/ruby-tests.rb ではなく debian/ruby-test-files.yaml や debian/ruby-tests.rake を使う方法など、やりかたはいろいろあるみたい。

_ [debian] ruby-rspec-instafail test めも

→ruby-rspec-instafail を git に登録、test がよくわからない。

[どれ作業してるか判らなくなるより引用]

とのことなのでちょっと見てみた。

% ls -n spec
合計 12
-rwxr-xr-x 1 1000 1000 1422  1月  4 12:19 instafail_spec.rb
drwxr-xr-x 2 1000 1000 4096  1月  4 12:19 rspec_1
drwxr-xr-x 2 1000 1000 4096  1月  4 12:19 rspec_2
%

これも RSpec 形式のようだけど、ちょっと様子が変。

)% /usr/bin/ruby1.9.1 /usr/bin/rspec 
FFF....

Failures:

  1) RSpec::Instafail RSpec 1.x outputs failures at start of output
        :

のように、なにやら RSpec 1.x を対象としたテストに失敗しているらしい。

% head -5 spec/instafail_spec.rb
describe 'RSpec::Instafail' do
  context "RSpec 1.x" do
    before :all do
      @rspec_result = `cd spec/rspec_1 && bundle exec spec a_test.rb --format RSpec::Instafail`
    end
% cat spec/rspec_1/Gemfile     
source 'http://rubygems.org'
gem 'rspec', '1.3.0'
%

Debian では RSpec は既に 2.x 系なので、context "RSpec 1.x" ブロックは削除するパッチを当てて実行しないでいい気がする。さらに言うと、このパッケージには使われることのないだろう RSpec 1.x 用のファイルも含めなくていい気がする。ただ、RSpec 1.x 用のファイルを含めない場合は修正箇所が結構多くなる。


2013年
1月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[amd64 | audacious | comp | debian | gkrelluim | kip | misc | movie | research | rime | unicon | vdr | work | えふえふ]

書いてる人: dai

パッチ等(無保証)

GPG Fingerprint = 0B29 D88E 42E6 B765 B8D8 EA50 7839 619D D439 668E