# Инструкция по использованию build-package

`build-package` — это инструмент для выполнения сборки и публикации
conan-пакетов.

### Краткая справка

```
build-package [-h] [--build] [--no-build] [--publish] [--no-publish]
    [--target TARGET [TARGET ...]] recepie version

Build and publish conan packages

positional arguments:
  recepie               Path to the folder containing the recepie to build
  version               Specify version of the package

optional arguments:
  -h, --help            show this help message and exit
  --build               Build the conan package and store it in local cache (enabled by default)
  --no-build            Disable the build of the conan package
  --publish             Publish package in Aurora conan repository
  --no-publish          Do not publish the build package in remote repository (by default)
  --target TARGET [TARGET ...]
                        List of targets that should be used. Match is made by a substring
```

Скрипт принимает два обязательных позиционных аргумента:
* Путь к каталогу, который содержит в себе рецепт.
* Версия пакета, который необходимо собрать.

Помимо этого поддерживаются следующие опциональные аргументы.

`--build` — включает сборку пакета. Поведение по умолчанию.

`--no-build` — отключает выполнение шага сборки при работе с пакетом.

`--publish` — включает публикацию пакета в публичный репозиторий ОМП.

`--no-publish` — отключает шаг публикации пакета. Поведение по умолчанию.

`--target` — позволяет выполнить выборку целей, среди которых будет выполнена
сборка. По умолчанию использует все цели для сборки.

### Зависимости Аврора SDK

При сборке пакетов разрешается ориентироваться на библиотеки, которые
предоставляются Аврора SDK. Доступные библиотеки перечислены в 
[списке разрешённых](https://developer.auroraos.ru/doc/5.1.0/software_development/reference/public_api).

Данный инструмент умеет устанавливать системны зависимости, которые указаны
в файле `buildrequirements.txt`, который должен быть расположен в корне
каталога с рецептами.

Пример файла `buildrequirements.txt`:
```
libcurl-devel
zlib-devel
git
```

Перед выполнением сборки в конкретной цели инструмент удостоверится, что они
установлены в цели.

### Примеры

Сборка пакета для всех целей:

```
./tools/build-package recepies/boost 1.85.0
```

Выполнение сборки только в цели `x86_64`:

```
./tools/build-package --target x86_64 -- recepies/protobuf 3.18.3
```

