HOW_TO_MAKE_RELEASES 4.86 KB
	インストールイメージの作成方法

0. 概要
1. romheader の変更
2. インストールイメージの名前の変更
3. バージョン番号の取得
4. raw idb (install data base)の作成
5. make ism の作成
6. missing, extra の処理
7. extra file への sub product の割り当て
8. idb への extra file の組み込み
9. イメージの作成

---
0. 概要

インストールイメージとは、IRIX の inst コマンド、あるいはソフトウェア
マネージャで取り扱うことのできる、ある一定のフォーマットにのっとったファ
イル群である。基本的には、プロダクト、イメージ、サブシステムという名前
のものが階層的な構造になっている。versions の出力では、これらは「.」で
区切られて表示される。

例えば、N64 の開発環境であれば、

% versions ultra
I = Installed, R = Removed

   Name                 Date      Description

I  ultra                04/11/97  Ultra 64 Development Environment, 2.0H
I  ultra.dev            04/11/97  Ultra 64 Development Environment Software
I  ultra.dev.base       04/11/97  Ultra 64 Base Development
I  ultra.dev.demo       04/11/97  Ultra 64 Demonstration Software

と表示されるが、ここで、「ultra」がプロダクト名、「dev」がイメージ名、
「base」「demo」がサブシステム名である。サブシステム「base」「demo」は
どちらもイメージ「dev」の下にある。

イメージの作成に先だって、必ず通常のコンパイル手順(cvs update, make
headers, make exports)は実行しておくこと。

---
1. romheader の変更

PR/lib/BringupBoot/romheader には、OS のバージョン(2.0G, 2.0H といった
もの)がかかれている。これを変更しておく。

具体的には、romheader の最後の 2バイトがこのバージョンにあたる。書式は
全体を 16 ビットとみなして、

bit[15-8] = バージョン番号 (例えば、2.0 であれば、20 を16進で(つまり 
	0x14を)書き込む)
bit[7-0] = バージョン文字 (G とか H とか I とかをアスキー番号で)

例えば 2.0H であれば、0x1448 となる。

---
2. インストールイメージの名前の変更

ソースツリーでインストールイメージを作成した場合、その名前は 
PR/build/spec の中に書いてある名前が参照される。バージョンを一つあげる
場合は、このファイル内にある、全ての旧バージョン名を新バージョン名に変
更する必要がある。

あらたにイメージを追加したり、プロダクトを追加したりする場合は、このファ
イルをエディットすると追加される。

なお、exp "***" で示されるものは、プロダクト作成時に内部的に使用する、
サブシステムの名前である。のちに、どのファイルをどのプロダクトのどのイ
メージのどのサブシステムに含めるかを指定するのに使用する。

---
3. バージョン番号の取得

各プロダクトやイメージ等にはバージョン番号が定められる。これは、inst 
やソフトウェアマネージャが、バージョンの新旧を判断するのに用いられるも
のなので、同じプロダクトに対しては、あとからリリースするものには番号と
して大きい番号を定めておかなければならない。ソースツリーではこれは自動
生成される。

% cd $ROOT/PR
% make startversion

これで、$ROOT/.version_number が更新される。

---
4. raw idb (install data base)の作成

どのファイルがどの場所にどのパーミッションでインストールされるか、等の
情報がかかれたファイルを idb (install data base) という。実際にインス
トールイメージを作成するのは gendist という(UNIX の)ツールであるが、こ
のツールに対して、idb と上記の spec を渡す必要がある。ここではその idb 
を作るために、その前段階である raw idb (生の idb)を作成する。

% cd $ROOT/PR
% make rawidb

これで、$ROOT/PR/build に IDB が作成される。

---
5. make ism の実行

IDB には、インストールされるべき全てのファイルが含まれるが、このそれぞ
れに対して、どこにインストールされるべきか、等の指定をするのは大変であ
る。

そこで、過去のリリース時の情報を使用する。

% cd $ROOT/PR
% make ism

過去のリリース時の idb ファイルは $ROOT/PR/build/idb で保存されている
ので、make ism はこの idb と IDB を比較し、idb にあって IDB にないもの
を PR/build/missing, idb になくて IDB にあるものを PR/build/extra とし
て出力する。

指定は extra の中のファイルに対してのみ行なえばよい(実際の指定は 7.で
行なう)。

---
6. missing, extra の処理

missing に対しては、idb から削除しなければいけない。

% idbdelete $ROOT/PR/build/idb $ROOT/PR/build/missing

extra に対しては、各ファイルをどのサブシステムに割り当てるかを指定する
前に、ここでは、若干のフォーマット変換を施しておく。

% idbextra $ROOT/PR/build/extra > $ROOT/PR/build/extra.new

---
7. extra.new file への sub product の割り当て

extra.new をエディタで変更し、各行の最後に「そのファイルをどのサブシス
テムに含めるか」を指定していく。指定の仕方は、PR/build/spec の exp で
指定されている文字列を使用する。例えば、ultra.dev.base に含めたいもの
は BASE, ultra.dev.demo に含めたいものは DEMO といった具合いである。

---
8. idb への extra.new file の組み込み

extra.new を idb に組み込む。単純に cat で連結すればよい。

% cat $ROOT/PR/build/extra.new >> $ROOT/PR/build/idb

後のために、ソートをしておく。もし vi を使うならば、

:3,$!sort +4 -6 -u
:wq

である。最初の数ラインはソートの対象に含めてしまわないように注意する。

---
*. 繰り返し

5. に戻って、エラーが出なくなることを確認する。エラーが出て missing か
extra が出力されたら、6., 7., 8 を順に実行する。

---
9. インストールイメージの作成

% cd $ROOT/PR
% make images

と実行することで、インストールイメージが $ROOT/PR/images に作成される。