Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Julia Build from Source / s390x Machine Architecture not Supported #21474

Closed
claudefalbriard opened this issue Apr 21, 2017 · 42 comments
Closed

Comments

@claudefalbriard
Copy link

I've rebuilt the OpenBLAS package from source and adjusted the IBM s390x architecture under Ubuntu 16 and executed a "make USE_SYSTEM_BLAS=1 NO_LAPACK=1" at the Julia source distribution, receiving the following error message:

checking for ELF helper width... configure: error: Unknown ELF target: s390x
/data/shared/julia/downloads/julia-0.5.1/deps/unwind.mk:15: recipe for target 'build/libunwind-1.1-julia2/config.status' failed
make[1]: *** [build/libunwind-1.1-julia2/config.status] Error 1
Makefile:81: recipe for target 'julia

Are there plans to add the s390x architecture to the Julia language distribution? Is there a configuration option to avoid, or bypass this error at the package make process? Our platform is LinuxOne on system z.

@yuyichao
Copy link
Contributor

I don't think there's any plan to support it and it'll take someone with actual access to such system to do so. Assuming all of the dependencies can be supported on such arch already possibly with special flags/patches you should be able to check julia itself by specifying USE_SYSTEM_* for all of the dependencies.

@tkelman
Copy link
Contributor

tkelman commented Apr 21, 2017

Sounds from gperftools/gperftools#761 like libunwind has not been ported to s390x. Do we have a way of building without libunwind?

@yuyichao
Copy link
Contributor

I don't think we have a easy we do do that since don't currently do that on any platforms. You can try specifying USE_SYSTEM_LIBUNWIND=1 LIBUNWIND= which will hopefully get the deps build pass and then commenting out things (includes and the body of jl_unw_init and jl_unw_step etc).

@claudefalbriard
Copy link
Author

claudefalbriard commented Apr 21, 2017

Using the suggested build command, it got one step further:
make USE_SYSTEM_BLAS=1 NO_LAPACK=1 USE_SYSTEM_LIBUNWIND=1 LIBUNWIND=

Error:

make[2]: *** No rule to make target 's390x/Make.files'.  Stop.
/data/shared/julia/downloads/julia-0.5.1/deps/openlibm.mk:11: recipe for target 'build/openlibm-1581174c85f7b645b15ba1ac1c3a98fb601f0fe7/libopenlibm.so' failed
make[1]: *** [build/openlibm-1581174c85f7b645b15ba1ac1c3a98fb601f0fe7/libopenlibm.so] Error 2
Makefile:81: recipe for target 'julia-deps' failed
make: *** [julia-deps] Error 2

Is there any configuration adjustment that could fix this error?

@yuyichao
Copy link
Contributor

USE_SYSTEM_LIBM

@yuyichao
Copy link
Contributor

There's a list of USE_SYSTEM_* flags here. You should probably start with enabling as many of them as possible. (Note that you don't need to enable system openlibm and libm at the same time. You should probably leave out libuv too since it's pretty fundamental and we carry non-trivial patch. Others should be find when taken from system install, some may fail tests but the build should be ok.)

@claudefalbriard
Copy link
Author

Thanks, the build made some good advance, compiling mostly all of the modules of Julia. Below my make command:
make USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 NO_LAPACK=1 USE_SYSTEM_LIBUNWIND=1 LIBUNWIND=

