Lewis,
   I'll acknowledge your frustration in trying to compile a library that is not 
your own. With the myriad of different build systems this can get difficult to 
remember all of the nuances of each build system and project. With that in mind 
here is some advice for using/building HDF5 on OS X.

On OS X there are several different ways to build dynamic libraries with 
respect to the "rpath" and either way the HDF Group builds the libraries a 
certain set of developers are going to be upset so it is a "no win" situation.

OS X's linker can encode the install_name into the library as a full absolute 
path if given the arguments. This is VERY useful when doing development because 
when I run my executable I don't have to have a copy of the library in the 
local directory. My executable simply knows where to find the library. This is 
GOOD. If the libraries are NOT encoded with the full path then I have to set up 
environment variables such as DYLD_LIBRARY_PATH and/or monkey with launch 
scripts and/or copy the library into the same library as the executable. So for 
development we usually want the path in the library.

I personally use CMake to build HDF5 on OS X. There are some flags in the CMake 
build that help the developer figure out if they should be building the 
libraries with or without the full installation path encoded in the libraries. 
Also if your own project uses CMake then there are CMake infrastructure scripts 
that can help build proper OS X .app bundles with all libraries included and 
"cleaned up" correctly.

So as an OS X developer you should understand all of these issues and take the 
appropriate action for your own build system and environment.

My guess is that when the binaries were posted a flag was simply not set 
correctly and a mistake was made. That's all. I am sure it will be corrected 
soon.

Also, there is a tool called "install_name_tool" that you can use to actually 
_change_ the encoded path to match where the libraries are installed on your 
system. do "man install_name_tool" to see how to use the tool.

If you use CMake to build HDF5 then setting the cmake variable 
HDF5_BUILD_WITH_INSTALL_NAME to ON or OFF will control if the install path is 
encoded in the library.

cd hdf5-1.8.12
mkdir Build
cd Build
cmake -DHDF5_BUILD_WITH_INSTALL_NAME=ON -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_INSTALL_PREFIX=/usr/local/hdf5-1.8.12 -DBUILD_SHARED_LIBS=ON ../
make -j
make install


Hope all this helps you get HDF5 running a bit quicker on your system
Thanks
Mike Jackson

On Feb 22, 2014, at 8:17 PM, Lewis Levin <[email protected]> wrote:

