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

GCC/4.8.1 build fails on openSUSE 12.2 #283

Open
berndmohr opened this issue Oct 23, 2013 · 7 comments
Open

GCC/4.8.1 build fails on openSUSE 12.2 #283

berndmohr opened this issue Oct 23, 2013 · 7 comments

Comments

@berndmohr
Copy link

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
Copy link
Member

boegel commented Oct 26, 2013

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
Copy link
Author

just a reminder:

  • it is not just GCC.
    I had the same problem with OpenMPI; there is just was lib vs. lib64
    I ran into this issue with UNITE also a couple of times.

  • Sometimes it is hard to reproduce:
    even with two machines with the same basic SuSe version and config,
    they sometimes behave diffently (e.g. one using lin the othe rlib64

    I was not able to track down the root cause.

here is my current theory:

  • it comes from libtool (as I only experienced it with packages which
    uses GNU autoconf/autoconfigure etc
  • I might be caused by the fact you have or have not installed devel
    versions for 32-bit development (on a x86_64 machine)

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:
#283 (comment)

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
Copy link
Member

boegel commented Nov 5, 2013

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
Copy link
Author

My suspect is libtool

@boegel
Copy link
Member

boegel commented Nov 9, 2013

@berndmohr: Now easybuilders/easybuild-framework#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 boegel modified the milestones: v1.x, v1.9 Feb 11, 2014
@boegel
Copy link
Member

boegel commented Feb 25, 2014

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

@boegel boegel modified the milestone: v1.x Jun 24, 2015
@boegel boegel modified the milestones: v2.7.0, v2.x Jan 23, 2016
@randy0413
Copy link

Jdjdkdkdmx

@boegel boegel modified the milestones: 3.x, 4.x Feb 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants