4

Как заставить 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 , который содержит мои необходимые изменения)

Какие-либо предложения? Благодарю.

1 ответ1

2

Я бы посоветовал создать локальный порт-файл для qt4-mac-devel и добавить ваши изменения в виде патча, который применяется во время процесса сборки.

  1. Создание локального репозитория portfile: HOWTO
  2. Скопируйте каталог qf4-mac-devel portfile (каталог под названием «qt4-mac-devel» (путь) /opt/local/var/macports/sources/rsync.macports.org/release/ports/aqua/qt4-mac- devel /"), содержащий файл" Portfile "и каталог" files ") в ваш локальный репозиторий portfile
  3. Создайте патч с вашими изменениями исходного кода qt4-mac-devel и добавьте его в каталог "files".
  4. Отредактируйте ваш локальный порт-файл qt4-mac-devel, добавив в него строку patchfiles yourpatch.diff
  5. Запустите portindex раз в вашем локальном хранилище portfile
  6. Установите qt4-mac-devel с port install -s qt4-mac-devel

Я надеюсь, что это может помочь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .