%define pkg_name julia %define pkg_version 1.1.0 %define pkg_release 3%{?_dist_release} %global unwindversion 1.1-julia2 %global uvcommit 2348256acf5759a544e5ca7935f638d2bc091d60 %global patchelfversion 0.9 %global utf8proccommit 97ef668b312b96382714dbb8eaac4affce0816e6 %global llvmversion 6.0.1 %global libwhichcommit 81e9723c0273d78493dc8c8ed570f68d9ce7e89e %global mpfrversion 4.0.1 %global cacertversion 2018-10-17 %global pkgcommit 853b3f1fd9895db32b402d89e9dee153b66b2316 Summary: High-level, high-performance dynamic programming language for numerical computing Name: %{pkg_name} Version: %{pkg_version} Release: %{pkg_release} License: MIT, BSD and GPLv3 # julia, utf8proc, libwhich: MIT # libunwind, libuv, llvm: BSD # patchelf, mpfr: GPLv3 Group: Applications/Edutainment URL: https://julialang.org/ Source0: https://github.com/JuliaLang/julia/releases/download/v%{version}/%{name}-%{version}.tar.gz Source11: libunwind-%{unwindversion}.tar.gz Source12: libuv-%{uvcommit}.tar.gz Source13: patchelf-%{patchelfversion}.tar.gz Source14: utf8proc-%{utf8proccommit}.tar.gz Source15: llvm-%{llvmversion}.src.tar.xz Source16: libwhich-%{libwhichcommit}.tar.gz Source17: mpfr-%{mpfrversion}.tar.bz2 Source18: cacert-%{cacertversion}.pem Source31: https://api.github.com/repos/JuliaLang/Pkg.jl/tarball/%{pkgcommit}#/Pkg-%{pkgcommit}.tar.gz # not make debug Patch11: julia-Makefile_release.patch # ## Patches for make test # # Avoid test error # Patch21: julia-skip-LibGit2-libgit2.patch # Patch from Fedora Patch31: llvm-julia-installdirs-64.patch # march=pentium4 in i686 Patch32: julia-i686-march.patch BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRequires: cmake BuildRequires: gcc-gfortran BuildRequires: gmp-devel BuildRequires: openblas-devel %ifarch x86_64 BuildRequires: openblas64-devel %endif BuildRequires: openspecfun-devel BuildRequires: openlibm-devel BuildRequires: suitesparse-devel BuildRequires: dSFMT-devel BuildRequires: pcre2-devel BuildRequires: libssh2-devel BuildRequires: curl-devel BuildRequires: libgit2-devel BuildRequires: mbedtls-devel BuildRequires: libatomic BuildRequires: desktop-file-utils Requires: openblas-threads %ifarch x86_64 Requires: openblas-threads64_ %endif Requires: openlibm Requires: suitesparse Requires: dSFMT Requires: pcre2 Requires: libssh2 Requires: libgit2 Requires: mbedtls Requires: libatomic Vendor: Project Vine Distribution: Vine Linux Packager: ara_t %description Julia is a high-level, high-performance dynamic programming language for numerical computing. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing. In addition, the Julia developer community is contributing a number of external packages through Julia's built-in package manager at a rapid pace. IJulia, a collaboration between the Jupyter and Julia communities, provides a powerful browser-based graphical notebook interface to Julia. Julia programs are organized around multiple dispatch; by defining functions and overloading them for different combinations of argument types, which can also be user-defined. For a more in-depth discussion of the rationale and advantages of Julia over other systems, see the following highlights or read the introduction in the online manual. #' %prep %{__rm} -rf ${RPM_BUILD_ROOT} %setup -q %patch11 -b .release # %patch21 -b .skip_test %ifarch x86_64 %patch31 -p1 -b .installdir64 %endif %ifarch %{ix86} %patch32 -b .march %endif cat > Make.user <<EOF USE_SYSTEM_LLVM=0 USE_SYSTEM_LIBUNWIND=0 USE_SYSTEM_LIBUV=0 USE_SYSTEM_LIBM=0 USE_SYSTEM_OPENLIBM=1 UNTRUSTED_SYSTEM_LIBM=0 USE_SYSTEM_OPENSPECFUN=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_DSFMT=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=0 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_SUITESPARSE=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_CURL=1 USE_SYSTEM_LIBGIT2=1 USE_SYSTEM_MBEDTLS=1 EOF %{__mkdir_p} deps/srccache stdlib/srccache %{__cp} \ %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} \ %{SOURCE16} %{SOURCE17} %{SOURCE18} \ deps/srccache %{__cp} %{SOURCE31} stdlib/srccache # 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 %ifarch %{ix86} %global march pentium4 %endif %ifarch x86_64 %global march x86-64 %endif # setting for using system openblas %ifarch %{ix86} %global blas USE_BLAS64=0 LIBBLAS=-lopenblasp LIBBLASNAME=libopenblasp LIBLAPACK=-lopenblasp LIBLAPACKNAME=libopenblasp %endif %ifarch x86_64 %global blas USE_BLAS64=1 LIBBLAS=-lopenblasp64_ LIBBLASNAME=libopenblasp64_ LIBLAPACK=-lopenblasp64_ LIBLAPACKNAME=libopenblasp64_ OPENBLAS_SYMBOLSUFFIX=64_ %endif # About build, build_libdir and build_bindir # see https://github.com/JuliaLang/julia/issues/5063#issuecomment-32628111 %global julia_builddir %{_builddir}/%{name}-%{version}/build %global installopts 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} %global commonopts MARCH=%{march} %{blas} %{installopts} %build %{__make} %{?_smp_mflags} %{commonopts} # to avoid making documents %{__mkdir_p} doc/_build/html/en touch doc/_build/html/en/index.html %install %{__make} %{commonopts} install DESTDIR=${RPM_BUILD_ROOT} # remove html files pushd ${RPM_BUILD_ROOT}%{_docdir} %{__mv} julia %{name}-%{version} %{__rm} -rf %{name}-%{version}/html popd %{__cp} \ CONTRIBUTING.md DISTRIBUTING.md HISTORY.md \ LICENSE.md NEWS.md README.md \ ${RPM_BUILD_ROOT}%{_docdir}/%{name}-%{version} %check %{__make} %{?_smp_mflags} %{commonopts} test %clean %{__rm} -rf ${RPM_BUILD_ROOT} %post %{_syssbindir}/ldconfig if [ -x %{_bindir}/update-desktop-database ] ; then %{_bindir}/update-desktop-database %{_datadir}/applications fi %postun %{_syssbindir}/ldconfig if [ $1 -eq 0 ] ; then if [ -x %{_bindir}/update-desktop-database ] ; then %{_bindir}/update-desktop-database %{_datadir}/applications fi fi %files %defattr(-, root, root) %{_bindir}/julia %{_sysconfdir}/%{name} %{_includedir}/%{name} %{_libdir}/%{name}/ %{_libdir}/libjulia.so* %{_datadir}/appdata/ %{_datadir}/applications/ %{_datadir}/icons/ %{_datadir}/julia/ %{_docdir}/%{name}-%{version} %{_mandir}/man1/ %changelog * Sun Nov 03 2019 Toshiaki Ara <ara_t@384.jp> 1.1.0-3 - Rebuild for suitesparse 5.4.0 * Wed Mar 27 2019 Toshiaki Ara <ara_t@384.jp> 1.1.0-2 - build llvm shared library - add Patch31 for x86_64 - add Patch32 for i686 - add SOURCE18 (cacert-*.pem) - add SOURCE31 (Pkg library) - drop Patch21 * Mon Jan 28 2019 Toshiaki Ara <ara_t@384.jp> 1.1.0-1 - update to 1.1.0 - change using system openblas * Sat Jan 26 2019 Toshiaki Ara <ara_t@384.jp> 1.0.3-2 - remove unnecessary sofiles - rebuild with gfortran-8.2.0 * Sat Jan 05 2019 Toshiaki Ara <ara_t@384.jp> 1.0.3-1 - update to 1.0.3 * Fri Nov 16 2018 Toshiaki Ara <ara_t@384.jp> 1.0.2-1 - update to 1.0.2 * Thu Oct 04 2018 Toshiaki Ara <ara_t@384.jp> 1.0.1-1 - update to 1.0.1 * Wed Aug 22 2018 Toshiaki Ara <ara_t@384.jp> 1.0.0-2 - rebuild with suitesparse-4.4.6 * Fri Aug 17 2018 Toshiaki Ara <ara_t@384.jp> 1.0.0-1 - update to 1.0.0 - add/update sources - drop some Patches - add BuildRequires: and Requires: libatomic * Sat Jul 14 2018 Toshiaki Ara <ara_t@384.jp> 0.6.4-1 - new upstream release - update SOURCE17 (openblas) * Sun Jun 17 2018 Toshiaki Ara <ara_t@384.jp> 0.6.3-1 - new package