Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add abi-complience check and upload to releases #3996

Merged
merged 33 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ce00fe3
Make platform specific test presets for windows and macs
byrnHDF Feb 4, 2024
3c61a78
Enable mac tests
byrnHDF Feb 4, 2024
a2a0672
Add platform test workflows to examples
byrnHDF Feb 4, 2024
6b99628
Add abi workflow to the release process
byrnHDF Feb 5, 2024
743ef6d
Disable java export tests and correct name of mac/win binaries
byrnHDF Feb 5, 2024
58b8c3f
Add abi test to workflow
byrnHDF Feb 5, 2024
3d5888f
Correct workflow depends
byrnHDF Feb 5, 2024
d2d297d
Make file_ref a string
byrnHDF Feb 5, 2024
cf91f6e
Correct inputs reference
byrnHDF Feb 5, 2024
6fe47b3
anoter inputs fix
byrnHDF Feb 5, 2024
4d922ed
Rework/fix snapshot names
byrnHDF Feb 5, 2024
5ec65ee
Want the current binary just created
byrnHDF Feb 5, 2024
98b26aa
Remove incorrect variable
byrnHDF Feb 5, 2024
e939401
Uncompress downloaded file before binary uncompress
byrnHDF Feb 6, 2024
83f298d
Add working dir for download
byrnHDF Feb 6, 2024
6500457
Create needed folder
byrnHDF Feb 6, 2024
e7d0bfb
Add missing path element
byrnHDF Feb 6, 2024
6094af6
Correct binary paths
byrnHDF Feb 6, 2024
c5f373b
Add version argument for abi report list
byrnHDF Feb 6, 2024
0f769d3
add missing path part
byrnHDF Feb 6, 2024
3621db6
Remove extra path element
byrnHDF Feb 6, 2024
1d74ca6
Fix env output vars
byrnHDF Feb 6, 2024
7bc36cf
Revert and add list steps
byrnHDF Feb 6, 2024
f520a7a
Add regex for version string
byrnHDF Feb 6, 2024
d297682
try sed on version
byrnHDF Feb 6, 2024
63e0bdb
correct var name
byrnHDF Feb 6, 2024
b8bf4f8
Try intermediate variable
byrnHDF Feb 6, 2024
70d0c35
Try one
byrnHDF Feb 7, 2024
7901219
Fix sed command
byrnHDF Feb 7, 2024
f99d50d
Add versions to compat report name
byrnHDF Feb 7, 2024
f3867dc
rework names
byrnHDF Feb 7, 2024
9910b41
Reduce extra args
byrnHDF Feb 7, 2024
3d25c02
adjust names
byrnHDF Feb 7, 2024
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
143 changes: 143 additions & 0 deletions .github/workflows/abi-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: hdf5 Check Application Binary Interface (ABI)

on:
workflow_call:
inputs:
use_tag:
description: 'Release version tag'
type: string
required: false
default: snapshot
use_environ:
description: 'Environment to locate files'
type: string
required: true
default: snapshots
file_base:
description: "The common base name of the binary"
required: true
type: string
file_ref:
description: "The reference name for the release binary"
required: true
type: string

permissions:
contents: read

jobs:
check:
runs-on: ubuntu-latest
continue-on-error: true

steps:
- name: Install System dependencies
run: |
sudo apt update
sudo apt install -q -y abi-compliance-checker abi-dumper
sudo apt install -q -y japi-compliance-checker

- name: Convert hdf5 reference name (Linux)
id: convert-hdf5lib-refname
run: |
FILE_DOTS=$(echo "${{ inputs.file_ref }}" | sed -r "s/([0-9]+)\_([0-9]+)\_([0-9]+).*/\1\.\2\.\3/")
echo "HDF5R_DOTS=$FILE_DOTS" >> $GITHUB_OUTPUT

- uses: actions/checkout@v4.1.1

