Google розвиває модульну збірну систему Soong для Android

Компанія Google розвиває збірну систему Скоро, Покликану замінити собою старі сценарії складання платформи Android, засновані на використанні утиліти make. Soong пропонує використати прості декларативні опису правил збирання модулів, що задаються у файлах з розширенням ".bp" (blueprints). Формат файлів близький до JSON і по можливості повторює синтаксис та семантику складальних файлів. Базела. Код написаний мовою Go та поширюється під ліцензією Apache 2.0.

Складальні файли Soong не підтримують умовних операторів та виразів для розгалуження, а лише описують структуру проекту, які застосовуються при складанні модулів та залежності. Файли, що підлягають складання, описуються за допомогою масок і групуються в пакети, кожен з яких являє собою колекцію файлів із зазначенням пов'язаних з ними залежностей. Можливе визначення змінних. Змінні та властивості строго типізовані (тип змінних вибирається динамічно при першому присвоєнні, а для властивостей статично залежно від типу модуля). Складні елементи складальної логіки винесені в обробники, написані мовою Go.

Soong переплітається із більш загальним проектом План, в рамках якого розвивається не прив'язана до Android мета-система збирання, яка на основі файлів з декларативними описами модулів, формує складальні сценарії ніндзя (Заміна make), що описують команди, які необхідно виконати для складання, та залежності. Замість застосування складних правил або предметно орієнтованої мови для визначення логіки складання, в Blueprint застосовуються специфічні для проектів, що збираються обробники мовою Go (Soong є по суті набором подібних обробників для Android).

Подібний підхід дозволяє для великих та різнорідних проектів, таких як Android, реалізувати складні елементи складальної логіки в коді високорівневою мовою програмування, при цьому зберігаючи можливість за допомогою простого декларативного синтаксису вносити до модулів зміни, пов'язані з організацією складання та структурою проекту. Наприклад, у Soong вибір прапорів компілятора проводиться обробником llvm.go, а застосування специфічних для апаратних архітектур налаштувань проводиться обробником art.go, але прив'язка файлів із кодом здійснюється у файлі «.bp».

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

Джерело: opennet.ru

Додати коментар або відгук