HOW_TO_MAKE_RELEASES
4.86 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
インストールイメージの作成方法
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 に作成される。