Waf (system kompilacji)
Deweloperzy | Tomasza Nagya |
---|---|
Wersja stabilna | 2.0.25 / 1 stycznia 2023
|
Magazyn | |
Napisane w | Pyton |
System operacyjny | MS Windows , POSIX |
Typ | Narzędzia programistyczne |
Licencja | Nowa licencja BSD (kod źródłowy), CC-BY-NC-ND (dokumentacja) |
Strona internetowa |
Waf to narzędzie do automatyzacji kompilacji zaprojektowane w celu pomocy w automatycznej kompilacji i instalacji oprogramowania komputerowego . Jest napisany w Pythonie i utrzymywany przez Thomasa Nagy'ego.
Kod źródłowy Waf jest oprogramowaniem typu open source , wydanym na warunkach nowej licencji BSD , chociaż towarzysząca mu dokumentacja jest objęta licencją CC-BY-NC-ND , która zabrania zarówno modyfikacji, jak i komercyjnej redystrybucji: uniemożliwia to dostawcom takim jak projekt Debian z dołączania dokumentacji Waf do swoich dystrybucji.
Historia
Thomas Nagy stworzył narzędzie do automatyzacji kompilacji o nazwie BKsys , które zostało zaprojektowane tak, aby działało na SCons , zapewniając funkcjonalność wyższego poziomu, podobną do Autotools . Było to częścią wysiłków zmierzających do odejścia KDE od Autotools do bardziej nowoczesnego systemu kompilacji na początkowych etapach cyklu rozwoju KDE 4 . BKsys/SCons został wybrany przez społeczność KDE jako nowy system standardowej kompilacji. Kiedy Thomas Nagy zdecydował, że podstawowe problemy SCons (zwłaszcza słaba skalowalność) są zbyt złożone i czasochłonne do naprawienia, rozpoczął kompletną przepisać , który nazwał Waf . Ponieważ BKsys został rozpoznany jako ślepy zaułek, KDE zdecydowało się zamiast tego przejść na CMake ; jednak Waf nadal był utrzymywany jako indywidualny projekt i od tego czasu był świadkiem obfitego rozwoju i przyjęcia przez inne społeczności. [ potrzebne źródło ]
Cechy
Funkcje wafa:
- Przenośny do systemów Unix i innych niż Unix
- Lekki
- Oferuje kompletny język programowania Turinga (podobny do SCons )
- Obsługa standardowych celów: konfiguruj, buduj, czyść, usuwaj, instaluj i deinstaluj
- Konstrukcje równoległe
- Kolorowe wyjście i wyświetlacz paska postępu
- Skrypty to moduły Pythona
- Front-end skryptu XML i dedykowany, łatwy do przeanalizowania tryb „wyjścia IDE”, aby ułatwić interakcję ze zintegrowanymi środowiskami programistycznymi
- Modułowy schemat konfiguracji z konfigurowalnym analizowaniem wiersza poleceń
- Tryb demona do ponownej kompilacji w tle
- Inteligentnie wyszukuj pliki źródłowe ( podobnie jak glob() ), aby ułatwić obsługę skryptów
- Obsługa globalnej pamięci podręcznej obiektów w celu uniknięcia niepotrzebnych rekompilacji
- Obsługa testów jednostkowych uruchamianych w programach na końcu kompilacji
Waf obsługuje:
- Preprocesor C / C++ do obliczania zależności
- Fortran jest obsługiwany przez automatyczne wykrywanie zależności modułów
- Obsługa programów OCaml i hybrydowych oraz programów GNOME
- Obsługa języka programowania D (obsługiwane są zarówno gdc, jak i dmd)
- Wsparcie dla projektów C# , Java , Python
- Zapewnia różne narzędzia do przetwarzania DocBook , stron man , intltool/msgfmt
Waf jest napisany w Pythonie . Zamiast być przeznaczony do instalacji jako wymagany element oprogramowania systemowego, jak w przypadku systemów kompilacji, takich jak GNU make , jest dystrybuowany jako skrypt zawierający osadzony plik archiwum , przeznaczony do uruchomienia w celu rozpakowania źródeł Waf w ramach własnego źródła projektu drzewo.
Licencja
Kod źródłowy Waf jest udostępniany na warunkach Nowej Licencji BSD . Jednak intencją Nagy jest, aby Waf był włączony jako część indywidualnego projektu oprogramowania, a nie instalowany jako ogólnosystemowy system kompilacji. W tym celu dokumentacja dostarczana jako część wydania Waf jest objęta CC-BY-NC-ND , która zabrania zarówno modyfikacji, jak i komercyjnej redystrybucji: ta zmiana została wprowadzona w celu utrudnienia dystrybucji Debiana projekt od włączenia Waf jako pakietu oprogramowania obejmującego cały system. Podczas gdy Debian początkowo po prostu powstrzymał się od dołączania dokumentacji, bezpośrednia prośba Nagy'ego sprawiła, że Debian usunął Waf i zniechęcił go do używania jako systemu kompilacji.
Deweloper Debiana, Ian Jackson, wyraził opinię, że używanie Waf w postaci dystrybuowanej w systemie kompilacji oprogramowania na warunkach Powszechnej Licencji Publicznej GNU ( GNU GPL) byłoby naruszeniem warunków tej licencji, ponieważ skrypt rozpakowujący tworzy zaciemnioną kopię swojego oryginalny kod źródłowy zamiast „preferowanej formy modyfikacji”, zgodnie z wymaganiami GPL dotyczącymi systemów kompilacji.