Upload
akio-obata
View
169
Download
1
Embed Size (px)
Citation preview
pkgsrc Internalstools, wapper and buildlink
OBATA Akio ([email protected])Aug. 9, 2014
2nd pkgsrc one conference
起こりうる問題
様々な環境で make install必要なツールを事前に用意
必要ないものを拾わない
微妙なツールのふるまい
などなど
01 29
pkgsrc framework
tools
wrapper
buildlink
02 29
tools
構築や実行時に必要なツールの扱い存在場所・名前
依存関係
振る舞い
USE_TOOLS+= perl:run gawk
03 29
what tools is supported?
Not documented anywhere! 文書化すべき
04 29
tool dependency
pkgsrc
bootstrap
build (default)
run
05 29
tool:pkgsrc
pkgsrc フレームワーク利用普通は関係ない
bootstrap で準備されいてるはず
06 29
tool:bootstrap
build 始める前に必要普通は関係ない
distfile を fetch
hash の計算
07 29
tool:build
build に必要TOOL_DEPENDS
cross build に影響
08 29
tool:run
実行時に必要full依存と解釈される
cross 時に???
09 29
how to work?
${TOOLS_DIR}/bin${WRKDIR}/.tools/bin
PATH の先頭に追加symbolic link
wrapper
alias
10 29
How defined (F/W)?
TOOLS_XXXX.<tool>=???
ALIASES ARGS CMDDEPENDS IGNOREPATH PLATFORMPREFIX SCRIPTSCRIPT_DFLTVALUE_GNU
see pkgsrc/mk/tools/
11 29
TOOLS_PLATFORM.<tool>
環境ごとのツールの場所pkgsrc/mk/tools.${OPSYS}.mk
sh builtin は名前だけ
引数付もある
ないものは pkgsrc から
12 29
TOOLS_CMD.<tool>
${TOOLS_DIR} の下へのパス標準: ${TOOLS_DIR}/bin/<tool>
13 29
TOOLS_ALIASES.<tool>
tool の別名一覧gawk: awk => gawk
autoconf213: autoconf => autoconf-2.13
TOOLS_CMD へのsymlink
14 29
TOOLS_PATH.<tool>
本物のtoolへの参照
full path だったりなかったり
TOOLS_PLATFORM.<tool>の一番前
値によってTOOLS_CMD変わるフルパス→symlink
名前→wrapper
↑それは標準ルール
15 29
TOOLS_ARGS.<tool>
tool を呼び出すときの引数mkdir -p とか
TOOLS_PLATFORM.<tool>の後ろ部分
指定あると wrapperTOOLS_PATH.<tool> TOOLS_ARGS.<tool> $@
= TOOLS_SCRIPT_DFLT.<tool>
16 29
TOOLS_SCRIPT.<tool>
任意の wrapper 作成
one liner または scirpt file名
振る舞いの差異を吸収入出力のフィルタ
環境変数の隠ぺい・偽装
17 29
TOOLS_VALUE_GNU.<tool>
GNU configure 向けの変数用_TOOLS_VARNAME_GNU.<tool> に変数名一覧
cofigure 時に変数に値として設定
普通は TOOLS_CMDLINE.<tool>= TOOLS_PATH.<tool> TOOLS_ARGS.<tool>
フルパスだったりいろいろ
18 29
TOOLS_DEPENDS.<tool>
pkgsrcから入れる場合の依存関係普通の DEPENDS の書式
<TOOL>_REQD
19 29
TOOLS_IGNORE.<tool>
USE_TOOLS にあっても無視宣言するだけでよい
循環依存を防止
20 29
TOOLS_PREFIX.<tool>
pkgsrcから入れた場合のPREFIX計算して求められるmk/find-prefix.mk
TOOLS_PATH.<tool> に使う
21 29
special shortcut
普通は TOOLS_CREATE+=fooだがTOOLS_NOOP
TOOLS_BROKEN
TOOLS_GNU_MISSING
TOOLS_FAIL
22 29
TOOLS_NOOP
何もしないで成功する不要なtoolを無視
でもbuildは続けたい
23 29
TOOLS_BROKEN
何もしないで失敗する不要なtoolを無視
build は止めたい
24 29
TOOLS_GNU_MISSING
GNU auto* tool の missingGNU missing への symlink
GNU auto* tool 用
patch 当てたとき
25 29
TOOLS_FAIL
失敗してwarningPlease add USE_TOOLS+=<tool> to...
開発者向け
26 29
tool variable
_TOOLS_VARNAME.<tool>単純な変数でtoolのpath参照
ex. awk = AWK
TOOLS_${v} = TOOLS_PATH.<tool>
TOOLS_CMDLINE_${v} = TOOLS_CMDLINE.<tool>
tool 作成前に利用可能
バイナリパッケージに埋め込み
27 29
prefer pkgsrc/native?
_TOOLS_USE_PKGSRC.<tool>yes
no
undocumented
28 29
続く?
案外面倒だった
pkgsrc framework の tool の説明
wrapper, buildlink は次回以降
29 29