JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.72k stars 5.48k forks source link

Build failure 0.4 on Mageia 5 - libgit2 #13871

Closed evanmason closed 8 years ago

evanmason commented 9 years ago

Hi, I get the following error while doing a fresh install of Julia 0.4 on Mageia 5 Linux.

cd libgit2 && git fetch -q git://github.com/libgit2/libgit2.git v0.23.1:remotes/origin/v0.23.1
cd libgit2 && git checkout -q --detach f6dedf2c2eb806e2a6fdd4cf31f68386efc2ee0b
touch -c libgit2/CMakeLists.txt
mkdir -p libgit2/build
cd libgit2/build/ && \
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/opt/julia/julia/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_C_COMPILER="gcc" -DCMAKE_C_COMPILER_ARG1="-m64 " -DCMAKE_CXX_COMPILER="g++" -DCMAKE_CXX_COMPILER_ARG1="-m64 " -DTHREADSAFE=ON
Re-run cmake no build system arguments
-- The C compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- checking for module 'libcurl'
--   package 'libcurl' not found
CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:293 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:210 (FIND_PACKAGE)

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:294 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:210 (FIND_PACKAGE)

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:296 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:210 (FIND_PACKAGE)

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:298 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:210 (FIND_PACKAGE)

-- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version ".0.0`") 
-- Found HTTP_Parser: /usr/include  
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.8") 
-- checking for module 'libssh2'
--   package 'libssh2' not found
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.
-- Performing Test IS_FVISIBILITY=HIDDEN_SUPPORTED
-- Performing Test IS_FVISIBILITY=HIDDEN_SUPPORTED - Success
-- Performing Test IS_WDOCUMENTATION_SUPPORTED
-- Performing Test IS_WDOCUMENTATION_SUPPORTED - Failed
-- Performing Test IS_WNO-MISSING-FIELD-INITIALIZERS_SUPPORTED
-- Performing Test IS_WNO-MISSING-FIELD-INITIALIZERS_SUPPORTED - Success
-- Performing Test IS_WSTRICT-ALIASING=2_SUPPORTED
-- Performing Test IS_WSTRICT-ALIASING=2_SUPPORTED - Success
-- Performing Test IS_WSTRICT-PROTOTYPES_SUPPORTED
-- Performing Test IS_WSTRICT-PROTOTYPES_SUPPORTED - Success
-- Performing Test IS_WDECLARATION-AFTER-STATEMENT_SUPPORTED
-- Performing Test IS_WDECLARATION-AFTER-STATEMENT_SUPPORTED - Success
-- Performing Test IS_WNO-UNUSED-CONST-VARIABLE_SUPPORTED
-- Performing Test IS_WNO-UNUSED-CONST-VARIABLE_SUPPORTED - Failed
-- Performing Test IS_WNO-UNUSED-FUNCTION_SUPPORTED
-- Performing Test IS_WNO-UNUSED-FUNCTION_SUPPORTED - Success
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Found PythonInterp: /usr/bin/python (found version "2.7.9") 
-- Configuring incomplete, errors occurred!
See also "/opt/julia/julia/deps/libgit2/build/CMakeFiles/CMakeOutput.log".
See also "/opt/julia/julia/deps/libgit2/build/CMakeFiles/CMakeError.log".
Makefile:1958: recipe for target 'libgit2/build/Makefile' failed
make[1]: *** [libgit2/build/Makefile] Error 1
make[1]: Leaving directory '/opt/julia/julia/deps'
Makefile:51: recipe for target 'julia-deps' failed
make: *** [julia-deps] Error 2
[emason@marula julia (release-0.4)]$

I do have both curl and openssh installed, plus devel packages, and they are in my PATH.

[emason@marula julia (release-0.4)]$ ls /usr/lib64/libcurl.so*
/usr/lib64/libcurl.so@  /usr/lib64/libcurl.so.4@  /usr/lib64/libcurl.so.4.3.0*
[emason@marula julia (release-0.4)]$ ls /usr/lib64/libssh2
libssh2.a         libssh2.la        libssh2.so        libssh2.so.1      libssh2.so.1.0.1  
[emason@marula julia (release-0.4)]$ ls /usr/lib64/libssh2.*
/usr/lib64/libssh2.a  /usr/lib64/libssh2.la*  /usr/lib64/libssh2.so@  /usr/lib64/libssh2.so.1@  /usr/lib64/libssh2.so.1.0.1*
[emason@marula julia (release-0.4)]$

I suspect this may be related to #13472 but I'm still no closer to a solution. Installing 0.3 is successful.

yuyichao commented 9 years ago

Install libcurl-devel?

tkelman commented 9 years ago

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:293 (list):

I think you should report this to the maintainer of the Mageia 5 cmake package.

evanmason commented 9 years ago

Yes, I have libcurl-devel installed.

I'll report this to Mageia.

Thanks

On Wed, Nov 4, 2015 at 2:11 PM, Tony Kelman notifications@github.com wrote:

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:293 (list):

I think you should report this to the maintainer of the Mageia 5 cmake package.

— Reply to this email directly or view it on GitHub https://github.com/JuliaLang/julia/issues/13871#issuecomment-153715648.

doktor5000 commented 9 years ago

CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:293 (list):

That's an upstream cmake issue with newer openssl versions, and should be fixed with cmake >= 3.1.1 according to https://cmake.org/Bug/view.php?id=15386

I'll try to submit a fixed cmake package for Mageia (even when I'm not the maintainer ;) ) Reported via https://bugs.mageia.org/show_bug.cgi?id=17088

doktor5000 commented 9 years ago

That issue is fixed, it succeeds now: -- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.2d")

Afterwards libgit2 build works fine

Linking C executable libgit2_clar
[100%] Built target libgit2_clar
LIB_PATH for libssl: /lib64/libssl.so.1.0.0
'/lib64/libssl.so.1.0.0' -> '/home/doktor5000/julia/usr/lib/libssl.so.1.0.0'
LIB_PATH for libcrypto: /lib64/libcrypto.so.1.0.0
'/lib64/libcrypto.so.1.0.0' -> '/home/doktor5000/julia/usr/lib/libcrypto.so.1.0.0'

resulting in:

    LINK usr/lib/julia/sys.so
    CC usr/lib/libccalltest.so
[doktor5000@Mageia5]─[23:08:41]─[~/julia]./julia -v    
julia version 0.4.1-pre
evanmason commented 8 years ago

Thank you everyone, the new version of cmake became available on Mageia and I've been able to install 0.4.

garrison commented 8 years ago

That's an upstream cmake issue with newer openssl versions, and should be fixed with cmake >= 3.1.1

I'm experiencing this issue on Debian stable (jessie), which includes cmake 3.0.2. Has anyone else experienced this on Debian? I believe I have successfully built julia master recently, but I am unable to build it now due to this error. If cmake 3.1.1 is indeed the minimum version required, this should probably be mentioned in the README. Even better would be to figure out a way for this to work with older cmake.

EDIT: FWIW, libgit2 README claims only cmake 2.8 or newer is required.

tkelman commented 8 years ago

It's some trivial little bug in the FindOpenSSL.cmake module file, if you find the issue somewhere you can work out what the patch is and should be able to just make the change from https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c5d9a8283cfac15b4a5a07f18d5eb10c1f388505 manually if you have sudo. If you don't build with openssl, or on other platforms, then you can build libgit2 with older cmake, so "minimum version" is a bit of a hazy concept. You can just download generic linux binaries of recent cmake and point Julia's build to use it by setting CMAKE in Make.user or in your make invocation. LLVM 3.9 will require cmake 3.4.3 at a minimum when we upgrade to that, so may as well prepare.

garrison commented 8 years ago

@tkelman Right; I know how to fix this on my own machine. What I am trying to report here is that if you type make on the 0.5 release candidate on the latest version of Debian, it can fail with an error that is addressed nowhere in the README. My understanding is that such things have historically been considered a bug (but that's of course up to you).

tkelman commented 8 years ago

until we do require newer cmake for llvm, it would be worth a readme note