unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Pjotr Prins <pjotr.public12@thebird.nl>
To: Pjotr Prins <pjotr.public12@thebird.nl>
Cc: 30282@debbugs.gnu.org, Marco van Hulten <marco@hulten.org>
Subject: bug#30282: package julia build error
Date: Fri, 16 Mar 2018 15:07:56 +0100	[thread overview]
Message-ID: <20180316140756.GA30730@thebird.nl> (raw)
In-Reply-To: <20180313213557.GA15602@thebird.nl>

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	other threads:[~2018-03-16 14:13 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-28 22:43 bug#30282: package julia build error Marco van Hulten
2018-02-06 16:04 ` Ludovic Courtès
2018-02-07 11:56   ` Andreas Enge
2018-03-12 15:10   ` Ludovic Courtès
2018-03-13  9:57     ` Pjotr Prins
2018-03-13 11:58       ` Pjotr Prins
2018-03-13 17:02         ` Ludovic Courtès
2018-03-13 17:54           ` Andreas Enge
2018-03-13 21:35             ` Pjotr Prins
2018-03-16 14:07               ` Pjotr Prins [this message]
2018-03-17 18:39                 ` Ludovic Courtès
2018-03-19 19:09                   ` Pjotr Prins
2020-10-05 21:37 ` zimoun
2020-10-06 11:57   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180316140756.GA30730@thebird.nl \
    --to=pjotr.public12@thebird.nl \
    --cc=30282@debbugs.gnu.org \
    --cc=marco@hulten.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).