2012-01-14 14 views
6

Obecnie nasze instrukcje instalacji są:Czy skrypt "configure" powinien być rozpowszechniany, jeśli dostępny jest plik configure.ac?

autoreconf -fi 
./configure 
... 

Etap autoreconf generuje plik z configure.ac i Makefile.in z Makefile.inconfigure. Jeśli jedna z zależności (na przykład pkg-config) nie jest zainstalowana, zarówno configure jak i autoreconf ulegają awarii, mimo że drukuje ona tajemniczy komunikat o błędzie.

Czy po zwolnieniu paczek źródłowych należy dostarczyć pakiet configure, czy nie? Jakie inne pliki należy dołączyć, jeśli ma być rozpowszechniany? Utworzono także katalogi build-aux i autom4te.cache i pliki.

+2

W repozytorium SCM nie powinno być obecne nic automatycznie wygenerowane (w tym configure); tarball powinien zawierać stan po autoreconf -fi/autogen.sh/bootstrap (lub po prostu użyć 'make dist'). –

+0

@ jørgensen Udziel mi odpowiedzi, nie zdawałem sobie w pełni sprawy z tego, że 'make dist' jest tu kluczem. – Lekensteyn

+0

Jestem ciekawy również * dlaczego * dobrze jest rozpowszechniać skrypt konfiguracyjny. Dla mnie wydaje się równie łatwe (i czystsze), aby uruchomić 'autogen.sh'. –

Odpowiedz

6

W repozytorium SCM nie powinno być obecnych nic automatycznego (w tym konfiguracja - ale tutaj znajdują się opinie deweloperów). Plik powinien zawierać stan po autoreconf -fi i/lub autogen.sh (lub dowolne dowolne wybrane przez ciebie imię). Po trzecie, możesz również użyć make dist, ale wymaga to, aby wszystkie pliki, które pojawią się w archiwum tara, były również wymienione w plikach Makefile.

+1

Mylisz się w tej kwestii, użytkownik końcowy nie musi mieć zainstalowanych autotools do budowania oprogramowania. – MoDJ

+1

@MoDJ Uwaga: dzięki temu rozwiązaniu użytkownik końcowy nie musi mieć zainstalowanych autotoolów (ale robią to programiści). –

3

Skrypt konfiguracyjny powinien być zbudowany przez opiekuna i rozpowszechniony w archiwum. Użytkownicy końcowi nigdy nie powinni ich dotykać, więc dobrym pomysłem jest zapewnienie tego poprzez AM_MAINTAINER_MODE, jeśli korzystasz z automake. Jeśli nie, upewnij się, że Twój Makefile.in nie generuje ponownie configure podczas uruchamiania dla użytkowników końcowych.

Pozwolić automake wygenerować dystrybucję dla Ciebie, jeśli chcesz wiedzieć, co jeszcze należy tam. Pomocniczy katalog build-aux i aclocal.m4 do, nie.

+0

Ah, właśnie zaglądałem do repozytorium PHP i wygląda na to, że paczki zawierające źródło z git nie powinny być używane do dystrybucji. Jeśli wydam archiwum zawierające skrypt 'configure' (podobnie jak pliki do pobrania z PHP), czy muszę użyć' make dist'? – Lekensteyn

+3

AM_MAINTAINER_MODE zawsze było złym pomysłem. Jego autor zgodził się z tym lata temu. Obecnie jest uważany (w większości) za przestarzały i mówi się o usunięciu go z automake. Nie używaj tego. –

+0

@Lekensteyn: 'make dist' świetnie się sprawdza przy tworzeniu archiwum dystrybucyjnego, po tym wszystkim, co jest jego zadaniem. – thiton

4

Twoja instrukcja instalacji jest straszliwie zepsuta. Użytkownik nie musi mieć zainstalowanego łańcucha autotool, aby zbudować oprogramowanie. Musisz rozprowadzić skrypt konfiguracyjny w swoim archiwum. Pamiętaj, że nie powinieneś uwzględniać skryptu configure w swoim systemie kontroli wersji. (Nie powinieneś używać systemu kontroli wersji jako systemu dystrybucji).

+0

Dzięki za odpowiedź, teraz wiem, że 'make dist' powinien być używany (działa idealnie do generowania pliku' configure' i innych). – Lekensteyn

+2

@Lekensteyn - Właściwie powinieneś zawsze używać 'make distcheck' –

+0

Dobrze wiedzieć, autotools ma wiele opcji, ale musisz tylko o tym wiedzieć, ponieważ dokumentacja nie jest zwięzła. http://www.gnu.org/software/automake/manual/html_node/Preparing-Distributions.html – Lekensteyn

Powiązane problemy