Jak zmusić MacPorts do odbudowania określonego portu? Ręcznie wprowadziłem zmianę do makefile MacPorts, aby utworzyć łącze do określonej biblioteki, ale brakującego symbolu nadal nie można znaleźć. Być może muszę przebudować, ale jak to zrobić bez czyszczenia portu (co usuwa zmodyfikowany przeze mnie plik)?
Motywacja
Używając MacPorts, próbuję zainstalować Qt (tj. qt4-mac-devel
Port) w Mac OS X Mountain Lion, ale kończy się niepowodzeniem z niezdefiniowanym symbolem ( _objc_msgSend_fixup
). Bilet MacPorts z podobnym problemem doprowadziła mnie do wglądu naruszające QtWebKit.pro
plik pod:
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
Predykatywnych on line 254 sprawdza Darwin 11 lub 10,7 SDK (z których oba są w Lion i niedostępne w Mountain Lion). Na if-else
liście nie ma predykatu dla zestawu Mountain Lion's 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:}
Jako brudną szybką poprawkę zmieniłem linię 254 na bezwarunkową else
. Kiedy próbuję to przetestować ponownie uruchamiając port install
polecenie, widzę ten sam oryginalny błąd. Jestem prawie pewien, że MacPorts nawet nie patrzy na moją zmianę, ponieważ zmieniłem polecenie po wprowadzeniu tekstu śmieci do pliku i zmianie nazwy pliku. Teraz szukam sposobu na wymuszenie odbudowy.
Rzeczy, których próbowałem
- Przebuduj z
-s
flagą (aby odbudować ze źródła):sudo port install -s qt4-mac-devel
- Odbuduj po dotknięciu wszystkich plików źródłowych Qt:
find ${QT4_SRC} -name "*.cpp" -exec touch {} \;
- Wyczyść port, a następnie przebuduj (no go ...
port clean
usuwaQtWebKit.pro
plik, który zawiera moje niezbędne zmiany)
Jakieś sugestie? Dzięki.
źródło
Odpowiedzi:
Radziłbym utworzyć lokalny portfel dla qt4-mac-devel i dodać twoje zmiany jako łatkę, która jest stosowana podczas procesu kompilacji.
patchfiles yourpatch.diff
portindex
ponownie w swoim lokalnym repozytorium portfeliport install -s qt4-mac-devel
Mam nadzieję, że to może pomóc.
źródło