- name: Get published binary (Linux)
if: ${{ (inputs.use_environ == 'snapshots') }}
uses: actions/download-artifact@f44cd7b40bfd40b6aa1cc1b9b5b7bf03d3c67110 # v4.1.0
with:
name: tgz-ubuntu-2204_gcc-binary
path: ${{ github.workspace }}

- name: List files for the space (Linux)
run: |
ls -l ${{ github.workspace }}

- name: Uncompress gh binary (Linux)
run: tar -zxvf ${{ github.workspace }}/${{ inputs.file_base }}-ubuntu-2204_gcc.tar.gz

- name: Uncompress hdf5 binary (Linux)
run: |
cd "${{ github.workspace }}/hdf5"
tar -zxvf ${{ github.workspace }}/hdf5/HDF5-*-Linux.tar.gz --strip-components 1

- name: List files for the HDF space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf5
ls -l ${{ github.workspace }}/hdf5/HDF_Group/HDF5

- name: set hdf5lib name
id: set-hdf5lib-name
run: |
HDF5DIR=${{ github.workspace }}/hdf5/HDF_Group/HDF5/
FILE_NAME_HDF5=$(ls ${{ github.workspace }}/hdf5/HDF_Group/HDF5)
FILE_VERS=$(echo "$FILE_NAME_HDF5" | sed -r "s/([0-9]+\.[0-9]+\.[0-9]+)\..*/\1/")
echo "HDF5_ROOT=$HDF5DIR$FILE_NAME_HDF5" >> $GITHUB_OUTPUT
echo "HDF5_VERS=$FILE_VERS" >> $GITHUB_OUTPUT

- name: Download reference version
run: |
mkdir "${{ github.workspace }}/hdf5R"
cd "${{ github.workspace }}/hdf5R"
wget -q https://github.com/HDFGroup/hdf5/releases/download/hdf5-${{ inputs.file_ref }}/hdf5-${{ inputs.file_ref }}-ubuntu-2204.tar.gz
tar zxf hdf5-${{ inputs.file_ref }}-ubuntu-2204.tar.gz

- name: List files for the space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf5R

- name: Uncompress hdf5 reference binary (Linux)
run: |
cd "${{ github.workspace }}/hdf5R"
tar -zxvf ${{ github.workspace }}/hdf5R/hdf5/HDF5-${{ steps.convert-hdf5lib-refname.outputs.HDF5R_DOTS }}-Linux.tar.gz --strip-components 1

- name: List files for the HDFR space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf5R
ls -l ${{ github.workspace }}/hdf5R/HDF_Group/HDF5

- name: set hdf5lib reference name
id: set-hdf5lib-refname
run: |
HDF5RDIR=${{ github.workspace }}/hdf5R/HDF_Group/HDF5/
FILE_NAME_HDF5R=$(ls ${{ github.workspace }}/hdf5R/HDF_Group/HDF5)
echo "HDF5R_ROOT=$HDF5RDIR$FILE_NAME_HDF5R" >> $GITHUB_OUTPUT
echo "HDF5R_VERS=$FILE_NAME_HDF5R" >> $GITHUB_OUTPUT

- name: List files for the lib spaces (Linux)
run: |
ls -l ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/lib
ls -l ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/lib

- name: Run Java API report
run: |
japi-compliance-checker ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/lib/jarhdf5-${{ steps.convert-hdf5lib-refname.outputs.HDF5R_DOTS }}.jar ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/lib/jarhdf5-${{ steps.set-hdf5lib-name.outputs.HDF5_VERS }}.jar

- name: Run ABI report
run: |
abi-dumper ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/lib/libhdf5.so -o ABI-0.dump -public-headers ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/include
abi-dumper ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/lib/libhdf5.so -o ABI-1.dump -public-headers ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/include
abi-compliance-checker -l ${{ inputs.file_base }} -old ABI-0.dump -new ABI-1.dump
continue-on-error: true

