Statut de construction:
Ce référentiel contient des recettes de construction de binaires pour les packages Julia à l'aide de binarybuilder.jl.
Pour contribuer une nouvelle recette, vous pouvez soit
BinaryBuilder.run_wizard()
, qui ouvrira automatiquement une demande de traction vers ce référentiel après une version réussie pour toutes les plates-formes demandées Yggdrasil construit les tarball à l'aide de la version master
de BinaryBuilder.jl, qui nécessite des versions Julia 1.3.0 ou ultérieures. Notez que cette version binarybuilder.jl a quelques différences par rapport à V0.1.4 et les constructeurs générés sont légèrement différents. Vous êtes invités à contribuer les constructeurs écrits pour binarybuilder.jl v0.1.4, mais ils auront probablement besoin de réglages mineurs.
BuildKite CI est utilisé pour tester que les constructeurs peuvent produire avec succès les tarball.
Si vous préférez tester votre manuel BuildScript avant d'ouvrir la demande de traction, nous vous suggérons d'installer BinaryBuilder.jl
sur Julia 1.3 ou toute version suivante et exécutant julia --color=yes build_tarballs.jl --verbose --debug
localement. Sur MacOS, vous devrez installer docker
pour que cela fonctionne.
Pour déclencher la construction d'une nouvelle version du package en amont, ouvrez simplement une demande de traction pour mettre à jour le constructeur si nécessaire. Cela se résume généralement à la mise à jour uniquement du numéro de version et de la source (par exemple, URL et hachage pour une archive, ou la révision d'un référentiel GIT), mais dans certains cas, plus de modifications peuvent être nécessaires.
Les dernières versions de BinaryBuilder utilisent l'expédition du système Artifacts
dans Julia 1.3. Cela signifie que BinaryBuilder ne génère plus de fichiers build.jl
qui sont placés dans deps/
dossier de votre package Julia, mais génère plutôt des packages Julia entiers (connues familièrement sous le nom de packages "JLL") qui sont placés dans l'organisation JuliabinaryWrappers. Les demandes de traction fusionnées à yggdrasil entraînent de nouvelles versions de ces packages de wrapper générés, téléchargés et enregistrés, permettant à votre client Julia de client d'invoquer simplement using LibFoo_jll
pour obtenir un droit de vos binaires sans avoir besoin d'une étape Pkg.build()
. (Ce ne sera bien sûr que le cas pour Julia 1.3+).
Nous encourageons les développeurs de Julia à utiliser des forfaits JLL pour leurs bibliothèques. Lisez la documentation de Binarybuilder pour apprendre à les utiliser.
Voici quelques exemples de demandes de traction de packages Julia qui passent à l'utilisation du package JLL pour fournir les binaires prédéfinis aux utilisateurs:
Vous pouvez en savoir plus sur le système Artifacts
et comment il est important pour la reproductibilité de cet article sur le blog de Julia "PKG + BinaryBuilder - la prochaine génération".
Nous espérons que nous vous avons convaincu pourquoi il est important de passer aux forfaits JLL. Cependant, si vous avez vraiment besoin de prendre en charge Julia V1.2 ou des versions précédentes, vous devriez continuer à utiliser BinaryProvider.jl. Comme expliqué dans la section précédente, un fichier build.jl
n'est plus généré après la construction car cela n'est pas utilisé pour les packages JLL, mais vous auriez besoin de le générer vous-même: dans le haut directeur de Yggdrasil, il y a un script à faire Ceci: generate_buildjl.jl
. Il faut trois arguments de position:
build_tarballs.jl
owner/name
du référentiel où les Balls ont été téléchargés. En cas d'omission, cela par défaut à JuliaBinaryWrappers/BuilderName_jll.jl
Par exemple, pour obtenir le fichier build.jl
pour la dernière version de ZLIB, vous pouvez exécuter la commande suivante:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
Si à la place, vous souhaitez obtenir le fichier build_tarballs.jl
pour la balise nommée zlib-v1.2.11 + 6, vous devez exécuter la commande
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
Remarque : vous devez ajouter manuellement prefix
comme premier argument à tous les constructeurs Product
dans les fichiers build.jl
générés. Cela est nécessaire car la syntaxe entre BinaryBuilder v0.2+
et BinaryProvider
a divergé.
N'oubliez pas que vous aurez également besoin des fichiers build.jl
pour toutes les dépendances directes et indirectes.
Voici quelques exemples de packages utilisant ce système pour installer leurs bibliothèques:
build.jl
avec BinaryProvider.jl
pour les versions précédentes.