Homebrew公式中的备选依赖项(例如,用于gcc)

8

如何在Homebrew公式中描述替代依赖项?我想到了两种不同的类型。

1. 替代包

我的公式可以依赖于包PQ,但必须有一个。因此,我想要以下任一选项:

depends_on 'P'

或者

depends_on 'Q'

我需要至少一个。

2. 相同软件包的备选标志

我的公式需要另一个软件包 X 进行构建,它需要一个带有两个标志 AB 的软件包 X 。也就是说,我希望得到其中之一。

depends_on 'X' => [:build, 'A']

或者

depends_on 'X' => [:build, 'B']

我需要至少一个。

示例

这些备选依赖项有用的特定示例是依赖于gcc 的公式。 gcc 有多个软件包(例如gcc4 [3-9] ),可以通过上面的#1来支持。 gcc 具有一个标志 enable-all-languages ,它意味着enable-java ,因此如果需要使用gcj的公式,则可以使用#2来指定备选标志。

1个回答

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公式:

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唯一支持的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接