- name: Copy ABI reports
run: |
cp compat_reports/jarhdf5-/${{ steps.set-hdf5lib-refname.outputs.HDF5R_VERS }}_to_${{ steps.set-hdf5lib-name.outputs.HDF5_VERS }}/compat_report.html ${{ inputs.file_base }}-java_compat_report.html
ls -l compat_reports/${{ inputs.file_base }}/X_to_Y
cp compat_reports/${{ inputs.file_base }}/X_to_Y/compat_report.html ${{ inputs.file_base }}-hdf5_compat_report.html

- name: List files for the report spaces (Linux)
run: |
ls -l compat_reports
ls -l *.html

- name: Save output as artifact
uses: actions/upload-artifact@v4
with:
name: abi-reports
path: |
${{ inputs.file_base }}-hdf5_compat_report.html
${{ inputs.file_base }}-java_compat_report.html
4 changes: 2 additions & 2 deletions .github/workflows/cmake-bintest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ jobs:
# MacOS w/ Clang + CMake
#
name: "MacOS Clang Binary Test"
if: false
# if: false
runs-on: macos-13
steps:
- name: Install Dependencies (MacOS)
Expand Down Expand Up @@ -214,6 +214,6 @@ jobs:
HDF5_PLUGIN_PATH: ${{ steps.set-hdf5lib-name.outputs.HDF5_PLUGIN_PATH }}
run: |
cd "${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/share/HDF5Examples"
cmake --workflow --preset=ci-StdShar-Clang --fresh
cmake --workflow --preset=ci-StdShar-OSX-Clang --fresh
shell: bash

4 changes: 2 additions & 2 deletions .github/workflows/cmake-ctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ jobs:
id: run-ctest
run: |
cd "${{ runner.workspace }}/hdf5/hdfsrc"
cmake --workflow --preset=${{ inputs.preset_name }}-Clang --fresh
cmake --workflow --preset=${{ inputs.preset_name }}-OSX-Clang --fresh
shell: bash

- name: Publish binary (MacOS)
Expand Down Expand Up @@ -369,7 +369,7 @@ jobs:
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
cd "${{ runner.workspace }}/hdf5/hdfsrc"
cmake --workflow --preset=${{ inputs.preset_name }}-Intel --fresh
cmake --workflow --preset=${{ inputs.preset_name }}-win-Intel --fresh
shell: pwsh

- name: Publish binary (Windows_intel)
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/daily-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,18 @@ jobs:
#use_environ: snapshots
if: ${{ needs.call-workflow-tarball.outputs.has_changes == 'true' }}

call-workflow-release:
call-workflow-abi:
needs: [call-workflow-tarball, call-workflow-ctest]
uses: ./.github/workflows/abi-report.yml
with:
file_ref: '1_14_3'
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
use_tag: snapshot
use_environ: snapshots
if: ${{ needs.call-workflow-tarball.outputs.has_changes == 'true' }}

call-workflow-release:
needs: [call-workflow-tarball, call-workflow-ctest, call-workflow-abi]
permissions:
contents: write # In order to allow tag creation
uses: ./.github/workflows/release-files.yml
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/release-files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,12 @@ jobs:
name: tgz-ubuntu-2204_intel-binary
path: ${{ github.workspace }}

- name: Get published abi reports (Linux)
uses: actions/download-artifact@f44cd7b40bfd40b6aa1cc1b9b5b7bf03d3c67110 # v4.1.0
with:
name: abi-reports
path: ${{ github.workspace }}

