Статус сборки:
Этот репозиторий содержит рецепты для строительства двоичных файлов для Julia Packages с использованием BinaryBuilder.jl.
Чтобы внести новый рецепт, вы можете либо
BinaryBuilder.run_wizard()
, который автоматически откроет запрос на привлечение в этот репозиторий после успешной сборки для всех запрошенных платформ Yggdrasil создает Tarballs, используя master
версию BinaryBuilder.jl, которая требует Julia 1.3.0 или более поздней версии. Обратите внимание, что эта версия BinaryBuilder.jl имеет некоторые различия по сравнению с V0.1.4, а генерируемые строители немного отличаются. Вы можете внести свой вклад в строителей, написанных для BinaryBuilder.jl v0.1.4, но им, вероятно, потребуются незначительные корректировки.
Buildkite CI используется для проверки того, что строители могут успешно производить тарболы.
Если вы предпочитаете проверить свой ручной сборку перед открытием запроса на вытяжение, мы предлагаем установить BinaryBuilder.jl
на Julia 1.3 или любой следующее выпуск и запуск julia --color=yes build_tarballs.jl --verbose --debug
. В MacOS вам нужно будет установить docker
для работы.
Чтобы запустить сборку новой версии пакета Upstream, просто откройте запрос на вытягивание, чтобы обновить строитель по мере необходимости. Обычно это сводится только к обновлению номера версии и источника (например, URL и хэша для архива или ревизии для репозитория GIT), но в некоторых случаях может потребоваться дополнительные изменения.
Последние версии BinaryBuilder используют транспортировку системы Artifacts
в Юлии 1.3. Это означает, что BinaryBuilder больше не генерирует файлы build.jl
, которые помещаются в deps/
папку вашего пакета Julia, но вместо этого генерируют целые пакеты Julia (известные как «JLL» пакеты), которые размещаются в организации JuliabinaryWrappers. Объединенные запросы на вытягивание в Yggdrasil приводят к появлению новых версий этих пакетов -оберток, загружаемых и зарегистрированных, что позволяет вашему клиенту Julia Code просто вызвать using LibFoo_jll
для получения ваших двоичных файлов без необходимости в шаге Pkg.build()
. (Это, конечно, будет только для Джулии 1.3+).
Мы призываем разработчиков Джулии использовать пакеты JLL для своих библиотек. Прочитайте документ бинарного строителя, чтобы узнать, как их использовать.
Вот несколько примеров запросов на привлечение пакетов Julia, переключающихся на использование пакета JLL, чтобы предоставить пользователям предварительно построенные двоичные файлы:
Вы можете прочитать больше о системе Artifacts
и о том, как она важна для воспроизводимости в этом посте в блоге Джулии «Pkg + BinaryBuilder - следующее поколение».
Мы надеемся, что мы убедили вас в том, почему важно перейти на пакеты JLL. Однако, если вам действительно нужно поддерживать Julia v1.2 или предыдущие версии, вам следует продолжать использовать binaryprovider.jl. Как объяснено в предыдущем разделе, файл build.jl
больше не генерируется после сборки, так как он не используется для пакетов JLL, вместо этого вам нужно будет создать его самостоятельно: в топ-режиссе Это: generate_buildjl.jl
. Это требует трех позиционных аргументов:
build_tarballs.jl
owner/name
репозитория, где были загружены тарболы. Если опущены, это знакомство с JuliaBinaryWrappers/BuilderName_jll.jl
Например, чтобы получить файл build.jl
для последней версии Zlib, вы можете запустить следующую команду:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
Если вместо этого вы хотите получить файл build_tarballs.jl
для тега с именем zlib-v1.2.11+6, вам нужно запустить команду
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
Примечание . Вы должны вручную добавить prefix
в качестве первого аргумента ко всем конструкторам Product
в сгенерированных файлах build.jl
. Это необходимо, потому что синтаксис между BinaryBuilder v0.2+
и BinaryProvider
расходился.
Помните, что вам также понадобятся файлы build.jl
для всех прямых и косвенных зависимостей.
Вот несколько примеров пакетов, использующих эту систему для установки их библиотек:
build.jl
с BinaryProvider.jl
для предыдущих выпусков.