> Would help if install doc was accurate per platform.
> 
> This simple set of instructions worked:
> 
> ./configure --prefix=/usr/local/hdf5 \
>     --enable-shared
> make
> make check
> make install
> make check-install
> 
> And be sure to remind everyone no spaces in directory names.  (The shining 
> achievement of 1984—long file names in the Mac OS—has not caught up to Unix 
> tools shipped by Apple.)
> 
> From: Lewis Levin <[email protected]>
> Date: Saturday, February 22, 2014 at 4:48 PM
> To: "[email protected]" <[email protected]>
> Subject: Re: followed install instructions to the letter results in failure 
> on OS X
> 
> On  July 17, Elena Pourmal writes that thread safe doesn’t work on os x.  How 
> is someone to know this if you fail to document it in the supplied 
> installation instructions.  If you need to include platform specific 
> instructions, then do so.  Please don’t respond, “we’re volunteers; it’s open 
> source.  Please—you fix it. “  You are the maintainers.  You are getting 
> stipends, however inadequate, from the University of Illinois.  Really—it IS 
> your responsibility.
> 
> From: Lewis Levin <[email protected]>
> Date: Saturday, February 22, 2014 at 4:44 PM
> To: "[email protected]" <[email protected]>
> Subject: followed install instructions to the letter results in failure on OS 
> X
> 
> I decided to bite the bullet and just compile instead of expecting you to 
> care enough about your binary distributions to actually test them.  Seemed 
> pretty easy from the instructions.
> 
> Here is what I did:
> 
> ./configure --prefix=/usr/local/hdf5 \
>     --enable-shared \
>     --enable-production \
>     --enable-threadsafe
> make
> make check
> make install
> make check-install
> 
> In addition to the snippets below, I can send the entire output stream, which 
> includes the config info and perhaps hundreds of warnings.  Needless to say, 
> the library was not installed.  The error messages are useless to me.  I have 
> read & write privileges on /usr/local so that does not appear to be the 
> problem.   Perhaps you can figure it out.
> 
> After many checks and lots of warnings the build errored out.  Wish you guys 
> would ship stuff that actually worked with documentation that was accurate.   
> 
> Here are the error snippets:
> 
> 
> ~~ lots of messages… …then
> 
> 
> 16 warnings and 2 errors generated.
> make[2]: *** [H5TS.lo] Error 1
> make[1]: *** [all] Error 2
> make: *** [all-recursive] Error 1
> 
> ~~ lots of messages… …then
> 16 warnings and 2 errors generated.
> make[1]: *** [H5TS.lo] Error 1
> make: *** [check-recursive] Error 1
> 
> ~~ lots of messages… …then
> 
> 
> make[3]: *** No rule to make target `/usr/local/hdf5/bin/h5cc', needed by 
> `h5_write'.  Stop.
> test -z "h5_write h5_read h5_extend_write h5_chunk_read h5_compound 
> h5_crtgrpd h5_subset h5_cmprss h5_rdwt h5_crtgrpar h5_extend h5_crtatt 
> h5_crtgrp h5_crtdat h5_group h5_select h5_attribute h5_mount h5_reference 
> h5_drivers h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg " || rm -f 
> h5_write h5_read h5_extend_write h5_chunk_read h5_compound h5_crtgrpd 
> h5_subset h5_cmprss h5_rdwt h5_crtgrpar h5_extend h5_crtatt h5_crtgrp 
> h5_crtdat h5_group h5_select h5_attribute h5_mount h5_reference h5_drivers 
> h5_ref2reg h5_extlink h5_elink_unix2win h5_shared_mesg 
> rm -rf .libs _libs
> test -z "*.raw *.meta *.o" || rm -f *.raw *.meta *.o
> rm -f *.lo
> rm -f -rf *.chkexe *.chklog *.clog red blue u2w *.h5
> make[3]: *** No rule to make target `/usr/local/hdf5/bin/h5cc', needed by 
> `h5_write'.  Stop.
> make[2]: *** [installcheck-local] Error 2
> make[1]: *** [installcheck-local] Error 1
> make: *** [installcheck-recursive] Error 1
> 
> This is the config output from the process:
> 
>             SUMMARY OF THE HDF5 CONFIGURATION
>             =================================
> 
> General Information:
> -------------------
>                    HDF5 Version: 1.8.12
>                   Configured on: Sat Feb 22 16:23:25 PST 2014
>                   Configured by: [email protected]
>                  Configure mode: production
>                     Host system: i386-apple-darwin13.0.2
>               Uname information: Darwin Lewiss-MacBook-Pro.local 13.0.2 
> Darwin Kernel Version 13.0.2: Sun Sep 29 19:38:57 PDT 2013; 
> root:xnu-2422.75.4~1/RELEASE_X86_64 x86_64
>                        Byte sex: little-endian
>                       Libraries: static, shared
>              Installation point: /usr/local/hdf5
> 
> Compiling Options:
> ------------------
>                Compilation Mode: production
>                      C Compiler: /usr/bin/clang ( Apple LLVM version 5.0 )
>                          CFLAGS: 
>                       H5_CFLAGS:  
>                       AM_CFLAGS: 
>                        CPPFLAGS: 
>                     H5_CPPFLAGS:   -DNDEBUG -UH5_DEBUG_API
>                     AM_CPPFLAGS: 
>                Shared C Library: yes
>                Static C Library: yes
>   Statically Linked Executables: no
>                         LDFLAGS: 
>                      H5_LDFLAGS: 
>                      AM_LDFLAGS: 
>                 Extra libraries:  -lz -ldl -lm 
>                        Archiver: ar
>                          Ranlib: ranlib
>               Debugged Packages: 
>                     API Tracing: no
> 
> Languages:
> ----------
>                         Fortran: no
> 
>                             C++: no
> 
> Features:
> ---------
>                   Parallel HDF5: no
>              High Level library: yes
>                    Threadsafety: yes
>             Default API Mapping: v18
>  With Deprecated Public Symbols: yes
>          I/O filters (external): deflate(zlib)
>          I/O filters (internal): shuffle,fletcher32,nbit,scaleoffset
>                             MPE: no
>                      Direct VFD: no
>                         dmalloc: no
> Clear file buffers before write: yes
>            Using memory checker: no
>          Function Stack Tracing: no
>                            GPFS: no
>       Strict File Format Checks: no
>    Optimization Instrumentation: no
>        Large File Support (LFS): yes
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://mail.lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org

Reply via email to