rpmbuild没有从rpmrc文件中读取宏



我正试图在SLES-15上构建一个代码,在Makefile中它执行rpmbuild命令,如下所示。

rpmbuild -ba --rcfile $(BUILDROOT)/scripts/rpmrc --rmsource --target $(RPM_TARGET_ARCH) $(DEBUG_OPTION) $(RPMDIR)/SPECS/$(SPECFILE)

rpmrc文件包含以下内容:

macrofiles:/usr/lib/rmp/macross:/usr/lib-rmp/%{_target}/macross:/etc/rpm/redhat/macross:/specpo:/etc-rmp/macross.cdb:/etc-rpm/macross.prelink:/etc/rmp/maMacros.solve:/etc/rpm/macross

文件/home/build/builds/Sourcecode/rpmmacros具有定义

%_topdir/home/build/builds/code/build/Linux-i686-SLES11/Release/tools
#覆盖默认的__os_install_post宏
##不要剥离二进制文件的注释部分,因为这会导致aveserver的完整性检查失败

#XXX: 显然,默认情况下,只有RedHat在安装后剥离
#,因此显式剥离所有

%__os_install_post
/usr/lib/rmp/brp压缩
usr/lib/rmpbrp剥离
/usr/lib/rpm/brp剥离共享
/usr/lib-rmp/brp剥离静态存档
%{nil}

#为SuSE构建启用debuginfo包#XXX: 这需要elfutils包中的一个有效的eu条#它通常不随SLES一起提供%安装%{debug_package}
%%安装
%{nil}

但当执行rpmbuild命令时,它实际上选择了不同的"_topdir"值(它从/usr/lib/rmp/macross读取(,并失败,错误为找不到XXX。

通过向rpmbuild命令添加额外的宏定义(如下所示(,解决了_topdir问题

rpmbuild -ba **--define='_topdir $(RPMDIR)'** --rcfile $(BUILDROOT)/scripts/rpmrc --rmsource --target $(RPM_TARGET_ARCH) $(DEBUG_OPTION) $(RPMDIR)/SPECS/$(SPECFILE)

但后来失败了,出现了不同的目录未找到错误,我认为这是因为它没有从rpmrc文件中读取/拾取宏。有什么解决方案吗?为什么不从用户提供的macro/rpmrc文件中读取宏。

此代码构建在SLES-11上,但在SLES-15上失败
SLES-15的RPM版本版本版本:4.14.3发布:40.1
SLES-11的RPM版本:4.4.2.3发布:37.16.37

注意:rpmbuild正在从//usr/lib/rmp/suse/macross/usr/lib/rpm/macros中选择宏定义。此外,/usr/lib/rm/suse/macros会覆盖usr/lib/rm/macros中的定义。例如,如果">%_XXX"在/usr/lib/rmp/macrossusr/lib/rmp/suse/macross这两个文件中都定义,则rpmbuild从/usr/lib/rpm/suse/macros中选择%\XXX

RPM从v4.6起停止支持从rcfile读取宏文件。解决方案是将rpmmacros文件复制到~/.rpmmacros。另一种解决方案是提供用":"with--macros=来自rpmbuild。

最新更新