【问题标题】:Wireshark rpm packaging - setting the release numberWireshark rpm 打包 - 设置发布号
【发布时间】:2016-02-14 22:19:46
【问题描述】:

我在 RHEL 7.2 上运行 configure.ac,我想知道是否有办法将版本号(在规范文件中定义)设置为变量,例如由configure.ac 并写入 config.h 文件,我想在某处设置一种 BUILD_NUMBER 变量,它会在执行过程中获取导出变量的值。

【问题讨论】:

  • 我以为wireshark几年前就改用cmake了。他们是改回使用 autoconf,还是您使用的是古老的 wireshark?

标签: makefile wireshark configure autoconf


【解决方案1】:

RPM 包的版本号由规范文件中的Release: 标签设置。生成一些规范文件,例如,使用 autoconf 替换模板中的版本号等值,例如 mypackage.spec.in,以获得 mypackage.spec

对wireshark 源代码的快速检查表明它使用了这种方案,但它的模板将发布号硬编码为1。您可以修改配置脚本和模板以添加您自己的选项。

例如,调整在wireshark 2.0.1 configure.ac 中使用的--with-XXX 选项的样式,您将添加这样的块(未经测试):

AC_ARG_WITH([release],
AC_HELP_STRING( [--with-release=@<:@1/no/4/5@:>@],
      [set release-number in package @<:@default=1@:>@]),
       with_release="$withval", with_release="unspecified")
case "x$with_release" in
x[[1-9]]*)
    RELEASE="$with_release"
    ;;
*)
    AC_MSG_ERROR(release is not a number: $with_release)
    ;;
esac
AC_SUBST(RELEASE)

并在packaging/rpm/SPECS/wireshark.spec.in 中使用RELEASE 变量,如您所见使用的VERSION 值:

Release:        @RELEASE@

或者,如果您使用 wireshark 源而不直接修改它,您的构建脚本可以

  • 解压源代码,
  • 更新规范文件,
  • 重新打包压缩包,
  • 将更新的 tarball 部署到您的构建区域

无论哪种方式,您都必须做一些工作。

【讨论】:

  • 我不是 rpm 打包方面的专家,发布管理而不是硬编码的最佳实践是什么?如果你看一下 wireshark.spec.in ,有一个 @version@ ​​变量,它正在由 configure.ac 更新,有没有什么好的方法可以用 Release 做同样的事情(EG 最佳实践) ?
  • 是否可以为RELEASE定义一个默认值,以防用户没有使用参数执行configure.ac
  • 运行 automake 生成/运行配置脚本,该脚本从 wireshark.spec.in 生成 wireshark.spec 文件;配置脚本提供了默认值,我给出了1(一)。
  • use case 中的表达式不适用于所有数字,仅适用于数字 1-9,我尝试了一个带有正则表达式的简单 ifre='^[0-9]+$',但它不能作为好吧,我在./configure 之前运行./autogen.sh。知道如何解决吗?
  • 我忘记了通配符 - 现在应该更接近我没有使用正则表达式,因为配置脚本应该是 POSIX。 (您可以在本地进行任何您想要的更改,但上游开发人员不太可能接受在配置脚本中使用非 POSIX 功能的更改)。
猜你喜欢
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多