MacPorts:如何重建特定端口?

MacPorts:如何重建特定端口?

如何强制 MacPorts 重建特定端口?我手动更改了 MacPorts makefile 以链接到特定库,但仍然找不到丢失的符号。也许我需要重建,但如何在不清除端口(这会删除我修改的文件)的情况下完成此操作?

动机

我尝试使用 MacPortsqt4-mac-devel在 Mac OS X Mountain Lion 中安装 Qt(即端口),但安装失败,并出现未定义符号 ( _objc_msgSend_fixup)。MacPorts 票遇到类似问题后,我检查了QtWebKit.pro以下有问题的文件:

QT4_SRC=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac-devel/qt4-mac-devel/work/qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/WebKit/qt/

254 行的谓词else检查 Darwin 11 或 10.7 SDK(两者都在 Lion 中,在 Mountain Lion 中不可用)。列表中没有if-else针对 Mountain Lion 的 WebKit 的谓词。

254:  } else: equals(DARWIN_MAJOR_VERSION, "11") | contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10.7.sdk") {
255:    LIBS += $$SOURCE_DIR/../WebKitLibraries/libWebKitSystemInterfaceLion.a
256:  }
257:}

作为一个肮脏的快速修复,我将第 254 行改为无条件else。当我尝试通过重新运行命令来测试这一点时port install ,我看到了相同的原始错误。我很确定 MacPorts 甚至没有看到我的更改,因为我在文件中输入了垃圾文本并重命名文件后重新运行了命令。所以,我现在正在寻找一种强制重建的方法。

我尝试过的事情

  • 重建-s标志(从源重建):sudo port install -s qt4-mac-devel
  • 触摸所有 Qt 源文件后重建:find ${QT4_SRC} -name "*.cpp" -exec touch {} \;
  • 清理端口然后重建(不行...port clean删除QtWebKit.pro包含我需要的更改的文件)

有什么建议吗?谢谢。

答案1

我建议为 qt4-mac-devel 创建一个本地端口文件,并将您的更改添加为在构建过程中应用的补丁。

  1. 创建本地端口文件存储库:如何
  2. 将 qt4-mac-devel 端口文件目录(名为“qt4-mac-devel”的目录(路径“/opt/local/var/macports/sources/rsync.macports.org/release/ports/aqua/qt4-mac-devel/”)包含文件“Portfile”和目录“files”)复制到本地端口文件存储库
  3. 使用您对 qt4-mac-devel 源代码的更改创建一个补丁,并将其添加到“文件”目录。
  4. 编辑本地 qt4-mac-devel Portfile 以包含以下行patchfiles yourpatch.diff
  5. portindex在本地 portfile 存储库中再次运行
  6. 使用以下命令安装 qt4-mac-develport install -s qt4-mac-devel

我希望这能有所帮助。

相关内容