- name: Store snapshot name
run: |
echo "${{ steps.get-file-base.outputs.FILE_BASE }}" > ./last-file.txt
Expand All @@ -145,6 +151,8 @@ jobs:
prerelease: true
files: |
last-file.txt
${{ steps.get-file-base.outputs.FILE_BASE }}-hdf5_compat_report.html
${{ steps.get-file-base.outputs.FILE_BASE }}-java_compat_report.html
${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip
${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}.zip
Expand All @@ -165,6 +173,8 @@ jobs:
prerelease: false
#body_path: ${{ github.workspace }}-CHANGELOG.txt
files: |
${{ steps.get-file-base.outputs.FILE_BASE }}-hdf5_compat_report.html
${{ steps.get-file-base.outputs.FILE_BASE }}-java_compat_report.html
${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip
${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}.zip
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,18 @@ jobs:
file_base: ${{ needs.create-files-ctest.outputs.file_base }}
preset_name: ci-StdShar

call-workflow-abi:
needs: [log-the-inputs, create-files-ctest, call-workflow-ctest]
uses: ./.github/workflows/abi-report.yml
with:
file_ref: '1_14_3'
file_base: ${{ needs.create-files-ctest.outputs.file_base }}
use_tag: ${{ needs.log-the-inputs.outputs.rel_tag }}
use_environ: release

call-workflow-release:
#needs: [call-workflow-tarball, call-workflow-ctest]
needs: [log-the-inputs, create-files-ctest, call-workflow-ctest]
needs: [log-the-inputs, create-files-ctest, call-workflow-ctest, call-workflow-abi]
permissions:
contents: write # In order to allow tag creation
uses: ./.github/workflows/release-files.yml
Expand Down
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,11 @@ if (EXISTS "${HDF5_SOURCE_DIR}/java" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/java")
endif ()
endif ()

#-----------------------------------------------------------------------------
# Generate the H5pubconf.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_SRC_BINARY_DIR}/H5pubconf.h @ONLY)

#-----------------------------------------------------------------------------
# Option to build examples
#-----------------------------------------------------------------------------
Expand All @@ -1174,9 +1179,4 @@ if (EXISTS "${HDF5_SOURCE_DIR}/HDF5Examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR
endif ()
endif ()

#-----------------------------------------------------------------------------
# Generate the H5pubconf.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_SRC_BINARY_DIR}/H5pubconf.h @ONLY)

include (CMakeInstallation.cmake)
50 changes: 48 additions & 2 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,23 @@
"ci-x64-Release-Clang"
]
},
{
"name": "ci-StdShar-OSX-Clang",
"configurePreset": "ci-StdShar-Clang",
"inherits": [
"ci-x64-Release-Clang"
],
"execution": {
"noTestsAction": "error",
"timeout": 180,
"jobs": 2
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "ci-StdShar-GNUC",
"configurePreset": "ci-StdShar-GNUC",
Expand All @@ -257,7 +274,7 @@
]
},
{
"name": "ci-StdShar-Intel",
"name": "ci-StdShar-win-Intel",
"configurePreset": "ci-StdShar-Intel",
"inherits": [
"ci-x64-Release-Intel"
Expand All @@ -266,7 +283,19 @@
"exclude": {
"name": "H5DUMP-tfloatsattrs"
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "ci-StdShar-Intel",
"configurePreset": "ci-StdShar-Intel",
"inherits": [
"ci-x64-Release-Intel"
]
}
],
"packagePresets": [
Expand Down Expand Up @@ -315,6 +344,15 @@
{"type": "package", "name": "ci-StdShar-Clang"}
]
},
{
"name": "ci-StdShar-OSX-Clang",
"steps": [
{"type": "configure", "name": "ci-StdShar-Clang"},
{"type": "build", "name": "ci-StdShar-Clang"},
{"type": "test", "name": "ci-StdShar-OSX-Clang"},
{"type": "package", "name": "ci-StdShar-Clang"}
]
},
{
"name": "ci-StdShar-GNUC",
"steps": [
Expand All @@ -341,7 +379,15 @@
{"type": "test", "name": "ci-StdShar-Intel"},
{"type": "package", "name": "ci-StdShar-Intel"}
]
},
{
"name": "ci-StdShar-win-Intel",
"steps": [
{"type": "configure", "name": "ci-StdShar-Intel"},
{"type": "build", "name": "ci-StdShar-Intel"},
{"type": "test", "name": "ci-StdShar-win-Intel"},
{"type": "package", "name": "ci-StdShar-Intel"}
]
}
]
}

Loading
Loading