Перейти до основного вмісту

Створіть Neat.

Цей посібник містить інформацію про створення Neat з вихідного коду. Інструкції щодо встановлення попередньо зібраного пакета див. у Neat Library.

build.sh — це основний скрипт для запуску процесу збирання. Він виконує перевірку залежностей, синхронізацію необов’язкових залежностей, налаштування та збирання за допомогою CMake, створення необов’язкової документації, перевірку правильності встановлення та створення пакета.

Середовища розробки​

build.sh автоматично визначає активне середовище:

  • Modalix, нативне середовище DevKit.
  • Середовище Palette SDK (крос-компіляція).

Ви можете виконувати одні й ті самі команди build.sh в будь-якому з цих середовищ.

Необхідні умови для перехресної компіляції.​

Використовуйте Palette SDK для перехресної компіляції. Виконайте Встановлення SDK на підтримуваному хості Ubuntu, Windows/WSL або macOS, а потім відкрийте оболонку SDK:

sima-cli sdk neat

SDK містить набір інструментів і sima-cli. Скрипт Core build.sh готує відповідні залежності Scheduler та LLiMa; див. Локальні залежності. У підключеному SDK команда ./build.sh --install також розгортає відповідні артефакти на DevKit. Для нативних збірок на DevKit SDK не потрібен.

Параметри збірки​

Підтримувані параметри build.sh:

  • --dev-only: Збирайте лише основну бібліотеку та файли заголовків (за замовчуванням).
  • --all: Створення бібліотеки + тестів + навчальних матеріалів + Python-пакета; увімкнення документації та залежностей.
  • --python: Створіть прив’язки Python (pyneat) на додаток до обраних цільових об’єктів.
  • --install-neat-internals, --install-deps: Завантажте та встановіть артефакти залежностей перед збіркою.
  • --doc: Створюйте лише документацію.
  • --install: Після збірки/пакування встановіть створені артефакти в поточне середовище. У режимі парної роботи Palette SDK, це також розгортає та встановлює відповідні артефакти на парному DevKit.
  • --no-dist: Пропустіть етап створення дистрибутивного пакета.
  • --clean: Видаліть build/ перед налаштуванням.
  • --no-doc: Пропустити процес створення документації (навіть якщо вказано --all).
  • --no-node: Пропустіть встановлення Node.js (збірка документації може завершитися невдало, якщо Node не встановлено).
  • --install-deps-only: встановіть системні залежності та заголовкові файли залежностей, а потім завершіть роботу.

Кеш компілятора​

build.sh автоматично вмикає sccache, і його кеш залишається доступним після виконання команди --clean. Локальні збірки використовують локальний дисковий кеш користувача. Vulcan надає окремі захищені кеші для гілок develop і main; експериментальна гілка створює ізольований кеш, до якого можна здійснювати записи, на основі найближчої захищеної базової гілки та зберігає його до видалення гілки.

Див. Neat sccache. Короткий довідник. для отримання інформації про локальні налаштування, правила доступу до хмари, простори імен кешу, статистику, перевірку та усунення несправностей.

Типові конфігурації​

Лише основна бібліотека (за замовчуванням):

./build.sh

Повна збірка (бібліотека, тести, навчальні матеріали, документація, пакет, пакування):

./build.sh --all

Основна бібліотека + прив’язки для Python:

./build.sh --dev-only --python

Тільки для документації:

Ця команда також працює на macOS.

./build.sh --doc

Під час створення документації генерується довідник API для Insight на основі специфікації OpenAPI, яку завантажує autodoc за адресою build/autodoc/insight/neat_insight/openapi.json. Для локальної розробки ви можете замінити значення за замовчуванням на INSIGHT_OPENAPI_SPEC:

INSIGHT_OPENAPI_SPEC=../insight/neat_insight/openapi.json ./build.sh --doc

Відносні шляхи перезаписуються, починаючи з кореневої директорії репозиторію Core, і перетворюються на абсолютні шляхи перед запуском генератора Docusaurus. Якщо вибраний файл не існує, крок генерації API Insight пропускається, і про це повідомляється.

Повна збірка з очищенням:

./build.sh --all --clean

Встановіть необхідні компоненти, не збираючи основний код:

./build.sh --install-deps-only

