easybuilders / easybuild-easyblocks

Collection of easyblocks that implement support for building and installing software with EasyBuild.
https://easybuild.io
GNU General Public License v2.0
104 stars 284 forks source link

GCC/4.8.1 build fails on openSUSE 12.2 #283

Open berndmohr opened 10 years ago

berndmohr commented 10 years ago

Fails in sanitycheck step:

== 2013-10-23 11:37:35,830 main.EB_GCC INFO Using customized sanity check paths: {'files': ['bin/gcov', 'bin/cpp', 'bin/gcc', 'bin/c++', 'bin/g++', 'bin/gfortran', 'lib64/libgomp.so', 'lib64/libgomp.a', 'lib64/libgcc_s.so', 'lib64/libmudflap.so', 'lib64/libmudflap.a', 'lib64/libstdc++.so', 'lib64/libstdc++.a', 'lib64/libgfortran.so', 'lib64/libgfortran.a', 'libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto1', 'libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper', 'libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/liblto_plugin.so'], 'dirs': ['lib/gcc/x86_64-unknown-linux-gnu/4.8.1', 'lib64', 'include/c++/4.8.1']}
== 2013-10-23 11:37:35,832 main.EB_GCC WARNING Sanity check: did not find file libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto1 in /opt/local/easybuild/software/GCC/4.8.1
== 2013-10-23 11:37:35,832 main.EB_GCC WARNING Sanity check: did not find file libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper in /opt/local/easybuild/software/GCC/4.8.1
== 2013-10-23 11:37:35,832 main.EB_GCC WARNING Sanity check: did not find file libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/liblto_plugin.so in /opt/local/easybuild/software/GCC/4.8.1

The files are there but they are under another destination, e.g. /opt/local/easybuild/software/GCC/4.8.1/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/lto1

Environment:

lsb-release -a
LSB Version:    core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: SUSE LINUX
Description:    openSUSE 12.2 (x86_64)
Release:        12.2
Codename:       Mantis
boegel commented 10 years ago

I have openSUSE on my 'workstation' (laptop in a dock :p) at work, I can try and reproduce it there and figure things out.

When you run into this problem, you can simply override the sanity_check_paths performed by EasyBuild in the easyconfig file. However, EB might be assuming the libexec path is there (I don't think it does though), so that might not be the 100% correct solution here...

berndmohr commented 10 years ago

just a reminder:

here is my current theory:

My solution I would use as an ENGINEER (which is happy when it works 95% of the time):

in sanity_check: allow regexp's e.g. "lib.*/libgcc.so"

I know it gets tricky if some other easyconfig relies on the specific path (which is however bad in some other way)

Bernd

On Sat, Oct 26, 2013 at 01:41:27AM -0700, Kenneth Hoste wrote:

I have openSUSE on my 'workstation' (laptop in a dock :p) at work, I can try and reproduce it there and figure things out.

When you run into this problem, you can simply override the sanity_check_paths performed by EasyBuild in the easyconfig file. However, EB might be assuming the libexec path is there (I don't think it does though), so that might not be the 100% correct solution here...


Reply to this email directly or view it on GitHub: https://github.com/hpcugent/easybuild-easyblocks/issues/283#issuecomment-27142110

Dr.-Ing. Bernd Mohr Juelich Supercomputing Centre Institute for Advanced Simulation

E-Mail: b.mohr@fz-juelich.de WWW: http://www.fz-juelich.de/SharedDocs/Personen/IAS/JSC/EN/staff/mohr_b.html



Forschungszentrum Juelich GmbH 52425 Juelich Sitz der Gesellschaft: Juelich Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498 Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender), Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,

Prof. Dr. Sebastian M. Schmidt


boegel commented 10 years ago

This also affects Paraver, comment by @berndmohr:

Paraver is actually multiple pieces (kernel, gui, etc) which have to be
configred/build in the right order. What happens is that for example the
kernel part builds and installs a library (which on my SuSe magically
happens up in a /lib64 directory, but the subsequent GUI part expects
them in a /lib part, so the -L options are wrong. Works fine on Debian,
Ubuntu, etc as everyting always ends up in /lib, but fails on SuSe.
And Paraver people say this is a Sue bug they do not fix.

It's currently unclear what makes GCC or Paraver pick different llib paths on SuSE (ld?), needs to be looked into.

berndmohr commented 10 years ago

My suspect is libtool

boegel commented 10 years ago

@berndmohr: Now https://github.com/hpcugent/easybuild-framework/pull/753 is merged in, we can specify alternative sanity check paths, i.e. make EasyBuild check for lib and lib64, and assume the sanity check has passed if only one of both is there, using:

sanity_check_paths = {
    'files': [],
    'dirs': [('lib', 'lib64')],
}

This could be used for situation like this (e.g. for OTF), but for GCC, it's probably worthwhile to dive in a little deeper...

boegel commented 10 years ago

PR #365 fixes the problem in the GCC easyblock, I'm also working on a more general solution in framework.

randy0413 commented 6 years ago

Jdjdkdkdmx