Google rozwija modułowy system budowy Soong dla Androida

Firma Google rozwija system budowy Soong, mający na celu zastąpienie starych scenariuszy budowy platformy Android, opartych na wykorzystaniu narzędzia make. Soong proponuje użycie prostych deklaratywnych opisy reguł budowy modułów, określanych w plikach o rozszerzeniu „.bp” (blueprints). Format plików jest bliski JSON i w miarę możliwości odzwierciedla składnię i semantykę plików budowlanych Bazel. Kod napisany jest w języku Go i rozpowszechniany na licencji Apache 2.0.

Pliki budowlane Soong nie obsługują instrukcji warunkowych ani wyrażeń do rozgałęziania, a jedynie opisują strukturę projektu, stosowane przy budowie moduły i zależności. Pliki podlegające budowie są opisywane za pomocą masek i grupowane w pakiety, z których każdy przedstawia zbiór plików określających związane z nimi zależności. Możliwe jest definiowanie zmiennych. Zmienne i właściwości są ściśle typowane (typ zmiennych jest wybierany dynamicznie przy pierwszym przypisaniu, a dla właściwości statycznie w zależności od typu modułu). Złożone elementy logiki budowy są przenoszone do handlerów, napisanych w języku Go.

Soong współdzieli się z bardziej ogólnym projektem Blueprint, w ramach którego rozwijana jest niepowiązana z Androidem meta-system budowy, który na podstawie plików z deklaratywnymi opisami modułów, tworzy scenariusze budowy Ninja (zastąpienie make), opisujące polecenia, które należy wykonać w celu budowy, oraz zależności. Zamiast stosować złożone zasady lub język specyficzny dla dziedziny do określenia logiki budowy, w Blueprint stosuje się specyficzne dla budowanych projektów handlery w języku Go (Soong jest w zasadzie zestawem takich handlerów dla Androida).

Takie podejście pozwala dla dużych i zróżnicowanych projektów, takich jak Android, zrealizować złożone elementy logiki budowy w kodzie w wysokopoziomowym języku, zachowując jednocześnie możliwość wprowadzania zmian w modułach związanych z organizacją budowy i strukturą projektu za pomocą prostego deklaratywnego składni. Na przykład, w Soong wybór flag kompilatora dokonywany jest przez handler llvm.go, a zastosowanie specyficznych dla architektur sprzętowych ustawień odbywa się za pomocą handlera art.go, ale powiązanie plików z kodem odbywa się w pliku „.bp”.

cc_library {

srcs: [„generic.cpp”],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster