Commit 8fdf2ee8 authored by Jan Kotanski's avatar Jan Kotanski
Browse files

New upstream version 0.0.9

parent 2592240b
cmake_minimum_required(VERSION 3.0.0)
project(h5cpp
LANGUAGES CXX C
VERSION 0.0.8
VERSION 0.0.9
)
#=============================================================================
......@@ -61,6 +61,12 @@ add_custom_target(html)
add_subdirectory(src)
add_subdirectory(doc)
#=============================================================================
# install the examples directory to the documentation directory
#=============================================================================
install(DIRECTORY examples
DESTINATION ${CMAKE_INSTALL_DOCDIR})
#=============================================================================
# unit tests if GTest if present
#=============================================================================
......
......@@ -5,38 +5,38 @@ images = [
'centos7-release': [
'name': 'essdmscdm/centos7-build-node:3.0.0',
'cmake': 'CC=/usr/lib64/mpich-3.2/bin/mpicc CXX=/usr/lib64/mpich-3.2/bin/mpicxx cmake3',
'sh': '/usr/bin/scl enable rh-python35 devtoolset-6 -- /bin/bash',
'sh': '/usr/bin/scl enable rh-python35 devtoolset-6 -- /bin/bash -e',
'cmake_flags': '-DCOV=1 -DWITH_MPI=1 -DCONAN_FILE=conanfile_ess_mpi.txt -DCMAKE_BUILD_TYPE=Release'
],
'debian9-release': [
'name': 'essdmscdm/debian9-build-node:2.0.0',
'cmake': 'cmake',
'sh': 'sh',
'sh': 'bash -e',
'cmake_flags': '-DCMAKE_BUILD_TYPE=Release'
],
'ubuntu1804-release': [
'name': 'essdmscdm/ubuntu18.04-build-node:1.1.0',
'cmake': 'cmake',
'sh': 'sh',
'sh': 'bash -e',
'cmake_flags': '-DCMAKE_BUILD_TYPE=Release'
],
'centos7-debug': [
'name': 'essdmscdm/centos7-build-node:3.0.0',
'cmake': 'CC=/usr/lib64/mpich-3.2/bin/mpicc CXX=/usr/lib64/mpich-3.2/bin/mpicxx cmake3',
'sh': '/usr/bin/scl enable rh-python35 devtoolset-6 -- /bin/bash',
'sh': '/usr/bin/scl enable rh-python35 devtoolset-6 -- /bin/bash -e',
'cmake_flags': '-DWITH_MPI=1 -DCONAN_FILE=conanfile_ess_mpi.txt -DCMAKE_BUILD_TYPE=Debug'
],
'debian9-debug': [
'name': 'essdmscdm/debian9-build-node:2.0.0',
'cmake': 'cmake',
'sh': 'sh',
'sh': 'bash -e',
'cmake_flags': '-DCMAKE_BUILD_TYPE=Debug'
],
'ubuntu1804-debug': [
'name': 'essdmscdm/ubuntu18.04-build-node:1.1.0',
'cmake': 'cmake',
'sh': 'sh',
'sh': 'bash -e',
'cmake_flags': '-DCMAKE_BUILD_TYPE=Debug'
]
]
......@@ -49,7 +49,7 @@ def failure_function(exception_obj, failureMessage) {
recipientProviders: toEmails,
subject: '${DEFAULT_SUBJECT}'
slackSend color: 'danger',
message: "@afonso.mukai ${project}-${env.BRANCH_NAME}: " + failureMessage
message: "${project}-${env.BRANCH_NAME}: " + failureMessage
throw exception_obj
}
......@@ -245,13 +245,6 @@ def get_win10_pipeline()
}
dir("_build") {
try {
bat 'C:\\Users\\dmgroup\\AppData\\Local\\Programs\\Python\\Python36\\Scripts\\conan.exe remote add desy-packages https://api.bintray.com/conan/eugenwintersberger/desy-packages'
bat 'C:\\Users\\dmgroup\\AppData\\Local\\Programs\\Python\\Python36\\Scripts\\conan.exe install --build=outdated -s compiler="Visual Studio" -s compiler.version=14 ..\\conanfile_default.txt'
} catch (e) {
failure_function(e, 'Windows10 / getting dependencies failed')
}
try {
bat 'cmake -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 14 2015 Win64" ..'
} catch (e) {
......@@ -260,9 +253,10 @@ def get_win10_pipeline()
try {
bat "cmake --build . --config Release --target unit_tests"
bat "bin\\unit_tests.exe"
bat """call activate_run.bat
.\\bin\\Release\\unit_tests.exe
"""
} catch (e) {
junit 'test/unit_tests_run.xml'
failure_function(e, 'Windows10 / build+test failed')
}
......@@ -289,8 +283,8 @@ node('docker') {
}
builders['macOS-release'] = get_macos_pipeline('Release')
builders['macOS-debug'] = get_macos_pipeline('Debug')
// builders['Windows10'] = get_win10_pipeline()
builders['Windows10'] = get_win10_pipeline()
parallel builders
// Delete workspace when build is done
......
# C++ wrapper for the HDF5 C-library
[![docs](https://img.shields.io/badge/Documentation-webpages-ADD8E6.svg)](https://ess-dmsc.github.io/h5cpp/index.html) [![DOI](https://zenodo.org/badge/99373936.svg)](https://zenodo.org/badge/latestdoi/99373936)
*h5cpp* is a new C++ wrapper for HDF5s C-API.
## Motivation
......@@ -52,11 +55,24 @@ for the library, using it should be the same on each of these platforms.
The minimum requirements for building the library are:
* a C++ compiler, gcc>=4.8 should do well
* a C++ compiler, gcc>=4.8.1 should do well
* the boost libraries
* the HDF5 C library (>=1.8.13 would do but >=1.10.0 is prefered)
* cmake >= 3.0
The external library dependencies can be acquired and built using [Conan](https://conan.io/). Conan can be installed with PyPI:
```
pip install conan
```
Then run the following to configure required Conan repositories:
```
conan remote add ess-dmsc https://api.bintray.com/conan/ess-dmsc/conan
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
```
and that's it, CMake will handle the rest!
Alternatively you can manually install the dependencies to typical system locations. In this case please disable Conan by using the `-DCONAN=DISABLE` option when you run CMake.
Building the library is standard cmake & make fare, out of source. For example,
in linux shell, you would do the following:
......@@ -125,7 +141,7 @@ cmake -DCMAKE_INSTALL_PREFIX=/home/user1/some/path ..
```
and accordingly, when building the client program:
```bash
cmake -Dh5cpp_DIR=/home/user1/some/path/lib/cmake/h5cpp-0.0.8 path/to/your/source
cmake -Dh5cpp_DIR=/home/user1/some/path/lib/cmake/h5cpp-0.0.9 path/to/your/source
```
where version number may vary.
......
[requires]
cmake_findboost_modular/1.66.0@bincrafters/stable
boost_filesystem/1.66.0@bincrafters/stable
boost_system/1.66.0@bincrafters/stable
cmake_findboost_modular/1.65.1@bincrafters/stable
boost_filesystem/1.65.1@bincrafters/stable
boost_system/1.65.1@bincrafters/stable
hdf5/1.10.2-dm2@ess-dmsc/stable
gtest/3121b20-dm3@ess-dmsc/stable
[generators]
cmake
virtualbuildenv
virtualrunenv
[options]
boost_filesystem:shared=True
......
[requires]
cmake_findboost_modular/1.66.0@bincrafters/stable
boost_filesystem/1.66.0@bincrafters/stable
cmake_findboost_modular/1.65.1@bincrafters/stable
boost_filesystem/1.65.1@bincrafters/stable
hdf5/1.10.2-dm2@ess-dmsc/stable
gtest/3121b20-dm3@ess-dmsc/stable
[generators]
cmake
virtualbuildenv
virtualrunenv
[options]
boost_filesystem:shared=True
boost_system:shared=True
hdf5:shared=True
hdf5:cxx=False
hdf5:parallel=True
......
......@@ -22,20 +22,36 @@ add_dependencies(html api_doc)
# Build the users guide using sphinx
#=============================================================================
add_subdirectory(source)
#=============================================================================
# C API coverage generates RST
#=============================================================================
if(NOT WIN32)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/capi_coverage)
add_custom_target(
capi_coverage
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/capi_coverage/tally.sh
${CMAKE_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}/source/capi
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/capi_coverage
)
endif(NOT WIN32)
add_custom_command(OUTPUT sphinx.stamp
COMMAND sphinx-build -bhtml source build
COMMAND echo "timestamp" > sphinx.stamp
DEPENDS ${CMAKE_SPHINX_SOURCES} doxygen.stamp
DEPENDS ${CMAKE_SPHINX_SOURCES} doxygen.stamp capi_coverage
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc
)
add_custom_target(users_guide DEPENDS sphinx.stamp api_doc)
add_dependencies(html users_guide)
#==============================================================================
# need to remove some additional files after building the documentation
#==============================================================================
set(CLEANFILES doxygen.stamp sphinx.stamp html latex build)
set_directory_properties(PROPERTIES
ADDITIONAL_MAKE_CLEAN_FILES ${CLEANFILES})
H5allocate_memory
H5check_version
H5close
H5dont_atexit
H5free_memory
H5garbage_collect
H5get_libversion
H5is_library_threadsafe
H5open
H5resize_memory
H5set_free_list_limits
H5_VERSION_GE
H5_VERSION_LE
\ No newline at end of file
H5Aclose
H5Acreate
H5Acreate2
H5Acreate_by_name
H5Adelete
H5Adelete_by_name
H5Adelete_by_idx
H5Aexists
H5Aexists_by_name
H5Aget_create_plist
H5Aget_info
H5Aget_info_by_idx
H5Aget_info_by_name
H5Aget_name
H5Aget_name_by_idx
H5Aget_space
H5Aget_storage_size
H5Aget_type
H5Aiterate
H5Aiterate2
H5Aiterate_by_name
H5Aopen
H5Aopen_by_idx
H5Aopen_by_name
H5Aread
H5Arename
H5Arename_by_name
H5Awrite
\ No newline at end of file
H5Dclose
H5Dcreate
H5Dcreate2
H5Dcreate_anon
H5Dfill
H5Dflush
H5Dgather
H5Dget_access_plist
H5Dget_create_plist
H5Dget_offset
H5Dget_space
H5Dget_space_status
H5Dget_storage_size
H5Dget_type
H5Diterate
H5Dopen
H5Dopen2
H5Dread
H5Drefresh
H5Dscatter
H5Dset_extent
H5Dvlen_get_buf_size
H5Dvlen_reclaim
H5Dwrite
\ No newline at end of file
H5Eauto_is_v2
H5Eclear
H5Eclear2
H5Eclose_msg
H5Eclose_stack
H5Ecreate_msg
H5Ecreate_stack
H5Eget_auto
H5Eget_auto2
H5Eget_class_name
H5Eget_current_stack
H5Eget_msg
H5Eget_num
H5Epop
H5Eprint
H5Eprint2
H5Epush
H5Epush2
H5Eregister_class
H5Eset_auto
H5Eset_auto2
H5Eset_current_stack
H5Eunregister_class
H5Ewalk
H5Ewalk2
\ No newline at end of file
H5Fclear_elink_file_cache
H5Fclose
H5Fcreate
H5Fflush
H5Fget_access_plist
H5Fget_create_plist
H5Fget_file_image
H5Fget_filesize
H5Fget_free_sections
H5Fget_freespace
H5Fget_info
H5Fget_info2
H5Fget_intent
H5Fget_mdc_config
H5Fget_mdc_hit_rate
H5Fget_mdc_image_info
H5Fget_mdc_logging_status
H5Fget_mdc_size
H5Fget_metadata_read_retry_info
H5Fget_mpi_atomicity
H5Fget_name
H5Fget_obj_count
H5Fget_obj_ids
H5Fget_page_buffering_stats
H5Fget_vfd_handle
H5Fis_hdf5
H5Fmount
H5Fopen
H5Freopen
H5Freset_mdc_hit_rate_stats
H5Freset_page_buffering_stats
H5Fset_mdc_config
H5Fset_mpi_atomicity
H5Fstart_swmr_write
H5Fstart_mdc_logging
H5Fstop_mdc_logging
H5Funmount
\ No newline at end of file
H5Gclose
H5Gcreate
H5Gcreate2
H5Gcreate_anon
H5Gflush
H5Gget_create_plist
H5Gget_info
H5Gget_info_by_idx
H5Gget_info_by_name
H5Gopen
H5Gopen2
H5Grefresh
\ No newline at end of file
H5Iclear_type
H5Idec_ref
H5Idec_type_ref
H5Idestroy_type
H5Iget_file_id
H5Iget_name
H5Iget_ref
H5Iget_type
H5Iget_type_ref
H5Iinc_ref
H5Iinc_type_ref
H5Iis_valid
H5Inmembers
H5Iobject_verify
H5Iregister
H5Iregister_type
H5Iremove_verify
H5Isearch
H5Itype_exists
\ No newline at end of file
H5Lcopy
H5Lcreate_external
H5Lcreate_hard
H5Lcreate_soft
H5Lcreate_ud
H5Ldelete
H5Ldelete_by_idx
H5Lexists
H5Lget_info
H5Lget_info_by_idx
H5Lget_name_by_idx
H5Lget_val
H5Lget_val_by_idx
H5Lis_registered
H5Literate
H5Literate_by_name
H5Lmove
H5Lregister
H5Lunpack_elink_val
H5Lunregister
H5Lvisit
H5Lvisit_by_name
\ No newline at end of file
H5O_mcdt_search_cb_t
H5Oare_mdc_flushes_disabled
H5Oclose
H5Ocopy
H5Odecr_refcount
H5Odisable_mdc_flushes
H5Oenable_mdc_flushes
H5Oexists_by_name
H5Oflush
H5Oget_comment
H5Oget_comment_by_name
H5Oget_info
H5Oget_info_by_idx
H5Oget_info_by_name
H5Oincr_refcount
H5Olink
H5Oopen
H5Oopen_by_addr
H5Oopen_by_idx
H5Orefresh
H5Ovisit
H5Ovisit_by_name
\ No newline at end of file
H5Padd_merge_committed_dtype_path
H5Pall_filters_avail
H5Pclose
H5Pclose_class
H5Pcopy
H5Pcopy_prop
H5Pcreate
H5Pcreate_class
H5Pdecode
H5Pencode
H5Pequal
H5Pexist
H5Pfill_value_defined
H5Pfree_merge_committed_dtype_paths
H5Pget
H5Pget_alignment
H5Pget_all_coll_metadata_ops
H5Pget_alloc_time
H5Pget_append_flush
H5Pget_attr_creation_order
H5Pget_attr_phase_change
H5Pget_btree_ratios
H5Pget_buffer
H5Pget_cache
H5Pget_char_encoding
H5Pget_chunk
H5Pget_chunk_cache
H5Pget_chunk_opts
H5Pget_class
H5Pget_class_name
H5Pget_class_parent
H5Pget_coll_metadata_write
H5Pget_copy_object
H5Pget_core_write_tracking
H5Pget_create_intermediate_group
H5Pget_data_transform
H5Pget_driver
H5Pget_driver_info
H5Pget_dxpl_mpio ||
H5Pget_edc_check
H5Pget_efile_prefix
H5Pget_elink_acc_flags
H5Pget_elink_cb
H5Pget_elink_fapl
H5Pget_elink_file_cache_size
H5Pget_elink_prefix
H5Pget_est_link_info
H5Pget_external
H5Pget_external_count
H5Pget_evict_on_close
H5Pget_family_offset
H5Pget_fapl_core
H5Pget_fapl_direct
H5Pget_fapl_family
H5Pget_fapl_mpio
H5Pget_fapl_mpiposix
H5Pget_fapl_multi
H5Pget_fclose_degree
H5Pget_file_image
H5Pget_file_image_callbacks
H5Pget_file_space_page_size
H5Pget_file_space_strategy
H5Pget_fill_time
H5Pget_fill_value
H5Pget_filter
H5Pget_filter2
H5Pget_filter_by_id
H5Pget_filter_by_id2
H5Pget_gc_references
H5Pget_hyper_vector_size
H5Pget_istore_k H5Pget_layout
H5Pget_libver_bounds
H5Pget_link_creation_order
H5Pget_link_phase_change
H5Pget_local_heap_size_hint
H5Pget_mcdt_search_cb
H5Pget_mdc_config
H5Pget_mdc_image_config
H5Pget_mdc_log_options
H5Pget_meta_block_size
H5Pget_metadata_read_attempts
H5Pget_mpio_actual_chunk_opt_mode
H5Pget_mpio_actual_io_mode
H5Pget_mpio_no_collective_cause
H5Pget_multi_type
H5Pget_nfilters
H5Pget_nlinks
H5Pget_nprops
H5Pget_page_buffer_size
H5Pget_obj_track_times
H5Pget_object_flush_cb
H5Pget_shared_mesg_index
H5Pget_shared_mesg_nindexes
H5Pget_shared_mesg_phase_change
H5Pget_sieve_buf_size
H5Pget_size
H5Pget_sizes
H5Pget_small_data_block_size
H5Pget_sym_k
H5Pget_type_conv_cb
H5Pget_userblock
H5Pget_version
H5Pget_virtual_count
H5Pget_virtual_dsetname
H5Pget_virtual_filename
H5Pget_virtual_printf_gap
H5Pget_virtual_srcspace
H5Pget_virtual_view
H5Pget_virtual_vspace
H5Pget_vlen_mem_manager
H5Pinsert
H5Pinsert2
H5Pisa_class
H5Piterate
H5Pmodify_filter
H5Pregister
H5Pregister2
H5Premove
H5Premove_filter
H5Pset
H5Pset_alignment
H5Pset_all_coll_metadata_ops
H5Pset_alloc_time
H5Pset_append_flush
H5Pset_attr_creation_order
H5Pset_attr_phase_change
H5Pset_btree_ratios
H5Pset_buffer
H5Pset_cache
H5Pset_char_encoding
H5Pset_chunk
H5Pset_chunk_cache
H5Pset_chunk_opts
H5Pset_coll_metadata_write
H5Pset_copy_object
H5Pset_core_write_tracking
H5Pset_create_intermediate_group
H5Pset_data_transform
H5Pset_deflate
H5Pset_driver
H5Pset_dxpl_mpio
H5Pset_dxpl_mpio_chunk_opt
H5Pset_dxpl_mpio_chunk_opt_num
H5Pset_dxpl_mpio_chunk_opt_ratio
H5Pset_dxpl_mpio_collective_opt
H5Pset_edc_check
H5Pset_efile_prefix
H5Pset_elink_acc_flags
H5Pset_elink_cb
H5Pset_elink_fapl
H5Pset_elink_file_cache_size
H5Pset_elink_prefix
H5Pset_est_link_info
H5Pset_external
H5Pset_evict_on_close
H5Pset_family_offset
H5Pset_fapl_core
H5Pset_fapl_family
H5Pset_fapl_direct
H5Pset_fapl_log
H5Pset_fapl_mpio
H5Pset_fapl_mpiposix
H5Pset_fapl_multi
H5Pset_fapl_sec2
H5Pset_fapl_split
H5Pset_fapl_stdio
H5Pset_fapl_windows
H5Pset_fclose_degree
H5Pset_file_image
H5Pset_file_image_callbacks
H5Pset_file_space_page_size
H5Pset_file_space_strategy
H5Pset_fill_time
H5Pset_fill_value
H5Pset_filter
H5Pset_filter_callback
H5Pset_fletcher32
H5Pset_gc_references
H5Pset_hyper_vector_size
H5Pset_istore_k
H5Pset_layout
H5Pset_libver_bounds
H5Pset_link_creation_order
H5Pset_link_phase_change
H5Pset_local_heap_size_hint
H5Pset_mcdt_search_cb
H5Pset_mdc_config
H5Pset_mdc_image_config
H5Pset_mdc_log_options
H5Pset_meta_block_size
H5Pset_metadata_read_attempts
H5Pset_multi_type
H5Pset_nbit
H5Pset_nlinks
H5Pset_page_buffer_size