Contents

1 Motivation

Rhdf5lib provides versions of the C and C++ HDF5 libraries. It is primarily useful to developers of other R packages who want to make use of the capabilities of the HDF5 library directly in the C or C++ code of their own packages, rather than using a higher level interface such as the rhdf5 package. Using Rhdf5lib makes life easier for users, as they do not have to worry about installing libraries at a system level, and for developers since they can work with a defined version of the library rather than developing strategies to cope with the potential for multiple versions.

Rhdf5lib is very much inspired by the zlibbioc and Rhtslib packages.

2 Usage

There is an example package, usingRhdf5lib, that demonstrates how packages should link to Rhdf5lib.

2.2 Locating the library headers

In order for the C/C++ compiler to find the HDF5 headers during package installation, add Rhdf5lib to the LinkingTo field of the DESCRIPTION file of your package, e.g.

LinkingTo: Rhdf5lib

In you C or C++ code files, you can then use the standard include techniques, e.g., #include "hdf5.h" or #include "H5Cpp.h". You can inspect the header files manually to check their names and declared functions. To find their location on your system you can use the following code:

system.file(package="Rhdf5lib", "include")
## [1] "/private/var/folders/r0/l4fjk6cj5xj0j3brt4bplpl40000gt/T/RtmpK3dUZK/Rinst9f4464d1957c/Rhdf5lib/include"

3 Configuration arguments for non-standard system setups

3.1 Non-standard ZLIB location

Rhdf5lib requires the ZLIB compression library to be installed on non-Windows platforms. If installation fails with a message reporting that zlib.h can not be found, it is possible to provide the appropriate path explicitly during installation via the configure.args argument e.g. 

BiocManager::install('Rhdf5lib', configure.args = "--with-zlib='/path/to/zlib/'")

Here /path/to/zlib should be the directory that contains both include/zlib.h and lib/libz.a. For example, on a typical Ubuntu installation this may be /usr/ while for libraries installed via miniconda this location could be /home/<USER>/miniconda3/.

3.3 Disabling setting rpath

If you encounter problems checking whether to use -Wl,-rpath to “link shared libs in nondefault directories” you can disable the test by passing the option "--disable-sharedlib-rath" to the configuration script.

BiocManager::install('Rhdf5lib', configure.args = "--disable-sharedlib-rath")

4 Funding

MLS was supported by the BMBF-funded Heidelberg Center for Human Bioinformatics (HD-HuB) within the German Network for Bioinformatics Infrastructure (de.NBI), Grant Number #031A537B

Session info

## R version 4.4.0 alpha (2024-03-27 r86216)
## Platform: aarch64-apple-darwin20
## Running under: macOS Ventura 13.6.5
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: America/New_York
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] BiocStyle_2.32.0
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.35       R6_2.5.1            bookdown_0.38      
##  [4] fastmap_1.1.1       xfun_0.43           cachem_1.0.8       
##  [7] knitr_1.45          htmltools_0.5.8     rmarkdown_2.26     
## [10] lifecycle_1.0.4     cli_3.6.2           sass_0.4.9         
## [13] jquerylib_0.1.4     compiler_4.4.0      tools_4.4.0        
## [16] evaluate_0.23       bslib_0.6.2         yaml_2.3.8         
## [19] BiocManager_1.30.22 jsonlite_1.8.8      rlang_1.1.3