Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile Wireshark rpm包装-设置版本号_Makefile_Wireshark_Configure_Autoconf - Fatal编程技术网

Makefile Wireshark rpm包装-设置版本号

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

我正在RHEL 7.2上运行configure.ac,我想知道是否有办法将发行号(在规范文件中定义)设置为一个变量,比如configure.ac生成的版本号,它会写入config.h文件,我想在某个地方设置一种BUILD_number变量,它将在执行期间获取导出变量的值。

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

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

例如,使用wireshark 2.0.1
configure.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@