【问题标题】:Pass multiple variables into rpmbuild as parameters for spec file将多个变量作为规范文件的参数传递到 rpmbuild
【发布时间】:2018-05-31 20:14:34
【问题描述】:

问题

我的 buildspec.yml 中有两个 env 变量

env:
  variables:
    BUILD_VERSION: "0.0.1"
    BUILD_RELEASE: "1"

我想将它们传递给rpmbuild 命令,但我似乎无法正确获取语法。


我的尝试

- rpmbuild --define "_topdir `pwd`" --define "_version '$BUILD_VERSION'" --define "_release '$BUILD_RELEASE'" -bb ./mydirectory/myspecfile.spec

我已经尝试了其他几个版本,但都没有运气。非常感谢您的帮助。

【问题讨论】:

    标签: yaml rpmbuild


    【解决方案1】:

    你应该可以使用

    rpmbuild --define '_version 0.0.1'
    

    但在这种情况下,您需要在规范文件中定义变量 _version;类似:

    %{!?_version: %define _version 0.0.0 }
    Version: %{_version}
    

    【讨论】:

    • 谢谢克里斯。我试图保留在 env 中为 buildspec 定义的变量。那可能吗?我希望在构建规范的顶部定义它们,以便为新构建轻松更改它们。
    • 我不明白你所说的“buildspec”是什么意思。我没有找到直接从外部定义像 Version 这样的变量的方法,这就是我想出这个解决方法的原因......
    • 对,我以为我在问题中解释了它。我的意思不是使用 rpmbuild --define '_version 1.0.0',而是在 buildspec.yml 中定义 env 变量,并从那里调用 buildrpm,同时将 env 变量作为 _version 和_build 在 .spec 中。我熟悉在规范中定义它们,但我希望在 buildrpm 调用中使用环境变量。
    • 我不知道在规范文件中使用环境变量...看看这里在规范文件中使用环境变量:stackoverflow.com/q/25895545/2082964
    • 我认为我们在这里有误会。我会接受您的回答并更清楚地重新发布问题。感谢您的意见!
    【解决方案2】:

    我也遇到过这个问题,可以用这个语法解决

    rpmbuild --bb --define "_topdir ${rpmdir}" --define "PRODUCT_VERSION 1.0" --buildroot /home/devuser/buildTest/buildroot --target x86_64 ./SPECS/html5.spec
    

    注意双引号很重要。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 2011-03-29
      • 2021-11-25
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多