summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2024-02-08 13:58:08 (GMT)
committerGitHub <noreply@github.com>2024-02-08 13:58:08 (GMT)
commit6b22af7c43f86f020943768e1dc99bd9bc8deeca (patch)
treecf1472e6e2376fd3541445f21a94da9a4496b4ed /.github
parent0ee99a66560422fc20864236a83bdcd0103d8f64 (diff)
downloadhdf5-6b22af7c43f86f020943768e1dc99bd9bc8deeca.zip
hdf5-6b22af7c43f86f020943768e1dc99bd9bc8deeca.tar.gz
hdf5-6b22af7c43f86f020943768e1dc99bd9bc8deeca.tar.bz2
Add abi-complience check and upload to releases (#3996)
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/abi-report.yml143
-rw-r--r--.github/workflows/daily-build.yml12
-rw-r--r--.github/workflows/release-files.yml10
-rw-r--r--.github/workflows/release.yml11
4 files changed, 174 insertions, 2 deletions
diff --git a/.github/workflows/abi-report.yml b/.github/workflows/abi-report.yml
new file mode 100644
index 0000000..57e1eb4
--- /dev/null
+++ b/.github/workflows/abi-report.yml
@@ -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
diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml
index 952b9db..a3f965b 100644
--- a/.github/workflows/daily-build.yml
+++ b/.github/workflows/daily-build.yml
@@ -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
diff --git a/.github/workflows/release-files.yml b/.github/workflows/release-files.yml
index 9ee432e..c783822 100644
--- a/.github/workflows/release-files.yml
+++ b/.github/workflows/release-files.yml
@@ -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
@@ -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
@@ -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
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3bf79f4..68565b6 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -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