Error:
/data/shared/julia/downloads/julia-0.5.1/deps/srccache/pcre2-10.21/src/sljit/sljitLir.h:438:31: warning: 'sljit_set_compiler_memory_error' used but never defined
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_compiler_memory_error(struct sljit_comp
^

Makefile:2089: recipe for target 'src/libpcre2_8_la-pcre2_jit_compile.lo' failed
make[3]: *** [src/libpcre2_8_la-pcre2_jit_compile.lo] Error 1
Makefile:1212: recipe for target 'all' failed
make[2]: *** [all] Error 2
/data/shared/julia/downloads/julia-0.5.1/deps/pcre.mk:22: recipe for target 'build/pcre2-10.21/.libs/libpcre2-8.so' failed
make[1]: *** [build/pcre2-10.21/.libs/libpcre2-8.so] Error 2
Makefile:81: recipe for target 'julia-deps' failed
make: *** [julia-deps] Error 2

Any hints how to fix it?

@yuyichao
Copy link
Contributor

Do you have a system pcre to replace this with?

@yuyichao
Copy link
Contributor

There appears to be up to date package for Ubuntu so that's probably the easiest solution https://answers.launchpad.net/ubuntu/+source/pcre2/10.21-1/+build/9537783

@tkelman
Copy link
Contributor

tkelman commented Apr 21, 2017

It looks like the pcre jit has some known issues on s390x and distros have been disabling it (https://patchwork.alpinelinux.org/patch/3322/ for example). That would lead to some ccall's you'd need to comment out in the Julia code, probably.

@claudefalbriard
Copy link
Author

I've done a new make with:
make USE_SYSTEM_*=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 NO_LAPACK=1 USE_SYSTEM_LIBUNWIND=1 LIBUNWIND=
Error: : error after a large compile step: conflicting types for 'sljit_create_compiler'
config.status: executing delete-old-chartables commands
CC src/libpcre2_8_la-pcre2_auto_possess.lo
CC src/libpcre2_8_la-pcre2_compile.lo
CC src/libpcre2_8_la-pcre2_config.lo
CC src/libpcre2_8_la-pcre2_context.lo
CC src/libpcre2_8_la-pcre2_dfa_match.lo
CC src/libpcre2_8_la-pcre2_error.lo
CC src/libpcre2_8_la-pcre2_find_bracket.lo
CC src/libpcre2_8_la-pcre2_jit_compile.lo
In file included from /data/shared/julia/downloads/julia-0.5.1/deps/srccache/pcre2-10.21/src/pcre2_jit_compile.c:79:0:
/data/shared/julia/downloads/julia-0.5.1/deps/srccache/pcre2-10.21/src/sljit/sljitLir.c:1718:49: error: conflicting types for 'sljit_create_compiler'
SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void)

@yuyichao
Copy link
Contributor

.... well USE_SYSTEM_* won't work it's not a valid/meaningful make invocation syntax, you need to actually replace those by the ones in the link I have.

@claudefalbriard
Copy link
Author

Thanks for fixing the LIBUNWIND package dependency, adding the DISABLE_LIBUNWIND=1 parameter.
After building the kf/unwinddis branch I receive the following error. Any advice how to debug and isolate the issue with the "core dumped" message at inference.ji?

My llvm is at the following level:

dpkg -s llvm | grep '^Version:'
Version: 1:3.8-33ubuntu3.1
make cleanall 
make DISABLE_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 NO_LAPACK=1 USE_SYSTEM_LLVM=1

   PERL base/uv_constants.jl
Makefile:95: "WARNING: Generating boilerplate git version info"
Copying in usr/share/doc/julia/examples
Warning: git information unavailable; versioning information limited
    JULIA usr/lib/julia/inference.ji
Segmentation fault (core dumped)
Makefile:215: recipe for target '/data/shared/julia/julia-kf-unwinddis/usr/lib/julia/inference.ji' failed
make[1]: *** [/data/shared/julia/julia-kf-unwinddis/usr/lib/julia/inference.ji] Error 139
Makefile:100: recipe for target 'julia-inference' failed
make: *** [julia-inference] Error 2

@ViralBShah
Copy link
Member

I wouldn't bother with openblas at this stage of the port and just use the reference blas or atlas. But looks like this is now failing in the julia compiler as it builds the system image.

@ViralBShah
Copy link
Member

Perhaps the instructions here will help debug: https://docs.julialang.org/en/stable/devdocs/backtraces/#segfaults-during-bootstrap-sysimg-jl

@edelsohn
Copy link

edelsohn commented Jun 9, 2017

OpenBLAS is in progress and currently partially enabled.

@claudefalbriard
Copy link
Author

Latest build of merged master version of Jul.13 2017 excluding the LIBUNWIND package. Need some assistance to debug and isolate the issue with module /usr/lib/julia/inference.ji:

make debug DISABLE_LIBUNWIND=1 USE_SYSTEM_PCRE=1 PCRE= USE_SYSTEM_LIBM=1 NO_LAPACK=1 USE_SYSTEM_LLVM=1 USE_SYSTEM_BLAS=1 BLAS=

Error message at build:

    PERL base/uv_constants.jl
Makefile:95: "WARNING: Generating boilerplate git version info"
Copying in usr/share/doc/julia/examples
Warning: git information unavailable; versioning information limited
    JULIA usr/lib/julia/inference.ji
Segmentation fault (core dumped)
Makefile:215: recipe for target '/data/shared/julia/julia-master/usr/lib/julia/inference.ji' failed
make[1]: *** [/data/shared/julia/julia-master/usr/lib/julia/inference.ji] Error 139
Makefile:100: recipe for target 'julia-inference' failed
make: *** [julia-inference] Error 2

Attempt to debug:

root@47fe5fd7a3f8:/data/shared/julia/julia-master/base# gdb -x ../contrib/debug_bootstrap.gdb
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "s390x-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
../contrib/debug_bootstrap.gdb:1: Error in sourced command file:
../usr/bin/julia-debug: No such file or directory.

cd /data/shared/julia/julia-master
gdb --args ./usr/bin/julia-debug /data/shared/julia/julia-master/usr/lib/julia/inference.ji

oot@47fe5fd7a3f8:/data/shared/julia/julia-master# gdb --args ./usr/bin/julia-debug /data/shared/julia/julia-master/usr/lib/julia/inference.ji
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "s390x-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
./usr/bin/julia-debug: No such file or directory.
(gdb) r
Starting program:  /data/shared/julia/julia-master/usr/lib/julia/inference.ji
No executable file specified.
Use the "file" or "exec-file" command.
(gdb) bt
No stack.
(gdb) 


@claudefalbriard
Copy link
Author

claudefalbriard commented Jun 13, 2017

Debug Attempts:

Building with "--ignore-errors" flag, I get the following error:
"g++: error:" "/usr/lib/julia/sys-debug.o:" "No such file or directory" Julia

Seems to be similar to issue #18551

Question: Could the installation of LLVM version 3.9 (beta) solve this error?

When building with: "make verbose=1 debug" I receive the following messages:

inference.jl
error during bootstrap:
BoundsError(a=Array{Any, 1}[
  Array{Any, 1}[
  Core.Inference.VarState(typ=Core.Inference.Const(val=typeof(Core.Inference.typeinf_code)(), actual=false), undef=false),
...
Makefile:215: recipe for target '/data/shared/julia/julia-master/usr/lib/julia/inference.ji' failed
make[1]: *** [/data/shared/julia/julia-master/usr/lib/julia/inference.ji] Error 1
Makefile:100: recipe for target 'julia-inference' failed
make: *** [julia-inference] Error 2

Hints for debug and error isolation are welcome.

@claudefalbriard
Copy link
Author

Getting the following error when building Julia from latest source distribution (Dec. 9, 2017) under the IBM system z platform (arch=s390x) with Ubuntu Linux 16.4 and LLVM at 3.9.1:

make DISABLE_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 NO_LAPACK=1 USE_SYSTEM_LLVM=0 ARCH=s390x

Error:


    JULIA usr/lib/julia/inference.ji
LLVM ERROR: Cannot select: 0x2aa330b0680: i64 = addrspacecast[0 -> 10] 0x2aa330b0610
  0x2aa330b0610: i64,ch = load<LD8[@"jl_global#3"](tbaa=<0x2aa33040918>)> 0x2aa330540c0, 0x2aa330bca60, undef:i64
    0x2aa330bca60: i64,ch = load<LD8[GOT]> 0x2aa330540c0, 0x2aa330bc9f0, undef:i64
      0x2aa330bc9f0: i64 = SystemZISD::PCREL_WRAPPER TargetGlobalAddress:i64<%jl_value_t** @"jl_global#3"> 0 [TF=1]
        0x2aa330b0a70: i64 = TargetGlobalAddress<%jl_value_t** @"jl_global#3"> 0 [TF=1]
      0x2aa330ad6d0: i64 = undef
    0x2aa330ad6d0: i64 = undef
In function: japi1_top-level scope_0
Makefile:205: recipe for target '/data/shared/downloads/julia/julia-master/usr/lib/julia/inference.ji' failed
make[1]: *** [/data/shared/downloads/julia/julia-master/usr/lib/julia/inference.ji] Error 1

@maleadt
Copy link
Member

maleadt commented Dec 10, 2017

Another back-end that doesn't support address spaces. Ref #22414, example workaround in #23611.

@claudefalbriard
Copy link
Author

I got a step further doing a bypass of the regression tests by using:
make USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_LLVM=0 ARCH=s390x -B CFLAGS=-DNDEBUG
integrating the "s390x" adjusted Libunwind package from repository: https://github.com/linux-on-ibm-z/libunwind. Latest build attempt did throw the following error at a rather advanced point of the build flow:

master/deps/srccache/gmp-6.1.2 -D__GMP_WITHIN_GMP -DNDEBUG -c mpn/scan0.c  -fPIC -DPIC -o mpn/.libs/scan0.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I/data/shared/downloads/julia/julia-master/deps/srccache/gmp-6.1.2 -D__GMP_WITHIN_GMP -DNDEBUG -c mpn/scan1.c  -fPIC -DPIC -o mpn/.libs/scan1.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I/data/shared/downloads/julia/julia-master/deps/srccache/gmp-6.1.2 -D__GMP_WITHIN_GMP -DNDEBUG -c mpn/popcount.c  -fPIC -DPIC -o mpn/.libs/popcount.o
mpn/popcount.c: In function 'FNAME':
mpn/popcount.c:61:12: warning: implicit declaration of function 'POPHAM' [-Wimplicit-function-declaration]
       p0 = POPHAM (up[0], vp[0]);
            ^
mpn/popcount.c:61:27: error: 'vp' undeclared (first use in this function)
       p0 = POPHAM (up[0], vp[0]);
                           ^
mpn/popcount.c:61:27: note: each undeclared identifier is reported only once for each function it appears in
Makefile:885: recipe for target 'mpn/popcount.lo' failed
make[4]: *** [mpn/popcount.lo] Error 1
Makefile:957: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
Makefile:776: recipe for target 'all' failed
make[2]: *** [all] Error 2
/data/shared/downloads/julia/julia-master/deps/gmp.mk:31: recipe for target 'scratch/gmp-6.1.2/build-compiled' failed
make[1]: *** [scratch/gmp-6.1.2/build-compiled] Error 2 

@vtjnash
Copy link
Member

vtjnash commented Dec 13, 2017

I recommend doing USE_SYSTEM_GMP=1 and USE_SYSTEM_MPFR=1

@vtjnash
Copy link
Member

vtjnash commented Dec 13, 2017

Also, regarding the crashes you are seeing: the s390x system is a big-endian machine. There's a few places in the code where we assume little-endian. These are usually marked, but we haven't had a big-endian system to test any fixes and avoid bit-rot in that code.

@claudefalbriard
Copy link
Author

Thanks @vtjnash. The system version of GMP solved the issue and the build made some advance. It stopped at an issue regarding the version of automake package already installed under the Ubuntu 16.04 Linux. Here the error message:

cd /data/shared/downloads/julia/julia-master/deps/srccache/curl-7.56.0 && /bin/bash /data/shared/downloads/julia/julia-master/deps/srccache/curl-7.56.0/missing automake-1.15 --foreign Makefile
configure.ac:128: error: version mismatch.  This is Automake 1.15,
configure.ac:128: but the definition used by this AM_INIT_AUTOMAKE
configure.ac:128: comes from Automake 1.15.1.  You should recreate
configure.ac:128: aclocal.m4 with aclocal and run automake again.
WARNING: 'automake-1.15' is probably too old.
         You should only need it if you modified 'Makefile.am' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'automake' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
Makefile:802: recipe for target '/data/shared/downloads/julia/julia-master/deps/srccache/curl-7.56.0/Makefile.in' failed

The system automake version is 1.15, see:

automake --version
automake (GNU automake) 1.15
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
 

@StefanKarpinski
Copy link
Member

Julia definitely would need a work-over to make things work on a big-endian system and in order to make sure that things continue to work, we would need CI on a big-endian machine somewhere.

@claudefalbriard
Copy link
Author

IBM offers a no charge account on the Linux system z platform for a use period of 3 month, for students and developers, a hosting offering that is known as LinuxONE Community Cloud. The service subscription can be done at the following web site [ https://developer.ibm.com/linuxone/ ]. It includes access to SuSE and Ubuntu Linux distributions. Previously I've done many open-source package ports onto the z platform, which almost all times completed successfully by doing a low-level build of all prerequisites, even when the CPU operates in "big-endian" mode. From this background, I feel rather confident that the port of Julia could work successfully. System z, specially the z14 model has very powerful multi-core processor which is promising environment for math and analytic tasks.

@StefanKarpinski
Copy link
Member

StefanKarpinski commented Dec 13, 2017

I'm afraid 3 months is kind of useless – it's really not worth the effort to get a CI system running smoothly on infrastructure that we're only going to be able to use for 3 months.

@StefanKarpinski
Copy link
Member

StefanKarpinski commented Dec 13, 2017

Don't get me wrong, I'd love to get Julia working on big-endian systems and run CI regularly to keep it working, but we just don't have the physical computing resources available to do that.

@edelsohn
Copy link

Three months is the default, trial duration, not a hard limit. Many OSS projects have been granted guest VMs that don't expire for legitimate purposes, such as CI testers.

@StefanKarpinski
Copy link
Member

That would be great if we could work something out like that. Beware, however, that the Julia test suite is a beast and causes problems on literally every CI system we use.

@edelsohn
Copy link

IBMz mainframes are designed for big challenges.

@claudefalbriard
Copy link
Author

I'm currently focusing on "dockerized" installations on z, which is beneficial, as it does not harm the base Linux system, allowing such type of wild beast tests. Worst case of a crash, you just reboot from latest Docker container saved and you are ready for a new test, or experimental build. Docker and its dockerfile is also a good way to rebuild the image and install it on other instances of LinuxONE, in case of a trial account expiry. It also maps the way how a student will consume the service in a pre-packed environment.

@claudefalbriard
Copy link
Author

I've manually installed "automake" at latest release 1.15.1 (as requested by the previous error). Confirming the version:

automake --version
automake (GNU automake) 1.15.1 

Julia build command:
make USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_LLVM=0 ARCH=s390x -B CFLAGS=-DNDEBUG

The build advanced far beyond the previous error but again pointing to an issue with automake. Now requesting an older version of automake at level 1.14. Any idea how fix this error condition?

Build log:

bin/bash /data/shared/downloads/julia/julia-master/deps/srccache/arpack-ng-3.3.0/missing automake-1.14 --foreign Makefile
/data/shared/downloads/julia/julia-master/deps/srccache/arpack-ng-3.3.0/missing: line 81: automake-1.14: command not found
WARNING: 'automake-1.14' is missing on your system.
         You should only need it if you modified 'Makefile.am' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'automake' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
Makefile:413: recipe for target '/data/shared/downloads/julia/julia-master/deps/srccache/arpack-ng-3.3.0/Makefile.in' failed
make[2]: *** [/data/shared/downloads/julia/julia-master/deps/srccache/arpack-ng-3.3.0/Makefile.in] Error 127

@vtjnash
Copy link
Member

vtjnash commented Dec 13, 2017

Is your system clock set correctly? You shouldn't need autoconf unless the system time is considerably off.

@claudefalbriard
Copy link
Author

Dear @vtjnash. Thanks for the direction. Checking here: The machine time looks accurate, the machine location is Poughkeepsie NY/US, the machine time is set to UTC, at Linux Ubuntu used for the build : date
Thu Dec 14 10:03:58 UTC 2017, which is 05:04 New York EST, 10:04:10 UTC Worldtime (via timeanddate.com). Any hints for adjustment of the time setting?

@claudefalbriard
Copy link
Author

I've checked the system clock, which is fine. Next I've defined a system variable named APIVERSION with the value of 1.15.1 that matches the latest "automake" version installed in the Linux. After this change, the build went a step further and build process entered into a kind of "looping" condition. Here an attempt to break the loop with [ CTRL C]. A doubt. Why does it build the "curl" package, if usually this is part of the system environment? Support to isolate and fix this new error is welcome.

Makefile:826: recipe for target 'config.status' failed
make[8]: *** [config.status] Error 1
Makefile:512: recipe for target '../config.status' failed
make[7]: *** [../config.status] Interrupt
Makefile:576: recipe for target 'all-recursive' failed
make[6]: *** [all-recursive] Interrupt
Makefile:2207: recipe for target '/data/shared/downloads/julia/julia-master/deps/scratch/curl-7.56.0/docs/curl.1' failed
make[5]: *** [/data/shared/downloads/julia/julia-master/deps/scratch/curl-7.56.0/docs/curl.1] Interrupt
Makefile:1982: recipe for target 'install-am' failed
make[4]: *** [install-am] Interrupt
Makefile:1820: recipe for target 'install-recursive' failed
make[3]: *** [install-recursive] Interrupt
Makefile:910: recipe for target 'install-recursive' failed
make[2]: *** [install-recursive] Interrupt
/data/shared/downloads/julia/julia-master/deps/curl.mk:51: recipe for target '/data/shared/downloads/julia/julia-master/usr-staging/curl-7.56.0.tgz' failed
make[1]: *** [/data/shared/downloads/julia/julia-master/usr-staging/curl-7.56.0.tgz] Interrupt
Makefile:83: recipe for target 'julia-deps' failed
make: *** [julia-deps] Interrupt

@claudefalbriard
Copy link
Author

I've added some more packages to the Ubuntu system:

apt-get install fftw-dev; apt-get install libarpack2; apt-get install libarpack2-dev; apt-get install libmpfr4 
apt-get install libmpfr-dev; apt-get install libutf8proc1; apt-get install libutf8proc-dev

And added it as system available packages.
make USE_SYSTEM_FFTW=1 USE_SYSTEM_ARPACK=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_AUTOMAKE=1 USE_SYSTEM_CURL=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_LLVM=0 ARCH=s390x -B CFLAGS=-DNDEBUG

The build again went a step further, but stopped at the following error:

cp: 'flisp.boot' and '/data/shared/downloads/julia/julia-master/src/flisp/flisp.boot' are the same file
make[2]: *** [/data/shared/downloads/julia/julia-master/src/flisp/flisp.boot] Error 1
make[1]: *** [flisp/libflisp.a] Error 2
make: *** [julia_flisp.boot.inc.phony] Error 2

Any suggestion how to fix the build of "flisp"?

@claudefalbriard
Copy link
Author

Is this error caused by the s390x environment? See similar issue #393. Any suggestion how to fix this error?

make cleanall 
make USE_SYSTEM_CURL=1 USE_SYSTEM_LIBUV=1 USE_SYSTEM_FFTW:=1 USE_SYSTEM_ARPACK=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_AUTOMAKE=1 USE_SYSTEM_CURL=1 USE_SYSTEM_GMP=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_LLVM=0 ARCH=s390x -B CFLAGS=-DNDEBUG 

My gcc environment is:

gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 

Error:

make[2]: *** No rule to make target '/usr/lib/libuv-julia.a', needed by '/data/shared/downloads/julia/julia-master/src/flisp/flisp'.  Stop.
make[1]: *** [flisp/libflisp.a] Error 2
make: *** [julia_flisp.boot.inc.phony] Error 2

@edelsohn
Copy link

Do you have libuv-devel installed?

@vtjnash
Copy link
Member

vtjnash commented Dec 18, 2017

You need libuv-julia-devel installed to satisfy the USE_SYSTEM_LIBUV dependency (note: this library is not available in most package managers)

@claudefalbriard
Copy link
Author

Checking the Ubuntu package managers choices:

apt-cache search libuv
libuv0.10 - asynchronous event notification library - runtime library
libuv0.10-dbg - asynchronous event notification library - debugging symbols
libuv0.10-dev - asynchronous event notification library - development files
libuv1 - asynchronous event notification library - runtime library
libuv1-dbg - asynchronous event notification library - debugging symbols
libuv1-dev - asynchronous event notification library - development files

Installed are: 
libuv1 
apt-get install libuv1-dev
libuv1-dev is already the newest version (1.8.0-1).

Did not find any package named: libuv-julia-devel

What options do you recommend to run the make again?

@ViralBShah
Copy link
Member

I am closing this issue for now, since a lot has changed since this was tried. My suggestion is try afresh after the 0.7 release and create a fresh issue for S390 for whoever is attempting it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants