On Mon, 3 Nov 2014, Tim Jenness wrote:
> On Mon, Nov 3, 2014 at 7:27 AM, Peter W. Draper <[log in to unmask]> wrote:
> On Mon, 3 Nov 2014, Peter W. Draper wrote:
>
> As many of you know, I've recently been working on a "brand new"
> implementation of HDS with this new version (version 5) based on top
> of
> HDF5 rather than be an evolution of the existing HDS library.
>
> I've got an almost complete implementation of the HDS API using HDF5
> and you can find that at https://github.com/Starlink/hds-v5 -- it
> should build and pass tests although it does require some Starlink
> libraries installed because I was too lazy to reimplement stuff from
> ONE
> and recalculate bad values from PRM (and CNF is needed so that the
> pointers created by the library can be used in Fortran code).
>
>
> Must be some missing commits. I played around and got all the various HDS/HDF
> libraries to build, but PCS will not build reporting:
>
> libhds.so: error: undefined reference to 'datGet1W_v4'
> libhds.so: error: undefined reference to 'datGet1W_v5'
> libhds.so: error: undefined reference to 'datGet1UW_v4'
> libhds.so: error: undefined reference to 'datGet1UW_v5'
> libhds.so: error: undefined reference to 'hdsFind_v4'
> libhds.so: error: undefined reference to 'hdsFind_v5'
>
> Don't see the source files for these. hdsClose_v4 was also missing but that was
> just a missing include so the re-define was lost.
>
>
> Sorry meant hdsStop_v4.
>
>
> Thanks. Looks like you fixed that particular problem. For everyone else, looking for _v4 or _v5 routines
> in the source files won't work as there is a mapping in hds.h that redefines hdsStop to hdsStop_vX (or
> whatever). This allows me to keep all the code "native" so that it can easily be built standalone if
> needed. The only place where _vX routines are called explicitly is in hds_select.c which examines the
> locator to work out which HDS version it's from and forwards it appropriately.
>
> Assuming PCS still isn't building for you it looks like libhds.so is not linking against libhds_v5 or
> libhds_v5. I do it with a LIBADD directive when the library is built and I explicitly am trying to avoid
> adding those libraries in hds_link (using -lhds should automatically load up the relevant other
> libraries). On my Mac I get:
>
> $ otool -L /stardev/lib/libhds.dylib
>
> /stardev/lib/libhds.dylib:
>
> /stardev/lib/libhds.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libhds_v4.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libhds_v5.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libone.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libemsf.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libems.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libcnf.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
>
> /stardev/lib/libstarmem.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libstarutil.0.dylib (compatibility version 1.0.0, current version 1.0.0)
>
> /stardev/lib/libhdf5_hl.8.dylib (compatibility version 9.0.0, current version 9.2.0)
>
> /stardev/lib/libhdf5.8.dylib (compatibility version 9.0.0, current version 9.2.0)
>
> /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
>
>
> What does ldd give you on your linux box?
>
> It's possible that "make world" is not working perfectly yet as I haven't technically tried it but PCS
> should just be linking against libhds and libhds should be pulling in the other libraries.
My libhds.so shows the same librariess, I don't think it's that.
If I cd to hds-v4 and do:
hds-v4 > grep -r datGet1W *
hds.h:datGet1W(const HDSLoc * locator, size_t maxval, short values[], size_t *actval, int * status);
hds_v4.h:datGet1W_v4(const HDSLoc * locator, size_t maxval, short values[], size_t *actval, int * status);
hds_v4_map.h:#define datGet1W datGet1W_v4
so the question is, where is the function, why isn't it in the Makefile
etc.
Cheers,
Peter.
|