diff --git a/L/libjulia/build_tarballs.jl b/L/libjulia/build_tarballs.jl index 40559e85fc2..2e10e188ced 100644 --- a/L/libjulia/build_tarballs.jl +++ b/L/libjulia/build_tarballs.jl @@ -31,7 +31,7 @@ function Pkg.Types.is_stdlib(uuid::Base.UUID, julia_version::VersionNumber) return false end -jllversion=v"1.10.10" +jllversion=v"1.10.11" for ver in julia_full_versions build_julia(ARGS, ver; jllversion) end diff --git a/L/libjulia/bundled/patches/1.11.0-rc1/loader_trampolines.patch b/L/libjulia/bundled/patches/1.11.0-rc1/loader_trampolines.patch deleted file mode 100644 index cc768b75f7b..00000000000 --- a/L/libjulia/bundled/patches/1.11.0-rc1/loader_trampolines.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 286b7ba8a36fbe0ea29c599f629dfa7e6b855133 Mon Sep 17 00:00:00 2001 -From: Max Horn -Date: Thu, 22 Feb 2024 17:42:02 +0100 -Subject: [PATCH] Add debug variant of loader_trampolines.o - -This prevents a race condition when building 'julia-cli-debug -julia-cli-release' simultaneously (as we do for libjulia_jll, and -also generally seems appropriate given what is done for all other -source files. ---- - cli/Makefile | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/cli/Makefile b/cli/Makefile -index c72ebff2b9..4e32c53b9a 100644 ---- a/cli/Makefile -+++ b/cli/Makefile -@@ -48,7 +48,7 @@ LIB_DOBJS := $(BUILDDIR)/loader_lib.dbg.obj - # If this is an architecture that supports dynamic linking, link in a trampoline definition - ifneq (,$(wildcard $(SRCDIR)/trampolines/trampolines_$(ARCH).S)) - LIB_OBJS += $(BUILDDIR)/loader_trampolines.o --LIB_DOBJS += $(BUILDDIR)/loader_trampolines.o -+LIB_DOBJS += $(BUILDDIR)/loader_trampolines.dbg.obj - endif - - default: release -@@ -65,6 +65,8 @@ $(BUILDDIR)/loader_exe.dbg.obj : $(SRCDIR)/loader_exe.c $(HEADERS) $(JULIAHOME)/ - @$(call PRINT_CC, $(CC) $(DEBUGFLAGS) $(LOADER_CFLAGS) -c $< -o $@) - $(BUILDDIR)/loader_trampolines.o : $(SRCDIR)/trampolines/trampolines_$(ARCH).S $(HEADERS) $(SRCDIR)/trampolines/common.h - @$(call PRINT_CC, $(CC) $(SHIPFLAGS) $(LOADER_CFLAGS) $< -c -o $@) -+$(BUILDDIR)/loader_trampolines.dbg.obj : $(SRCDIR)/trampolines/trampolines_$(ARCH).S $(HEADERS) $(SRCDIR)/trampolines/common.h -+ @$(call PRINT_CC, $(CC) $(DEBUGFLAGS) $(LOADER_CFLAGS) $< -c -o $@) - - # Debugging target to help us see what kind of code is being generated for our trampolines - dump-trampolines: $(SRCDIR)/trampolines/trampolines_$(ARCH).S --- -2.43.2 - diff --git a/L/libjulia/bundled/patches/1.11.0-rc3/bf16-workaround.patch b/L/libjulia/bundled/patches/1.11.0-rc3/bf16-workaround.patch new file mode 100644 index 00000000000..facd123105a --- /dev/null +++ b/L/libjulia/bundled/patches/1.11.0-rc3/bf16-workaround.patch @@ -0,0 +1,29 @@ +From 9e4740467d9597bde827aa93b50fa1a52d80513f Mon Sep 17 00:00:00 2001 +From: Max Horn +Date: Tue, 3 Sep 2024 09:55:42 +0200 +Subject: [PATCH] Workaround linker error on macOS about missing __truncsfbf2 + +Since for libjulia_jll we only care about the kernel API/ABI, +and this does not seem to affect it, just turn off the user of +the __bf16 type. + +For details see Julia issue #52067 +--- + src/runtime_intrinsics.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/runtime_intrinsics.c b/src/runtime_intrinsics.c +index db4007d320..e3448e2e2f 100644 +--- a/src/runtime_intrinsics.c ++++ b/src/runtime_intrinsics.c +@@ -355,6 +355,7 @@ float julia_bfloat_to_float(uint16_t param) { + #if ((defined(__GNUC__) && __GNUC__ > 12) || \ + (defined(__clang__) && __clang_major__ > 16)) && \ + !defined(_CPU_PPC64_) && !defined(_CPU_PPC_) && \ ++ !(defined(_CPU_X86_64_) && defined(_OS_DARWIN_)) && \ + !defined(_OS_WINDOWS_) + #define BFLOAT16_TYPE __bf16 + #define BFLOAT16_TO_UINT16(x) (*(uint16_t*)&(x)) +-- +2.46.0 + diff --git a/L/libjulia/bundled/patches/1.12.0-DEV/bf16-workaround.patch b/L/libjulia/bundled/patches/1.12.0-DEV/bf16-workaround.patch new file mode 100644 index 00000000000..facd123105a --- /dev/null +++ b/L/libjulia/bundled/patches/1.12.0-DEV/bf16-workaround.patch @@ -0,0 +1,29 @@ +From 9e4740467d9597bde827aa93b50fa1a52d80513f Mon Sep 17 00:00:00 2001 +From: Max Horn +Date: Tue, 3 Sep 2024 09:55:42 +0200 +Subject: [PATCH] Workaround linker error on macOS about missing __truncsfbf2 + +Since for libjulia_jll we only care about the kernel API/ABI, +and this does not seem to affect it, just turn off the user of +the __bf16 type. + +For details see Julia issue #52067 +--- + src/runtime_intrinsics.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/runtime_intrinsics.c b/src/runtime_intrinsics.c +index db4007d320..e3448e2e2f 100644 +--- a/src/runtime_intrinsics.c ++++ b/src/runtime_intrinsics.c +@@ -355,6 +355,7 @@ float julia_bfloat_to_float(uint16_t param) { + #if ((defined(__GNUC__) && __GNUC__ > 12) || \ + (defined(__clang__) && __clang_major__ > 16)) && \ + !defined(_CPU_PPC64_) && !defined(_CPU_PPC_) && \ ++ !(defined(_CPU_X86_64_) && defined(_OS_DARWIN_)) && \ + !defined(_OS_WINDOWS_) + #define BFLOAT16_TYPE __bf16 + #define BFLOAT16_TO_UINT16(x) (*(uint16_t*)&(x)) +-- +2.46.0 + diff --git a/L/libjulia/bundled/patches/1.12.0-DEV/loader_trampolines.patch b/L/libjulia/bundled/patches/1.12.0-DEV/loader_trampolines.patch deleted file mode 100644 index cc768b75f7b..00000000000 --- a/L/libjulia/bundled/patches/1.12.0-DEV/loader_trampolines.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 286b7ba8a36fbe0ea29c599f629dfa7e6b855133 Mon Sep 17 00:00:00 2001 -From: Max Horn -Date: Thu, 22 Feb 2024 17:42:02 +0100 -Subject: [PATCH] Add debug variant of loader_trampolines.o - -This prevents a race condition when building 'julia-cli-debug -julia-cli-release' simultaneously (as we do for libjulia_jll, and -also generally seems appropriate given what is done for all other -source files. ---- - cli/Makefile | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/cli/Makefile b/cli/Makefile -index c72ebff2b9..4e32c53b9a 100644 ---- a/cli/Makefile -+++ b/cli/Makefile -@@ -48,7 +48,7 @@ LIB_DOBJS := $(BUILDDIR)/loader_lib.dbg.obj - # If this is an architecture that supports dynamic linking, link in a trampoline definition - ifneq (,$(wildcard $(SRCDIR)/trampolines/trampolines_$(ARCH).S)) - LIB_OBJS += $(BUILDDIR)/loader_trampolines.o --LIB_DOBJS += $(BUILDDIR)/loader_trampolines.o -+LIB_DOBJS += $(BUILDDIR)/loader_trampolines.dbg.obj - endif - - default: release -@@ -65,6 +65,8 @@ $(BUILDDIR)/loader_exe.dbg.obj : $(SRCDIR)/loader_exe.c $(HEADERS) $(JULIAHOME)/ - @$(call PRINT_CC, $(CC) $(DEBUGFLAGS) $(LOADER_CFLAGS) -c $< -o $@) - $(BUILDDIR)/loader_trampolines.o : $(SRCDIR)/trampolines/trampolines_$(ARCH).S $(HEADERS) $(SRCDIR)/trampolines/common.h - @$(call PRINT_CC, $(CC) $(SHIPFLAGS) $(LOADER_CFLAGS) $< -c -o $@) -+$(BUILDDIR)/loader_trampolines.dbg.obj : $(SRCDIR)/trampolines/trampolines_$(ARCH).S $(HEADERS) $(SRCDIR)/trampolines/common.h -+ @$(call PRINT_CC, $(CC) $(DEBUGFLAGS) $(LOADER_CFLAGS) $< -c -o $@) - - # Debugging target to help us see what kind of code is being generated for our trampolines - dump-trampolines: $(SRCDIR)/trampolines/trampolines_$(ARCH).S --- -2.43.2 - diff --git a/L/libjulia/common.jl b/L/libjulia/common.jl index 4b5732107d8..07b0ee43469 100644 --- a/L/libjulia/common.jl +++ b/L/libjulia/common.jl @@ -5,7 +5,7 @@ using BinaryBuilder, Pkg include("../../fancy_toys.jl") # for get_addable_spec # list of supported Julia versions -julia_full_versions = [v"1.6.3", v"1.7.0", v"1.8.2", v"1.9.0", v"1.10.0", v"1.11.0-beta1", v"1.12.0-DEV"] +julia_full_versions = [v"1.6.3", v"1.7.0", v"1.8.2", v"1.9.0", v"1.10.0", v"1.11.0-rc3", v"1.12.0-DEV"] if ! @isdefined julia_versions julia_versions = Base.thispatch.(julia_full_versions) end @@ -49,16 +49,12 @@ function build_julia(ARGS, version::VersionNumber; jllversion=version) v"1.8.2" => "3e2cea35bf5df963ed7b75a83e8febfc000acf1e664ecd657a0772508eb1fb5d", v"1.9.0" => "48f4c8a7d5f33d0bc6ce24226df20ab49e385c2d0c3767ec8dfdb449602095b2", v"1.10.0" => "a4136608265c5d9186ae4767e94ddc948b19b43f760aba3501a161290852054d", + v"1.11.0-rc3" => "8f82f0dbbf5877f6af1c8de7d9d4ec0ea79ecc188c23fc281264a5fa963db5f0", ) - if version == v"1.11.0-beta1" + if version == v"1.12.0-DEV" sources = [ - GitSource("https://github.com/JuliaLang/julia.git", "08e1fc0abb959ce5bd4c75b05518a41b85e4aba1"), - DirectorySource("./bundled"), - ] - elseif version == v"1.12.0-DEV" - sources = [ - GitSource("https://github.com/JuliaLang/julia.git", "ccba6c91e24ebc0940acc2f8c390e6391ce0e292"), + GitSource("https://github.com/JuliaLang/julia.git", "0622123121a33668f4dc771a6183b95fff533a53"), DirectorySource("./bundled"), ] else @@ -162,7 +158,7 @@ function build_julia(ARGS, version::VersionNumber; jllversion=version) elif [[ "${version}" == 1.11.* ]]; then LLVMVERMAJOR=16 elif [[ "${version}" == 1.12.* ]]; then - LLVMVERMAJOR=16 + LLVMVERMAJOR=18 else echo "Error, LLVM version not specified" exit 1 @@ -268,6 +264,26 @@ function build_julia(ARGS, version::VersionNumber; jllversion=version) EOM fi + if [[ "${version}" == 1.[7-9].* ]] || + [[ "${version}" == 1.1[0-1].* ]]; then + if [[ "${target}" == *apple* ]]; then + # Always define LLVMLIBUNWIND for apple and julia 1.6 to 1.11 to work + # around issues in old versions of the Julia build system which did + # not always add this flag when needed (was fixed in Julia 1.12 via + # https://github.com/JuliaLang/julia/pull/55639). + cat << EOM >>Make.user + JCPPFLAGS+=-DLLVMLIBUNWIND + EOM + elif [[ "${target}" == *freebsd* ]]; then + # the julia symbol version script contains undefined entries, + # which cause newer lld versions to emit errors + # see e.g. https://github.com/JuliaLang/julia/pull/55363 + cat << EOM >>Make.user + OSLIBS+=-Wl,--undefined-version + EOM + fi + fi + # lld is too strict about some libraries that were built a long time ago # (libLLVM-11jl.so for julia 1.6 on freebsd) if [[ "${version}" == 1.6.* ]] && [[ "${target}" == *freebsd* ]]; then @@ -409,17 +425,17 @@ function build_julia(ARGS, version::VersionNumber; jllversion=version) push!(dependencies, Dependency(get_addable_spec("LLVMLibUnwind_jll", v"12.0.1+0"); platforms=filter(Sys.isapple, platforms))) push!(dependencies, BuildDependency(get_addable_spec("LLVM_full_jll", v"15.0.7+10"))) elseif version.major == 1 && version.minor == 11 - push!(dependencies, BuildDependency(get_addable_spec("SuiteSparse_jll", v"7.2.1+1"))) - push!(dependencies, Dependency(get_addable_spec("LibUV_jll", v"2.0.1+15"))) + push!(dependencies, BuildDependency(get_addable_spec("SuiteSparse_jll", v"7.7.0+0"))) + push!(dependencies, Dependency(get_addable_spec("LibUV_jll", v"2.0.1+16"))) push!(dependencies, Dependency(get_addable_spec("LibUnwind_jll", v"1.7.2+2"); platforms=filter(!Sys.isapple, platforms))) push!(dependencies, Dependency(get_addable_spec("LLVMLibUnwind_jll", v"12.0.1+0"); platforms=filter(Sys.isapple, platforms))) push!(dependencies, BuildDependency(get_addable_spec("LLVM_full_jll", v"16.0.6+4"))) elseif version.major == 1 && version.minor == 12 - push!(dependencies, BuildDependency(get_addable_spec("SuiteSparse_jll", v"7.2.1+1"))) - push!(dependencies, Dependency(get_addable_spec("LibUV_jll", v"2.0.1+15"))) - push!(dependencies, Dependency(get_addable_spec("LibUnwind_jll", v"1.7.2+2"); platforms=filter(!Sys.isapple, platforms))) + push!(dependencies, BuildDependency(get_addable_spec("SuiteSparse_jll", v"7.8.0+0"))) + push!(dependencies, Dependency(get_addable_spec("LibUV_jll", v"2.0.1+16"))) + push!(dependencies, Dependency(get_addable_spec("LibUnwind_jll", v"1.8.1+1"); platforms=filter(!Sys.isapple, platforms))) push!(dependencies, Dependency(get_addable_spec("LLVMLibUnwind_jll", v"12.0.1+0"); platforms=filter(Sys.isapple, platforms))) - push!(dependencies, BuildDependency(get_addable_spec("LLVM_full_jll", v"16.0.6+4"))) + push!(dependencies, BuildDependency(get_addable_spec("LLVM_full_jll", v"18.1.7+2"))) else error("Unsupported Julia version") end