forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-lang/julia: version bump to 1.7.0
The ebuild for julia 1.7.0 with patches: - llvm 13 compatibility - libgit1.2 compatibility - avoid hardcoded libraries - do not build the library a second time - do not set rpaths Some patches come from Arch Linux. [Matthias Maier] - renamed patches - misc cleanup Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Janusz Andrzejewski <[email protected]> Signed-off-by: Matthias Maier <[email protected]>
- Loading branch information
Showing
9 changed files
with
942 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- a/Makefile 2021-12-21 09:38:26.782829864 +0100 | ||
+++ b/Makefile 2021-12-21 10:52:40.760565902 +0100 | ||
@@ -336,7 +336,7 @@ | ||
install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j; \ | ||
done | ||
endif | ||
-else ifneq (,$(findstring $(OS),Linux FreeBSD)) | ||
+else ifneq (,$(findstring $(OS),FreeBSD)) | ||
for j in $(JL_TARGETS) ; do \ | ||
$(PATCHELF) --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \ | ||
done | ||
@@ -357,7 +357,7 @@ | ||
endif | ||
|
||
# Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD | ||
-ifneq (,$(findstring $(OS),Linux FreeBSD)) | ||
+ifneq (,$(findstring $(OS),FreeBSD)) | ||
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT) | ||
ifeq ($(BUNDLE_DEBUG_LIBS),1) | ||
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT) | ||
@@ -365,7 +365,7 @@ | ||
endif | ||
|
||
# Set rpath for LLVM.so which is `$ORIGIN/../lib` moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD | ||
-ifneq (,$(findstring $(OS),Linux FreeBSD)) | ||
+ifneq (,$(findstring $(OS),FreeBSD)) | ||
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libLLVM.$(SHLIB_EXT) | ||
endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
This pacth comes from: | ||
https://raw.githubusercontent.com/archlinux/svntogit-community/packages/julia/trunk/julia-hardcoded-libs.patch | ||
|
||
diff --git a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl | ||
index a7ca666b23..b84a42f4e7 100644 | ||
--- a/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl | ||
+++ b/stdlib/MbedTLS_jll/src/MbedTLS_jll.jl | ||
@@ -31,9 +31,9 @@ elseif Sys.isapple() | ||
const libmbedtls = "@rpath/libmbedtls.13.dylib" | ||
const libmbedx509 = "@rpath/libmbedx509.1.dylib" | ||
else | ||
- const libmbedcrypto = "libmbedcrypto.so.5" | ||
- const libmbedtls = "libmbedtls.so.13" | ||
- const libmbedx509 = "libmbedx509.so.1" | ||
+ const libmbedcrypto = "libmbedcrypto.so" | ||
+ const libmbedtls = "libmbedtls.so" | ||
+ const libmbedx509 = "libmbedx509.so" | ||
end | ||
|
||
function __init__() | ||
diff --git a/stdlib/libLLVM_jll/src/libLLVM_jll.jl b/stdlib/libLLVM_jll/src/libLLVM_jll.jl | ||
index fa45e754e5..b51812e3a8 100644 | ||
--- a/stdlib/libLLVM_jll/src/libLLVM_jll.jl | ||
+++ b/stdlib/libLLVM_jll/src/libLLVM_jll.jl | ||
@@ -23,7 +23,7 @@ if Sys.iswindows() | ||
elseif Sys.isapple() | ||
const libLLVM = "@rpath/libLLVM.dylib" | ||
else | ||
- const libLLVM = "libLLVM-12jl.so" | ||
+ const libLLVM = "libLLVM.so" | ||
end | ||
|
||
function __init__() | ||
diff --git a/stdlib/nghttp2_jll/src/nghttp2_jll.jl b/stdlib/nghttp2_jll/src/nghttp2_jll.jl | ||
index 8b98c76ac5..77ad9e3800 100644 | ||
--- a/stdlib/nghttp2_jll/src/nghttp2_jll.jl | ||
+++ b/stdlib/nghttp2_jll/src/nghttp2_jll.jl | ||
@@ -22,7 +22,7 @@ if Sys.iswindows() | ||
elseif Sys.isapple() | ||
const libnghttp2 = "@rpath/libnghttp2.14.dylib" | ||
else | ||
- const libnghttp2 = "libnghttp2.so.14" | ||
+ const libnghttp2 = "libnghttp2.so" | ||
end | ||
|
||
function __init__() | ||
diff --git a/stdlib/LibGit2_jll/src/LibGit2_jll.jl b/stdlib/LibGit2_jll/src/LibGit2_jll.jl | ||
index f0d4b5dda6..2ed3017b51 100644 | ||
--- a/stdlib/LibGit2_jll/src/LibGit2_jll.jl | ||
+++ b/stdlib/LibGit2_jll/src/LibGit2_jll.jl | ||
@@ -23,7 +23,7 @@ if Sys.iswindows() | ||
elseif Sys.isapple() | ||
const libgit2 = "@rpath/libgit2.1.1.dylib" | ||
else | ||
- const libgit2 = "libgit2.so.1.1" | ||
+ const libgit2 = "libgit2.so" | ||
end | ||
|
||
function __init__() | ||
diff --git a/stdlib/OpenLibm_jll/src/OpenLibm_jll.jl b/stdlib/OpenLibm_jll/src/OpenLibm_jll.jl | ||
index 215de8aed6..918d1ffdc2 100644 | ||
--- a/stdlib/OpenLibm_jll/src/OpenLibm_jll.jl | ||
+++ b/stdlib/OpenLibm_jll/src/OpenLibm_jll.jl | ||
@@ -22,7 +22,7 @@ if Sys.iswindows() | ||
elseif Sys.isapple() | ||
const libopenlibm = "@rpath/libopenlibm.3.dylib" | ||
else | ||
- const libopenlibm = "libopenlibm.so.3" | ||
+ const libopenlibm = "libopenlibm.so" | ||
end | ||
|
||
function __init__() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
This patch comes from | ||
https://raw.githubusercontent.com/archlinux/svntogit-community/packages/julia/trunk/julia-libgit-1.2.patch | ||
|
||
diff --git a/stdlib/LibGit2/src/types.jl b/stdlib/LibGit2/src/types.jl | ||
index 9ffcaa3646..5f571e7b26 100644 | ||
--- a/stdlib/LibGit2/src/types.jl | ||
+++ b/stdlib/LibGit2/src/types.jl | ||
@@ -230,6 +230,9 @@ Matches the [`git_remote_callbacks`](https://libgit2.org/libgit2/#HEAD/type/git_ | ||
push_update_reference::Ptr{Cvoid} = C_NULL | ||
push_negotiation::Ptr{Cvoid} = C_NULL | ||
transport::Ptr{Cvoid} = C_NULL | ||
+ @static if LibGit2.VERSION >= v"1.2.0" | ||
+ remote_ready::Ptr{Cvoid} = C_NULL | ||
+ end | ||
payload::Any = nothing | ||
@static if LibGit2.VERSION >= v"0.99.0" | ||
resolve_url::Ptr{Cvoid} = C_NULL |
172 changes: 172 additions & 0 deletions
172
dev-lang/julia/files/julia-1.7.0-llvm_13_compat_part_1.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
This patch is from the julialang repository: | ||
https://github.com/JuliaLang/julia/commit/677ce6d3.patch | ||
but reference comes form ARCH Linux juia package | ||
https://github.com/archlinux/svntogit-community/tree/packages/julia/trunk | ||
|
||
From 677ce6d3adc2f70886f72795b0e5c739e75730ee Mon Sep 17 00:00:00 2001 | ||
From: Valentin Churavy <[email protected]> | ||
Date: Sat, 28 Aug 2021 16:48:32 +0200 | ||
Subject: [PATCH] [LLVM] Adapt to LLVM 13 changes | ||
|
||
--- | ||
src/cgutils.cpp | 8 +++++++- | ||
src/codegen.cpp | 2 +- | ||
src/disasm.cpp | 8 ++++++++ | ||
src/jitlayers.cpp | 7 +++++++ | ||
src/llvm-late-gc-lowering.cpp | 5 +++-- | ||
src/llvm-multiversioning.cpp | 5 +++++ | ||
src/llvm-remove-addrspaces.cpp | 8 ++++++++ | ||
7 files changed, 39 insertions(+), 4 deletions(-) | ||
|
||
diff --git a/src/cgutils.cpp b/src/cgutils.cpp | ||
index 4e9917b6b078..928e1a07b2f1 100644 | ||
--- a/src/cgutils.cpp | ||
+++ b/src/cgutils.cpp | ||
@@ -2757,8 +2757,14 @@ static jl_value_t *static_constant_instance(Constant *constant, jl_value_t *jt) | ||
size_t nargs; | ||
if (const auto *CC = dyn_cast<ConstantAggregate>(constant)) | ||
nargs = CC->getNumOperands(); | ||
- else if (const auto *CAZ = dyn_cast<ConstantAggregateZero>(constant)) | ||
+ else if (const auto *CAZ = dyn_cast<ConstantAggregateZero>(constant)) { | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ // SVE: Elsewhere we use `getMinKownValue` | ||
+ nargs = CAZ->getElementCount().getFixedValue(); | ||
+#else | ||
nargs = CAZ->getNumElements(); | ||
+#endif | ||
+ } | ||
else if (const auto *CDS = dyn_cast<ConstantDataSequential>(constant)) | ||
nargs = CDS->getNumElements(); | ||
else | ||
diff --git a/src/codegen.cpp b/src/codegen.cpp | ||
index 5cc9f66ffaef..9000513151fe 100644 | ||
--- a/src/codegen.cpp | ||
+++ b/src/codegen.cpp | ||
@@ -7394,7 +7394,7 @@ static std::pair<std::unique_ptr<Module>, jl_llvm_functions_t> | ||
#endif | ||
continue; | ||
} | ||
- assert(find(pred_begin(PhiBB), pred_end(PhiBB), FromBB) != pred_end(PhiBB)); // consistency check | ||
+ assert(std::find(pred_begin(PhiBB), pred_end(PhiBB), FromBB) != pred_end(PhiBB)); // consistency check | ||
TerminatorInst *terminator = FromBB->getTerminator(); | ||
if (!terminator->getParent()->getUniqueSuccessor()) { | ||
// Can't use `llvm::SplitCriticalEdge` here because | ||
diff --git a/src/disasm.cpp b/src/disasm.cpp | ||
index 6157873ad71c..589f618396ea 100644 | ||
--- a/src/disasm.cpp | ||
+++ b/src/disasm.cpp | ||
@@ -857,8 +857,16 @@ static void jl_dump_asm_internal( | ||
assert(MRI && "Unable to create target register info!"); | ||
|
||
std::unique_ptr<MCObjectFileInfo> MOFI(new MCObjectFileInfo()); | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ MCSubtargetInfo *MSTI = TheTarget->createMCSubtargetInfo(TheTriple.str(), cpu, features); | ||
+ assert(MSTI && "Unable to create subtarget info!"); | ||
+ | ||
+ MCContext Ctx(TheTriple, MAI.get(), MRI.get(), MSTI, &SrcMgr); | ||
+ MOFI->initMCObjectFileInfo(Ctx, /* PIC */ false, /* LargeCodeModel */ false); | ||
+#else | ||
MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &SrcMgr); | ||
MOFI->InitMCObjectFileInfo(TheTriple, /* PIC */ false, Ctx); | ||
+#endif | ||
|
||
// Set up Subtarget and Disassembler | ||
std::unique_ptr<MCSubtargetInfo> | ||
diff --git a/src/jitlayers.cpp b/src/jitlayers.cpp | ||
index 60b1903aaa80..12497cadf491 100644 | ||
--- a/src/jitlayers.cpp | ||
+++ b/src/jitlayers.cpp | ||
@@ -10,6 +10,9 @@ | ||
#include <llvm/Analysis/TargetTransformInfo.h> | ||
#include <llvm/ExecutionEngine/Orc/CompileUtils.h> | ||
#include <llvm/ExecutionEngine/Orc/ExecutionUtils.h> | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+#include <llvm/ExecutionEngine/Orc/ExecutorProcessControl.h> | ||
+#endif | ||
#include <llvm/Support/DynamicLibrary.h> | ||
#include <llvm/Support/FormattedStream.h> | ||
#include <llvm/Support/SmallVectorMemoryBuffer.h> | ||
@@ -654,7 +657,11 @@ JuliaOJIT::JuliaOJIT(TargetMachine &TM, LLVMContext *LLVMCtx) | ||
MemMgr(createRTDyldMemoryManager()), | ||
JuliaListener(CreateJuliaJITEventListener()), | ||
TSCtx(std::unique_ptr<LLVMContext>(LLVMCtx)), | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ ES(cantFail(orc::SelfExecutorProcessControl::Create())), | ||
+#else | ||
ES(), | ||
+#endif | ||
GlobalJD(ES.createBareJITDylib("JuliaGlobals")), | ||
JD(ES.createBareJITDylib("JuliaOJIT")), | ||
ObjectLayer( | ||
diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp | ||
index 0aac7638be0d..db8b19bacea5 100644 | ||
--- a/src/llvm-late-gc-lowering.cpp | ||
+++ b/src/llvm-late-gc-lowering.cpp | ||
@@ -709,7 +709,7 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) { | ||
else | ||
Numbers[i] = Number; | ||
} | ||
- if (auto VTy = dyn_cast<VectorType>(SI->getType())) { | ||
+ if (auto VTy = dyn_cast<FixedVectorType>(SI->getType())) { | ||
if (NumRoots != Numbers.size()) { | ||
// broadcast the scalar root number to fill the vector | ||
assert(NumRoots == 1); | ||
@@ -736,11 +736,12 @@ void LateLowerGCFrame::LiftPhi(State &S, PHINode *Phi) { | ||
SmallVector<PHINode *, 2> lifted; | ||
std::vector<int> Numbers; | ||
unsigned NumRoots = 1; | ||
- if (auto VTy = dyn_cast<VectorType>(Phi->getType())) { | ||
+ if (auto VTy = dyn_cast<FixedVectorType>(Phi->getType())) { | ||
NumRoots = VTy->getNumElements(); | ||
Numbers.resize(NumRoots); | ||
} | ||
else { | ||
+ // TODO: SVE | ||
assert(isa<PointerType>(Phi->getType()) && "unimplemented"); | ||
} | ||
for (unsigned i = 0; i < NumRoots; ++i) { | ||
diff --git a/src/llvm-multiversioning.cpp b/src/llvm-multiversioning.cpp | ||
index 68081eb53d3a..a82600162fa9 100644 | ||
--- a/src/llvm-multiversioning.cpp | ||
+++ b/src/llvm-multiversioning.cpp | ||
@@ -403,7 +403,12 @@ void CloneCtx::clone_function(Function *F, Function *new_f, ValueToValueMapTy &v | ||
vmap[&*J] = &*DestI++; | ||
} | ||
SmallVector<ReturnInst*,8> Returns; | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ // We are cloning into the same module | ||
+ CloneFunctionInto(new_f, F, vmap, CloneFunctionChangeType::GlobalChanges, Returns); | ||
+#else | ||
CloneFunctionInto(new_f, F, vmap, true, Returns); | ||
+#endif | ||
} | ||
|
||
// Clone all clone_all targets. Makes sure that the base targets are all available. | ||
diff --git a/src/llvm-remove-addrspaces.cpp b/src/llvm-remove-addrspaces.cpp | ||
index ada10c8d5f1f..7c6ef093fbce 100644 | ||
--- a/src/llvm-remove-addrspaces.cpp | ||
+++ b/src/llvm-remove-addrspaces.cpp | ||
@@ -345,7 +345,11 @@ bool RemoveAddrspacesPass::runOnModule(Module &M) | ||
for (auto MD : MDs) | ||
NGV->addMetadata( | ||
MD.first, | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ *MapMetadata(MD.second, VMap)); | ||
+#else | ||
*MapMetadata(MD.second, VMap, RF_MoveDistinctMDs)); | ||
+#endif | ||
|
||
copyComdat(NGV, GV); | ||
|
||
@@ -372,7 +376,11 @@ bool RemoveAddrspacesPass::runOnModule(Module &M) | ||
NF, | ||
F, | ||
VMap, | ||
+#if JL_LLVM_VERSION >= 130000 | ||
+ CloneFunctionChangeType::GlobalChanges, | ||
+#else | ||
/*ModuleLevelChanges=*/true, | ||
+#endif | ||
Returns, | ||
"", | ||
nullptr, |
80 changes: 80 additions & 0 deletions
80
dev-lang/julia/files/julia-1.7.0-llvm_13_compat_part_2.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
This patch is from julialang repository: | ||
https://github.com/JuliaLang/julia/commit/47f9139e.patch | ||
but reference comes form ARCH Linux juia package | ||
https://github.com/archlinux/svntogit-community/tree/packages/julia/trunk | ||
|
||
From 47f9139e88917813cb7beee5e690c48c2ac65de4 Mon Sep 17 00:00:00 2001 | ||
From: Xuanda Yang <[email protected]> | ||
Date: Wed, 9 Jun 2021 22:35:14 +0800 | ||
Subject: [PATCH] codegen: replace deprecated llvm::VectorType::getNumElements | ||
with new APIs (#41144) | ||
|
||
--- | ||
src/llvm-late-gc-lowering.cpp | 29 ++++++++++++++++++++++++++--- | ||
1 file changed, 26 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp | ||
index 50015045151b..4df303462d96 100644 | ||
--- a/src/llvm-late-gc-lowering.cpp | ||
+++ b/src/llvm-late-gc-lowering.cpp | ||
@@ -396,8 +396,14 @@ CountTrackedPointers::CountTrackedPointers(Type *T) { | ||
} | ||
if (isa<ArrayType>(T)) | ||
count *= cast<ArrayType>(T)->getNumElements(); | ||
- else if (isa<VectorType>(T)) | ||
+ else if (isa<VectorType>(T)) { | ||
+#if JL_LLVM_VERSION >= 120000 | ||
+ ElementCount EC = cast<VectorType>(T)->getElementCount(); | ||
+ count *= EC.getKnownMinValue(); | ||
+#else | ||
count *= cast<VectorType>(T)->getNumElements(); | ||
+#endif | ||
+ } | ||
} | ||
if (count == 0) | ||
all = false; | ||
@@ -408,8 +414,14 @@ unsigned getCompositeNumElements(Type *T) { | ||
return ST->getNumElements(); | ||
else if (auto *AT = dyn_cast<ArrayType>(T)) | ||
return AT->getNumElements(); | ||
- else | ||
+ else { | ||
+#if JL_LLVM_VERSION >= 120000 | ||
+ ElementCount EC = cast<VectorType>(T)->getElementCount(); | ||
+ return EC.getKnownMinValue(); | ||
+#else | ||
return cast<VectorType>(T)->getNumElements(); | ||
+#endif | ||
+ } | ||
} | ||
|
||
// Walk through a Type, and record the element path to every tracked value inside | ||
@@ -625,8 +637,14 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) { | ||
} | ||
std::vector<int> Numbers; | ||
unsigned NumRoots = 1; | ||
- if (auto VTy = dyn_cast<VectorType>(SI->getType())) | ||
+ if (auto VTy = dyn_cast<VectorType>(SI->getType())) { | ||
+#if JL_LLVM_VERSION >= 120000 | ||
+ ElementCount EC = VTy->getElementCount(); | ||
+ Numbers.resize(EC.getKnownMinValue(), -1); | ||
+#else | ||
Numbers.resize(VTy->getNumElements(), -1); | ||
+#endif | ||
+ } | ||
else | ||
assert(isa<PointerType>(SI->getType()) && "unimplemented"); | ||
assert(!isTrackedValue(SI)); | ||
@@ -686,7 +704,12 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) { | ||
assert(NumRoots == 1); | ||
int Number = Numbers[0]; | ||
Numbers.resize(0); | ||
+#if JL_LLVM_VERSION >= 120000 | ||
+ ElementCount EC = VTy->getElementCount(); | ||
+ Numbers.resize(EC.getKnownMinValue(), Number); | ||
+#else | ||
Numbers.resize(VTy->getNumElements(), Number); | ||
+#endif | ||
} | ||
} | ||
if (!isa<PointerType>(SI->getType())) |
Oops, something went wrong.