BinaryBuilder.jl ist erstaunlich ~ Kompilieren Sie automatisch mit Docker und konvertieren Sie c- und Fortran-Code in die Julia-Bibliothek

Haben Sie jemals ein Paket namens jll wie Arpack_jll gesehen, als Sie Julia verwendeten? Wenn Sie ein Paket installieren, haben Sie wahrscheinlich meistens ein Paket mit jll als Abhängigkeit. Tatsächlich ist dieses Paket mit jll eine Zusammenstellung von Code, der in einer anderen Sprache als der Julia-Sprache geschrieben ist. Bei der Installation wird die Binärdatei je nach Betriebssystem automatisch heruntergeladen.

Dies wird erreicht BinaryBuilder.jl https://github.com/JuliaPackaging/BinaryBuilder.jl Es ist ein Paket namens.

ich https://www.youtube.com/watch?v=3IyXsBwqll8 Ich kannte die Existenz, indem ich das sah.

Anscheinend wird Docker verwendet, um Code auf verschiedenen Plattformen wie Mac, Windows und Linux zu kompilieren und zu kompilieren. Wenn es zu diesem Zeitpunkt nicht für jedes Betriebssystem funktioniert, scheint die Kompilierungsmethode entsprechend geändert zu werden.

Es ist eine sehr interessante Bibliothek, also habe ich es versucht.

Diesmal habe ich C-LIME eingefügt. https://usqcd-software.github.io/c-lime/ Ein Datenformat für die Gitter-QCD (Gitterquantenfarbdynamik). Ich bin damit überhaupt nicht vertraut, aber die Skala war genau richtig, also habe ich es versucht.

Umgebung

Julia 1.5.2 Mac OS 10.15

Installieren Sie BinaryBuilder.jl

Zuerst benötigen Sie Docker, also setzen Sie Docker ein. Hier erfahren Sie, wie Sie Docker installieren. Für Mac

$ brew install docker
$ brew cask install docker

Es sieht so aus, als ob es möglich ist.

Drücken Sie dann in Julia], um den Paketmodus aufzurufen.

add BinaryBuilder

Wird besorgt. Ab dem 17. Oktober 2020 hat sich jedoch etwas an GitHub geändert und es funktioniert nicht mit der aktuellen Version, also anstelle der oben genannten

add BinaryBuilder#f126fe7

Sie müssen die geänderte Version als eingeben.

Wie benutzt man

Nach dem Einsetzen

using BinaryBuilder
BinaryBuilder.run_wizard()

Führen Sie den Assistenten aus.

Make a platform selection
 > All Supported Platforms
   Select by Operating System
   Fully Custom Platform Choice

Wählen Sie dann Alle unterstützten Plattformen

Please enter a URL (git repository or compressed archive) containing the source code to build:

Geben Sie nun die Github-Adresse oder Datei der Software an, die Sie kompilieren möchten. Hier,

https://github.com/usqcd-software/c-lime.git

Es wurde gemacht. Folgen Sie dann den Anweisungen. Die erste Frage ist, welchen der Git-Zweige man wählen soll, aber lassen wir dies als Meister. Dieser Code erfordert keinen zusätzlichen Quellcode oder Bibliotheken. Während Sie fortfahren, Es gibt Dinge wie einen Namen zu geben und eine Version zu geben, also werde ich sie entsprechend einfügen.

Wie Sie fortfahren

sandbox:${WORKSPACE}/srcdir

So etwas wird herauskommen. Kompilieren Sie nun den Code. In diesem Fall,

cd c-lime/
./autogen.sh 
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target}
make 
make install

Sie können den Code mit kompilieren. Drücken Sie dann Strg + D, um sich abzumelden. Nächster

Your build script was:

	cd $WORKSPACE/srcdir
	cd c-lime/
	./autogen.sh 
	./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target}
	make
	make install
	
Would you like to edit this script now? [y/N]: n

Da die Kompilierungsmethode zusammengefasst ist, setzen Sie sie auf n, wenn kein besonderes Problem vorliegt. Was kompilierst du dann? So etwas wird angezeigt, drücken Sie also a und dann d. Kompilieren Sie anschließend unter Drücken der Eingabetaste auf verschiedenen Betriebssystemen und Plattformen.

Nun, nachdem es fertig ist,

How should we deploy this build recipe?
 > Prepare a pull request against the community buildtree, Yggdrasil
   Write to a local file
   Print to stdout

Wird gefragt. Wenn Sie die erste auswählen, senden Sie eine Pull-Anfrage an Yggdrasil auf GitHub. Dies bedeutet, hier Informationen zum Kompilieren zu platzieren.

Would you like to actually open the pull request or just prepare it?
 > Go ahead, open it
   No, just prepare it and let me look at it first

Danach stellen Sie eine Pull-Anfrage mit Ihrem Github-Kontonamen.

Wenn es erfolgreich beendet wird, wird automatisch eine Pull-Anfrage gestellt. Und wenn es kein Problem gibt, wird es in Yggdrasil zusammengeführt. Einmal zusammengeführt, https://github.com/JuliaBinaryWrappers/ Wird in registriert. Wenn Sie sich hier registrieren, sind Sie fertig. https://github.com/JuliaBinaryWrappers/CLIME_jll.jl Ist bereits registriert,

Linux aarch64 {libc=glibc} (aarch64-linux-gnu)
Linux aarch64 {libc=musl} (aarch64-linux-musl)
Linux armv7l {call_abi=eabihf, libc=glibc} (armv7l-linux-gnueabihf)
Linux armv7l {call_abi=eabihf, libc=musl} (armv7l-linux-musleabihf)
Linux i686 {libc=glibc} (i686-linux-gnu)
Linux i686 {libc=musl} (i686-linux-musl)
Windows i686 (i686-w64-mingw32)
Linux powerpc64le {libc=glibc} (powerpc64le-linux-gnu)
macOS x86_64 (x86_64-apple-darwin)
Linux x86_64 {libc=glibc} (x86_64-linux-gnu)
Linux x86_64 {libc=musl} (x86_64-linux-musl)
FreeBSD x86_64 (x86_64-unknown-freebsd)
Windows x86_64 (x86_64-w64-mingw32)

Es wird gesagt, dass die Plattform Binärdateien bereitstellen kann.

Wie man Julia als Bibliothek benutzt

Nachdem

add CLIME_jll

Dann können Sie es installieren. Diese CLIME ist keine Bibliothek, sondern ein Typ, der ausgeführt werden soll https://juliapackaging.github.io/BinaryBuilder.jl/dev/jll/ Mit Bezug auf

using CLIME_jll
lime_contents() do exe
    run(`$exe`)
end

Auf diese Weise kann die ausführbare Datei `lime_contents``` auf Julia ausgeführt werden. Beachten Sie, dass für diesen Code tatsächlich ein Argument erforderlich ist. Verwenden Sie ihn daher in Form von run ( $ exe lime_file_test) `` .

Dieses Mal habe ich BinaryBuilder.jl auf einem Mac ausgeführt, aber allein dadurch wurde eine Julia-Bibliothek für verschiedene Plattformen erstellt. Ich bin überrascht.

Recommended Posts

BinaryBuilder.jl ist erstaunlich ~ Kompilieren Sie automatisch mit Docker und konvertieren Sie c- und Fortran-Code in die Julia-Bibliothek
Hallo Welt mit Docker und C Sprache
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Erleben Sie .NET 5 mit Docker und Visual Studio Code