MacPorts: Jak odbudować konkretny port?

4

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-develPort) 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.proplik 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/

elsePredykatywnych 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-elseliś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 -sflagą (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 cleanusuwa QtWebKit.proplik, który zawiera moje niezbędne zmiany)

Jakieś sugestie? Dzięki.

tony19
źródło
Możliwy duplikat pytania o przepełnienie stosu stackoverflow.com/questions/10690159/…
Vortexfive

Odpowiedzi:

2

Radziłbym utworzyć lokalny portfel dla qt4-mac-devel i dodać twoje zmiany jako łatkę, która jest stosowana podczas procesu kompilacji.

  1. Utwórz lokalne repozytorium portfeli: howto
  2. Skopiuj katalog portfela qt4-mac-devel (katalog o nazwie „qt4-mac-devel” (ścieżka) /opt/local/var/macports/sources/rsync.macports.org/release/ports/aqua/qt4-mac- devel / ”) zawierający plik„ Portfel ”i katalog„ pliki ”) do lokalnego repozytorium portfeli
  3. Utwórz łatkę ze zmianami kodu źródłowego qt4-mac-devel i dodaj ją do katalogu „files”.
  4. Edytuj swój lokalny portfel qt4-mac-devel, aby uwzględnić linię patchfiles yourpatch.diff
  5. Uruchom portindexponownie w swoim lokalnym repozytorium portfeli
  6. Zainstaluj qt4-mac-devel z port install -s qt4-mac-devel

Mam nadzieję, że to może pomóc.

Vortexfive
źródło