Основы Nix: центральная роль stdenv в сборке пакетов

stdenv в Nix – это пакет и ключевой элемент для сборки всех остальных пакетов в nixpkgs. Он предоставляет базовое окружение с необходимыми инструментами: GCC, make, coreutils и другие. stdenv представляет собой деривацию, которая в результате содержит файл /setup, определяющий среду сборки.
Основы Nix: центральная роль stdenv в сборке пакетов
Изображение носит иллюстративный характер

setup – это bash-скрипт, который инициализирует переменные окружения, такие как PATH, и предоставляет функции для сборки пакетов по фазам: распаковка, конфигурирование, сборка, тестирование, установка, фиксация. Фазы можно переопределять, настраивать хуки до и после их выполнения.

Для упрощения процесса сборки пакетов в nixpkgs используется функция stdenv.mkDerivation. Она принимает параметры пакета, в том числе исходный код и зависимости, добавляет переменную окружения $stdenv, а также вызывает сценарий default-builder.sh, который, в свою очередь, запускает setup и genericBuild.

В процессе сборки nix-build вызывает bash, который запускает default-builder.sh. Тот в свою очередь запускает setup и функцию genericBuild, которая последовательно проходит все фазы сборки, определенные в setup. Ключевые переменные окружения, такие как src (путь к исходникам) и stdenv (путь к окружению сборки) задаются в описании деривации.


Новое на сайте

5988Какие Sliver-виджеты во Flutter использовать для прокрутки списков? 5986Нужно ли теперь переименовывать Containerfile для IDE? 5985Как нейросети трансформируют написание академических работ? 5984Огненная пляска килауэа: гавайский вулкан разразился пятым извержением 5983Почему стоит заказывать печатные платы через посредника, а не напрямую в Китае? 5982Зачем в Python нужны методы с двойным подчеркиванием? 5981Корпоративные коммуникации: что стоит за ростом рынка и как это работает? 5980Зимний фитнес: как сохранить активность и здоровье в холодное время года 5979Как распознать обман на "договорняках": инструкция для начинающих? 5978Как вырасти от тестировщика до CEO: возможно ли это? 5977Почему внешние задачи в Camunda Cloud не являются проблемой? 5976Зачем LibreOffice перепутал MVC с FCM и что из этого вышло? 5975Зловещий дуэт: HellCat и Morpheus связаны общим кодом рансомваре 5974Как эффективно оценить навыки кандидата и не потерять ценного специалиста?