diff --git a/fix-dependencies-checksums.patch b/fix-dependencies-checksums.patch new file mode 100644 index 0000000..93b9477 --- /dev/null +++ b/fix-dependencies-checksums.patch @@ -0,0 +1,14 @@ +diff -ruN julia-1.10.0.orig/deps/checksums/llvm julia-1.10.0/deps/checksums/llvm +--- julia-1.10.0.orig/deps/checksums/llvm 2024-04-23 08:12:24.796581281 +0800 ++++ julia-1.10.0/deps/checksums/llvm 2024-04-24 16:46:09.695896211 +0800 +@@ -148,8 +148,8 @@ + libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx03-llvm_version+15.tar.gz/sha512/3a010828b7a6fb51101cf08a74702d2d3d5d85579a3e23a91dff1b3622ca6fd8f04948cefbbf74d03e3cf7955b566dc439f04ce73ba77efce9d8c8e1cc37d790 + libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/md5/bb96ff22c46a5587b066e5994c1d806d + libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.asserts.tar.gz/sha512/d643d142777122cc745dfe853070007f70abcb32a9fe5bdaff3ca0eae77f5b774323ccf1c51340ad2f18c72fbbf83bece673dde0c48f94b1ee4204a69bbcdbe4 +-libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/9a68655b71b38c61b59959ee890199f0 +-libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/1b9e20d00114819029aad078aa201a1bcabbf5a5b66bf9867019479180a37cc930cd50127657f87474ae045d1ee808298378e3ac2b8079492a8a3ce4663bdd60 ++libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/md5/58466a504b06dbfb8dc48c15184193c8 ++libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz/sha512/d1d76bdaf3e74a1003fef3a623675be7a9ec0c64f7c5a0c88e7da0bd0384791b39e46dc297b3544f634a1820ffd051a3843c2e91d9f53319609d66542ea30e23 + libLLVM.v15.0.7+10.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/md5/ad4fb8227d147a16b19442b194a22467 + libLLVM.v15.0.7+10.aarch64-linux-musl-cxx03-llvm_version+15.asserts.tar.gz/sha512/fb9c1184de6ea663b3c1b20ba5a5f65afa6bd2a0ea70472db8dd15246b7f0cbe7a0d29eb3dda66d969a6a9b48269f34c200431279e2215760f64e74de6f865c7 + libLLVM.v15.0.7+10.aarch64-linux-musl-cxx03-llvm_version+15.tar.gz/md5/8981bd41cb59d4680fff276a5cea6b17 diff --git a/julia-1.10.0-full.tar.gz b/julia-1.10.0-full.tar.gz deleted file mode 100644 index 4222208..0000000 --- a/julia-1.10.0-full.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5f8c0ce08cf132bdd919ca0b5b3b2b66c89e0e5f7e7fb2a81ffa7f225e3db4c -size 318571431 diff --git a/julia-1.10.0-full.tar.gz.asc b/julia-1.10.0-full.tar.gz.asc deleted file mode 100644 index a671112..0000000 --- a/julia-1.10.0-full.tar.gz.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQJLBAABCAA1FiEENnPfUp2QSUd/drN1ZuPH3APW5JUFAmWLPc8XHGJ1aWxkYm90 -QGp1bGlhbGFuZy5vcmcACgkQZuPH3APW5JUCTw/7B/prxAGrs4gnVRjRPLhKTHCP -FR50fKi2ABMGzb1GBbkqDWscqIFa+MhbEeERMofJbw8YnrOY0kQeZRlgQWmDqI5N -nCtbYGaJJs1hFS7eq4yEP/PotUA/97ILWZp1Q6wOQPgZMxFILOmdusH4SzwgDLum -swgKg8jw4aQ1O8xhumR4Fe0/yqVnrGsVm6UCsHiLKxHekHv+/I020t0CHkrSbpSB -A85WX3NDoU3rQTLiWw9sGxT68gmRIiXvEaNQUnk7JHi5AKHJuXOX5A22vlrzFbbW -3LUc3m6m0evTtkW8T7eYy4VDYaohC3201Lo9zr5idXuCASew1PTx0pTl9FJwhl5K -VebtQiUnDL1FTp9oTb/B1wQft3neE/oMBHXYMB2gYxaDrmH5MvsRUbH6fJJmM71U -P2hZ5WfE2t/sH3miipiotl6ncaD82LZfBK45Yy4OVoCuTtuJggmK9Er0HT1r/8Xc -SogQhGikgvmipob81j6VRuizTYloTvGVpO0kiVFmGKKnB52/ZTCGBdDKfpOb9Jef -bwAsEayvcZ5NL1uDC53TXYNDNO4nc6aAufuI59RkvBJ7dkdROpNPhQ9kUskWqKDM -chFf9WUKxNTbe1jBzoTNpe0DMuXM/N0Eb1n7ijdLxFZhOdjuHR7DXzfU9H50fitA -EM7KlLiwfM3y4x8DAZI= -=C0jJ ------END PGP SIGNATURE----- diff --git a/julia-1.10.2-full.tar.gz b/julia-1.10.2-full.tar.gz new file mode 100644 index 0000000..539d693 --- /dev/null +++ b/julia-1.10.2-full.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62468720afbc410eb4f262ed2433a92132627872c9f690b704dc045ccb155401 +size 318584736 diff --git a/julia-1.10.2-full.tar.gz.asc b/julia-1.10.2-full.tar.gz.asc new file mode 100644 index 0000000..0cd1e95 --- /dev/null +++ b/julia-1.10.2-full.tar.gz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- + +iQJKBAABCAA1FiEENnPfUp2QSUd/drN1ZuPH3APW5JUFAmXiH04XHGJ1aWxkYm90 +QGp1bGlhbGFuZy5vcmcACgkQZuPH3APW5JV3pA/48VzxerYJHGwYbGKztfuchpkQ +sP0ujcFaMXs7I3zFIwk7UO9jYbjliHVi0EUnvXOabpVO9zJ9qgOmmZqRxdx+YX6/ +eGXi2wkOc4GgSRj4t75Npn9tPS7ohMo6CoNhmo4Y1EMoCcnrLPMsoIooUe3UHM4s +wIbqQLyb32zSDdhDgXr8XsObObbXJ95OUy8JgF2qTnIICFoNicaAEsz8zqhDL6g6 +3mvKRvUR6JQ9fFkbnYdpXQezxeDg+FhVv6SjGw5F+gvPLeMyPkb+ea8DLaBYQ5vd +Tk+/OPKFYm5u50H9XEawJMXonY0zt8LnN+SqVSTXuwb1oV8e8wY7WEjHD41yvEYR +Kf03OdZ+uZrvMxBEbc4EXnFvxnTzQyZ3fLjRGD94CPr2TXZbr7uWhm/Bo3espo79 +xiSdTf3un8f85TDbwHkCB1AYD4du32DukyJ5lQ9Otnrf7vHFgzyQYWlm2kTe/jma +FgBEUWiN87E4dBxazoVjqN5Rq9SkQc576dmgmXuE4XE6uWM4dfMZSxdISUz2FEzH +Ze+4nDhbyluN/kOrVOmJPkISknwoTMRTXiAuI0ac1sh9TI5F0KAs1ONUY2qOc6nv +UXvuBUdAYcXhfZ4jfqg+m92ljD3O/DF3MEu1jTsAzBPKDW6s6RLIfVH5ZvMRjvWj +6btI0wY/bPFdtTimdA== +=Gh6O +-----END PGP SIGNATURE----- diff --git a/julia-hardcoded-libs.patch b/julia-hardcoded-libs.patch index b63dc3f..53ef56a 100644 --- a/julia-hardcoded-libs.patch +++ b/julia-hardcoded-libs.patch @@ -36,41 +36,6 @@ index 215de8aed6..918d1ffdc2 100644 + const libopenlibm = "libopenlibm.so" end - function __init__() -diff --git a/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl b/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl -index 2940970cef..359dbd9065 100644 ---- a/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl -+++ b/stdlib/SuiteSparse_jll/src/SuiteSparse_jll.jl -@@ -67,18 +67,18 @@ elseif Sys.isapple() - const libsuitesparseconfig = "@rpath/libsuitesparseconfig.7.dylib" - const libumfpack = "@rpath/libumfpack.6.dylib" - else -- const libamd = "libamd.so.3" -- const libbtf = "libbtf.so.2" -- const libcamd = "libcamd.so.3" -- const libccolamd = "libccolamd.so.3" -- const libcholmod = "libcholmod.so.4" -- const libcolamd = "libcolamd.so.3" -- const libklu = "libklu.so.2" -- const libldl = "libldl.so.3" -- const librbio = "librbio.so.4" -- const libspqr = "libspqr.so.4" -- const libsuitesparseconfig = "libsuitesparseconfig.so.7" -- const libumfpack = "libumfpack.so.6" -+ const libamd = "libamd.so" -+ const libbtf = "libbtf.so" -+ const libcamd = "libcamd.so" -+ const libccolamd = "libccolamd.so" -+ const libcholmod = "libcholmod.so" -+ const libcolamd = "libcolamd.so" -+ const libklu = "libklu.so" -+ const libldl = "libldl.so" -+ const librbio = "librbio.so" -+ const libspqr = "libspqr.so" -+ const libsuitesparseconfig = "libsuitesparseconfig.so" -+ const libumfpack = "libumfpack.so" - end - function __init__() diff -ruN julia-1.9.4.orig/stdlib/LibSSH2_jll/src/LibSSH2_jll.jl julia-1.9.4/stdlib/LibSSH2_jll/src/LibSSH2_jll.jl --- julia-1.9.4.orig/stdlib/LibSSH2_jll/src/LibSSH2_jll.jl 2023-12-11 08:55:02.868720503 +0800 diff --git a/julia-libgit2-1.7.patch b/julia-libgit2-1.7.patch deleted file mode 100644 index 5bc9659..0000000 --- a/julia-libgit2-1.7.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 764484f58b5daead9fd58de08ce35382758d3985 Mon Sep 17 00:00:00 2001 -From: Yichao Yu -Date: Sun, 10 Sep 2023 14:07:57 -0400 -Subject: [PATCH] libgit2 1.7.0 support - ---- - stdlib/LibGit2/src/consts.jl | 5 +++++ - stdlib/LibGit2/src/types.jl | 5 ++++- - 2 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/stdlib/LibGit2/src/consts.jl b/stdlib/LibGit2/src/consts.jl -index f3a460108db6b..8f0e6eeb2ec87 100644 ---- a/stdlib/LibGit2/src/consts.jl -+++ b/stdlib/LibGit2/src/consts.jl -@@ -468,4 +468,9 @@ Option flags for `GitProxy`. - TRACE_TRACE - end - -+# The type of object id -+@enum(GIT_OID_TYPE, -+ _OID_DEFAULT = 0, -+ OID_SHA1 = 1) -+ - end -diff --git a/stdlib/LibGit2/src/types.jl b/stdlib/LibGit2/src/types.jl -index 0b653f9b6ad21..c796ff0f98b20 100644 ---- a/stdlib/LibGit2/src/types.jl -+++ b/stdlib/LibGit2/src/types.jl -@@ -2,7 +2,7 @@ - - using Base: something - import Base.@kwdef --import .Consts: GIT_SUBMODULE_IGNORE, GIT_MERGE_FILE_FAVOR, GIT_MERGE_FILE, GIT_CONFIG -+import .Consts: GIT_SUBMODULE_IGNORE, GIT_MERGE_FILE_FAVOR, GIT_MERGE_FILE, GIT_CONFIG, GIT_OID_TYPE - - const OID_RAWSZ = 20 - const OID_HEXSZ = OID_RAWSZ * 2 -@@ -439,6 +439,9 @@ The fields represent: - # options controlling how the diff text is generated - context_lines::UInt32 = UInt32(3) - interhunk_lines::UInt32 = UInt32(0) -+ @static if LibGit2.VERSION >= v"1.7.0" -+ oid_type::GIT_OID_TYPE = Consts._OID_DEFAULT -+ end - id_abbrev::UInt16 = UInt16(7) - max_size::Int64 = Int64(512*1024*1024) #512Mb - old_prefix::Cstring = Cstring(C_NULL) -diff --git a/stdlib/LibGit2/test/libgit2-tests.jl b/stdlib/LibGit2/test/libgit2-tests.jl -index 4ace98a0b1..f230ff4e14 100644 ---- a/stdlib/LibGit2/test/libgit2-tests.jl -+++ b/stdlib/LibGit2/test/libgit2-tests.jl -@@ -1181,19 +1177,19 @@ mktempdir() do dir - @testset "diff" begin - LibGit2.with(LibGit2.GitRepo(cache_repo)) do repo - @test !LibGit2.isdirty(repo) -- @test !LibGit2.isdirty(repo, test_file) -- @test !LibGit2.isdirty(repo, "nonexistent") -+# @test !LibGit2.isdirty(repo, test_file) -+# @test !LibGit2.isdirty(repo, "nonexistent") - @test !LibGit2.isdiff(repo, "HEAD") - @test !LibGit2.isdirty(repo, cached=true) -- @test !LibGit2.isdirty(repo, test_file, cached=true) -- @test !LibGit2.isdirty(repo, "nonexistent", cached=true) -+# @test !LibGit2.isdirty(repo, test_file, cached=true) -+# @test !LibGit2.isdirty(repo, "nonexistent", cached=true) - @test !LibGit2.isdiff(repo, "HEAD", cached=true) - open(joinpath(cache_repo,test_file), "a") do f - println(f, "zzzz") - end - @test LibGit2.isdirty(repo) -- @test LibGit2.isdirty(repo, test_file) -- @test !LibGit2.isdirty(repo, "nonexistent") -+# @test LibGit2.isdirty(repo, test_file) -+# @test !LibGit2.isdirty(repo, "nonexistent") - @test LibGit2.isdiff(repo, "HEAD") - @test !LibGit2.isdirty(repo, cached=true) - @test !LibGit2.isdiff(repo, "HEAD", cached=true) diff --git a/julia.changes b/julia.changes index 4eeae2c..8e35f67 100644 --- a/julia.changes +++ b/julia.changes @@ -1,3 +1,133 @@ +------------------------------------------------------------------- +Wed Apr 24 10:16:59 UTC 2024 - Soc Virnyl Estela + +- Update to version 1.10.2: + * JuliaSyntax.jl is now used as the default parser, providing better diagnostics and faster + parsing. Set environment variable `JULIA_USE_FLISP_PARSER` to `1` to switch back to the old + parser if necessary (and if you find this necessary, please file an issue). + * `⥺` (U+297A, `\leftarrowsubset`) and `⥷` (U+2977, `\leftarrowless`) may now be used as + binary operators with arrow precedence. + * When a task forks a child, the parent task's task-local RNG (random number + generator) is no longer affected. The seeding of child based on the parent + task also takes a more disciplined approach to collision resistance, using + a design based on the SplitMix and DotMix splittable RNG schemes. + * A new more-specific rule for methods resolves ambiguities containing Union{} in favor of + the method defined explicitly to handle the Union{} argument. This makes it possible to + define methods to explicitly handle Union{} without the ambiguities that commonly would + result previously. This also lets the runtime optimize certain method lookups in a way + that significantly improves load and inference times for heavily overloaded methods that + dispatch on Types (such as traits and constructors). + * The "h bar" `ℏ` (`\hslash` U+210F) character is now treated as equivalent to `ħ` (`\hbar` U+0127). + * The `@simd` macro now has more limited and clearer semantics: it only enables reordering and contraction + of floating-point operations, instead of turning on all "fastmath" optimizations. + If you observe performance regressions due to this change, you can + recover previous behavior with `@fastmath @simd`, if you are OK with + all the optimizations enabled by the `@fastmath` macro. + * When a method with keyword arguments is displayed in the stack trace view, the textual + representation of the keyword arguments' type is simplified using the new + `@Kwargs{key1::Type1, ...}` macro syntax. + * The mark phase of the garbage collector is now multi-threaded. + * [JITLink](https://llvm.org/docs/JITLink.html) is enabled by default on + Linux aarch64 when Julia is linked to LLVM 15 or later versions. + This should resolve many segmentation faults previously observed on this + platform. + * The precompilation process now uses pidfile locks and orchestrates + multiple julia processes to only have one process + spend effort precompiling while the others wait. Previously all would + do the work and race to overwrite the cache files. + * New option `--gcthreads` to set how many threads will be used by the + garbage collector. + The default is `N/2` where `N` is the number of worker threads + (`--threads`) used by Julia. + * SparseArrays and SuiteSparse are no longer included in the default system + image, so the core language no longer contains GPL libraries. However, + these libraries are still included alongside the language in the standard + binary distribution. + * `tanpi` is now defined. It computes tan(π*x) more accurately than + `tan(pi*x)`. + * `fourthroot(x)` is now defined in `Base.Math` and can be used to compute + the fourth root of `x`. It can also be accessed using the unicode + character `∜`, which can be typed by `\fourthroot`. + * `Libc.memmove`, `Libc.memset`, and `Libc.memcpy` are now defined, whose + functionality matches that of their respective C calls. + * `Base.isprecompiled(pkg::PkgId)` has been added, to identify whether a + package has already been precompiled. + * `binomial(x, k)` now supports non-integer `x`. + * A `CartesianIndex` is now treated as a "scalar" for broadcasting. + * `printstyled` now supports italic output. + * `parent` and `parentindices` support `SubString`s. + * `replace(string, pattern...)` now supports an optional `IO` argument to + write the output to a stream rather than returning a string. + * `startswith` now supports seekable `IO` streams. + * The `initialized=true` keyword assignment for `sortperm!` and + `partialsortperm!` is now a no-op. It previously exposed unsafe behavior. + * Printing integral `Rational`s will skip the denominator in `Rational`-typed + IO context (e.g. in arrays). + * `Pkg.precompile` now accepts `timing` as a keyword argument + which displays per package timing information for precompilation + (e.g. `Pkg.precompile(timing=true)`). + * `AbstractQ` no longer subtypes `AbstractMatrix`. Moreover, + `adjoint(Q::AbstractQ)` no longer wraps `Q` in an `Adjoint` type, + but instead in an `AdjointQ`, that itself subtypes `AbstractQ`. This + change accounts for the fact that typically `AbstractQ` instances + behave like function-based, matrix-backed linear operators, and + hence don't allow for efficient indexing. Also, many `AbstractQ` + types can act on vectors/matrices of different size, acting like a + matrix with context-dependent size. With this change, `AbstractQ` + has a well-defined API that is described in detail in the [Julia + documentation](https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#man-linalg-abstractq). + * Adjoints and transposes of `Factorization` objects are no longer wrapped + in `Adjoint` and `Transpose` wrappers, respectively. Instead, they are + wrapped in `AdjointFactorization` and `TranposeFactorization` types, + which themselves subtype `Factorization`. + * New functions `hermitianpart` and `hermitianpart!` for extracting the + Hermitian (real symmetric) part of a matrix. + * The `norm` of the adjoint or transpose of an `AbstractMatrix` now returns + the norm of the parent matrix by default, matching the current behaviour + for `AbstractVector`s. + * `eigen(A, B)` and `eigvals(A, B)`, where one of `A` or `B` is symmetric + or Hermitian, are now fully supported. + * `eigvals/eigen(A, cholesky(B))` now computes the generalized eigenvalues + (`eigen`: and eigenvectors) of `A` and `B` via Cholesky decomposition + for positive definite `B`. Note: The second argument is the output of + `cholesky`. + * Format specifiers now support dynamic width and precision, e.g. `%*s` + and `%*.*g`. + * When stack traces are printed, the printed depth of types in function + signatures will be limited + to avoid overly verbose output. + * The `@test_broken` macro (or `@test` with `broken=true`) now complains + if the test expression returns a non-boolean value in the same way as + a non-broken test. + * When a call to `@test` fails or errors inside a function, a larger + stacktrace is now printed such that the location of the test within a + `@testset` can be retrieved. + * `code_native` and `@code_native` now default to intel syntax instead + of AT&T. + * `@time_imports` now shows the timing of any module `__init__()`s that + are run. + * The `@pure` macro is now deprecated. Use `Base.@assume_effects :foldable` instead ([#48682]). + +- Set Cmake version requirement to be at least 3.22 +- Accommodate renaming dependencies in specfile. +- Disable jldownload by just running true +- Add fix-dependencies-checksums.patch + * Fix checksum checks for suitesparse aarch64. Sources are fetched from the same source. + * Fix checksum checks for libLLVM_jll + * It's checking for the checksums and it is also trying to fetch them from the internet + and idk what's the point of having the full julia tarball. +- Fix build + * use bundled suitesparse. comment out system suitesparse build requirement + * comment out openblas development dependencies. use bundled openblas. + * comment out lapack development dependencies. use bundled lapack. + * move openblas build away from the actual make build. + this ensures that it's installed properly because doing otherwise will + skip the install of the dependencies. weird but it works. +- Update specfile for bundled LLVM +- Add missing build requirements for bundled llvm 15 +- Fix aarch64 build. it needs to download a source that can just be copied which is + SuiteSparse.v7.2.1+1.aarch64-linux-gnu.tar.gz + ------------------------------------------------------------------- Sun Feb 11 05:19:11 UTC 2024 - Soc Virnyl Estela diff --git a/julia.spec b/julia.spec index 5a5c9c8..98d849d 100644 --- a/julia.spec +++ b/julia.spec @@ -26,12 +26,13 @@ %global __provides_exclude_from ^%{_libdir}/%{name}/.*\\.so$ # List all bundled libraries. -%global _privatelibs lib(LLVM-.*|ccalltest|llvmcalltest|uv|openblas.*|sys|julia.*)\\.so.* +%global _privatelibs lib(LLVM-.*|ccalltest|llvmcalltest|uv|openblas*|lapack*|sys|julia.*|amd|btf|camd|ccolamd|cholmod|colamd|cxsparse|graphblas|klu|klu_cholmod|lagraph|lagraphx|ldl|paru|rbio|spex|spqr|suitesparse_mongoose|suitesparseconfig|umfpack)\\.so.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ %define libjulia_sover_major 1 %define libjulia_sover_minor 10 +%define _julia_llvm_version 15.0.7-10 %if "@BUILD_FLAVOR@%{nil}" == "compat" %define compat_mode 1 @@ -48,7 +49,7 @@ # LTO currently makes building blastrampoline and Julia itself fail # It is not enabled upstream anyway %global _lto_cflags %nil -Version: 1.10.0 +Version: 1.10.2 Release: 0 URL: http://julialang.org/ Source0: https://github.com/JuliaLang/julia/releases/download/v%{version}/julia-%{version}-full.tar.gz @@ -56,28 +57,29 @@ Source1: https://github.com/JuliaLang/julia/releases/download/v%{version} Source2: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/keys/pgp/3673DF529D9049477F76B37566E3C7DC03D6E495.asc?ref_type=heads#/julia.keyring Source3: https://www.unicode.org/Public/13.0.0/ucd/UnicodeData.txt Source4: julia-rpmlintrc +Source10: https://github.com/JuliaBinaryWrappers/libLLVM_jll.jl/releases/download/libLLVM-v15.0.7+10/libLLVM.v15.0.7.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz + # PATCH-FIX-OPENSUSE julia-env-script-interpreter.patch ronisbr@gmail.com -- Change script interpreted to avoid errors in rpmlint. Patch1: julia-env-script-interpreter.patch # Patch2: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/e08e1444.patch?ref_type=heads#/new-pass-manager.patch # Patch3: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/959902f1.patch?ref_type=heads#/support-float16-depending-on-llvm-and-platform.patch # Patch4: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/f11bfc6c.patch?ref_type=heads#/use-newpm-asan.patch # Patch5: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/21d4c2f1.patch?ref_type=heads#/llvm-set-of-custom-patches.patch -Patch6: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-libunwind-1.6.patch?ref_type=heads#/julia-libunwind-1.9.patch -# Patch8: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-libgit2-1.7.patch?ref_type=heads#/julia-libgit2-1.7.patch -# Patch9: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-suitesparse-7.patch?ref_type=heads#/julia-suitesparse-7.patch -Patch9: https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-libcholmod-cuda.patch?ref_type=heads#/julia-remove-libcholmod_cuda.patch -Patch10: use-system-libuv-correctly.patch +# https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-libunwind-1.6.patch?ref_type=heads +Patch6: julia-libunwind-1.9.patch +# Based of https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-libcholmod-cuda.patch?ref_type=heads +Patch10: julia-remove-libcholmod_cuda.patch Patch11: openlibm.patch -Patch12: llvm-link-shared.patch +# Patch12: llvm-link-shared.patch # Adapted from https://gitlab.archlinux.org/archlinux/packaging/packages/julia/-/raw/main/julia-hardcoded-libs.patch?ref_type=heads # We just remove the julia specific llvm sofile change Patch13: julia-hardcoded-libs.patch Patch14: disable-download-of-unicode-for-doc-gen.patch Patch15: disable-doc-gen-in-makefile.patch +Patch16: fix-dependencies-checksums.patch BuildRequires: ImageMagick -BuildRequires: blas-devel BuildRequires: ca-certificates -BuildRequires: cmake +BuildRequires: cmake >= 3.22 BuildRequires: curl BuildRequires: dSFMT-devel BuildRequires: dos2unix @@ -89,25 +91,33 @@ BuildRequires: gcc-c++ BuildRequires: gcc-fortran BuildRequires: git BuildRequires: gmp-devel >= 6.1.2 -BuildRequires: hicolor-icon-theme -BuildRequires: lapack-devel >= 3.5.0 -BuildRequires: libblastrampoline-devel -BuildRequires: libcholmod5 -BuildRequires: libcurl-devel BuildRequires: libgit2-devel +BuildRequires: mpfr-devel + +# These lists the supposedly dependencies that are now bundled +# BuildRequires: lapack-devel >= 3.5.0 +# BuildRequires: lld15 +# BuildRequires: llvm15-devel +# BuildRequires: libcholmod5 +# BuildRequires: libuv-devel +# BuildRequires: libopenblas_openmp-devel >= 0.3.5 +# BuildRequires: openblas-common-devel +# BuildRequires: blas-devel +# BuildRequires: suitesparse-devel >= 7.2.1 + +BuildRequires: hicolor-icon-theme +BuildRequires: libblastrampoline-devel +BuildRequires: libcurl-devel BuildRequires: libnghttp2-devel -BuildRequires: libopenblas_openmp-devel >= 0.3.5 BuildRequires: libssh2-devel >= 1.9.0 BuildRequires: libunwind-devel >= 1.3.1 -BuildRequires: libuv-devel BuildRequires: libwhich -BuildRequires: lld15 -BuildRequires: llvm15-devel BuildRequires: m4 +BuildRequires: make BuildRequires: mbedtls-devel -BuildRequires: mpfr-devel >= 4.0.2 +BuildRequires: memory-constraints +BuildRequires: metis-devel BuildRequires: ncurses-devel -BuildRequires: openblas-common-devel BuildRequires: openlibm-devel BuildRequires: openspecfun-devel BuildRequires: openssl @@ -115,12 +125,32 @@ BuildRequires: p7zip >= 16 BuildRequires: patchelf >= 0.9 BuildRequires: pcre2-devel >= 10.31 BuildRequires: perl -BuildRequires: python3 BuildRequires: readline-devel -BuildRequires: suitesparse-devel >= 7.2.1 +BuildRequires: tbb-devel BuildRequires: update-desktop-files BuildRequires: utf8proc-devel +BuildRequires: valgrind BuildRequires: zlib-devel + +# Additional Build Requirements needed by LLVM15 +BuildRequires: binutils-devel >= 2.21.90 +BuildRequires: ccache +BuildRequires: fdupes +BuildRequires: libstdc++-devel +BuildRequires: libvmmalloc-devel +BuildRequires: libxml2-devel +BuildRequires: ninja +BuildRequires: pkgconfig +BuildRequires: python-rpm-macros +BuildRequires: python3-Sphinx +BuildRequires: python3-base +BuildRequires: python3-psutil +BuildRequires: python3-recommonmark +BuildRequires: python3-setuptools +BuildRequires: pkgconfig(libedit) +BuildRequires: pkgconfig(libzstd) +BuildRequires: pkgconfig(zlib) + Requires: ca-certificates Requires: p7zip >= 16 Requires: readline @@ -144,7 +174,7 @@ Requires: libnghttp2-devel Requires: libssh2-devel Requires: mbedtls-devel Requires: openlibm-devel -Requires: suitesparse-devel +# Requires: suitesparse-devel # Julia requires the devel package as well # specifically libjulia.so @@ -167,7 +197,7 @@ Recommends: mpfr-devel Recommends: openspecfun-devel Recommends: openssh-clients Recommends: pcre2-devel -Recommends: suitesparse-devel +# Recommends: suitesparse-devel %if 0%{?compat_mode} == 0 Name: julia @@ -245,67 +275,62 @@ Contains library files for interacting with Julia through C interfaces. patch -p1 -i %{PATCH1} patch -p1 -i %{PATCH14} patch -p1 -i %{PATCH15} -# patch -p1 -i %%{PATCH2} -# patch -p1 -i %%{PATCH3} -# patch -p1 -i %%{PATCH4} -# patch -p1 -i %%{PATCH5} - -# libunwind 1.6 compatibility patch -p1 -i %{PATCH6} - -# Fix tests with libgit2 1.7 -# patch -p1 -i %%{PATCH8} - -# Make.inc puts it in the wrong libpath -# patch -p1 -i %%{PATCH10} -patch -p1 -i %{PATCH9} +patch -p1 -i %{PATCH10} +patch -p1 -i %{PATCH11} # Other hardcoded libs patch -# patch -p1 -i %{PATCH11} -patch -p1 -i %{PATCH12} patch -p1 -i %{PATCH13} +# Fix bundled dependencies checksums +patch -p1 -i %{PATCH16} + # Copy https://www.unicode.org/Public/13.0.0/ucd/UnicodeData.txt to deps/srccache cp %{SOURCE3} deps/srccache/UnicodeData-13.0.0.txt -%build +# Copy libLLVM_jll. Idk why it's not included in the "full" tarball +cp %{SOURCE10} deps/srccache/libLLVM.v15.0.7+10.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz -%if 0%{?compat_mode} == 0 - %ifarch x86_64 || x86_64_v3 - %define julia_march core2 - %endif - - %ifarch %{ix86} - %define julia_march pentium4 - %endif - - %ifarch aarch64 - %define julia_march armv8-a - %endif - - %ifarch armv7l armv7hl - %define julia_march armv7-a - %endif - - %ifarch armv6l armv6hl - %define julia_march armv6 - %endif - - %ifarch ppc64le - %define julia_march ppc64le - %endif -%else - # compat_mode is only defined for 64-bit architecture. - - %define julia_march x86-64 +# what's the point of NO_GIT? +%ifarch aarch64 +cp %{SOURCE10} deps/srccache/libLLVM.v15.0.7+10.aarch64-linux-gnu-cxx11-llvm_version+15.tar.gz +cp -v deps/srccache/SuiteSparse-7.2.1.tar.gz deps/srccache/SuiteSparse.v7.2.1+1.aarch64-linux-gnu.tar.gz %endif -export CFLAGS="%{optflags}" -export CXXFLAGS="%{optflags}" +# JLDOWNLOAD SHOULD BE DISABLED IF WE HAVE THE FULL TARBALL +echo "true" | tee deps/tools/jldownload +%build +# Just use native +%define julia_march native + +# Offline mode export NO_GIT=1 +export CFLAGS="%{optflags}" +export CXXLAGS="%{optflags}" +export USE_CCACHE=1 +export DEPS_GIT=0 + +# Needed when USE_SYSTEM_CSL=1 +# https://github.com/JuliaLang/julia/issues/39637 +unlink %{_builddir}/%{buildsubdir}/build/usr/lib || true +mkdir -p %{_builddir}/%{buildsubdir}/build/%{_libdir}/ +ln -sf %{_libdir}/libgcc_s.so.1 %{_builddir}/%{buildsubdir}/build/%{_libdir}/libgcc_s.so.1 +# Idk how it can't find libblastrampoline? +ln -sf %{_libdir}/libblastrampoline.so %{_builddir}/%{buildsubdir}/build/%{_libdir}/libblastrampoline.so export LD_LIBRARY_PATH="%{_builddir}/%{buildsubdir}/build/usr/lib:%{_builddir}/%{buildsubdir}/build%{_libdir}:%{_builddir}/%{buildsubdir}/usr/lib:%{_libdir}:%{_prefix}/lib" +# Doing this here because upstream seems to miss some steps +pushd deps + export USE_BLAS64=1 + export USE_BINARYBUILDER_OPENBLAS=0 + # Suffix is 64_ (with underscore) if 64-bit because OpenBlas_jll seems to use that suffix + export OPENBLAS_LIBNAMESUFFIX="%{?__isa_bits}_" + export OPENBLAS_SYMBOLSUFFIX="%{?__isa_bits}_" + export OPENBLAS_CFLAGS="%{optflags}" + make prefix=%{_prefix} libdir=%{_libdir} bindir=%{_bindir} install-openblas +popd + make %{?_smp_mflags} \ MARCH=%{julia_march} \ %ifarch aarch64 @@ -326,10 +351,10 @@ make %{?_smp_mflags} \ USE_BINARYBUILDER=0 \ USE_SYSTEM_CSL=1 \ USE_SYSTEM_LLVM=0 \ - USE_SYSTEM_LLD=1 \ + USE_SYSTEM_LLD=0 \ USE_BINARYBUILDER_OPENBLAS=0 \ USE_BINARYBUILDER_LIBSUITESPARSE=0 \ - OPENBLAS_CFLAGS="%{optflags}" \ + OPENBLAS_CFLAGS="${CFLAGS}" \ USE_SYSTEM_LIBUNWIND=1 \ USE_SYSTEM_PCRE=1 \ USE_SYSTEM_BLAS=0 \ @@ -337,8 +362,8 @@ make %{?_smp_mflags} \ USE_SYSTEM_LIBBLASTRAMPOLINE=1 \ USE_SYSTEM_GMP=1 \ USE_SYSTEM_MPFR=1 \ - USE_SYSTEM_LIBSUITESPARSE=1 \ - USE_SYSTEM_SUITESPARSE=1 \ + USE_SYSTEM_LIBSUITESPARSE=0 \ + USE_SYSTEM_SUITESPARSE=0 \ USE_INTEL_JITEVENTS=0 \ USE_SYSTEM_LIBWHICH=1 \ USE_SYSTEM_DSFMT=1 \ @@ -369,13 +394,14 @@ if [ "x%{_lib}" != xlib ] ; then fi %check -# The tests will only pass if openblas is being used. -# make %{?_smp_mflags} test +# Disable checks for experimental build. Highly likely tests will fail. %install export NO_GIT=1 export CFLAGS="%{optflags}" -export CXXFLAGS="%{optflags}" +export CXXLAGS="%{optflags}" +export USE_CCACHE=1 +export DEPS_GIT=0 export LD_LIBRARY_PATH="%{_builddir}/%{buildsubdir}/build/usr/lib:%{_builddir}/%{buildsubdir}/build%{_libdir}:%{_builddir}/%{buildsubdir}/usr/lib:%{_libdir}:%{_prefix}/lib" make install DESTDIR=%{buildroot} \ @@ -398,7 +424,7 @@ make install DESTDIR=%{buildroot} \ USE_BINARYBUILDER=0 \ USE_SYSTEM_CSL=1 \ USE_SYSTEM_LLVM=0 \ - USE_SYSTEM_LLD=1 \ + USE_SYSTEM_LLD=0 \ USE_BINARYBUILDER_OPENBLAS=0 \ USE_BINARYBUILDER_LIBSUITESPARSE=0 \ OPENBLAS_CFLAGS="%{optflags}" \ @@ -409,8 +435,8 @@ make install DESTDIR=%{buildroot} \ USE_SYSTEM_LIBBLASTRAMPOLINE=1 \ USE_SYSTEM_GMP=1 \ USE_SYSTEM_MPFR=1 \ - USE_SYSTEM_LIBSUITESPARSE=1 \ - USE_SYSTEM_SUITESPARSE=1 \ + USE_SYSTEM_LIBSUITESPARSE=0 \ + USE_SYSTEM_SUITESPARSE=0 \ USE_INTEL_JITEVENTS=0 \ USE_SYSTEM_LIBWHICH=1 \ USE_SYSTEM_DSFMT=1 \ diff --git a/libLLVM.v15.0.7.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz b/libLLVM.v15.0.7.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz new file mode 100644 index 0000000..fee80b8 --- /dev/null +++ b/libLLVM.v15.0.7.x86_64-linux-gnu-cxx11-llvm_version+15.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcf860092982bc4855117bb16d9efa7b98f62adfcd574a0e6969526407fd2f17 +size 85634590 diff --git a/use-system-libuv-correctly.patch b/use-system-libuv-correctly.patch deleted file mode 100644 index 25a9fad..0000000 --- a/use-system-libuv-correctly.patch +++ /dev/null @@ -1,19 +0,0 @@ -From: Soc Virnyl Estela -Date: Sat, 09 Dec 2023 16:30:31 +0800 -Subject: Julia uses a static variant of its libuv - -Although this patch exists as a sample. This won't be used. ---- - -diff -ruN julia-1.9.4.orig/Make.inc julia-1.9.4/Make.inc ---- julia-1.9.4.orig/Make.inc 2023-12-08 06:25:53.640851723 +0800 -+++ julia-1.9.4/Make.inc 2023-12-08 10:44:21.177558348 +0800 -@@ -1116,7 +1116,7 @@ - endif - - ifeq ($(USE_SYSTEM_LIBUV), 1) -- LIBUV := $(LOCALBASE)/lib/libuv-julia.a -+ LIBUV := -luv - LIBUV_INC := $(LOCALBASE)/include - else - LIBUV := $(build_libdir)/libuv.a