Building Julia (Detailed)
Downloading the Julia source code
Wenn Sie hinter einer Firewall sind, müssen Sie möglicherweise das https
-Protokoll anstelle des git
-Protokolls verwenden:
git config --global url."https://".insteadOf git://
Stellen Sie sicher, dass Sie Ihr System auch so konfigurieren, dass die entsprechenden Proxy-Einstellungen verwendet werden, z. B. durch Festlegen der Variablen https_proxy
und http_proxy
.
Building Julia
Beim ersten Kompilieren wird das Build automatisch die vorgefertigte external dependencies herunterladen. Wenn Sie alle Abhängigkeiten selbst erstellen möchten oder auf einem System bauen, das während des Build-Prozesses keinen Netzwerkzugang hat, fügen Sie Folgendes in Make.user
hinzu:
USE_BINARYBUILDER=0
Der Bau von Julia erfordert 5 GiB, wenn alle Abhängigkeiten gebaut werden, und ungefähr 4 GiB virtuellen Speicher.
Um einen parallelen Build durchzuführen, verwenden Sie make -j N
und geben Sie die maximale Anzahl gleichzeitiger Prozesse an. Wenn die Standardwerte im Build für Sie nicht funktionieren und Sie spezifische Make-Parameter festlegen müssen, können Sie diese in Make.user
speichern und die Datei im Stammverzeichnis Ihres Julia-Quellcodes ablegen. Der Build überprüft automatisch die Existenz von Make.user
und verwendet sie, wenn sie vorhanden ist.
Sie können Out-of-Tree-Bauten von Julia erstellen, indem Sie make O=<build-directory> configure
in der Befehlszeile angeben. Dies erstellt ein Verzeichnis-Mirror mit allen notwendigen Makefiles, um Julia im angegebenen Verzeichnis zu bauen. Diese Builds teilen sich die Quellcodedateien in Julia und deps/srccache
. Jedes Out-of-Tree-Bauverzeichnis kann seine eigene Make.user
-Datei haben, um die globale Make.user
-Datei im obersten Verzeichnis zu überschreiben.
Wenn alles korrekt funktioniert, sehen Sie ein Julia-Banner und eine interaktive Eingabeaufforderung, in die Sie Ausdrücke zur Auswertung eingeben können. (Fehler, die mit Bibliotheken zusammenhängen, können durch alte, inkompatible Bibliotheken verursacht werden, die in Ihrem PATH vorhanden sind. In diesem Fall versuchen Sie, das julia
-Verzeichnis früher im PATH zu platzieren). Beachten Sie, dass die meisten der oben genannten Anweisungen für Unix-Systeme gelten.
Um Julia von überall aus auszuführen, können Sie:
füge ein Alias hinzu (in
bash
:echo "alias julia='/path/to/install/folder/bin/julia'" >> ~/.bashrc && source ~/.bashrc
), oderfüge einen symbolischen Link zur
julia
-Ausführungsdatei imjulia
-Verzeichnis zu/usr/local/bin
(oder einem anderen geeigneten Verzeichnis, das bereits in deinem Pfad ist) hinzu, oderfüge das Verzeichnis
julia
zu deinem ausführbaren Pfad für diese Shell-Sitzung hinzu (inbash
:export PATH="$(pwd):$PATH"
; incsh
odertcsh
:
set path= ( $path $cwd )
), oder
füge das Verzeichnis
julia
dauerhaft zu deinem ausführbaren Pfad hinzu (z. B. in.bash_profile
), oderSchreibe
prefix=/path/to/install/folder
inMake.user
und führe dannmake install
aus. Wenn bereits eine Version von Julia in diesem Ordner installiert ist, solltest du sie löschen, bevor dumake install
ausführst.
Einige der Optionen, die Sie festlegen können, um den Build von Julia zu steuern, sind am Anfang der Datei Make.inc
aufgeführt und dokumentiert, aber Sie sollten diese niemals zu diesem Zweck bearbeiten, verwenden Sie stattdessen Make.user
.
Julias Makefiles definieren praktische automatische Regeln namens print-<VARNAME>
, um den Wert von Variablen auszugeben, wobei <VARNAME>
durch den Namen der Variablen ersetzt wird, deren Wert ausgegeben werden soll. Zum Beispiel
$ make print-JULIA_PRECOMPILE
JULIA_PRECOMPILE=1
Diese Regeln sind nützlich für Debugging-Zwecke.
Jetzt solltest du in der Lage sein, Julia so auszuführen:
julia
Wenn Sie ein Julia-Paket für die Verteilung auf Linux, macOS oder Windows erstellen, werfen Sie einen Blick auf die detaillierten Hinweise in distributing.md.
Updating an existing source tree
Wenn Sie julia
zuvor mit git clone
heruntergeladen haben, können Sie den vorhandenen Quellbaum mit git pull
aktualisieren, anstatt neu zu beginnen:
cd julia
git pull && make
Angenommen, Sie haben keine Änderungen am Quellbaum vorgenommen, die mit den Updates des Upstreams in Konflikt stehen, werden diese Befehle einen Build auslösen, um auf die neueste Version zu aktualisieren.
General troubleshooting
Im Laufe der Zeit kann die Basisbibliothek so viele Änderungen ansammeln, dass der Bootstrapping-Prozess beim Erstellen des Systemabbilds fehlschlägt. Wenn dies geschieht, kann der Build mit einem Fehler wie
*** This error is usually fixed by running 'make clean'. If the error persists, try 'make cleanall' ***
Wie beschrieben, ist das Ausführen von
make clean && make
normalerweise ausreichend. Gelegentlich ist die gründlichere Bereinigung durchmake cleanall
erforderlich.Neue Versionen externer Abhängigkeiten können eingeführt werden, die gelegentlich Konflikte mit bestehenden Builds älterer Versionen verursachen können.
a. Spezielle
make
-Ziele existieren, um den bestehenden Build einer Abhängigkeit zu löschen. Zum Beispiel wirdmake -C deps clean-llvm
den bestehenden Build vonllvm
bereinigen, sodassllvm
beim nächsten Aufruf vonmake
aus der heruntergeladenen Quellverteilung neu erstellt wird.make -C deps distclean-llvm
ist eine stärkere Löschung, die auch die heruntergeladene Quellverteilung löscht, um sicherzustellen, dass eine frische Kopie der Quellverteilung heruntergeladen wird und dass alle neuen Patches beim nächsten Aufruf vonmake
angewendet werden.b. Um vorhandene Binaries von
julia
und all seinen Abhängigkeiten zu löschen, löschen Sie das Verzeichnis./usr
im Quellbaum.Wenn Sie macOS kürzlich aktualisiert haben, stellen Sie sicher, dass Sie
xcode-select --install
ausführen, um die Befehlszeilenwerkzeuge zu aktualisieren. Andernfalls könnten Sie auf Fehler wegen fehlender Header und Bibliotheken stoßen, wie z. B.ld: library not found for -lcrt1.10.6.o
.Wenn Sie das Quellverzeichnis verschoben haben, könnten Sie Fehler wie
CMake Error: The current CMakeCache.txt directory ... is different than the directory ... where CMakeCache.txt was created.
erhalten, in diesem Fall können Sie die störende Abhängigkeit unterdeps
löschen.In extremen Fällen möchten Sie möglicherweise den Quellbaum in einen makellosen Zustand zurücksetzen. Die folgenden Git-Befehle können hilfreich sein:
git reset --hard #Forcibly remove any changes to any files under version control git clean -x -f -d #Forcibly remove any file or directory not under version control
Um zu vermeiden, dass Arbeit verloren geht, stellen Sie sicher, dass Sie wissen, was diese Befehle tun, bevor Sie sie ausführen.
git
wird in der Lage sein, diese Änderungen nicht rückgängig zu machen!
Platform-Specific Notes
Notizen für verschiedene Betriebssysteme:
Notizen für verschiedene Architekturen:
Required Build Tools and External Libraries
Der Bau von Julia erfordert, dass die folgende Software installiert ist:
- [GNU make] — Abhängigkeiten erstellen.
- [gcc & g++][gcc] (>= 7.1) oder [Clang][clang] (>= 5.0, >= 9.3 für Apple Clang) — Kompilieren und Verlinken von C, C++.
- [libatomic][gcc] — bereitgestellt von [gcc] und benötigt, um atomare Operationen zu unterstützen.
- [python] (>=2.7) — benötigt, um LLVM zu erstellen.
- [gfortran] — Kompilieren und Verlinken von Fortran-Bibliotheken.
- [perl] — Vorverarbeitung von Header-Dateien von Bibliotheken.
- [wget], [curl] oder [fetch] (FreeBSD) — um automatisch externe Bibliotheken herunterzuladen.
- [m4] — benötigt, um GMP zu erstellen.
- [awk] — Hilfswerkzeug für Makefiles.
- [Patch] — zum Ändern von Quellcode.
- [cmake] (>= 3.4.3) — benötigt, um
libgit2
zu bauen. - [pkg-config] — benötigt, um
libgit2
korrekt zu bauen, insbesondere für die Proxy-Unterstützung. - [powershell] (>= 3.0) — nur notwendig unter Windows.
- [welches] — benötigt, um Build-Abhängigkeiten zu überprüfen.
Auf Debian-basierten Distributionen (z. B. Ubuntu) können Sie sie einfach mit apt-get
installieren:
sudo apt-get install build-essential libatomic1 python gfortran perl wget m4 cmake pkg-config curl
Julia verwendet die folgenden externen Bibliotheken, die automatisch heruntergeladen (oder in einigen Fällen im Julia-Quellcode-Repository enthalten) und dann beim ersten Ausführen von make
aus dem Quellcode kompiliert werden. Die spezifischen Versionsnummern dieser Bibliotheken, die Julia verwendet, sind in deps/$(libname).version
aufgeführt:
- [LLVM] (15.0 + patches) — Compiler-Infrastruktur (siehe note below).
- [FemtoLisp] — verpackt mit Julia-Quellcode und verwendet, um die Compiler-Frontend zu implementieren.
- [libuv] (benutzerdefinierter Fork) — tragbare, leistungsstarke, ereignisbasierte I/O-Bibliothek.
- [OpenLibm] — portable libm-Bibliothek mit grundlegenden mathematischen Funktionen.
- [DSFMT] — schnelle Mersenne Twister Pseudorandom-Zahlengenerator-Bibliothek.
- [OpenBLAS] — schnell, offen und gewartet [Basis-Linear-Algebra-Unterprogramme (BLAS)]
- [LAPACK] — Bibliothek von Routinen der linearen Algebra zur Lösung von Systemen simultaner linearer Gleichungen, Lösungen der kleinsten Quadrate von linearen Gleichungssystemen, Eigenwertproblemen und Problemen mit singulären Werten.
- [MKL] (optional) – OpenBLAS und LAPACK können durch Intels MKL-Bibliothek ersetzt werden.
- [SuiteSparse] — Bibliothek von linearen Algebra-Routinen für spärliche Matrizen.
- [PCRE] — Perl-kompatible reguläre Ausdrücke Bibliothek.
- [GMP] — GNU Mehrpräzisions-Arithmetikbibliothek, benötigt für die Unterstützung von
BigInt
. - [MPFR] — GNU-Bibliothek für mehrfache Präzision von Fließkommazahlen, benötigt für die Unterstützung von Fließkommazahlen mit beliebiger Präzision (
BigFloat
). - [libgit2] — Git-verknüpfbare Bibliothek, die vom Paketmanager von Julia verwendet wird.
- [curl] — libcurl bietet Download- und Proxy-Unterstützung.
- [libssh2] — Bibliothek für SSH-Transport, verwendet von libgit2 für Pakete mit SSH-Remotes.
- [mbedtls] — Bibliothek, die für Kryptographie und Transportschichtsicherheit verwendet wird, verwendet von libssh2
- [utf8proc] — eine Bibliothek zur Verarbeitung von UTF-8-kodierten Unicode-Zeichenfolgen.
- [LLVM libunwind] — LLVMs Fork von [libunwind], einer Bibliothek, die die Aufrufkette eines Programms bestimmt.
- [ITTAPI] — Intels Instrumentierungs- und Nachverfolgungstechnologie sowie Just-In-Time-API.
[GNU make]: https://www.gnu.org/software/make [patch]: https://www.gnu.org/software/patch [wget]: https://www.gnu.org/software/wget [m4]: https://www.gnu.org/software/m4 [awk]: https://www.gnu.org/software/gawk [gcc]: https://gcc.gnu.org [clang]: https://clang.llvm.org [python]: https://www.python.org/ [gfortran]: https://gcc.gnu.org/fortran/ [curl]: https://curl.haxx.se [fetch]: https://www.freebsd.org/cgi/man.cgi?fetch(1) [perl]: https://www.perl.org [cmake]: https://www.cmake.org [OpenLibm]: https://github.com/JuliaLang/openlibm [DSFMT]: https://github.com/MersenneTwister-Lab/dSFMT [OpenBLAS]: https://github.com/xianyi/OpenBLAS [LAPACK]: https://www.netlib.org/lapack [MKL]: https://software.intel.com/en-us/articles/intel-mkl [SuiteSparse]: https://people.engr.tamu.edu/davis/suitesparse.html [PCRE]: https://www.pcre.org [LLVM]: https://www.llvm.org [LLVM libunwind]: https://github.com/llvm/llvm-project/tree/main/libunwind [FemtoLisp]: https://github.com/JeffBezanson/femtolisp [GMP]: https://gmplib.org [MPFR]: https://www.mpfr.org [libuv]: https://github.com/JuliaLang/libuv [libgit2]: https://libgit2.org/ [utf8proc]: https://julialang.org/utf8proc/ [libunwind]: https://www.nongnu.org/libunwind [libssh2]: https://www.libssh2.org [mbedtls]: https://tls.mbed.org/ [pkg-config]: https://www.freedesktop.org/wiki/Software/pkg-config/ [powershell]: https://docs.microsoft.com/en-us/powershell/scripting/wmf/overview [which]: https://carlowood.github.io/which/ [ITTAPI]: https://github.com/intel/ittapi
Build dependencies
Wenn Sie bereits eines oder mehrere dieser Pakete auf Ihrem System installiert haben, können Sie verhindern, dass Julia Duplikate dieser Bibliotheken kompiliert, indem Sie USE_SYSTEM_...=1
an make
übergeben oder die Zeile zu Make.user
hinzufügen. Die vollständige Liste der möglichen Flags finden Sie in Make.inc
.
Bitte beachten Sie, dass dieses Verfahren nicht offiziell unterstützt wird, da es zusätzliche Variabilität bei der Installation und Versionierung der Abhängigkeiten einführt und nur für Systempaketbetreuer empfohlen wird. Unerwartete Kompilierungsfehler können auftreten, da das Build-System keine weiteren Überprüfungen durchführt, um sicherzustellen, dass die richtigen Pakete installiert sind.
LLVM
Die komplizierteste Abhängigkeit ist LLVM, für die wir zusätzliche Patches von upstream benötigen (LLVM ist nicht rückwärtskompatibel).
Für die Verpackung von Julia mit LLVM empfehlen wir entweder:
- ein Julia-eigenes LLVM-Bibliothek in das Julia-Paket einbinden, oder
- Hinzufügen der Patches zum LLVM-Paket der Distribution.
- Eine vollständige Liste der Patches ist verfügbar unter Github, siehe den Branch
julia-release/15.x
. - Der einzige Julia-spezifische Patch ist das Umbenennen der Bibliothek (
llvm7-symver-jlprefix.patch
), der nicht auf ein System-LLVM angewendet werden sollte. - Die verbleibenden Patches sind alle upstream-Bugfixes und wurden in das upstream LLVM integriert.
- Eine vollständige Liste der Patches ist verfügbar unter Github, siehe den Branch
Die Verwendung einer nicht gepatchten oder einer anderen Version von LLVM führt zu Fehlern und/oder schlechter Leistung. Sie können eine andere Version von LLVM aus einem entfernten Git-Repository mit den folgenden Optionen in der Make.user
-Datei erstellen:
# Force source build of LLVM
USE_BINARYBUILDER_LLVM = 0
# Use Git for fetching LLVM source code
# this is either `1` to get all of them
DEPS_GIT = 1
# or a space-separated list of specific dependencies to download with git
DEPS_GIT = llvm
# Other useful options:
#URL of the Git repository you want to obtain LLVM from:
# LLVM_GIT_URL = ...
#Name of the alternate branch to clone from git
# LLVM_BRANCH = julia-16.0.6-0
#SHA hash of the alterate commit to check out automatically
# LLVM_SHA1 = $(LLVM_BRANCH)
#List of LLVM targets to build. It is strongly recommended to keep at least all the
#default targets listed in `deps/llvm.mk`, even if you don't necessarily need all of them.
# LLVM_TARGETS = ...
#Use ccache for faster recompilation in case you need to restart a build.
# USECCACHE = 1
# CMAKE_GENERATOR=Ninja
# LLVM_ASSERTIONS=1
# LLVM_DEBUG=Symbols
Die verschiedenen Build-Phasen werden durch spezifische Dateien gesteuert:
deps/llvm.version
: berühren oder ändern, um eine neue Version auszuchecken,make get-llvm check-llvm
deps/srccache/llvm/source-extracted
: Ergebnis vonmake extract-llvm
deps/llvm/build_Release*/build-configured
: Ergebnis vonmake configure-llvm
deps/llvm/build_Release*/build-configured
: Ergebnis vonmake compile-llvm
usr-staging/llvm/build_Release*.tgz
: Ergebnis vonmake stage-llvm
(erneuern mitmake reinstall-llvm
)usr/manifest/llvm
: Ergebnis vonmake install-llvm
(erneuern mitmake uninstall-llvm
)make version-check-llvm
: wird jedes Mal ausgeführt, um den Benutzer zu warnen, wenn es lokale Änderungen gibt.
Obwohl Julia mit neueren LLVM-Versionen erstellt werden kann, sollte die Unterstützung dafür als experimentell angesehen werden und ist nicht für die Verpackung geeignet.
libuv
Julia verwendet einen benutzerdefinierten Fork von libuv. Es ist eine kleine Abhängigkeit und kann sicher im selben Paket wie Julia gebündelt werden, ohne mit der Systembibliothek in Konflikt zu geraten. Julia-Bauten sollten nicht versuchen, die System-libuv zu verwenden.
BLAS and LAPACK
Als eine leistungsstarke numerische Sprache sollte Julia mit einer mehrthreadigen BLAS und LAPACK verbunden werden, wie OpenBLAS oder ATLAS, die eine viel bessere Leistung bieten als die Referenzimplementierungen libblas
, die möglicherweise standardmäßig auf einigen Systemen vorhanden sind.
Source distributions of releases
Jede Vorabversion und Veröffentlichung von Julia hat eine "vollständige" Quellverteilung und eine "leichte" Quellverteilung.
Die vollständige Quellverteilung enthält den Quellcode für Julia und alle Abhängigkeiten, sodass sie ohne Internetverbindung aus dem Quellcode erstellt werden kann. Die leichte Quellverteilung enthält nicht den Quellcode der Abhängigkeiten.
Zum Beispiel ist julia-1.0.0.tar.gz
die Quellverteilung für die v1.0.0
-Version von Julia, während julia-1.0.0-full.tar.gz
die vollständige Quellverteilung ist.
Building Julia from source with a Git checkout of a stdlib
Wenn Sie Julia aus dem Quellcode mit einem Git-Checkout einer stdlib erstellen müssen, verwenden Sie make DEPS_GIT=NAME_OF_STDLIB
beim Erstellen von Julia.
Wenn Sie beispielsweise Julia aus dem Quellcode mit einem Git-Checkout von Pkg erstellen müssen, verwenden Sie make DEPS_GIT=Pkg
beim Erstellen von Julia. Das Pkg
-Repository befindet sich in stdlib/Pkg
und wurde ursprünglich mit einem abgetrennten HEAD
erstellt. Wenn Sie dies aus einem bereits vorhandenen Julia-Repository tun, müssen Sie möglicherweise vorher make clean
ausführen.
Wenn Sie Julia aus dem Quellcode mit Git-Checkouts von mehr als einer Standardbibliothek erstellen müssen, sollte DEPS_GIT
eine durch Leerzeichen getrennte Liste der Standardbibliotheksnamen sein. Wenn Sie beispielsweise Julia aus dem Quellcode mit einem Git-Checkout von Pkg, Tar und Downloads erstellen müssen, verwenden Sie make DEPS_GIT='Pkg Tar Downloads'
beim Erstellen von Julia.
Building an "assert build" of Julia
Ein "Assert-Build" von Julia ist ein Build, der sowohl mit FORCE_ASSERTIONS=1
als auch mit LLVM_ASSERTIONS=1
erstellt wurde. Um einen Assert-Build zu erstellen, definieren Sie beide der folgenden Variablen in Ihrer Make.user
-Datei:
FORCE_ASSERTIONS=1
LLVM_ASSERTIONS=1
Bitte beachten Sie, dass Assert-Bauten von Julia langsamer sein werden als reguläre (nicht-Assert) Bauten.
Building 32-bit Julia on a 64-bit machine
Gelegentlich können spezifische Fehler in 32-Bit-Architekturen auftreten, und wenn dies geschieht, ist es nützlich, das Problem auf Ihrem lokalen Computer zu debuggen. Da die meisten modernen 64-Bit-Systeme die Ausführung von Programmen unterstützen, die für 32-Bit-Systeme erstellt wurden, können Sie wahrscheinlich eine 32-Bit-Version von Julia für Ihr System verwenden, die Sie von der official downloads page erhalten können, wenn Sie Julia nicht aus dem Quellcode neu kompilieren müssen (z. B. wenn Sie hauptsächlich das Verhalten einer 32-Bit-Julia untersuchen möchten, ohne den C-Code berühren zu müssen). Wenn Sie jedoch Julia aus dem Quellcode neu kompilieren müssen, ist eine Möglichkeit, einen Docker-Container eines 32-Bit-Systems zu verwenden. Zumindest für jetzt ist es relativ einfach, eine 32-Bit-Version von Julia mit ubuntu 32-bit docker images zu erstellen. Kurz gesagt, nachdem Sie docker
eingerichtet haben, sind hier die erforderlichen Schritte:
$ docker pull i386/ubuntu
$ docker run --platform i386 -i -t i386/ubuntu /bin/bash
An diesem Punkt sollten Sie sich in einer 32-Bit-Maschinenkonsole befinden (beachten Sie, dass uname
die Host-Architektur meldet und weiterhin 64-Bit anzeigt, dies hat jedoch keinen Einfluss auf den Julia-Build). Sie können Pakete hinzufügen und Code kompilieren; wenn Sie exit
eingeben, gehen alle Änderungen verloren. Stellen Sie daher sicher, dass Sie Ihre Analyse in einer einzigen Sitzung abschließen oder ein kopierbares Skript einrichten, das Sie verwenden können, um Ihre Umgebung einzurichten.
Von diesem Punkt an sollten Sie
# apt update
(Hinweis: sudo
ist nicht installiert, aber es ist auch nicht notwendig, da Sie als root
arbeiten, sodass Sie sudo
aus allen Befehlen weglassen können.)
Dann fügen Sie alle build dependencies, einen Konsolen-basierten Editor Ihrer Wahl, git
und alles andere, was Sie benötigen (z.B. gdb
, rr
usw.) hinzu. Wählen Sie ein Verzeichnis, in dem Sie arbeiten möchten, und git clone
Julia, wechseln Sie zu dem Branch, den Sie debuggen möchten, und bauen Sie Julia wie gewohnt.
Update the version number of a dependency
Es gibt zwei Arten von Builds.
- Bauen Sie alles (
deps/
undsrc/
) aus dem Quellcode. (Fügen SieUSE_BINARYBUILDER=0
zuMake.user
hinzu, siehe Building Julia) - Aus dem Quellcode (
src/
) mit vorcompilierten Abhängigkeiten (Standard) bauen
Wenn Sie die Versionsnummer einer Abhängigkeit in deps/
aktualisieren möchten, sollten Sie die folgende Checkliste verwenden:
### Check list
Version numbers:
- [ ] `deps/$(libname).version`: `LIBNAME_VER`, `LIBNAME_BRANCH`, `LIBNAME_SHA1` and `LIBNAME_JLL_VER`
- [ ] `stdlib/$(LIBNAME_JLL_NAME)_jll/Project.toml`: `version`
Checksum:
- [ ] `deps/checksums/$(libname)`
- [ ] `deps/checksums/$(LIBNAME_JLL_NAME)-*/`: `md5` and `sha512`
Patches:
- [ ] `deps/$(libname).mk`
- [ ] `deps/patches/$(libname)-*.patch`
Hinweis:
- Für spezifische Abhängigkeiten sind einige Elemente in der Checkliste möglicherweise nicht vorhanden.
- Für die Prüfzifferdatei kann es sich um eine einzelne Datei ohne Endung oder einen Ordner handeln, der zwei Dateien enthält.
Example: OpenLibm
- Aktualisieren Sie die Versionsnummern in
deps/openlibm.version
OPENLIBM_VER := 0.X.Y
OPENLIBM_BRANCH = v0.X.Y
OPENLIBM_SHA1 = neuer-sha1-hash
- Aktualisieren Sie die Versionsnummer in
stdlib/OpenLibm_jll/Project.toml
version = "0.X.Y+0"
- Aktualisieren Sie die Prüfziffern in
deps/checksums/openlibm
make -f contrib/refresh_checksums.mk openlibm
- Überprüfen Sie, ob die Patch-Dateien
deps/patches/openlibm-*.patch
existieren.- wenn Patches nicht existieren, überspringen.
- Wenn Patches vorhanden sind, überprüfen Sie, ob sie in die neue Version integriert wurden und entfernt werden müssen. Beim Löschen eines Patches denken Sie daran, die entsprechende Makefile-Datei (
deps/openlibm.mk
) zu ändern.