Как заставить MacPorts перестроить определенный порт? Я вручную внес изменение в make-файл MacPorts, чтобы связать его с определенной библиотекой, но отсутствующий символ все еще не может быть найден. Возможно, мне нужно восстановить, но как мне сделать это без очистки порта (который удаляет файл, который я изменил)?
мотивация
Используя MacPorts, я пытаюсь установить Qt (то есть порт qt4-mac-devel
) в Mac OS X Mountain Lion, но он завершается неудачно с неопределенным символом (_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/
Предикат else
в строке 254 проверяет наличие Darwin 11 или SDK 10.7 (оба из которых находятся в Lion и недоступны в Mountain Lion).
В списке if-else
для WebKit Mountain Lion нет предиката.
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 {} \;
- Очистите порт, а затем восстановите его (нет go ...
port clean
удаляет файлQtWebKit.pro
, который содержит мои необходимые изменения)
Какие-либо предложения? Благодарю.