Waf (system kompilacji)

Waf
Deweloperzy Tomasza Nagya
Wersja stabilna
2.0.25 / 1 stycznia 2023 ; 2 miesiące temu ( 2023-01-01 )
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 .io

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:

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.

Zobacz też

Linki zewnętrzne