【问题标题】:Alternative dependencies in a Homebrew formula (e.g. for use with gcc)Homebrew 公式中的替代依赖项(例如与 gcc 一起使用)
【发布时间】:2014-02-02 14:43:49
【问题描述】:

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

1。替代包

我的公式可以依赖包PQ,但它必须有其中之一。所以,我想要一个

depends_on 'P'

depends_on 'Q'

我至少需要一个。

2。同一包的替代标志

我的公式需要另一个包X 来构建,它需要一个包X 带有两个标志之一,AB。也就是说,我想要一个

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

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

我至少需要一个。

示例

这些替代依赖项有用的具体示例是取决于gcc 的公式。 gcc 有多个包(例如gcc4[3-9]),上面的#1 可以支持这些包。 gcc 有一个标志 enable-all-languages 暗示 enable-java,所以如果一个需要 gcj 的公式将使用 #2 来指定替代标志。

【问题讨论】:

    标签: gcc dependencies homebrew


    【解决方案1】:

    我最近发现,可以通过选项有条件地确定依赖关系。总体方案是:

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

    【讨论】:

      猜你喜欢
      • 2019-11-30
      • 2012-02-29
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2014-06-01
      相关资源
      最近更新 更多