我正在尝试创建Homebrew formula for gtk-mac-integration。在bindings/python/gtkosx_application
中运行make失败:
/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/usr/local/Cellar/gtk-mac-integration/2.0.7/share/pygobject/2.0/codegen/h2def.py': [Errno 2] No such file or directory
make[3]: *** [gtkosx_application.defs] Error 2
这是因为Makefile尝试在错误的位置找到h2def.py
文件:
gtkosx_application.defs: $(headers)
$(PYTHON) $(datadir)/pygobject/2.0/codegen/h2def.py $(headers) > $@
我很清楚为什么会失败:$(datadir)
指向要安装的软件包的共享目录(gkt-mac-integration)。因为Homebrew将所有包安装到它们自己的前缀(/usr/local/Cellar/...
)中,所以对于gtk-mac-integration和pygobject来说它们是不一样的。
我知道可以使用
找出pygobject数据目录的位置pkg-config --variable=datadir pygobject-2.0
我不认为正确的解决方法是用上面的字符串替换Makefile中的datadir
吗?我应该如何调整configure.ac
和Makefile.am
以使其正常工作?
答案 0 :(得分:0)
是的,这听起来像构建系统中的一个错误。
您可以使用inreplace
工具对其进行修补。在def install
:
inreplace %w[bindings/python/gtkmacintegration/Makefile.am
bindings/python/gtkmacintegration/Makefile.in
bindings/python/gtkosx_application/Makefile.am
bindings/python/gtkosx_application/Makefile.in],
'$(datadir)/pygobject', |
%x[pkg-config --variable=datadir pygobject-2.0].chomp + '/pygobject'
(我试过这个。之后的公式就构建了。)
你应该向上游报告。他们应该更改自己的构建系统,以便在configure
脚本中对其进行排序。