Makefile Wireshark rpm包装-设置版本号
我正在RHEL 7.2上运行configure.ac,我想知道是否有办法将发行号(在规范文件中定义)设置为一个变量,比如configure.ac生成的版本号,它会写入config.h文件,我想在某个地方设置一种BUILD_number变量,它将在执行期间获取导出变量的值。RPM包的版本号由spec文件中的Makefile Wireshark rpm包装-设置版本号,makefile,wireshark,configure,autoconf,Makefile,Wireshark,Configure,Autoconf,我正在RHEL 7.2上运行configure.ac,我想知道是否有办法将发行号(在规范文件中定义)设置为一个变量,比如configure.ac生成的版本号,它会写入config.h文件,我想在某个地方设置一种BUILD_number变量,它将在执行期间获取导出变量的值。RPM包的版本号由spec文件中的release:标记设置。生成一些规范文件,例如,使用autoconf替换模板中的版本号等值,例如mypackage.spec.in,以获取mypackage.spec 快速检查wireshar
release:
标记设置。生成一些规范文件,例如,使用autoconf替换模板中的版本号等值,例如mypackage.spec.in,以获取mypackage.spec
快速检查wireshark的源代码表明它使用了此方案,但其模板将发布号硬编码为1
。您可以修改配置脚本和模板以添加自己的选项
例如,使用wireshark 2.0.1configure.ac
中使用的XXX选项调整的样式,您可以添加如下块(未测试):
或者,如果您使用wireshark源代码而不直接修改它,那么您的构建脚本可以
- 打开来源
- 更新等级库文件
- 重新包装柏油球
- 将更新的tarball部署到构建区域
无论如何,您都必须做一些工作。我不是rpm打包方面的专家,发布管理的最佳实践是什么,而不是硬编码?如果您查看wireshark.spec.in,其中有一个@version@变量,该变量正在由configure.ac更新。是否有任何好方法可以对该版本执行相同的操作(例如最佳实践)?是否可以为版本定义默认值
,如果用户没有使用参数执行configure.ac
,运行automake会生成/运行configure脚本,该脚本会从wireshark.spec.in生成wireshark.spec文件;configure脚本提供了默认值,我给出的值是1
(一)。用例中的表达式不适用于所有数字,只适用于数字1-9
,我尝试了一个简单的if
正则表达式:re='^[0-9]+$”
,但它也不起作用,我在运行/configure
之前运行/autogen.sh
。知道如何修复它吗?我忘记了一个通配符-现在应该更接近了我没有使用正则表达式,因为配置脚本应该是POSIX。(您可以在本地进行任何更改,但上游开发人员不太可能接受在配置脚本中使用非POSIX功能的更改)。他们是否改回了使用autoconf,或者您使用的是古老的wireshark?
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)
Release: @RELEASE@