Awk mapnik配置在rpmbuild期间失败,但手动成功

Awk mapnik配置在rpmbuild期间失败,但手动成功,awk,rpm,scons,rpmbuild,mapnik,Awk,Rpm,Scons,Rpmbuild,Mapnik,我已经在mapnik的google groups区域发布了这个问题,所以我将从那里转到c/p: 我已经解决这个问题好几天了。请注意上下文: 从RHEL 6.5上全新未经修饰的mapnik 2.2.0源开始: 首先,运行./configure,它只调用scons/scons.py,效果很好。正确完成,然后我运行make+makeinstall,得到我想要构建和安装的内容 我的目标是创建一个mapnik 2.2.0 RPM供内部使用。请不要建议使用官方的mapnik RPM或任何其他已经构建的map

我已经在mapnik的google groups区域发布了这个问题,所以我将从那里转到c/p:

我已经解决这个问题好几天了。请注意上下文:

从RHEL 6.5上全新未经修饰的mapnik 2.2.0源开始:

首先,运行./configure,它只调用scons/scons.py,效果很好。正确完成,然后我运行make+makeinstall,得到我想要构建和安装的内容

我的目标是创建一个mapnik 2.2.0 RPM供内部使用。请不要建议使用官方的mapnik RPM或任何其他已经构建的mapnik RPM,因为我在这里的全部目的是从源代码构建mapnik并创建我自己的RPM

也就是说,当我的RPM进入%build阶段并运行./configure时,它会冻结,而scons会检查freetype配置。我已经等了好几个小时,什么也没发生

查看生成的config.log文件后,会发现configure在执行类似以下内容的awk命令时失败:

awk '{print $\(NF-1\)}'
该命令将在该命令产生的字符串上执行:

/usr/bin/freetype-config --libs --cflags
我想知道,首先,如何解决这个问题,但第二,为什么这会手动工作,但在rpmbuild进程到达./configure命令时失败。我已确保同一用户自己在完全相同的文件上运行了两个./configure命令

我的第三个问题是:为什么配置步骤在这个问题上冻结,而不是抛出某种错误并停止

请注意,awk命令的问题是反斜杠,错误是:

awk: {print $\(NF-1\)} 
             ^ backslash not last character on line
当我删除反斜杠时,命令成功。从长远来看,删除反斜杠是否是正确的做法,我不知道

这似乎是某种python字符串解析/编码问题,但我不确定。真正让我困惑的是,为什么这是手动工作的,而当rpmbuild尝试这样做时却失败了

我唯一的想法是,rpmbuild环境和我配置的shell之间存在一些差异。这是什么,我不知道

感谢您提供的任何帮助。如果我能提供更多的上下文,请让我知道


更新:一个svn命令在awk失败后运行,但是缺少在-r选项之后传递的任何数字。我想知道这是否会导致挂起…想法?

如果在awk之后调用svn,则awk不挂起,是的,这肯定是挂起的原因。您应该能够通过查看ps faxww挂起时的输出,并查看该流程树中该点的条目,找出挂起的内容。您有自定义路径设置吗?安装了多个版本的awk?感谢您,它似乎挂在以下命令上:grep\s*/etc/init.d/*\s。我自己运行命令,命令挂起。思想?我将搜索源代码,看看是否可以找到该命令。这需要输入。它应该通过一个管道从其他命令获取fed数据,我认为这是失败的,所以grep等待,直到它获取一些似乎没有发生的数据。要么输入完全失败,即命令为grep$somefile和$somefile是空的,因此它最终成为grep。。。。它现在挂在标准输入上,或者应该生成输入的命令失败了,grep正在等待。好的,谢谢。我正在更仔细地研究ps-faxww命令,它看起来像是scons正在使用我的env环境,在它的一个python脚本中的某个地方。我的rpmbuild进程函数定义、变量等中有很多东西,我想知道这些东西中是否有任何东西可能会被丢弃。正如我在最初的帖子中提到的,手动调用./configure工作得很好,所以很可能是我的rpmbuild环境中的某些东西把事情搞砸了。关于如何从一个干净的环境开始,而不去除基本要素的想法?不是不调整构建中的命令或干净地运行SCON,即env./configure。但是,如果您使用现有的SRPM for mapnik来构建rpm,那么应该知道这是可行的。你是这么做的还是你自己写的?