Google ontwikkelt Soong modulair montagesysteem voor Android

Google ontwikkelt een buildsysteem snel, ontworpen om de oude build-scripts voor het Android-platform te vervangen, gebaseerd op het gebruik van het make-hulpprogramma. Soong stelt voor om eenvoudige declaratieve te gebruiken beschrijvingen regels voor het samenstellen van modules, gegeven in bestanden met de extensie “.bp” (blauwdrukken). Het bestandsformaat ligt dicht bij JSON en herhaalt, indien mogelijk, de syntaxis en semantiek van assemblagebestanden Bazel. De code is geschreven in Go en gedistribueerd onder de Apache 2.0-licentie.

Soong-buildbestanden ondersteunen geen voorwaardelijke instructies en vertakkende expressies, maar beschrijven alleen de projectstructuur, modules en afhankelijkheden die bij het bouwen worden gebruikt. De te bouwen bestanden worden beschreven met behulp van maskers en gegroepeerd in pakketten, die elk een verzameling bestanden zijn met bijbehorende afhankelijkheden. Het is mogelijk om variabelen te definiëren. Variabelen en eigenschappen zijn strikt getypeerd (het type variabelen wordt dynamisch geselecteerd bij de eerste toewijzing, en voor eigenschappen statisch afhankelijk van het type module). Complexe elementen van assemblagelogica worden verplaatst naar handlers, geschreven in Go-taal.

Soong is verweven met een groter project plan, waarbinnen een meta-assemblagesysteem wordt ontwikkeld dat niet gebonden is aan Android en dat op basis van bestanden met declaratieve modulebeschrijvingen assemblagescripts genereert Ninja (een vervanging voor make), waarin de opdrachten worden beschreven die moeten worden uitgevoerd om te bouwen en de afhankelijkheden. In plaats van complexe regels of een domeinspecifieke taal te gebruiken om bouwlogica te definiëren, gebruikt Blueprint projectspecifieke handlers in de Go-taal (Soong is in wezen een reeks vergelijkbare handlers voor Android).

Deze aanpak maakt het voor grote en heterogene projecten, zoals Android, mogelijk om complexe elementen van assemblagelogica in code in een programmeertaal op hoog niveau te implementeren, terwijl de mogelijkheid behouden blijft om wijzigingen aan te brengen in modules die verband houden met assemblageorganisatie en projectstructuur met behulp van eenvoudige declaratieve syntaxis. . In Soong wordt de selectie van compilervlaggen bijvoorbeeld gedaan door de handler llvm.go, en de toepassing van instellingen die specifiek zijn voor hardware-architecturen wordt uitgevoerd door de handler kunst.go, maar het koppelen van codebestanden gebeurt in het “.bp”-bestand.

cc_bibliotheek {
...
srcs: ["generiek.cpp"],
boog: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Bron: opennet.ru

Voeg een reactie