mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-18 15:15:56 +08:00
Add abi-complience check and upload to releases (#3996)
This commit is contained in:
parent
0ee99a6656
commit
6b22af7c43
143
.github/workflows/abi-report.yml
vendored
Normal file
143
.github/workflows/abi-report.yml
vendored
Normal file
@ -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
|
12
.github/workflows/daily-build.yml
vendored
12
.github/workflows/daily-build.yml
vendored
@ -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
|
||||
|
10
.github/workflows/release-files.yml
vendored
10
.github/workflows/release-files.yml
vendored
@ -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
|
||||
|
11
.github/workflows/release.yml
vendored
11
.github/workflows/release.yml
vendored
@ -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
|
||||
|
@ -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
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -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)
|
||||
|
@ -423,7 +423,7 @@ public class TestH5 {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testH5export_dataset()
|
||||
{
|
||||
int[][] dset_data = new int[DIM_X][DIM_Y];
|
||||
@ -489,7 +489,7 @@ public class TestH5 {
|
||||
_deleteH5file();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testH5export_region()
|
||||
{
|
||||
int[] dset_data_expect = {66, 69, 72, 75, 78, 81, 96, 99, 102, 105, 108, 111,
|
||||
@ -532,7 +532,7 @@ public class TestH5 {
|
||||
dset_indata[row] == dset_data_expect[row]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testH5export_attribute()
|
||||
{
|
||||
int[] dset_data_expect = {0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 11};
|
||||
@ -573,7 +573,7 @@ public class TestH5 {
|
||||
dset_indata[row] == dset_data_expect[row]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testH5export_regdataset()
|
||||
{
|
||||
int[] dset_data_expect = {66, 69, 72, 75, 78, 81, 96, 99, 102, 105, 108, 111,
|
||||
@ -616,7 +616,7 @@ public class TestH5 {
|
||||
dset_indata[row] == dset_data_expect[row]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testH5export_attrdataset()
|
||||
{
|
||||
int[] dset_data_expect = {66, 69, 72, 75, 78, 81, 96, 99, 102, 105, 108, 111,
|
||||
|
@ -1,14 +1,9 @@
|
||||
JUnit version 4.11
|
||||
.testH5export_region
|
||||
.testH5get_libversion_null_param
|
||||
.testJ2C
|
||||
.testH5export_dataset
|
||||
.testIsSerializable
|
||||
.testH5export_attrdataset
|
||||
.testH5garbage_collect
|
||||
.testH5error_off
|
||||
.testH5export_regdataset
|
||||
.testH5export_attribute
|
||||
.serializeToDisk
|
||||
.testH5open
|
||||
.testH5check_version
|
||||
@ -17,5 +12,5 @@ JUnit version 4.11
|
||||
|
||||
Time: XXXX
|
||||
|
||||
OK (15 tests)
|
||||
OK (10 tests)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user