Результати​

  • Створення дерева: build/
  • Результат створення сайту Docusaurus (під час виконання процесу збирання документації): website/build/
  • Встановлюємо префікс для перевірки цілісності: унікальна тимчасова директорія (${TMPDIR:-/tmp}/sima-neat-install-test.XXXXXX), яка відображається під час збірки; видаляється у разі успішного завершення, зберігається у разі невдачі для подальшого аналізу.
  • Пакети Neat з артефактами (*.deb) створюються під час повних збірок у Linux, якщо не використовується опція --no-dist.
  • Пакет додаткових компонентів (*extras.tar.gz) створюється під час повної збірки в Linux, якщо не використовується параметр --no-dist.
  • Пакет Python у форматі wheel (dist/*.whl) створюється, коли ввімкнено збірку Python.

Пакет Python wheel містить розширення _pyneat_core, створене під час основної збірки CMake. Під час створення пакета wheel не відбувається налаштування або повторна компіляція окремого дерева CMake, тому бібліотека, пакети DEB, додаткові архіви та пакет wheel використовують одну й ту саму компіляцію.

Створення профілів і параметрів CMake​

Основний файл CMakeLists.txt фреймворку містить декілька параметрів, які визначають, що саме буде зібрано та яким чином. Параметри, перелічені нижче, є найважливішими.

Створюйте профілі.​

Ця платформа підтримує три визначені профілі:

ПрофільПриклад використанняЩо було скомпільовано?
ВиробництвоВерсії програмного забезпечення, призначені для кінцевих користувачів.Усі загальнодоступні вузли, завантаження з архіву моделей, Modalix, оптимізовані.
РозробникІнженери, які розробляють програмні платформи.Набір для розробки + налагодження вузлів + розширена діагностика + тестування.
Ізольоване середовищеБагатоарендне розгортанняНабір для розробки + посилені стандартні налаштування безпеки для архіву моделей.

Обирайте під час налаштування через -DSIMA_NEAT_PROFILE=Production|Developer|Sandbox, або прийміть значення за замовчуванням у файлі CMakeLists.txt.

Найпоширеніші параметри CMake​

ВаріантЗа замовчуваннямЕфект
SIMA_NEAT_BUILD_TESTSON (Розробник)Зберіть набір тестів gtest. Відключіть його для прискорення процесів безперервної інтеграції під час створення виробничих версій.
SIMA_NEAT_BUILD_TUTORIALSOFFЗберіть виконувані файли для навчального посібника.
SIMA_NEAT_BUILD_PYTHONONЗберіть модуль pyneat nanobind.
SIMA_NEAT_BUILD_INTERNALSOFF (загальнодоступний)Створіть внутрішній проміжний шар конвеєра (core/src/pipeline/internal/sima/).
SIMA_NEAT_ENABLE_TVM_FALLBACKONСкомпілюйте резервні ядра, що підтримуються TVM, для операцій, які не може обробляти MLA.
SIMA_NEAT_ENABLE_RTSPONСтворіть вузли джерела/приймача RTSP.
SIMA_NEAT_DEBUG_PLUGINSOFFПеренаправляйте вивід налагодження плагіна GStreamer у стандартний вихідний потік (stdout).
SIMA_NEAT_USE_SYSTEM_GSTREAMERON (хост) / OFF (перехресний)Замість того, щоб включати його до складу, використовуйте системну версію GStreamer для встановлення зв’язку.
SIMA_NEAT_WARN_AS_ERROROFFПідвищуйте пріоритет попереджень під час компіляції, перетворюючи їх на помилки. Рекомендовано для систем безперервної інтеграції (CI).

Налаштування інструментарію​

Для перехресної компіляції, орієнтованої на Modalix:

cmake -B build \
-DCMAKE_TOOLCHAIN_FILE=cmake/modalix.cmake \
-DSIMA_NEAT_PROFILE=Production

Для розробки на стороні хоста:

cmake -B build -DSIMA_NEAT_PROFILE=Developer

Щоб перелічити, які властивості доступні у вашого об’єкта:

cmake -L -B build # list all cache variables
cmake -LA -B build # include advanced

Файл CMakeLists.txt найвищого рівня є джерелом істини для назв параметрів.

Core успадковує прошивку й точну версію sysroot із квитанції вибраного пакета Scheduler, не оголошуючи прошивку окремо. Платформа й канал SDK у квитанції мають відповідати Core. CI зберігає цю політику разом з артефактами збірки та вибирає DevKit із точною прошивкою без резервного варіанта. Перед встановленням LLiMa Core порівнює опубліковані прошивку, платформу й канал SDK зі Scheduler та перевіряє, що вибрані DEB належать тій самій публікації. LLiMa не публікує точної квитанції sysroot, тому ця перевірка підтверджує заявлену сумісність прошивки, а не ідентичність переліків пакетів sysroot. Для локальної збірки --llima PATH вкажіть корінь дистрибутива LLiMa з DEB core/dev/cli, llima-package-manifest.json і metadata.json. Відсутні або суперечливі дані зупиняють збірку. Перед повторною збіркою Core зберіть і опублікуйте Kernels → Runner → Scheduler та відповідну LLiMa.