SHA256
1
0
forked from pool/julia

Accepting request 1170084 from home:uncomfyhalomacro:branches:science

- 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<tab>`.
  * `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

OBS-URL: https://build.opensuse.org/request/show/1170084
OBS-URL: https://build.opensuse.org/package/show/science/julia?expand=0&rev=174
This commit is contained in:
Soc Virnyl Estela 2024-04-24 23:00:42 +00:00 committed by Git OBS Bridge
parent ba1b5a1f10
commit 659ee38811
11 changed files with 274 additions and 232 deletions

View File

@ -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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a5f8c0ce08cf132bdd919ca0b5b3b2b66c89e0e5f7e7fb2a81ffa7f225e3db4c
size 318571431

View File

@ -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-----

3
julia-1.10.2-full.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:62468720afbc410eb4f262ed2433a92132627872c9f690b704dc045ccb155401
size 318584736

View File

@ -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-----

View File

@ -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

View File

@ -1,77 +0,0 @@
From 764484f58b5daead9fd58de08ce35382758d3985 Mon Sep 17 00:00:00 2001
From: Yichao Yu <yyc1992@gmail.com>
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)

View File

@ -1,3 +1,133 @@
-------------------------------------------------------------------
Wed Apr 24 10:16:59 UTC 2024 - Soc Virnyl Estela <uncomfy+openbuildservice@uncomfyhalomacro.pl>
- 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<tab>`.
* `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 <uncomfy+openbuildservice@uncomfyhalomacro.pl>

View File

@ -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 \

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fcf860092982bc4855117bb16d9efa7b98f62adfcd574a0e6969526407fd2f17
size 85634590

View File

@ -1,19 +0,0 @@
From: Soc Virnyl Estela <contact@uncomfyhalomacro.pl>
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