pkgsrc internals - tools, wapper and buildlink

30
pkgsrc Internals tools, wapper and buildlink OBATA Akio ([email protected]) Aug. 9, 2014 2nd pkgsrc one conference

Upload: akio-obata

Post on 13-Apr-2017

167 views

Category:

Presentations & Public Speaking


1 download

TRANSCRIPT

Page 1: pkgsrc Internals - tools, wapper and buildlink

pkgsrc Internalstools, wapper and buildlink

OBATA Akio ([email protected])Aug. 9, 2014

2nd pkgsrc one conference

Page 2: pkgsrc Internals - tools, wapper and buildlink

起こりうる問題

様々な環境で make install必要なツールを事前に用意

必要ないものを拾わない

微妙なツールのふるまい

などなど

01 29

Page 3: pkgsrc Internals - tools, wapper and buildlink

pkgsrc framework

tools

wrapper

buildlink

02 29

Page 4: pkgsrc Internals - tools, wapper and buildlink

tools

構築や実行時に必要なツールの扱い存在場所・名前

依存関係

振る舞い

USE_TOOLS+= perl:run gawk

03 29

Page 5: pkgsrc Internals - tools, wapper and buildlink

what tools is supported?

Not documented anywhere! 文書化すべき

04 29

Page 6: pkgsrc Internals - tools, wapper and buildlink

tool dependency

pkgsrc

bootstrap

build (default)

run

05 29

Page 7: pkgsrc Internals - tools, wapper and buildlink

tool:pkgsrc

pkgsrc フレームワーク利用普通は関係ない

bootstrap で準備されいてるはず

06 29

Page 8: pkgsrc Internals - tools, wapper and buildlink

tool:bootstrap

build 始める前に必要普通は関係ない

distfile を fetch

hash の計算

07 29

Page 9: pkgsrc Internals - tools, wapper and buildlink

tool:build

build に必要TOOL_DEPENDS

cross build に影響

08 29

Page 10: pkgsrc Internals - tools, wapper and buildlink

tool:run

実行時に必要full依存と解釈される

cross 時に???

09 29

Page 11: pkgsrc Internals - tools, wapper and buildlink

how to work?

${TOOLS_DIR}/bin${WRKDIR}/.tools/bin

PATH の先頭に追加symbolic link

wrapper

alias

10 29

Page 12: pkgsrc Internals - tools, wapper and buildlink

How defined (F/W)?

TOOLS_XXXX.<tool>=???

ALIASES ARGS CMDDEPENDS IGNOREPATH PLATFORMPREFIX SCRIPTSCRIPT_DFLTVALUE_GNU

see pkgsrc/mk/tools/

11 29

Page 13: pkgsrc Internals - tools, wapper and buildlink

TOOLS_PLATFORM.<tool>

環境ごとのツールの場所pkgsrc/mk/tools.${OPSYS}.mk

sh builtin は名前だけ

引数付もある

ないものは pkgsrc から

12 29

Page 14: pkgsrc Internals - tools, wapper and buildlink

TOOLS_CMD.<tool>

${TOOLS_DIR} の下へのパス標準: ${TOOLS_DIR}/bin/<tool>

13 29

Page 15: pkgsrc Internals - tools, wapper and buildlink

TOOLS_ALIASES.<tool>

tool の別名一覧gawk: awk => gawk

autoconf213: autoconf => autoconf-2.13

TOOLS_CMD へのsymlink

14 29

Page 16: pkgsrc Internals - tools, wapper and buildlink

TOOLS_PATH.<tool>

本物のtoolへの参照

full path だったりなかったり

TOOLS_PLATFORM.<tool>の一番前

値によってTOOLS_CMD変わるフルパス→symlink

名前→wrapper

↑それは標準ルール

15 29

Page 17: pkgsrc Internals - tools, wapper and buildlink

TOOLS_ARGS.<tool>

tool を呼び出すときの引数mkdir -p とか

TOOLS_PLATFORM.<tool>の後ろ部分

指定あると wrapperTOOLS_PATH.<tool> TOOLS_ARGS.<tool> $@

= TOOLS_SCRIPT_DFLT.<tool>

16 29

Page 18: pkgsrc Internals - tools, wapper and buildlink

TOOLS_SCRIPT.<tool>

任意の wrapper 作成

one liner または scirpt file名

振る舞いの差異を吸収入出力のフィルタ

環境変数の隠ぺい・偽装

17 29

Page 19: pkgsrc Internals - tools, wapper and buildlink

TOOLS_VALUE_GNU.<tool>

GNU configure 向けの変数用_TOOLS_VARNAME_GNU.<tool> に変数名一覧

cofigure 時に変数に値として設定

普通は TOOLS_CMDLINE.<tool>= TOOLS_PATH.<tool> TOOLS_ARGS.<tool>

フルパスだったりいろいろ

18 29

Page 20: pkgsrc Internals - tools, wapper and buildlink

TOOLS_DEPENDS.<tool>

pkgsrcから入れる場合の依存関係普通の DEPENDS の書式

<TOOL>_REQD

19 29

Page 21: pkgsrc Internals - tools, wapper and buildlink

TOOLS_IGNORE.<tool>

USE_TOOLS にあっても無視宣言するだけでよい

循環依存を防止

20 29

Page 22: pkgsrc Internals - tools, wapper and buildlink

TOOLS_PREFIX.<tool>

pkgsrcから入れた場合のPREFIX計算して求められるmk/find-prefix.mk

TOOLS_PATH.<tool> に使う

21 29

Page 23: pkgsrc Internals - tools, wapper and buildlink

special shortcut

普通は TOOLS_CREATE+=fooだがTOOLS_NOOP

TOOLS_BROKEN

TOOLS_GNU_MISSING

TOOLS_FAIL

22 29

Page 24: pkgsrc Internals - tools, wapper and buildlink

TOOLS_NOOP

何もしないで成功する不要なtoolを無視

でもbuildは続けたい

23 29

Page 25: pkgsrc Internals - tools, wapper and buildlink

TOOLS_BROKEN

何もしないで失敗する不要なtoolを無視

build は止めたい

24 29

Page 26: pkgsrc Internals - tools, wapper and buildlink

TOOLS_GNU_MISSING

GNU auto* tool の missingGNU missing への symlink

GNU auto* tool 用

patch 当てたとき

25 29

Page 27: pkgsrc Internals - tools, wapper and buildlink

TOOLS_FAIL

失敗してwarningPlease add USE_TOOLS+=<tool> to...

開発者向け

26 29

Page 28: pkgsrc Internals - tools, wapper and buildlink

tool variable

_TOOLS_VARNAME.<tool>単純な変数でtoolのpath参照

ex. awk = AWK

TOOLS_${v} = TOOLS_PATH.<tool>

TOOLS_CMDLINE_${v} = TOOLS_CMDLINE.<tool>

tool 作成前に利用可能

バイナリパッケージに埋め込み

27 29

Page 29: pkgsrc Internals - tools, wapper and buildlink

prefer pkgsrc/native?

_TOOLS_USE_PKGSRC.<tool>yes

no

undocumented

28 29

Page 30: pkgsrc Internals - tools, wapper and buildlink

続く?

案外面倒だった

pkgsrc framework の tool の説明

wrapper, buildlink は次回以降

29 29