[ET Trac] [Einstein Toolkit] #1769: External libraries: moving towards multiarch library directory structure
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Tue Nov 3 12:08:12 CST 2015
#1769: External libraries: moving towards multiarch library directory structure
------------------------------------+---------------------------------------
Reporter: bmundim | Owner:
Type: defect | Status: reopened
Priority: major | Milestone: ET_2016_05
Component: EinsteinToolkit thorn | Version: development version
Resolution: | Keywords: ExternalLibraries HDF5 Multiarch
------------------------------------+---------------------------------------
Comment (by bmundim):
Replying to [comment:28 knarf]:
> > Anyways, I am reopening this ticket because the script is not able to
find /usr/include/hdf5.mod which is in my system and hdf5 library
installed does support fortran.
>
> Assuming this is Ubuntu (trusty, and for reference):
> no pkg-config
There is pkg-config installed on Ubuntu 14.04.3 LTS. I guess what you
meant is that hdf5 doesn't have a *.pc on trusty, right?
> {{{
> /use/include/hdf5.h
> /usr/include/hdf5.mod
> /usr/lib/x86_64-linux-gnu/libhdf5.so
> }}}
>
> The script (on my Ubuntu VM) finds hdf5.h and libhdf5.so. It never
checks for hdf5.mod (only for the relevant libraries). It does search for
the include path, and finds it as /usr/include. Because that is a system
include path, it does not get added to the INC_DIRS, for the reason you
stated. It goes on marking the library as found and starts to compile. It
never fails since there is no Fortran HDF5 code in the ET.
>
That's true. It fails because one of our private codes use 'use hdf5'
statement.
> Now, gfortran decided to not search standard include paths when looking
for .mod files (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35707). This
means, to get things to compile, you would have to add -I/usr/include -
which obviously is a bad idea in general. That's why distributions started
to put these into separate directories, which is the only sensible way -
but doesn't help us here now. We cannot add /usr/include in INC_DIRS in
case Fortran is requested, because that might just break the next library.
We also do not sort the list of library/include directories according to
their 'is system path' status for each compiler command. We probably could
dabble into that mess - but is that what you want?
One idea would be to define a new variable, let's say
CCTK_APPEND_SYSTEM_LIBS_INCLUDES, and when set it to "yes" it would find
out what the system library and include paths are and add them only after
all libraries and flags have already been set. To avoid breaking other
configurations this would default to "no". We could then play with it by
setting to "yes" only on ubuntu.cfg and smooth the
rough edges of the new system there.
Also note that there is a discussion on standardize these new directories
in the case of fortran:
{{{
https://bugs.linuxfoundation.org/show_bug.cgi?id=757
}}}
but progress is very slow on that matter.
> One possible easier way would be to detect such situation, and to copy
the .mod file to somewhere inside Cactus, and reference that path. This
would separate the mod file from the system include path. But this would
require checking that this file is always up2date with it's original
location. We could use a symlink to make sure this is true, but would
still need to check for it dangling.
>
ok, but I am not sure this would be a good idea. How would you check for
that? What would trigger
this checking?
> In any case - I would like to see this issue with Fortran module files
and standard include paths be rather in a new ticket, or things get too
confusing here.
>
Ok, do you want to create a new ticket then?
> > In addition your solution was applied only for HDF5 external library.
There are others that need to be patched such as Boost, PAPI and pthreads.
They were also moved to multiarch layout on ubuntu.
>
> Indeed. We didn't want to change all this for all libraries so short
before a release. Eventually all libraries should use the flesh scripts.
>
Until then, I suggest to keep this ticket open. What do you think?
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1769#comment:35>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list