*PlamoBuild スクリプト [#l9512200]
玩式草子に最新内容(状況)が連載されてます。 †
このページの下の方になってしまった内容の再掲載 †
新パッケージツール †
M.Tomi (2010-09-27 (月) 21:10:13)
個別ページを作成しても良いと思いましたが、 このページ (PlamoBuid スクリプト) に含められると判断したのでここに投稿しておきます。
別ページが良い場合は作成して ( この投稿を削除して ) 下さい。
ここにアナウンス があります。
- ↑リンク先が存在しません。 -- M.Tomi (2015-04-04 (土) 14:03:20)
M.Tomi (2010-09-20 (月) 21:55:16)
/usr/share/doc/????/ 以下に PlamoBuild なるスクリプト (ソース名なし) がありますが、パッケージャーさんの違いにより結構異なってます。
スクリプト自体読み易いので問題ないと思いますが、気が付いた点をあげておきます。
1. ソースを置く (ビルドする) ディレクトリをダイレクト指定している。
2. パッケージ作成をするにはルート権限で動作させる必要がある。
Qt の PlamoBuild スクリプトで気付いたので、他の物が全てそうなってるのかまではチェックしてません
- export CFLAGS="-O2"
export MAKEFLAGS="-j 6"
なる指定もある。
アプリケーションに (ソースの書き方に?) よっては、最適化しない方が良い場合もある (今は問題ないのかな?) 。 -j ? オプションは、自分の環境に合わせた数値に設定する事が望ましい。 -- M.Tomi
参考情報 †
M.Tomi (2010-09-11 (土) 22:34:39)
PlamoBuild スクリプトに関する情報が ここの 最後に記載されてますので、ご一読を。
tamu (2010-08-07 (土) 10:26:25)
M.Tomiさんが個人サイトで手掛けているavidemuxを題材に,CMakeなソフトウェアのPlamoBuildスクリプトを作ってみました。
PlamoBuildスクリプトは,PlamoBuild.templateの./configureの実行あたりで,代わりにcmakeを実行するのが基本です。
ただ,生成されるMakefileに若干のクセがあるようで,幾らかのケアが必要だったりします。
avidemux固有としては,
・ 本体とプラグインを一気通貫でビルドできるように修正(途中で本体のインストール不要)
・ avidemux-2.5.3で必要となるyasmをビルドディレクトリに内部展開(あらかじめインストール不要)
あたりを調整しています。ビルド過程で,システムに変更を加えません(ビルドシステム不変の原則)。
ftp://plamo.linet.gr.jp/pub/Plamo-src/admin/PlamoBuild.templateからPlamoBuild.avidemux-2.5.3を生成するパッチを
&ref(): File not found: "PlamoBuild.template_to_avidemux-2.5.3.patch" at page "話題/PlamoBuild スクリプト";に置いておきます。
PlamoBuildスクリプトを空の作業ディレクトリに放り込んで実行すれば,パッケージが出来上がります。
ついでに,PlamoBuild.avidemux-2.5.3からPlamoBuild.avidemux-2.5.2を生成するパッチを
&ref(): File not found: "PlamoBuild.avidemux-2.5.3_to_2.patch" at page "話題/PlamoBuild スクリプト";に置いておきます。
上記のPlamoBuildスクリプトに関して,質問やコメントなどがあればお寄せください。
- うわぁ〜、ありがとうございます。早速試してみます。それとパッチ内容を勉強させていただきます -- M.Tomi
- メインベース ( 4.6 環境 ) で両スクリプトが通り、実行確認できました。 VM 上の 4.72 環境も avidemux-2.5.3 ( 4.72 環境でビルドした物 ) で問題ないようです ... 但し私の利用範囲においてですけど ... avidemux-2.5.3 で 「 smart copy 」 指定が出た保存も seg. fault しなくなった。
パッチ内容を勉強しないと -- M.Tomi
- やっぱり avidemux-2.5.3 は Smart Copy 指定で保存してる時に seg. fault した。 2.5.3 をあえて使う必要もないので深く追求しない事に。 ビルドスクリプトは使わせて頂きます ( 私には 「ビルドシステム不変の原則」 でが、できなかったので )。 -- M.Tomi
- どうぞお使いくださいませ(^^)。ちなみに,このビルドスクリプトで作ったパッケージ(hoge-x.y.z-arch-Pn.tgz)は,同じ日に作ったものであれば,バイナリレベルで同一(パッケージ同士をcmpで比較して差異なし)を目指しており,今回のもそうなっているハズ,,,と言いたいところですが,ビルドしたディレクトリパス名がコマンド・ライブラリに埋め込まれてしまうようで,別のビルドマシンでも構いませんが,同じディレクトリパス名でビルドすることが条件となってます。 -- tamu
- うーむ,2.5.3でSmart Copy指定で保存するとSeg. faultしますか。avidemuxってChangeLogが見当たらないけど,見た目には2.5.2から2.5.3にかけて,プラグインやらスクリプトが増えてますね。2.5.2の方が安定してるのかな。 -- tamu
- 私もこだわりがあるわけではないですが Plamo-4.73b1 も出たのでそちらでもテストしてみます。 私の使用範囲では 2.5.2 ですね。 -- M.Tomi
- 4.73 でも Smart Copy 指定が出て、保存しようとすると Seg. fault しますね。 但し VMware 上ですけど。 時間ある時実マシン上でもテストしてみます。 -- M.Tomi
ML から引用 (良い題名が思いつかない ) †
M.Tomi (2010-07-27 (火) 17:06:23)
引用元 ここの 、後半部分です。このようなスクリプトも存在している様です。
あと、このビルドスクリプトは元になっているものが若干古いと思います。
# bash 版の最新のものがどこかにあるとか無いとかいう話を
# メールで読んだ記憶がありますが、うろ覚え。。。
特に gzip_dir は "." ".." を弾く処理(ls や tail のオプション)とか、
シンボリックリンクの元を辿る処理(/etc/bashrc で調整されていますが、
ls -l の $11 が不安定なので readlink を使う)とかが改変されています。
- 上記の変更は,現行のPlamoBuildスクリプト( ftp://plamo.linet.gr.jp/pub/Plamo-src/admin/PlamoBuild.template )に取り込まれ済みです。gzip_dir()で“.”と“..”を弾く処理は,従来files=`ls -f --indicator-style=none | tail -n+3`としていましたが,例のファイルステムの挙動のため,必ずしも“.”と“..”が1番目と2番目に来るとは限らなかったりするので,files=`ls -f --indicator-style=none | sed '/^\.\{1,2\}$/d'`のように変更しました。シンボリックリンクの元を辿る処理は,当初target=`ls -l $i | awk '{print $11}'`とかしていたと思いますが,lsの表示形式(TIME_STYLE)に影響しないように,target=`readlink $i`のようにしてあります。 -- tamu
- 取り上げていただいてすいません。files=`ls -a --indicator-style=none | tail -n+3` になっているものも多数存在します。私が認識していたものも若干古かったようです ^^; -- M.H
ビルドスクリプトの fscheck() 関数について †
ビルドスクリプト (PlamoBuild???)に fscheck() なる関数がある物があります。私はここで弾かれた事があります。でも現在では意味なさないようなので、ビルドスクリプトの fscheck 関数を呼んでる所をコメントアウトで良い様です -- M.Tomi
- fscheck()で弾かれる原因として,ビルドスクリプトを実行するディレクトリを含むファイルシステムがreiserfsだったり,ext[34]でdir_indexがオンになっている場合が考えられます。このような環境においても,ビルド自体は成功しパッケージが作られますが,パッケージに格納されるコマンドやライブラリ,manページ,ドキュメント類などの並び(つまり,そのパッケージをインストールするときの並び)が,ファイルシステム都合なランダムなものになり,その意味で美しくないので,fscheck()が通るファイルシステム上(ext2またはext[34]でdir_indexがオフ)で,ビルドスクリプトを実行することをお勧めします。一時期,普通にインストールした環境でfscheck()が失敗するPlamoバージョンがあったようです。特定のファイルシステムの挙動に振り回されない作りにするのが良さげですが,これをまともにやろうとすると,make installの動作を時系列に記録するなど,とてつもなく面倒になりそう。まあ,tmpfsなどにお試しでパッケージを作ってみたくて,fscheck()をコメントアウトするのはありだと思います。 -- tamu
- fscheck 関数が存在しないスクリプトが多数存在してるので、 その辺メンテナ ML 方面でも統一して頂けるとありがたいです > その意味で美しくないので -- M.Tomi
- まあ,ビルドスクリプトの流儀はメンテナによってさまざまなので,パッケージの体裁をなしていれば,あまりガチガチに統一することもなさげといった印象です。 -- tamu
- fscheck 関数の深い(隠された?) 意味を説明して下さりありがとうございます。私もパッケージが作成できればどのような方法でも良いと思います(その手順を説明するだけでもと)。 -- M.Tomi
kernel のビルドスクリプト †
玩式草子 の説明ページへのリンク †
ページ作成の動機 †
/usr/share 以下の PlamoBuild は様々な version が存在してる気がします。パッケージャさんの好みもあると思いますので、その辺の違いを説明( ... たぶんできないけど) ... 列挙する程度のページになると思います。 -- M.Tomi
- ビルド途中で Ctrl+C (コントロールキーと C キー の同時押し) をすると、パッケージ作成しますか?
となる事がありますが、 Ctrl+C で終了させれば不要なファイルは作成されません。 -- M.Tomi 2010-04-27 (火) 23:34:51
- Ctrl+C の trap を仕込んでいてくれればと、ちと思い付き。 M.Tomi