如何在 Homebrew 公式中描述替代依赖项?我想到了两种不同的类型。
1. 替代套餐
我的公式可以依赖包P
或 Q
,但它必须有其中之一。所以,我想要
depends_on 'P'
或者
depends_on 'Q'
我至少需要一个。
2. 同一个包的替代标志
我的公式需要另一个包
X
用于构建,它需要一个包 X
带有两个标志之一,A
和 B
.也就是说,我想要depends_on 'X' => [:build, 'A']
或者
depends_on 'X' => [:build, 'B']
我至少需要一个。
例子
这些替代依赖项有用的具体示例是依赖于
gcc
的公式。 . gcc
有多个包(例如 gcc4[3-9]
),这可以由上面的 #1 支持。 gcc
有一面旗帜 enable-all-languages
这意味着 enable-java
,所以如果一个公式需要 gcj
将使用 #2 来指定替代标志。
最佳答案
我最近发现可以通过选项有条件地确定依赖关系。一般方案是:
option 'with-Q', 'Depend on Q instead of P'
depends_on 'P' if !build.with?('Q')
depends_on 'Q' if build.with?('Q')
这也可以用于具有替代标志的一个依赖项。这个例子取自我的
pdftk
formula :option 'with-java', 'Build gcc using --with-java instead of --with-all-languages'
depends_on 'gcc' => ['with-all-languages'] if !build.with?('java')
depends_on 'gcc' => ['with-java'] if build.with?('java')
这不是处理替代依赖项的完美解决方案,但它可能是 Homebrew 唯一支持的解决方案。
关于gcc - Homebrew 公式中的替代依赖项(例如用于 gcc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115259/