OpenWrt之パッケージ: 依存関係の使用
序文
DEPENDS
この記事では、OpenWrt ドキュメントを翻訳して、 、@
、の分析について説明しますが、&
必然的にいくつかの問題が発生します。||
()
https://openwrt.org/docs/guide-developer/dependency
https://openwrt.org/docs/guide-developer/packages
概要・トピックス
パッケージ Makefile には次のセクションが含まれています。
define Package/tcpdump/default
SECTION:=net
CATEGORY:=Network
DEPENDS:=+libpcap
TITLE:=Network monitoring and data acquisition tool
URL:=http://www.tcpdump.org/
endef
この記事では、DEPENDS:=+libpcap
ライン
依存関係の種類 / 依存関係の種類
libpcap
選択しないとtcpdump
選択できません
DEPENDS:=libpcap
- 選択すると
tcpdump
、libpcap
も選択されます
DEPENDS:=+libpcap
tcpdump
選択されている場合はarpd也会被选中
、libpcap
この時点で選択可能ですが、そうでない場合は選択できません。
DEPENDS:=+PACKAGE_arpd:libpcap
BUSYBOX
入っていない場合はHOSTNAME
選択してくださいnet-tools-hostname
DEPENDS:=+!BUSYBOX_CONFIG_HOSTNAME:net-tools-hostname
- このオプションは存在
USB_SUPPORT
(定義)されている必要があります。そうでない場合、tcpdump
このオプションは表示されません。
DEPENDS:=@USB_SUPPORT
tcpdump
選択すると、KERNEL_DEBUG_FS
関連項目 (選択した項目を含む) が自動的に設定されます。
DEPENDS:=+@KERNEL_DEBUG_FS
注:使用時にインストールされているかどうかopkg install
は確認されません。KERNEL_DEBUG_FS
net-tools-hostname
選択されていない場合は、BUSYBOX_CONFIG_HOSTNAME
関連する項目が自動的に設定されます (選択済みも含む)。
DEPENDS:=+@!PACKAGE_net-tools-hostname:BUSYBOX_CONFIG_HOSTNAME
特記事項・特記事項
Makefile
OpenWrt にないものを定義してPackage
、DEPENDS
それを呼び出すことができます。
define Package/package-name/config
...config stuff
endef
次のコマンドを含めます。
注文 | 意味 |
---|---|
パッケージを選択 | チェックが入っている場合はtcpdump 、package こちらもチェックされます。 |
packageb の場合はパッケージを選択 | 選択するとpackageb 、package も選択されます |
SYMBOL の場合にパッケージを選択 | CONFIG_SYMBOL 定義されていない限りpackage オプションではありません |
パッケージに依存しますb | tcpdump に依存しますpackageb 。packageb 選択しないと表示されませんtcpdump |
packagec の場合は packageb に依存します | 選択した場合はpackagec 、tcpdump 以下に依存しますpackageb |
シンボルを選択 | チェックを入れると にtcpdump 設定されますCONFIG_SYMBOL=y 。 |
パッケージbの場合はSYMBOLを選択 | 選択した場合packageb 、実行するselect SYMBOL アクション |
SYMBOL2 の場合は SYMBOL を選択 | 定義されている場合SYMBOL2 、実行するselect SYMBOL アクション |
Package/foo/config
なお、を使用する場合はselect bar
コンパイルが選択されますbar
が、 を使用する場合はインストールされているかどうかopkg install foo
を確認する必要はありません。foo
警告/警告
パッケージとパッケージの依存関係は相互に依存することはできません ( Package A
depend on Package B
、Package B
depend on Package A
)。この状況は許可されません。この種の循環依存関係が発生すると、make menuconfig
やがて他の問題が発生します。
ブール演算子の使用
-
DEPENDS:@SYMBOL
またDEPENDS:@SYMBOL:package
、 if のブール演算子演算を構文的にサポートします。、!
、&&
||
-
DEPENDS:+SYMBOL:package
構文には bool 演算子の操作に関する制限があり、!
条件全体にのみ使用できます。括号
読みやすくするためだけであり、効果はありません。&&
優先順位はそれよりも高くなります||
。したがって、+(YYY||FOO&&BAR):package
when がYYY
選択されている場合、またはFOO
両方がBAR
選択されている場合、package
選択することができます。 -
+YYY||(FOO&&BAR):package
読みやすさを考えると、もっと良いかもしれません -
ただし、
+(YYY||FOO)&&BAR:package
この括弧は優先順位を変更するものではなく、括号
読みやすくするためだけのものであり、効果はありません。
あとがき
翻訳はまだ比較的弱いので、理解できるかどうかはわかりませんが、少なくとも私自身は理解できます。
WeChat 公開アカウント: NueXiniShare にご注目ください。
楽しんでください〜