The package rpms/julia.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/julia.git/commit/?id=28222fc1e9bb474....
Change: +%ifarch %{ix86}
Thanks.
Full change: ============
commit 28222fc1e9bb47452c944142a2d2844cbfc0a343 Author: Milan Bouchet-Valat nalimilan@club.fr Date: Thu Sep 6 16:55:42 2018 +0200
New upstream release 1.0.0
diff --git a/.gitignore b/.gitignore index ab8f2f0..381d7e3 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ /julia-0.6.2.tar.gz /libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d.tar.gz /julia-0.6.3.tar.gz +/julia-1.0.0.tar.gz +/libuv-ed3700c849289ed01fe04273a7bf865340b2bd7e.tar.gz +/llvm-6.0.0.src.tar.xz +/mpfr-4.0.1.tar.bz2 +/libwhich-81e9723c0273d78493dc8c8ed570f68d9ce7e89e.tar.gz diff --git a/julia.spec b/julia.spec index b79c4b7..da7bdc7 100644 --- a/julia.spec +++ b/julia.spec @@ -1,11 +1,15 @@ -%global uvcommit d8ab1c6a33e77bf155facb54215dd8798e13825d +%global uvcommit ed3700c849289ed01fe04273a7bf865340b2bd7e %global uvversion 1.9.0
-%global llvmversion 3.9 +%global llvmversion 6.0.0 + +%global mpfrversion 4.0.1 + +%global libwhichcommit 81e9723c0273d78493dc8c8ed570f68d9ce7e89e
Name: julia -Version: 0.6.3 -Release: 3%{?dist} +Version: 1.0.0 +Release: 1%{?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 @@ -15,36 +19,42 @@ URL: http://julialang.org/ Source0: https://github.com/JuliaLang/julia/releases/download/v%%7Bversion%7D/julia-%... # Julia currently uses a custom version of libuv, patches are not yet upstream Source1: https://api.github.com/repos/JuliaLang/libuv/tarball/%%7Buvcommit%7D#/libuv-... +Source2: http://releases.llvm.org/%%7Bllvmversion%7D/llvm-%%7Bllvmversion%7D.src.tar.... +Source3: https://www.mpfr.org/mpfr-current/mpfr-%%7Bmpfrversion%7D.tar.bz2 +Source4: https://api.github.com/repos/vtjnash/libwhich/tarball/%%7Blibwhichcommit%7D#... Patch0: julia_unwind_version.patch -Patch1: julia_msg_case.patch +Patch1: llvm-julia-installdirs-64.patch +Provides: bundled(mpfr) = %{mpfrversion} +Provides: bundled(llvm) = %{llvmversion} Provides: bundled(libuv) = %{uvversion} -BuildRequires: arpack-devel BuildRequires: desktop-file-utils BuildRequires: dSFMT-devel -BuildRequires: fftw-devel >= 3.3.2 +BuildRequires: gcc BuildRequires: gcc-c++ -# Needed to test package management until the switch to libgit2 -BuildRequires: git BuildRequires: gmp-devel >= 5.0 # Needed for libgit2 test BuildRequires: hostname BuildRequires: ImageMagick -BuildRequires: libgit2-devel >= 0.23 +BuildRequires: libatomic BuildRequires: libunwind-devel >= 1.2 -BuildRequires: llvm%{llvmversion}-devel -BuildRequires: mpfr-devel >= 3.0 +BuildRequires: openblas-devel BuildRequires: openblas-threads BuildRequires: openlibm-devel >= 0.4 -BuildRequires: openspecfun-devel >= 0.4 +BuildRequires: libgit2-devel # Needed for libgit2 test BuildRequires: openssl +BuildRequires: mbedtls-devel +BuildRequires: libssh2-devel +BuildRequires: http-parser-devel +BuildRequires: openssl-devel +BuildRequires: libcurl-devel +BuildRequires: curl BuildRequires: pcre2-devel -BuildRequires: perl-interpreter +BuildRequires: cmake +BuildRequires: perl BuildRequires: suitesparse-devel BuildRequires: utf8proc-devel >= 2.1 BuildRequires: zlib-devel -# Needed for package management until the switch to libgit2 -Requires: git Requires: julia-common = %{version}-%{release} Requires: openblas-threads # Currently, Julia does not work properly architectures other than x86 @@ -101,7 +111,10 @@ Julia into external programs or debugging Julia itself. %setup -qn julia
%patch0 -p1 -%patch1 -p1 + +%if 0%{?__isa_bits} == 64 + patch -p1 < %PATCH1 +%endif
mkdir -p deps/srccache
@@ -110,37 +123,58 @@ pushd deps/srccache # we need to copy the tarball and let the build process unpack it # https://github.com/JuliaLang/julia/pull/10280 cp -p %SOURCE1 . + cp -p %SOURCE2 . + cp -p %SOURCE3 . + cp -p %SOURCE4 . popd
# Required so that the image is not optimized for the build CPU # (i386 does not work yet: https://github.com/JuliaLang/julia/issues/7185) # Without specifying MARCH, the Julia system image would only work on native CPU +# CPU targets reflect those used upstream at +# https://github.com/JuliaCI/julia-buildbot/blob/master/master/inventory.py %ifarch %{ix86} -%global march pentium4 +%global march MARCH=pentium4 +%global cpu_target JULIA_CPU_TARGET="pentium4;sandybridge,-xsaveopt,clone_all" %endif %ifarch x86_64 -%global march x86-64 +%global march MARCH=x86-64 +%global cpu_target JULIA_CPU_TARGET="generic;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1)" %endif %ifarch %{arm} # gcc and LLVM do not support the same targets -%global march $(echo %optflags | grep -Po 'march=\K[^ ]*') +%global march MARCH=$(echo %optflags | grep -Po 'march=\K[^ ]*') +%global cpu_target JULIA_CPU_TARGET="generic" %endif %ifarch armv7hl -%global march $(echo %optflags | grep -Po 'march=\K[^ ]*') +%global march MARCH=$(echo %optflags | grep -Po 'march=\K[^ ]*') +%global cpu_target JULIA_CPU_TARGET="armv7-a;armv7-a,neon;armv7-a;armv7-a,neon,vfp4" %endif %ifarch aarch64 -%global march armv8-a +%global march MARCH=armv8-a +%global cpu_target JULIA_CPU_TARGET="generic" +%endif +%ifarch ppc64le +%global march %{nil} +%global cpu_target JULIA_CPU_TARGET="pwr8" %endif
-%global blas USE_BLAS64=0 LIBBLAS=-lopenblasp LIBBLASNAME=libopenblasp.so.0 LIBLAPACK=-lopenblasp LIBLAPACKNAME=libopenblasp.so.0 +%global blas USE_BLAS64=0 LIBBLAS=-lopenblasp LIBBLASNAME=libopenblasp LIBLAPACK=-lopenblasp LIBLAPACKNAME=libopenblasp
# 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=1 USE_LLVM_SHLIB=1 LLVM_CONFIG=%{_libdir}/llvm%{llvmversion}/bin/llvm-config USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_READLINE=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_OPENSPECFUN=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_ARPACK=1 USE_SYSTEM_SUITESPARSE=1 USE_SYSTEM_ZLIB=1 USE_SYSTEM_GRISU=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_PATCHELF=1 USE_SYSTEM_LIBM=0 USE_SYSTEM_OPENLIBM=1 VERBOSE=1 MARCH=%{march} %{blas} prefix=%{_prefix} bindir=%{_bindir} libdir=%{_libdir} libexecdir=%{_libexecdir} datarootdir=%{_datarootdir} includedir=%{_includedir} sysconfdir=%{_sysconfdir} build_prefix=%{julia_builddir} 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_CORES=$(echo %{?_smp_mflags} | sed s/-j//) +%global commonopts USE_SYSTEM_LLVM=0 USE_SYSTEM_LIBUNWIND=1 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//)
%build +# Temporary workaround for https://github.com/JuliaLang/julia/issues/27118 +%global optflags2 %(echo %{optflags} | sed 's/-Wp,-D_GLIBCXX_ASSERTIONS //') + +%ifarch %{ix86} # Need to repeat -march here to override i686 from optflags -%global buildflags CFLAGS="%{optflags} -march=%{march}" CXXFLAGS="%{optflags} -march=%{march}" +%global buildflags CFLAGS="%optflags2 -march=pentium4" CXXFLAGS="%optflags2 -march=pentium4" +%else +%global buildflags CFLAGS="%optflags2" CXXFLAGS="%optflags2" +%endif
# If debug is not built here, it is built during make install make %{?_smp_mflags} %{buildflags} %{commonopts} release debug @@ -151,24 +185,12 @@ make %{commonopts} test %install make %{commonopts} DESTDIR=%{buildroot} install
-# Julia currently needs the unversioned .so files: -# https://github.com/JuliaLang/julia/issues/6742 -# By creating symlinks to versioned libraries, we hardcode a dependency -# on the specific SOVERSION so that any breaking update in one of the -# dependencies can be detected (just as what happens with the C linker). -# Automatic dependency detection is smart enough to add Requires as needed. +# Julia creates links for all needed libraries, but openlibm is missing +# https://github.com/JuliaLang/julia/pull/24796/#discussion_r214538236 pushd %{buildroot}%{_libdir}/julia - for LIB in arpack cholmod dSFMT git2 fftw3 gmp mpfr openspecfun pcre2-8 umfpack - do - ln -s %{_libdir}/$(readelf -d %{_libdir}/lib$LIB.so | sed -n '/SONAME/s/.*(lib[^ ]*.so.[0-9]*).*/\1/p') lib$LIB.so - # Raise an error in case of failure - realpath -e lib$LIB.so - done - - # Note the "libopen" trick because of greedy matching - ln -s %{_libdir}/libopen$(readelf -d %{_libdir}/libopenlibm.so | sed -n '/SONAME/s/.*(lib[^ ]*.so.[0-9]*).*/\1/p') libopenlibm.so - # Raise an error in case of failure - realpath -e libopenlibm.so + ln -s %{_libdir}/libopen$(readelf -d %{_libdir}/libopenlibm.so | sed -n '/SONAME/s/.*(lib[^ ]*.so.[0-9]*).*/\1/p') libopenlibm.so + # Raise an error in case of failure + realpath -e libopenlibm.so popd
cp -p CONTRIBUTING.md LICENSE.md NEWS.md README.md %{buildroot}%{_docdir}/julia/ @@ -206,8 +228,6 @@ desktop-file-validate %{buildroot}%{_datarootdir}/applications/%{name}.desktop %{_bindir}/julia %{_libdir}/julia/ %{_libdir}/libjulia.so.* -%exclude %{_libdir}/libjulia.so -%exclude %{_libdir}/libjulia-debug.so* %{_mandir}/man1/julia.1* %{_datarootdir}/appdata/julia.appdata.xml %{_datarootdir}/applications/%{name}.desktop @@ -222,9 +242,11 @@ desktop-file-validate %{buildroot}%{_datarootdir}/applications/%{name}.desktop %dir %{_datarootdir}/julia/ %{_datarootdir}/julia/*.jl %{_datarootdir}/julia/base/ +%{_datarootdir}/julia/stdlib/ +%{_datarootdir}/julia/base.cache
%dir %{_sysconfdir}/julia/ -%config(noreplace) %{_sysconfdir}/julia/juliarc.jl +%config(noreplace) %{_sysconfdir}/julia/startup.jl
%files doc %doc %{_docdir}/julia/ @@ -254,6 +276,9 @@ exit 0 /usr/bin/gtk-update-icon-cache %{_datarootdir}/icons/hicolor &>/dev/null || :
%changelog +* Fri Sep 7 2018 Milan Bouchet-Valat nalimilan@club.fr - 1.0.0 +- New upstream release 1.0.0. + * Fri Aug 10 2018 Igor Gnatenko ignatenkobrain@fedoraproject.org - 0.6.3-3 - Rebuild for libgit2 0.27.x
diff --git a/julia_msg_case.patch b/julia_msg_case.patch deleted file mode 100644 index 0629d57..0000000 --- a/julia_msg_case.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru a/test/libgit2.jl b/test/libgit2.jl ---- a/test/libgit2.jl 2017-12-13 20:01:57.000000000 +0100 -+++ b/test/libgit2.jl 2018-03-23 18:15:16.017762597 +0100 -@@ -1697,7 +1697,7 @@ - deserialize(f) - end - @test err.code == LibGit2.Error.ERROR -- @test err.msg == "Invalid Content-Type: text/plain" -+ @test err.msg == "invalid Content-Type: text/plain" - end - finally - kill(pobj) diff --git a/julia_unwind_version.patch b/julia_unwind_version.patch index e1df0b9..ba91eaa 100644 --- a/julia_unwind_version.patch +++ b/julia_unwind_version.patch @@ -1,7 +1,8 @@ -diff -ru a/src/julia_internal.h b/src/julia_internal.h ---- a/src/julia_internal.h 2017-12-13 20:01:57.000000000 +0100 -+++ b/src/julia_internal.h 2018-03-23 17:41:54.420474220 +0100 -@@ -642,12 +642,7 @@ +diff --git a/src/julia_internal.h b/src/julia_internal.h +index 186b5d7b2b..2d08a358b4 100644 +--- a/src/julia_internal.h ++++ b/src/julia_internal.h +@@ -623,12 +623,7 @@ extern volatile int jl_in_stackwalk; # include <libunwind.h> typedef unw_context_t bt_context_t; typedef unw_cursor_t bt_cursor_t; @@ -9,8 +10,10 @@ diff -ru a/src/julia_internal.h b/src/julia_internal.h - (UNW_VERSION_MAJOR == 1 && UNW_VERSION_MINOR > 1)) -// Enable our memory manager only for libunwind with our patch or -// on a newer release - # define JL_UNW_HAS_FORMAT_IP 1 +-# define JL_UNW_HAS_FORMAT_IP 1 -# endif - #endif - size_t rec_backtrace(uintptr_t *data, size_t maxsize); - size_t rec_backtrace_ctx(uintptr_t *data, size_t maxsize, bt_context_t *ctx); ++# define JL_UNW_HAS_FORMAT_IP 1 + #else + // Unwinding is disabled + typedef int bt_context_t; + diff --git a/llvm-julia-installdirs-64.patch b/llvm-julia-installdirs-64.patch new file mode 100644 index 0000000..aabdf5b --- /dev/null +++ b/llvm-julia-installdirs-64.patch @@ -0,0 +1,12 @@ +diff --git a/deps/llvm.mk b/deps/llvm.mk +index 4f350aa443..3449605f1f 100644 +--- a/deps/llvm.mk ++++ b/deps/llvm.mk +@@ -70,6 +70,7 @@ ifeq ($(USE_POLLY_ACC),1) + LLVM_CMAKE += -DPOLLY_ENABLE_GPGPU_CODEGEN=ON + endif + LLVM_CMAKE += -DLLVM_TOOLS_INSTALL_DIR=$(shell $(JULIAHOME)/contrib/relative_path.sh $(build_prefix) $(build_depsbindir)) ++LLVM_CMAKE += -DLLVM_LIBDIR_SUFFIX=64 + LLVM_CMAKE += -DLLVM_BINDINGS_LIST="" -DLLVM_INCLUDE_DOCS=Off -DLLVM_ENABLE_TERMINFO=Off -DHAVE_HISTEDIT_H=Off -DHAVE_LIBEDIT=Off + ifeq ($(LLVM_ASSERTIONS), 1) + LLVM_CMAKE += -DLLVM_ENABLE_ASSERTIONS:BOOL=ON diff --git a/sources b/sources index d1e2c32..9aa5626 100644 --- a/sources +++ b/sources @@ -1,2 +1,5 @@ -SHA512 (julia-0.6.3.tar.gz) = f529bb30a17989234061cf4c3d87aecc6da720eb494efaca7be4ec1ed5eda60d440896fb76a45b6cb30205030256e7de765e8944f873b31d96f7c9ecac542db8 -SHA512 (libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d.tar.gz) = 272e3cc7b1290ef19cc941c3b3e6dd39dba7dcb26f0aea8e667c48c56288aa9266020504e0cc90074f02881521b3352079416f564c7eb24ab444326a8f04ca64 +SHA512 (julia-1.0.0.tar.gz) = 5a53b16a1ab57cdffa5dadf11e78c413ed9f18af23ae90b64dee8323c2fc9bd6e6918b341f48accbcb7a6eab559811c80d72ac3ac0576c7cf6c9c9057356f6ba +SHA512 (libuv-ed3700c849289ed01fe04273a7bf865340b2bd7e.tar.gz) = 1305035b1372bdf234e3c5e673ee4c8ab5bda83ff06bc27704786def52667c3143fe587fca8f6e0855ba0c8b6d4dd90b2faefd33736224173f459d751885683e +SHA512 (llvm-6.0.0.src.tar.xz) = a71fdd5ddc46f01327ad891cfcc198febdbe10769c57f14d8a4fb7d514621ee4080e1a641200d3353c16a16731d390270499ec6cd3dc98fadc570f3eb6b52b8c +SHA512 (mpfr-4.0.1.tar.bz2) = c1674fc0a5edcde188bdf7d6d14063cfb4f1259b9eaf39d0081f7176e9921ca0af1b12b7aba1a9560d9f2d5f37329d22bc7b82f13421d91d83114b439bc60dcc +SHA512 (libwhich-81e9723c0273d78493dc8c8ed570f68d9ce7e89e.tar.gz) = 6fb77b715d70d9bc95a8546c3bf97bd3677c7ea344b88bb5bc3bbfac9dceabe8a8cde7a0f64dec884cde802e4a3000e30837d3f824b5a9242348c4fe061526a3
arch-excludes@lists.fedoraproject.org