MacPorts: Como reconstruir uma porta específica?

4

Como eu forço o MacPorts a reconstruir uma porta específica? Eu fiz manualmente uma alteração em um makefile do MacPorts para vincular em uma biblioteca específica, mas o símbolo ausente ainda não pode ser encontrado. Talvez eu precise reconstruir, mas como faço isso sem limpar a porta (o que exclui o arquivo que eu modifiquei)?

Motivação

Usando o MacPorts, estou tentando instalar o Qt (ou seja, a qt4-mac-devel port) no Mac OS X Mountain Lion, mas falha com um símbolo indefinido ( _objc_msgSend_fixup ). Um tíquete MacPorts com um problema semelhante me levou a inspecionar o arquivo QtWebKit.pro ofensivo em:

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/

O predicado else na linha 254 verifica o Darwin 11 ou o 10.7 SDK (ambos estão no Lion e não estão disponíveis no Mountain Lion). Não há predicado na lista if-else do WebKit da 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:}

Como uma correção rápida suja , eu mudei a linha 254 para ser uma else incondicional. Quando tento testar isso re-executando o port install comando, vejo o mesmo erro original. Tenho certeza que o MacPorts não está nem olhando para a minha alteração porque eu reran o comando depois de inserir o texto lixo no arquivo e renomear o arquivo. Então, estou procurando uma maneira de forçar a reconstrução.

Coisas que eu tentei

  • Reconstrua com o sinalizador -s (para reconstruir a partir da origem): sudo port install -s qt4-mac-devel
  • Reconstrua depois de tocar em todos os arquivos de origem do Qt: find ${QT4_SRC} -name "*.cpp" -exec touch {} \;
  • Limpe a porta e, em seguida, reconstrua (sem ir ... port clean exclui o arquivo QtWebKit.pro , que contém minhas alterações necessárias)

Alguma sugestão? Obrigado.

    
por tony19 10.08.2012 / 00:27

1 resposta

2

Eu aconselho criar um arquivo de porta local para o qt4-mac-devel e adicionar suas alterações como um patch que é aplicado durante o processo de compilação.

  1. Crie um repositório portfile local: howto
  2. Copie o diretório portfile qt4-mac-devel (um diretório chamado "qt4-mac-devel" (caminho "/opt/local/var/macports/sources/rsync.macports.org/release/ports/aqua/qt4 -mac-devel / ") contendo o arquivo" Portfile "e o diretório" files ") em seu repositório local do portfile
  3. Crie um patch com suas alterações do código-fonte do qt4-mac-devel e adicione-o ao diretório "files".
  4. Edite seu Portfile qt4-mac-devel local para incluir a linha patchfiles yourpatch.diff
  5. Execute portindex novamente em seu repositório local do portfile
  6. Instale o qt4-mac-devel com port install -s qt4-mac-devel

Espero que isso possa ajudar.

    
por 20.08.2012 / 13:10