From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pjotr Prins Subject: bug#30282: package julia build error Date: Fri, 16 Mar 2018 15:07:56 +0100 Message-ID: <20180316140756.GA30730@thebird.nl> References: <20180128234305.03c958b0@jasniac.instanton> <87607a5ckn.fsf@gnu.org> <87po49mis5.fsf@gnu.org> <20180313095726.GA12663@thebird.nl> <20180313115820.GA13258@thebird.nl> <873713q580.fsf@gnu.org> <20180313175418.GA20606@jurong> <20180313213557.GA15602@thebird.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ewq6T-0006HP-UX for bug-guix@gnu.org; Fri, 16 Mar 2018 10:13:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ewq6Q-0002oH-OZ for bug-guix@gnu.org; Fri, 16 Mar 2018 10:13:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:57324) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ewq6Q-0002ns-Jg for bug-guix@gnu.org; Fri, 16 Mar 2018 10:13:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ewq6Q-00058X-DP for bug-guix@gnu.org; Fri, 16 Mar 2018 10:13:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: Content-Disposition: inline In-Reply-To: <20180313213557.GA15602@thebird.nl> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Pjotr Prins Cc: 30282@debbugs.gnu.org, Marco van Hulten 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.