Status erstellen:
Dieses Repository enthält Rezepte zum Erstellen von Binärdateien für Julia -Pakete mit BinaryBuilder.jl.
Um ein neues Rezept beizutragen, können Sie entweder
BinaryBuilder.run_wizard()
, das nach einem erfolgreichen Build für alle angeforderten Plattformen automatisch eine Pull -Anforderung an dieses Repository öffnet Yggdrasil baut die Tarballs mithilfe der master
-Version von BinaryBuilder.jl, für die Julia 1.3.0 oder spätere Versionen erforderlich sind. Beachten Sie, dass diese Version von BinaryBuilder.jl einige Unterschiede im Vergleich zu V0.1.4 aufweist und die erzeugten Bauherren geringfügig unterschiedlich sind. Sie sind herzlich eingeladen, Bauherren für binarybuilder.jl v0.1.4 beizutragen, werden jedoch wahrscheinlich geringfügige Anpassungen benötigen.
Buildkite CI wird verwendet, um zu testen, dass die Bauherren die Tarballs erfolgreich produzieren können.
Wenn Sie vor dem Öffnen der Pull -Anfrage Ihr Handbuch Buildscript testen möchten, empfehlen wir Ihnen BinaryBuilder.jl
auf Julia 1.3 oder einer folgenden Version zu installieren und julia --color=yes build_tarballs.jl --verbose --debug
localy. Auf macOS müssen Sie docker
installieren lassen, damit dies funktioniert.
Um den Aufbau einer neuen Version des Upstream -Pakets auszulösen, öffnen Sie einfach eine Pull -Anfrage, um den Bauherr nach Bedarf zu aktualisieren. Dies läuft normalerweise darauf hinaus, die Versionsnummer und die Quelle (z. B. URL und Hash für ein Archiv oder die Überarbeitung für ein Git -Repository) zu aktualisieren, aber in einigen Fällen können weitere Änderungen erforderlich sein.
Die letzten Versionen von BinaryBuilder nutzen den Shipping des Artifacts
in Julia 1.3. Dies bedeutet, dass BinaryBuilder nicht mehr build.jl
-Dateien generiert, die in deps/
den Ordner Ihres Julia -Pakets aufgenommen werden, sondern stattdessen ganze Julia -Pakete (umgangssprachlich als "JLL" -Pakete) generiert, die innerhalb der Organisation von JuliabinaryWappers platziert sind. Zusammengeführte Pull -Anfragen an Yggdrasil ergeben sich dazu, dass neue Versionen dieser Wrapper -Pakete generiert, hochgeladen und registriert werden, sodass Ihr Client Julia -Code einfach using LibFoo_jll
aufrufen kann, um Ihre Binaries ohne einen Pkg.build()
-Schritt zu erhalten. (Dies wird natürlich nur für Julia 1.3+ der Fall sein).
Wir ermutigen Julia Developers, JLL -Pakete für ihre Bibliotheken zu verwenden. Lesen Sie die Dokumentation von BinaryBuilder, um zu lernen, wie man sie benutzt.
Hier einige Beispiele für Pull -Anfragen von Julia -Paketen, die auf das JLL -Paket wechseln, um den Benutzern die vorgefertigten Binärdateien bereitzustellen:
Sie können mehr über das Artifacts
erfahren und wie wichtig es für die Reproduzierbarkeit in diesem Beitrag in Julias Blog "PKG + BinaryBuilder - The Next Generation" ist.
Wir hoffen, wir haben Sie davon überzeugt, warum es wichtig ist, auf JLL -Pakete umzusteigen. Wenn Sie jedoch Julia v1.2 oder frühere Versionen unterstützen müssen, sollten Sie weiterhin BinaryProvider.jl verwenden. Wie im vorherigen Abschnitt erläutert, wird nach dem Build eine build.jl
Datei nicht mehr generiert, da dies nicht für JLL Dies: generate_buildjl.jl
. Es dauert drei Positionsargumente:
build_tarballs.jl
owner/name
des Repositorys, in dem die Tarballs hochgeladen wurden. Wenn dies ausgelassen wird, wird dies zu JuliaBinaryWrappers/BuilderName_jll.jl
verwendet Um beispielsweise die Datei build.jl
für die neueste Version von ZLIB zu erhalten, können Sie den folgenden Befehl ausführen:
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl
Wenn Sie stattdessen die Datei build_tarballs.jl
für das Tag mit dem Namen zlib-v1.2.11+6 erhalten möchten, müssen Sie den Befehl ausführen
julia --color=yes generate_buildjl.jl Z/Zlib/build_tarballs.jl JuliaBinaryWrappers/Zlib_jll.jl Zlib-v1.2.11+6
Hinweis : Sie müssen allen Product
in den generierten build.jl
-Dateien das erste prefix
als erstes Argument hinzufügen. Dies ist notwendig, da die Syntax zwischen BinaryBuilder v0.2+
und BinaryProvider
unterschiedlich ist.
Denken Sie daran, dass Sie auch die build.jl
-Dateien für alle direkten und indirekten Abhängigkeiten benötigen.
Hier sind einige Beispiele für Pakete, die dieses System verwenden, um ihre Bibliotheken zu installieren:
build.jl
-Skripte mit BinaryProvider.jl
für frühere Veröffentlichungen.