ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenWrt之package: Using Dependencies

2022-08-13 11:34:10  阅读:238  来源: 互联网

标签:package SYMBOL DEPENDS Dependencies 选中 Using tcpdump packageb OpenWrt


目录


OpenWrt之package: Using Dependencies


前言

本文我翻译自OpenWrt的文档, 会讲到DEPENDS, @, &, || ()的分析, 难免存在部分问题, 欢迎指出, 有英语基础的同学可以直奔官方

https://openwrt.org/docs/guide-developer/dependencies

https://openwrt.org/docs/guide-developer/packages


总览 / Topic

一个package的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该行应该是什么样的


依赖类型 / Dependency types

  • 除非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

特别说明 / Special Notes

  • 可以在Makefile定义一个OpenWrt没有的Package, 并且在DEPENDS中调用
define Package/package-name/config
    ...config stuff
endef

包括以下命令:

命令 含义
select package 如果tcpdump被选中, package也会被选中.
select package if packageb 如果packageb被选中, package也会被选中
select package if SYMBOL 除非CONFIG_SYMBOL被定义, 否则package不可选
depends packageb tcpdump依赖于packageb, 除非packageb被选中,否则看不到tcpdump
depends packageb if packagec 如果packagec被选中, tcpdump会依赖packageb
select SYMBOL 如果tcpdump被选中, 设置为CONFIG_SYMBOL=y.
select SYMBOL if packageb 如果packageb被选中, 执行select SYMBOL的操作
select SYMBOL if SYMBOL2 如果SYMBOL2被定义, 执行select SYMBOL的操作

需要注意的是, 在Package/foo/config使用select bar时, 会选中bar编译, 但是当使用opkg install foo时, 不需要保证foo是否被安装


警告 / Caveats

包与包赖之间不能互相依赖 ( Package A 依赖Package B, Package B依赖Package A ) , 这种情况是不被允许的, 如果造成这种循环依赖, 在make menuconfig时会出现其他问题.


使用bool运算符 / Using boolean operators

  • DEPENDS:@SYMBOLDEPENDS:@SYMBOL:package 语法上支持if的bool运算符操作, 包括: !, &&, ||

  • DEPENDS:+SYMBOL:package语法对bool运算符操作有限制, !只能针对整个条件. 括号只是为了可读性, 是没有作用的. &&的优先级高于||. 所以+(YYY||FOO&&BAR):package如果当YYY被选中 或 FOOBAR都被选中, package才可以选.

  • +YYY||(FOO&&BAR):package可读性来说, 可能会更好

  • 但是+(YYY||FOO)&&BAR:package这种加了括号的情况并不会改变优先级, 括号只是为了可读性, 是没有作用的.


后话

翻译的还是比较水的, 不知道能不能看懂, 起码我自己是懂了.

欢迎关注微信公众号: NueXiniShare

Enjoy it ~

标签:package,SYMBOL,DEPENDS,Dependencies,选中,Using,tcpdump,packageb,OpenWrt
来源: https://www.cnblogs.com/NueXini/p/16582632.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有