bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#30282: package julia build error


From: Pjotr Prins
Subject: bug#30282: package julia build error
Date: Fri, 16 Mar 2018 15:07:56 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

After some investigation I have found Julia's build system to be a
challenge. The problem is that, to 'control' the environment, the
developers have chosen to fixate all dependencies by pulling them in
and patching them (including LLVM). The only time I got a successful
build outside Guix was by using the exact gcc/g++/gfortran-4.7
compilers (no earlier and no later versions) and letting Julia have
its way downloading and building openblas, etc. All Julia tests pass
if it is done this way.

I tried to build Julia in a Guix environment - adding dependencies one
by one - and this failed spectularly too. Turns out that Julia is very
specific about the compilers and dependencies it uses, which is OK,
but it downloads dependencies from source and patches them, which is
not great. Worst, the whole build system is based on defaults - so if
you change anything things start failing.

I.e., you try to change anything, such as using the system openblas
libs, and the Julia build system gets confused. It should work,
according to the docs, but I can't even get it to a compiled stage
this way. These are the things Julia 0.6.0 downloads and builds:

ls deps/scratch/ 

    arpack-ng-3.3.0
    cmake-3.7.1-Linux-x86_64
    curl-7.53.1
    dsfmt-2.2.3
    fftw-3.3.6-pl1-double
    fftw-3.3.6-pl1-single
    gmp-6.1.2
    libgit2-2fcb8705e584ca61f6c4657525c9d2713f6a39d2
    libssh2-30e9c1347e3b8baa2951db612f05e6d87fc8e2f2
    libunwind-1.1-julia2
    libuv-52d72a52cc7ccd570929990f010ed16e2ec604c8
    llvm-3.9.1
    mbedtls-2.3.0-gpl
    mpfr-3.1.5
    openblas-85636ff1a015d04d3a8f960bc644b85ee5157135
    openlibm-1581174c85f7b645b15ba1ac1c3a98fb601f0fe7
    openspecfun-39699a1c1824bf88410cabb8a7438af91ea98f4c
    patchelf-0.9
    pcre2-10.23
    SuiteSparse-4.4.5
    utf8proc-40e605959eb5cb90b2587fa88e3b661558fbc55a

ls deps/patches/

    arpack-tests-blasint.patch         llvm-3.7.1.patch                        
llvm-D28759-loopclearance.patch
    compiler-rt-3.7.1.patch            llvm-3.7.1_symlinks.patch               
llvm-D28786-callclearance.patch
    dSFMT.c.patch                      llvm-3.8.0_bindir.patch                 
llvm-D9168_argument_alignment.patch
    dSFMT.h.patch                      llvm-3.8.0_ppc64_SUBFC8.patch           
llvm-nodllalias.patch
    gmp-exception.patch                llvm-3.8.0_threads.patch                
llvm-PR22923.patch
    instcombine-llvm-3.3.patch         llvm-3.8.0_winshlib.patch               
llvm-PR26180.patch
    int128-vector.llvm-3.3.patch       llvm-3.8.1-version.patch                
llvm-PR27046.patch
    libgit2-agent-nonfatal.patch       llvm-3.9.0_cygwin.patch                 
llvm-PR276266.patch
    libgit2-free-config.patch          llvm-3.9.0_D27296-libssp.patch          
llvm-PR277939.patch
    libgit2-gitconfig-symlink.patch    llvm-3.9.0_threads.patch                
llvm-PR278088.patch
    libgit2-mbedtls.patch              llvm-3.9.0_win64-reloc-dwarf.patch      
llvm-PR278321.patch
    libgit2-mbedtls-verify.patch       llvm-arm-fix-prel31.patch               
llvm-PR278923.patch
    libgit2-mbedtls-writer-fix.patch   llvm-D14260.patch                       
llvm-PR29010-i386-xmm.patch
    libgit2-remote-push-NULL.patch     llvm-D17165-D18583.patch                
llvm-r282182.patch
    libgit2-ssh.patch                  llvm-D17326_unpack_load.patch           
llvm-rL279933-ppc-atomicrmw-lowering.patch
    libssh2-encryptedpem.patch         llvm-D17712.patch                       
llvm-rL293230-icc17-cmake.patch
    libssh2-netinet-in.patch           llvm-D21271-instcombine-tbaa-3.7.patch  
llvm-win64-reloc-dwarf.patch
    libunwind-arm-dyn.patch            llvm-D21271-instcombine-tbaa-3.8.patch  
mbedtls-ssl.h.patch
    libunwind-arm-pc-offset.patch      llvm-D23597_sdag_names.patch            
openblas-clangasmbug.patch
    libunwind-dwarf-ver.patch          llvm-D24300_ptx_intrinsics.patch        
openblas-cross-compile.patch
    libunwind-freebsd-mapper.patch     llvm-D25865-cmakeshlib.patch            
openblas-freebsd.patch
    libunwind-prefer-extbl.patch       llvm-D27389.patch                       
openblas-power-assembly-fixes.patch
    lldb-3.7.1.patch                   llvm-D27397.patch                       
osx-10.10.llvm-3.3.patch
    llvm-3.3.patch                     llvm-D27609-AArch64-UABS_G3.patch       
pcre-mingw.patch
    llvm-3.7.0.patch                   llvm-D27629-AArch64-large_model.patch   
SuiteSparse-winclang.patch
    llvm-3.7.1_2.patch                 llvm-D28009.patch                       
win64-int128.llvm-3.3.patch
    llvm-3.7.1_3.patch                 llvm-D28215_FreeBSD_shlib.patch
    llvm-3.7.1_destsharedlibdir.patch  llvm-D28221-avx512.patch

I mean, seriously!

As I wrote before, the test of the current Guix build probably fails due to the
openblas linkage Guix uses (openblas output does change and depends on build
choices). Not sure which switch is causing it, but it should be fixable. There
are more tests failing, however, that need fixing. 

For version 7 Julia promises no longer to patch LLVM, see 

  
https://discourse.julialang.org/t/why-is-source-build-julia-required-to-use-gpu-packages/9747/2

So, unless someone feels incensed to fix things, I propose to hold out until
Julia7 and maybe have another go again. 

Pj.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]