Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Create a release of HDF5 REST VOL

# Trigger when release tags of style "vX.X.X" are pushed, but not when pre-release tags of style "vX.X.X(-)rc" are pushed
on:
push:
tags:
- 'v*'
- '!v*rc*'

permissions:
contents: write

jobs:
package:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v3

- name: Extract version number
id: get_version
# Skip leading "v"
run: echo "version=${GITHUB_REF_NAME:1}" >> $GITHUB_OUTPUT

- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build

- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: |
cmake -D HDF5_VOL_REST_NO_PACKAGES=OFF -D HDF5_VOL_REST_PACKAGE_SOURCE=1 $GITHUB_WORKSPACE
make package_source

- name: Create Release
id: create_release
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
with:
tag_name: "${{ github.ref }}"
name: "HDF5 REST VOL ${{ steps.get_version.outputs.version }}"
body_path: docs/CHANGELOG.md
draft: true
prerelease: false
files: |
${{github.workspace}}/build/hdf5_vol_rest-${{ steps.get_version.outputs.version }}.tar.gz
241 changes: 31 additions & 210 deletions CMakeInstallation.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -230,220 +230,41 @@ endif ()
# Set the cpack variables
#-----------------------------------------------------------------------------
if (NOT HDF5_VOL_REST_NO_PACKAGES)
set (CPACK_PACKAGE_VENDOR "HDF_Group")
set (CPACK_PACKAGE_NAME "${HDF5_VOL_REST_PACKAGE_NAME}")
if (CDASH_LOCAL)
set (CPACK_PACKAGE_VERSION "${HDF5_VOL_REST_PACKAGE_VERSION}")
else ()
set (CPACK_PACKAGE_VERSION "${HDF5_VOL_REST_PACKAGE_VERSION_STRING}")
endif ()
set (CPACK_PACKAGE_DESCRIPTION_FILE ${HDF5_VOL_REST_SOURCE_DIR}/README.md)
set (CPACK_RESOURCE_FILE_LICENSE ${HDF5_VOL_REST_SOURCE_DIR}/COPYING)
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "HDF5 VOL connector for the HDF REST API")
set (CPACK_PACKAGE_VENDOR "The HDF Group")
set (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_VOL_REST_PACKAGE_VERSION_MAJOR}")
set (CPACK_PACKAGE_VERSION_MINOR "${HDF5_VOL_REST_PACKAGE_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "")
if (EXISTS "${HDF5_VOL_REST_SOURCE_DIR}/release_docs")
set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/RELEASE.txt")
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/COPYING")
set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/RELEASE.txt")
endif ()
set (CPACK_PACKAGE_RELOCATABLE TRUE)
if (OVERRIDE_INSTALL_VERSION)
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${OVERRIDE_INSTALL_VERSION}")
else (OVERRIDE_INSTALL_VERSION)
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}")
endif ()
set (CPACK_PACKAGE_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}/hdf.bmp")

set (CPACK_GENERATOR "TGZ")
if (WIN32)
set (CPACK_GENERATOR "ZIP")

