Google udvikler et modulært byggesystem Soong til Android

Google udvikler et bygge-system Soong, der skal erstatte de gamle byggescripts til Android-platformen, som er baseret på brug af make-værktøjet. Soong tilbyder at bruge enkle deklarative beskrivelser byggeregler for moduler, defineret i filer med endelsen «.bp» (blueprints). Filformatet ligner JSON og forsøger så vidt muligt at efterligne syntaksen og semantikken i byggefilerne Bazel. Koden er skrevet i Go og distribueres under Apache 2.0-licensen.

Soong-byggefiler understøtter ikke betingede operatorer og udtryk til at forgrene, men beskriver blot projektstrukturen, de moduler der anvendes under bygningen, og afhængighederne. Filerne der skal bygges beskrives ved hjælp af masker og grupperes i pakker, hvor hver pakke er en samling af filer med angivelse af tilknyttede afhængigheder. Det er muligt at definere variable. Variable og egenskaber er strengt typede (variable typer vælges dynamisk ved første tildeling, mens egenskaber types statisk afhængig af modultypen). Komplekse elementer i byggelogikken er flyttet til håndterere, der er skrevet i Go.

Soong væves ind i et mere generelt projekt Blueprint, hvor der udvikles et uafhængigt metabegribelsessystem for bygning, der, baseret på filer med deklarative beskrivelser af moduler, danner bygningsscripts Ninja (erstatning af make), der beskriver de kommandoer, der skal udføres for at bygge, og afhængighederne. I stedet for at anvende komplekse regler eller domænespecifikke sprog til at definere byggelogik, anvendes der specifikke håndterere på Go-sproget i Blueprint (Soong er i bund og grund et sæt af sådanne håndterere til Android).

Denne tilgang gør det muligt at implementere komplekse elementer i byggelogikken i kodning med et højniveau programmeringssprog til store og heterogene projekter som Android, samtidig med at man bevarer muligheden for at anvende enkle deklarative syntakser til at foretage ændringer i modulerne, der vedrører byggeorganisation og projektstruktur. For eksempel i Soong vælges compiler-flags af håndtereren llvm.go, mens anvendelsen af specifikke indstillinger for hardwarearkitekturer håndteres af art.go, men bindingen af filer med kode sker i filen «.bp».

cc_library {
…
srcs: [«generic.cpp»],
ark: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster