diff --git a/.gitignore b/.gitignore index db86afd..f98d062 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ /mpfr-4.0.1.tar.bz2 /libwhich-81e9723c0273d78493dc8c8ed570f68d9ce7e89e.tar.gz /julia-1.0.1.tar.gz +/SuiteSparse-4.4.5.tar.gz diff --git a/julia-suitesparse.patch b/julia-suitesparse.patch new file mode 100644 index 0000000..95ad884 --- /dev/null +++ b/julia-suitesparse.patch @@ -0,0 +1,19 @@ +diff --git a/deps/suitesparse.mk b/deps/suitesparse.mk +index fb54f42af8..3fee4b9827 100644 +--- a/deps/suitesparse.mk ++++ b/deps/suitesparse.mk +@@ -4,14 +4,12 @@ ifeq ($(USE_BLAS64), 1) + UMFPACK_CONFIG := -DLONGBLAS='long long' + CHOLMOD_CONFIG := -DLONGBLAS='long long' + SPQR_CONFIG := -DLONGBLAS='long long' +-ifeq ($(USE_SYSTEM_BLAS), 0) + ifeq ($(OPENBLAS_SYMBOLSUFFIX), 64_) + UMFPACK_CONFIG += -DSUN64 + CHOLMOD_CONFIG += -DSUN64 + SPQR_CONFIG += -DSUN64 + endif + endif +-endif + + SUITE_SPARSE_LIB := -lm + ifneq ($(OS), Darwin) diff --git a/julia.spec b/julia.spec index 88cc80b..9b0e22f 100644 --- a/julia.spec +++ b/julia.spec @@ -7,16 +7,20 @@ %global unwindversion 1.1-julia2 +# Bundled until https://src.fedoraproject.org/rpms/suitesparse/pull-request/2 is merged +%global suitesparseversion 4.4.5 + %global libwhichcommit 81e9723c0273d78493dc8c8ed570f68d9ce7e89e +%global __provides_exclude_from ^%{_libdir}/%{name}/.*\\.so$ # List all bundled libraries here -%global _privatelibs lib(suitesparse_wrapper|mpfr|ccalltest|LLVM-.*|uv|unwind)\\.so.* +%global _privatelibs lib(suitesparse_wrapper|mpfr|ccalltest|LLVM-.*|uv|unwind|spqr|umfpack|colamd|cholmod|ccolamd|camd|amd|suitesparseconfig)\\.so.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ Name: julia Version: 1.0.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: High-level, high-performance dynamic language for technical computing Group: Development/Languages # Julia itself is MIT, with a few LGPLv2+ and GPLv2+ files @@ -30,12 +34,15 @@ Source2: http://releases.llvm.org/%{llvmversion}/llvm-%{llvmversion}.src. Source3: https://www.mpfr.org/mpfr-current/mpfr-%{mpfrversion}.tar.bz2 Source4: https://api.github.com/repos/vtjnash/libwhich/tarball/%{libwhichcommit}#/libwhich-%{libwhichcommit}.tar.gz Source5: https://s3.amazonaws.com/julialang/src/libunwind-%{unwindversion}.tar.gz +Source6: http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-%{suitesparseversion}.tar.gz Patch0: julia_unwind_version.patch Patch1: llvm-julia-installdirs-64.patch -Provides: bundled(libunwind) = %{unwindversion} +Patch2: julia-suitesparse.patch Provides: bundled(libuv) = %{uvversion} Provides: bundled(llvm) = %{llvmversion} Provides: bundled(mpfr) = %{mpfrversion} +Provides: bundled(libunwind) = %{unwindversion} +Provides: bundled(suitesparse) = %{suitesparseversion} BuildRequires: desktop-file-utils BuildRequires: dSFMT-devel BuildRequires: gcc @@ -45,7 +52,6 @@ BuildRequires: gmp-devel >= 5.0 BuildRequires: hostname BuildRequires: ImageMagick BuildRequires: libatomic -BuildRequires: libunwind-devel >= 1.2 BuildRequires: openblas-devel BuildRequires: openblas-threads BuildRequires: openlibm-devel >= 0.4 @@ -66,7 +72,7 @@ BuildRequires: utf8proc-devel >= 2.1 BuildRequires: zlib-devel Requires: julia-common = %{version}-%{release} Requires: openblas-threads -# Currently, Julia does not work properly architectures other than x86 +# https://bugzilla.redhat.com/show_bug.cgi?id=1158026 ExcludeArch: s390x %description @@ -120,6 +126,7 @@ Julia into external programs or debugging Julia itself. %if 0%{?__isa_bits} == 64 patch -p1 < %PATCH1 + patch -p1 < %PATCH2 %endif mkdir -p deps/srccache @@ -133,6 +140,7 @@ pushd deps/srccache cp -p %SOURCE3 . cp -p %SOURCE4 . cp -p %SOURCE5 . + cp -p %SOURCE6 . popd # Required so that the image is not optimized for the build CPU @@ -166,11 +174,15 @@ popd %global cpu_target JULIA_CPU_TARGET="pwr8" %endif -%global blas USE_BLAS64=0 LIBBLAS=-lopenblasp LIBBLASNAME=libopenblasp LIBLAPACK=-lopenblasp LIBLAPACKNAME=libopenblasp +%if 0%{?__isa_bits} == 64 +%global blas USE_BLAS64=1 OPENBLAS_SYMBOLSUFFIX=64_ LIBBLAS=-lopenblasp64_ LIBBLASNAME=libopenblasp64_ LIBLAPACK=-lopenblasp64_ LIBLAPACKNAME=libopenblasp64_ +%else +%global blas LIBBLAS=-lopenblasp LIBBLASNAME=libopenblasp LIBLAPACK=-lopenblasp LIBLAPACKNAME=libopenblasp +%endif # About build, build_libdir and build_bindir, see https://github.com/JuliaLang/julia/issues/5063#issuecomment-32628111 %global julia_builddir %{_builddir}/%{name}/build -%global commonopts USE_SYSTEM_LLVM=0 USE_SYSTEM_LIBUNWIND=0 USE_SYSTEM_PCRE=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=0 USE_SYSTEM_SUITESPARSE=1 USE_SYSTEM_DSFMT=1 USE_SYSTEM_LIBUV=0 USE_SYSTEM_UTF8PROC=1 USE_SYSTEM_LIBGIT2=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_MBEDTLS=1 USE_SYSTEM_CURL=1 USE_SYSTEM_PATCHELF=1 USE_SYSTEM_LIBM=0 USE_SYSTEM_OPENLIBM=1 BUNDLE_DEBUG_LIBS=1 VERBOSE=1 %{march} %{cpu_target} %{blas} prefix=%{_prefix} bindir=%{_bindir} libdir=%{_libdir} libexecdir=%{_libexecdir} datarootdir=%{_datarootdir} includedir=%{_includedir} sysconfdir=%{_sysconfdir} build_prefix=%{julia_builddir}%{_prefix} build_bindir=%{julia_builddir}%{_bindir} build_libdir=%{julia_builddir}%{_libdir} build_private_libdir=%{julia_builddir}%{_libdir}/julia build_libexecdir=%{julia_builddir}%{_libexecdir} build_datarootdir=%{julia_builddir}%{_datarootdir} build_includedir=%{julia_builddir}%{_includedir} build_sysconfdir=%{julia_builddir}%{_sysconfdir} JULIA_CPU_THREADS=$(echo %{?_smp_mflags} | sed s/-j//) +%global commonopts USE_SYSTEM_LLVM=0 USE_SYSTEM_LIBUNWIND=0 USE_SYSTEM_PCRE=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=0 USE_SYSTEM_SUITESPARSE=0 USE_SYSTEM_DSFMT=1 USE_SYSTEM_LIBUV=0 USE_SYSTEM_UTF8PROC=1 USE_SYSTEM_LIBGIT2=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_MBEDTLS=1 USE_SYSTEM_CURL=1 USE_SYSTEM_PATCHELF=1 USE_SYSTEM_LIBM=0 USE_SYSTEM_OPENLIBM=1 BUNDLE_DEBUG_LIBS=1 VERBOSE=1 %{march} %{cpu_target} %{blas} prefix=%{_prefix} bindir=%{_bindir} libdir=%{_libdir} libexecdir=%{_libexecdir} datarootdir=%{_datarootdir} includedir=%{_includedir} sysconfdir=%{_sysconfdir} build_prefix=%{julia_builddir}%{_prefix} build_bindir=%{julia_builddir}%{_bindir} build_libdir=%{julia_builddir}%{_libdir} build_private_libdir=%{julia_builddir}%{_libdir}/julia build_libexecdir=%{julia_builddir}%{_libexecdir} build_datarootdir=%{julia_builddir}%{_datarootdir} build_includedir=%{julia_builddir}%{_includedir} build_sysconfdir=%{julia_builddir}%{_sysconfdir} JULIA_CPU_THREADS=$(echo %{?_smp_mflags} | sed s/-j//) %build # Temporary workaround for https://github.com/JuliaLang/julia/issues/27118 @@ -307,6 +319,9 @@ exit 0 /usr/bin/gtk-update-icon-cache %{_datarootdir}/icons/hicolor &>/dev/null || : %changelog +* Sat Oct 20 2018 Milan Bouchet-Valat - 1.0.1-4 +- Use ILP64 BLAS and bundle SuiteSparse until system packages support it. + * Sat Oct 06 2018 Morten Stevens - 1.0.1-3 - Rebuilt for mbed TLS 2.13.0 diff --git a/sources b/sources index a056339..d29419e 100644 --- a/sources +++ b/sources @@ -4,3 +4,4 @@ SHA512 (llvm-6.0.0.src.tar.xz) = a71fdd5ddc46f01327ad891cfcc198febdbe10769c57f14 SHA512 (mpfr-4.0.1.tar.bz2) = c1674fc0a5edcde188bdf7d6d14063cfb4f1259b9eaf39d0081f7176e9921ca0af1b12b7aba1a9560d9f2d5f37329d22bc7b82f13421d91d83114b439bc60dcc SHA512 (libwhich-81e9723c0273d78493dc8c8ed570f68d9ce7e89e.tar.gz) = 6fb77b715d70d9bc95a8546c3bf97bd3677c7ea344b88bb5bc3bbfac9dceabe8a8cde7a0f64dec884cde802e4a3000e30837d3f824b5a9242348c4fe061526a3 SHA512 (libunwind-1.1-julia2.tar.gz) = 5047890e727069c6ed74ca84bbe999ba6bc5c41d8d3914d6fbce19d18ff8a5944a7276d805ef5f67a857598852ae996a671c264d34a19123bb04d4daf6316f9a +SHA512 (SuiteSparse-4.4.5.tar.gz) = 7f9c19c3c58f61e7d82cd2de25eeeec910ad3d6a5c7c79c62a23cbb7dc880cddeca6efa9860a87b3b3c05e74385c8c67bf61d44149b700ac094898237915a6d9