if (NSIS_EXECUTABLE)
list (APPEND CPACK_GENERATOR "NSIS")
endif ()
# Installers for 32- vs. 64-bit CMake:
# - Root install directory (displayed to end user at installer-run time)
# - "NSIS package/display name" (text used in the installer GUI)
# - Registry key used to store info about the installation
set (CPACK_NSIS_PACKAGE_NAME "${HDF5_VOL_REST_PACKAGE_STRING}")
if (CMAKE_CL_64)
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION} (Win64)")
else ()
set (CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
endif ()
# set the install/uninstall icon used for the installer itself
# There is a bug in NSI that does not handle full unix paths properly.
set (CPACK_NSIS_MUI_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}\\\\hdf.ico")
set (CPACK_NSIS_MUI_UNIICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}\\\\hdf.ico")
# set the package header icon for MUI
set (CPACK_PACKAGE_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}\\\\hdf.bmp")
set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
if (OVERRIDE_INSTALL_VERSION)
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${OVERRIDE_INSTALL_VERSION}")
else ()
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${CPACK_PACKAGE_VERSION}")
endif ()
set (CPACK_NSIS_CONTACT "${HDF5_VOL_REST_PACKAGE_BUGREPORT}")
set (CPACK_NSIS_MODIFY_PATH ON)

if (WIX_EXECUTABLE)
list (APPEND CPACK_GENERATOR "WIX")
endif ()
#WiX variables
set (CPACK_WIX_UNINSTALL "1")
# .. variable:: CPACK_WIX_LICENSE_RTF
# RTF License File
#
# If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is.
#
# If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly
# converted to RTF by the WiX Generator.
# The expected encoding of the .txt file is UTF-8.
#
# With CPACK_WIX_LICENSE_RTF you can override the license file used by the
# WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported
# format or the .txt -> .rtf conversion does not work as expected.
set (CPACK_RESOURCE_FILE_LICENSE "${HDF5_VOL_REST_BINARY_DIR}/COPYING.txt")
# .. variable:: CPACK_WIX_PRODUCT_ICON
# The Icon shown next to the program name in Add/Remove programs.
set(CPACK_WIX_PRODUCT_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}\\\\hdf.ico")
#
# .. variable:: CPACK_WIX_UI_BANNER
#
# The bitmap will appear at the top of all installer pages other than the
# welcome and completion dialogs.
#
# If set, this image will replace the default banner image.
#
# This image must be 493 by 58 pixels.
#
# .. variable:: CPACK_WIX_UI_DIALOG
#
# Background bitmap used on the welcome and completion dialogs.
#
# If this variable is set, the installer will replace the default dialog
# image.
#
# This image must be 493 by 312 pixels.
#
set(CPACK_WIX_PROPERTY_ARPCOMMENTS "HDF5 (Hierarchical Data Format 5) REST VOL connector")
set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${HDF5_VOL_REST_PACKAGE_URL}")
set(CPACK_WIX_PROPERTY_ARPHELPLINK "${HDF5_VOL_REST_PACKAGE_BUGREPORT}")
elseif (APPLE)
list (APPEND CPACK_GENERATOR "DragNDrop")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
set (CPACK_PACKAGE_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}/hdf.icns")

option (HDF5_VOL_REST_PACK_MACOSX_FRAMEWORK "Package the REST VOL Library in a Frameworks" OFF)
if (HDF5_VOL_REST_PACK_MACOSX_FRAMEWORK AND HDF5_VOL_REST_BUILD_FRAMEWORKS)
set (CPACK_BUNDLE_NAME "${HDF5_VOL_REST_PACKAGE_STRING}")
set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in /
set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/")
set (CPACK_BUNDLE_ICON "${HDF5_VOL_REST_RESOURCES_EXT_DIR}/hdf.icns")
set (CPACK_BUNDLE_PLIST "${HDF5_VOL_REST_BINARY_DIR}/CMakeFiles/Info.plist")
set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}")
#-----------------------------------------------------------------------------
# Configure the Info.plist file for the install bundle
#-----------------------------------------------------------------------------
configure_file (
${HDF5_VOL_REST_RESOURCES_DIR}/CPack.Info.plist.in
${HDF5_VOL_REST_BINARY_DIR}/CMakeFiles/Info.plist @ONLY
)
configure_file (
${HDF5_VOL_REST_RESOURCES_DIR}/PkgInfo.in
${HDF5_VOL_REST_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY
)
configure_file (
${HDF5_VOL_REST_RESOURCES_DIR}/version.plist.in
${HDF5_VOL_REST_BINARY_DIR}/CMakeFiles/version.plist @ONLY
)
install (
FILES ${HDF5_VOL_REST_BINARY_DIR}/CMakeFiles/PkgInfo
DESTINATION ..
)
endif ()
else ()
list (APPEND CPACK_GENERATOR "STGZ")
set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}")
set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)

set (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
set (CPACK_DEBIAN_PACKAGE_MAINTAINER "${HDF5_VOL_REST_PACKAGE_BUGREPORT}")

set (CPACK_RPM_PACKAGE_RELEASE "1")
set (CPACK_RPM_COMPONENT_INSTALL ON)
set (CPACK_RPM_PACKAGE_RELOCATABLE ON)
set (CPACK_RPM_PACKAGE_LICENSE "BSD-style")
set (CPACK_RPM_PACKAGE_GROUP "Development/Libraries")
set (CPACK_RPM_PACKAGE_URL "${HDF5_VOL_REST_PACKAGE_URL}")
set (CPACK_RPM_PACKAGE_SUMMARY "The HDF5 REST VOL connector is a plugin designed to allow access to ...")
set (CPACK_RPM_PACKAGE_DESCRIPTION
"The HDF5 REST VOL connector..."
)

#-----------------------------------------------------------------------------
# Configure the spec file for the install RPM
#-----------------------------------------------------------------------------
# configure_file ("${HDF5_VOL_REST_RESOURCES_DIR}/hdf5.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_VOL_REST_PACKAGE_NAME}.spec" @ONLY IMMEDIATE)
# set (CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_VOL_REST_PACKAGE_NAME}.spec")
endif ()

# By default, do not warn when built on machines using only VS Express:
if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
endif ()
include (InstallRequiredSystemLibraries)

set (CPACK_INSTALL_CMAKE_PROJECTS "${HDF5_VOL_REST_BINARY_DIR};REST VOL;ALL;/")

include (CPack)

cpack_add_install_type(Full DISPLAY_NAME "Everything")
cpack_add_install_type(Developer)

cpack_add_component_group(Runtime)

cpack_add_component_group(Documents
EXPANDED
DESCRIPTION "Release notes for developing HDF5 applications"
)

cpack_add_component_group(Development
EXPANDED
DESCRIPTION "All of the tools you'll need to develop HDF5 applications"
)

cpack_add_component_group(Applications
EXPANDED
DESCRIPTION "Tools for HDF5 files"
set (CPACK_SOURCE_PACKAGE_FILE_NAME ${HDF5_VOL_REST_PACKAGE}-${HDF5_VOL_REST_PACKAGE_VERSION_STRING})
set (CPACK_SOURCE_IGNORE_FILES
# Files specific to version control
"/\\\\.git/"
"/\\\\.git$"
"/\\\\.gitattributes$"
"/\\\\.github/"
"/\\\\.gitignore$"
"/\\\\.gitmodules$"

# IDE files
"/\\\\.vscode/"
"/\\\\.settings/"
"/\\\\.autotools$"
"/\\\\.autotools$"
"/\\\\.project$"
"/\\\\.cproject$"

# Build
"/build/"

# Temporary files
"\\\\.swp$"
"\\\\.#"
"/#"
"~$"
)

#---------------------------------------------------------------------------
# Now list the cpack commands
#---------------------------------------------------------------------------
cpack_add_component (libraries
DISPLAY_NAME "HDF5 REST VOL Libraries"
GROUP Runtime
INSTALL_TYPES Full Developer User
)
cpack_add_component (headers
DISPLAY_NAME "HDF5 REST VOL Headers"
DEPENDS libraries
GROUP Development
INSTALL_TYPES Full Developer
)
cpack_add_component (hdfdocuments
DISPLAY_NAME "HDF5 REST VOL Documents"
GROUP Documents
INSTALL_TYPES Full Developer
)
cpack_add_component (configinstall
DISPLAY_NAME "HDF5 REST VOL CMake files"
HIDDEN
DEPENDS libraries
GROUP Development
INSTALL_TYPES Full Developer User
)
include (CPack)
endif ()
55 changes: 28 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,43 +102,44 @@ set (HDF5_HL_DIR_NAME "hl")
#-----------------------------------------------------------------------------
# Find HDF5, cURL and YAJL before building
#-----------------------------------------------------------------------------
if (HDF5_FOUND STREQUAL "")
set (HDF5_FOUND FALSE)
endif()
if (NOT HDF5_VOL_REST_PACKAGE_SOURCE)
if (HDF5_FOUND STREQUAL "")
set (HDF5_FOUND FALSE)
endif()

find_package(HDF5 MODULE COMPONENTS C HL)
find_package(HDF5 MODULE COMPONENTS C HL)

if (NOT HDF5_FOUND)
message(SEND_ERROR "HDF5 not found!")
endif()
if (NOT HDF5_FOUND)
message(SEND_ERROR "HDF5 not found!")
endif()

if (HDF5_ENABLE_THREADSAFE AND NOT Threads_FOUND)
find_package(Threads)
endif ()
if (HDF5_ENABLE_THREADSAFE AND NOT Threads_FOUND)
find_package(Threads)
endif ()

set (CURL_TARGET_LIBTYPE shared)
set (CURL_TARGET_LIBTYPE shared)

find_package (CURL 7.61 MODULE REQUIRED)
find_package (CURL 7.61 MODULE REQUIRED)

if (CURL_FOUND)
include_directories(${CURL_INCLUDE_DIRS})
set (LINK_LIBS ${LINK_LIBS} CURL::libcurl)
else ()
message (FATAL_ERROR "cURL not found; please check CURL_ROOT")
endif ()
if (CURL_FOUND)
include_directories(${CURL_INCLUDE_DIRS})
set (LINK_LIBS ${LINK_LIBS} CURL::libcurl)
else ()
message (FATAL_ERROR "cURL not found; please check CURL_ROOT")
endif ()

# Include custom module for finding YAJL
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${HDF5_VOL_REST_RESOURCES_MOD_DIR}")
# Include custom module for finding YAJL
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${HDF5_VOL_REST_RESOURCES_MOD_DIR}")

find_package (YAJL 2.0.4 REQUIRED)
if (YAJL_FOUND)
include_directories(${YAJL_INCLUDE_DIRS})
set (LINK_LIBS ${LINK_LIBS} yajl)
else ()
message (FATAL_ERROR "YAJL not found; please check YAJL_INCLUDE_DIR")
find_package (YAJL 2.0.4 REQUIRED)
if (YAJL_FOUND)
include_directories(${YAJL_INCLUDE_DIRS})
set (LINK_LIBS ${LINK_LIBS} yajl)
else ()
message (FATAL_ERROR "YAJL not found; please check YAJL_INCLUDE_DIR")
endif ()
endif ()


#-----------------------------------------------------------------------------
# Setup the RPATH for the installed executables
#-----------------------------------------------------------------------------
Expand Down
10 changes: 10 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Summary

0.1.0 release of HDF5 REST VOL connector.

## New features

## Bug fixes

## :warning: Known Issues

Loading