4. Momonga Project として積極的に開発に参加したい人

4.1. アカウントの申請

修正したパッケージを commit するには Subversion サーバにアカウントが必要です。 現在は申請方法など整備している最中ですが、 アカウント 発行のルール(仮)にルールを記載していますので、一読の上申請してください。

4.2. ssh

Subversion からファイルを取り出したりする際に ssh を経由します。NOPASSWD で slogin できるようにしておいた方がなにかと便利です。

      
    $ eval `ssh-agent`
    $ ssh-add ~/.ssh/id_dsa
   
Momonga Linux では X を起動する際に eval `ssh-agent` は実行されるようになっています。 また、~/.xinit.d/hook が存在し、 かつ実行属性を持つ場合このファイルを実行するようになっていますので
    $ touch ~/.xinit.d/hook
    $ chmod +x ~/.xinit.d/hook
   
して、中に
    ssh-add ~/.ssh/id_dsa < /dev/null
   
と記述しておくと良いでしょう。

4.3. ファイルの取り出し

シェルに bash を使用している場合

    bash$ export SVN_EDITOR=jed
    bash$ svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs/trunk/pkgs
   

シェルに tcsh を使用している場合

   tcsh% setenv SVN_EDITOR jed
   tcsh% svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs/trunk/pkgs
  

4.4. rpmvercmp のビルド

前述のように、以下のコマンドを実行して最新のものをもってくる。 HEAD をメンテナンスしたいなら trunk に移動しておく。

    $ svn co svn+ssh://svn.momonga-linux.org/home/svnroot/svnroot_pkgs/trunk/tools
    $ cd tools
   
次に以下のコマンドを実行。
    $ make
   
時々以下のコマンドを実行して、(特にOmoiKondaraを) 最新のものにするのを忘れないように。
    $ cd ..
    $ svn update tools
   
なお pkgs と tools は常に同一 revision にしておくことが望ましいので 全体を一度に update することをお勧めします。

4.5. 設定ファイルのコピー

    $ cd pkgs
    $ cp ../tools/example.OmoiKondara .OmoiKondara
   
必要に応じて .OmoiKondara を編集

4.6. パッケージのビルド

    $ cd pkgs
    $ ../tools/OmoiKondara パッケージ名
   
設定ファイルがデフォルトのままなら、ビルドが成功すると $HOME/PKGS 以下に パッケージが出来上がります。

4.7. 新バージョンのパッケージの作成

4.7.1. spec ファイルの変更とパッチの作成

以下の作業は pkgs/ で実行します。

新バージョン(または新リリース番号)のパッケージをリリースしたい時は、 spec ファイルを必ず Specfile-Guidance にそってメンテナンスしてください。

また、新しいパッチを追加する時は、そのパッチの項目も spec ファイルに追加 する必要があります。

4.7.2. ローカルな環境でのビルド確認

まず、あなたのローカルな環境でパッケージのビルドが可能か確認します。

     $ ../tools/OmoiKondara -r "-bp" hoge
     $ cd hoge
     $ rpm -ba --rcfile rpmrc hoge.spec
    
とすると、pkgs/hoge/RPMS/{arch} 以下にビルドされたパッケージが置かれます。

4.7.3. 修正した物の反映

spec ファイルの更新だけでよいもの

     $ ../tools/commit hoge
    

パッチなどを追加する場合

     $ svn add hoge/hoge.patch
     $ ../tools/commit hoge
    

なお、依存するライブラリの API が変更された等の理由で 複数のパケジを commit する際には、個別に commit せず

     $ ../tools/commit hoge fuga ...
    
などとして、一度に commit してください。 atomicな変更は、1回で同時にcommit してください。 また、こうすると revision の増加が 1 で済みますので巻き戻すのが簡単です。 逆に、関係のない変更を一つの commit に混在させると 何が起きたか判断に困りますし、 必要な部分だけ巻き戻すのが面倒になりますので、注意が必要です。 また、新規のコミットではない場合(changelogの修正など)は、 tools/commitを使わずに、手動でsvn commitしてください。

4.8. 新規アプリケーションのリポジトリへの登録

Momonga Linux に新たにアプリケーションを追加したい時は、 OmoiKondara の Subversion リポジトリに登録する事が必要になります。

4.8.1. 新規ディレクトリの作成

pkgs/ 以下に、 新たにアプリケーションのディレクトリを作成します。 例えば以下のようにsvn mkdirを実行します。

     $ svn mkdir newapp
    
そしてそこに、spec ファイルやパッチなど必要なファイルを配置します。 この際アプリケーションにより、必要に応じてそのディレクトリにて以下の 作業をします。

Orphan に配置するもの

$ touch TO.Orphan とし、バイナリパッケージを Orphan に配置するように指定します。 デフォルトではビルドされません。

Alter に配置するもの

$ touch TO.Alter とし、バイナリパッケージを Alter に配置するように指定します。 デフォルトではビルドされません。

Nonfree に属するもの

$ touch TO.Nonfree とし、バイナリパッケージを作成しないように指定します。

こうする事で OmoiKondara は、全ビルド時にMainのバイナリパッケージだけを 作成することができます。

また、下記に該当するアプリケーションも指定する作業をしてください。

ビルドの際に root 権限を必要とするアプリケーション

$ touch SU.PLEASE

ビルド時にLANG環境変数を必要とするアプリケーション

$ touch LANG=ja_JP.EUC-JP

等号以降はアプリケーションに応じて変えてください。

ビルドプロセスがdefunctになってしまうアプリケーション

$ touch TIMEOUT.PLEASE

nosrc.rpm のみで供給するアプリケーション

$ touch SRPMS.ONLY

JAVA を必要とするアプリケーション

$ touch JAVA

4.8.2. Subversion に新規リポジトリを作成

必要な各ファイルの追加を予約する

     $ svn add newapp/newapp.spec newapp/newapp.patch
    
必要なファイルのみが揃っている状態なら(不要なファイルがない状態なら) 以下の方法も可能です。
     $ svn add newapp
    
リポジトリに追加を反映する
     $ ../tools/commit newapp