Модуль 4: Системы сборки
Как собирать проекты на разных языках и с разными инструментами сборки.
Разные проекты используют разные системы сборки: Autotools, CMake, Meson, setuptools, Cargo, Go modules. Каждая имеет свои особенности упаковки.
Цели модуля
После изучения этого модуля вы будете:
- Определять систему сборки проекта
- Использовать правильные макросы для каждой системы
- Понимать особенности упаковки для разных языков
- Решать типичные проблемы сборки
Как определить систему сборки
| Файлы в исходниках | Система сборки |
|---|---|
configure, configure.ac, Makefile.am | Autotools |
CMakeLists.txt | CMake |
meson.build | Meson |
setup.py, setup.cfg, pyproject.toml | Python (setuptools/pip) |
Cargo.toml | Rust (Cargo) |
go.mod | Go modules |
Makefile (только) | Make |
build.gradle, pom.xml | Java (Gradle/Maven) |
Содержание модуля
-
Autotools (configure/make)
Классическая система сборки: configure, make, make install. -
CMake
Современная кроссплатформенная система сборки. -
Meson
Быстрая и простая система сборки нового поколения. -
Python: setuptools и wheel
Упаковка Python-приложений и библиотек. -
Rust и Cargo
Упаковка Rust-программ, vendoring зависимостей. -
Go modules
Упаковка Go-программ.
Общие принципы
Независимо от системы сборки, этапы одинаковы:
%prep → Распаковка, патчи
%build → Конфигурация и компиляция
%install → Установка в buildroot
%check → Тесты
%files → Список файлов
Макросы RPM абстрагируют детали:
| Система | Конфигурация | Сборка | Установка |
|---|---|---|---|
| Autotools | %configure | %make_build | %make_install |
| CMake | %cmake | %cmake_build | %cmake_install |
| Meson | %meson | %meson_build | %meson_install |
| Python | — | %py3_build | %py3_install |
| Rust | — | %cargo_build | %cargo_install |
| Go | — | %gobuild | install |
Следующий модуль
После освоения систем сборки переходите к Модулю 5: ABF и рабочий процесс — там мы научимся работать со сборочной фермой.
Autotools (configure/make)
Классическая система сборки: configure, make, make install.
CMake
Современная кроссплатформенная система сборки.
Meson
Быстрая и простая система сборки нового поколения.
Python: setuptools и wheel
Упаковка Python-приложений и библиотек.
Rust и Cargo
Упаковка Rust-программ, vendoring зависимостей.
Go modules
Упаковка Go-программ.