Skip to content

Commit

Permalink
Merge branch 'HDFGroup:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
bmribler authored Feb 22, 2024
2 parents cb8f7ef + 0ab5dab commit f1e2f18
Show file tree
Hide file tree
Showing 611 changed files with 8,334 additions and 17,819 deletions.
6 changes: 0 additions & 6 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,6 @@ hdf/util/testfiles/tvattr.hdf -text
java/CMakeLists.txt -text
java/Makefile.am -text
java/Makefile.in -text
java/examples/CMakeLists.txt -text
java/examples/HDF4DatasetCreate.java -text
java/examples/HDF4FileCreate.java -text
java/examples/HDF4GroupCreate.java -text
java/examples/Makefile.am -text
java/examples/Makefile.in -text
java/lib/ext/slf4j-nop-1.7.33.jar -text svneol=unset#application/zip
java/lib/ext/slf4j-simple-1.7.33.jar -text svneol=unset#application/zip
java/lib/hamcrest-core.jar -text svneol=unset#application/java-archive
Expand Down
152 changes: 152 additions & 0 deletions .github/workflows/abi-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: hdf4 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 hdf4 reference name (Linux)
id: convert-hdf4lib-refname
run: |
FILE_DOTS=$(echo "${{ inputs.file_ref }}" | sed -r "s/([0-9]+)\_([0-9]+)\_([0-9]+)\-([0-9]+).*/\1\.\2\.\3\-\4/")
echo "HDF4R_DOTS=$FILE_DOTS" >> $GITHUB_OUTPUT
- uses: actions/[email protected]

- name: Get published binary (Linux)
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 hdf4 binary (Linux)
run: |
cd "${{ github.workspace }}/hdf4"
tar -zxvf ${{ github.workspace }}/hdf4/HDF-*-Linux.tar.gz --strip-components 1
- name: List files for the HDF space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf4
ls -l ${{ github.workspace }}/hdf4/HDF_Group/HDF
- name: set hdf4lib name
id: set-hdf4lib-name
run: |
HDF4DIR=${{ github.workspace }}/hdf4/HDF_Group/HDF/
FILE_NAME_HDF4=$(ls ${{ github.workspace }}/hdf4/HDF_Group/HDF)
FILE_VERS=$(echo "$FILE_NAME_HDF4" | sed -r "s/([0-9]+\.[0-9]+\.[0-9]+\-[0-9]+)\..*/\1/")
echo "HDF4_ROOT=$HDF4DIR$FILE_NAME_HDF4" >> $GITHUB_OUTPUT
echo "HDF4_VERS=$FILE_VERS" >> $GITHUB_OUTPUT
- name: Download reference version
run: |
mkdir "${{ github.workspace }}/hdf4R"
cd "${{ github.workspace }}/hdf4R"
wget -q https://github.com/HDFGroup/hdf4/releases/download/hdf-${{ inputs.file_ref }}/hdf-${{ inputs.file_ref }}-ubuntu-2204.tar.gz
tar zxf hdf-${{ inputs.file_ref }}-ubuntu-2204.tar.gz
- name: List files for the space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf4R
- name: Uncompress hdf4 reference binary (Linux)
run: |
cd "${{ github.workspace }}/hdf4R"
tar -zxvf ${{ github.workspace }}/hdf4R/hdf4/HDF-${{ steps.convert-hdf4lib-refname.outputs.HDF4R_DOTS }}-Linux.tar.gz --strip-components 1
- name: List files for the HDFR space (Linux)
run: |
ls -l ${{ github.workspace }}/hdf4R
ls -l ${{ github.workspace }}/hdf4R/HDF_Group/HDF
- name: set hdf4lib reference name
id: set-hdf4lib-refname
run: |
HDF4RDIR=${{ github.workspace }}/hdf4R/HDF_Group/HDF/
FILE_NAME_HDF4R=$(ls ${{ github.workspace }}/hdf4R/HDF_Group/HDF)
echo "HDF4R_ROOT=$HDF4RDIR$FILE_NAME_HDF4R" >> $GITHUB_OUTPUT
echo "HDF4R_VERS=$FILE_NAME_HDF4R" >> $GITHUB_OUTPUT
- name: List files for the lib spaces (Linux)
run: |
ls -l ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/lib
ls -l ${{ steps.set-hdf4lib-refname.outputs.HDF4R_ROOT }}/lib
- name: Run Java API report
run: |
japi-compliance-checker ${{ steps.set-hdf4lib-refname.outputs.HDF5R_ROOT }}/lib/jarhdf4-${{ steps.convert-hdf4lib-refname.outputs.HDF4R_DOTS }}.jar ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/lib/jarhdf4-${{ steps.set-hdf4lib-name.outputs.HDF4_VERS }}.jar
- name: Run hdf ABI report
run: |
abi-dumper ${{ steps.set-hdf4lib-refname.outputs.HDF4R_ROOT }}/lib/libhdf.so -o ABI-0.dump -public-headers ${{ steps.set-hdf4lib-refname.outputs.HDF4R_ROOT }}/include
abi-dumper ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/lib/libhdf.so -o ABI-1.dump -public-headers ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/include
abi-compliance-checker -l ${{ inputs.file_base }}-hdf -old ABI-0.dump -new ABI-1.dump
continue-on-error: true

- name: Run mfhdf ABI report
run: |
abi-dumper ${{ steps.set-hdf4lib-refname.outputs.HDF4R_ROOT }}/lib/libmfhdf.so -o ABI-2.dump -public-headers ${{ steps.set-hdf4lib-refname.outputs.HDF4R_ROOT }}/include
abi-dumper ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/lib/libmfhdf.so -o ABI-3.dump -public-headers ${{ steps.set-hdf4lib-name.outputs.HDF4_ROOT }}/include
abi-compliance-checker -l ${{ inputs.file_base }}-mfhdf -old ABI-2.dump -new ABI-3.dump
continue-on-error: true

- name: Copy ABI reports
run: |
cp compat_reports/jarhdf4-/${{ steps.set-hdf4lib-refname.outputs.HDF5R_VERS }}_to_${{ steps.set-hdf4lib-name.outputs.HDF4_VERS }}/compat_report.html ${{ inputs.file_base }}-java_compat_report.html
ls -l compat_reports/${{ inputs.file_base }}-hdf/X_to_Y
cp compat_reports/${{ inputs.file_base }}-hdf/X_to_Y/compat_report.html ${{ inputs.file_base }}-hdf_compat_report.html
ls -l compat_reports/${{ inputs.file_base }}-mfhdf/X_to_Y
cp compat_reports/${{ inputs.file_base }}-mfhdf/X_to_Y/compat_report.html ${{ inputs.file_base }}-mfhdf_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 }}-hdf_compat_report.html
${{ inputs.file_base }}-mfhdf_compat_report.html
${{ inputs.file_base }}-java_compat_report.html
150 changes: 150 additions & 0 deletions .github/workflows/aocc-auto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: hdf4 autotools aocc

on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
aocc_build_and_test:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]

- name: Install System dependencies
run: |
sudo apt update
sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev doxygen openssl libtool libtool-bin build-essential libncurses-dev libquadmath0 libstdc++6 libxml2
- name: Install AOCC 4.1.0
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
cd aocc-compiler-4.1.0
bash install.sh
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
which clang
which flang
clang -v
echo "CC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/clang" >> $GITHUB_ENV
echo "FC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/flang" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "LD_RUN_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "DESTDIR=/tmp" >> $GITHUB_ENV
- name: Autotools Configure with aocc
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
$GITHUB_WORKSPACE/configure \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-netcdf \
--enable-shared \
--disable-fortran \
LDFLAGS="-L/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib"
# BUILD
- name: Autotools Build
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make -j3
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
# NORMAL
- name: Autotools Run Tests
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make check -j2
working-directory: ${{ runner.workspace }}/build

# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make install
working-directory: ${{ runner.workspace }}/build

aocc_static_build_and_test:
name: "aocc static ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]

- name: Install System dependencies
run: |
sudo apt update
sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev doxygen openssl libtool libtool-bin build-essential libncurses-dev libquadmath0 libstdc++6 libxml2
- name: Install AOCC 4.1.0
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
cd aocc-compiler-4.1.0
bash install.sh
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
which clang
which flang
clang -v
echo "CC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/clang" >> $GITHUB_ENV
echo "FC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/flang" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "LD_RUN_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "DESTDIR=/tmp" >> $GITHUB_ENV
- name: Autotools Configure with aocc
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
$GITHUB_WORKSPACE/configure \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-netcdf \
--disable-shared \
--enable-fortran \
LDFLAGS="-L/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib"
# BUILD
- name: Autotools Build
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make -j3
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
# NORMAL
- name: Autotools Run Tests
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make check -j2
working-directory: ${{ runner.workspace }}/build

# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
make install
working-directory: ${{ runner.workspace }}/build

77 changes: 77 additions & 0 deletions .github/workflows/aocc-cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: hdf4 CMake aocc

on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
aocc_build_and_test:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]

- name: Install Linux dependencies
shell: bash
run: |
sudo apt update
sudo apt-get install ninja-build doxygen graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
sudo apt install -y libaec-dev zlib1g-dev wget curl bzip2 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
cd aocc-compiler-4.1.0
bash install.sh
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
which clang
which flang
clang -v
echo "CC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/clang" >> $GITHUB_ENV
echo "FC=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/bin/flang" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "LD_RUN_PATH=/home/runner/work/hdf4/hdf4/aocc-compiler-4.1.0/lib:/usr/local/lib" >> $GITHUB_ENV
echo "DESTDIR=/tmp" >> $GITHUB_ENV
- name: CMake Configure with aocc
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DJPEG_USE_LOCALCONTENT=OFF \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF4_BUILD_FORTRAN:BOOL=ON \
-DHDF4_BUILD_JAVA:BOOL=OFF \
$GITHUB_WORKSPACE
# BUILD
- name: CMake Build
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
shell: bash
run: |
source /home/runner/work/hdf4/hdf4/setenv_AOCC.sh
export PATH=/usr/local/bin:$PATH
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
working-directory: ${{ runner.workspace }}/build
Loading

0 comments on commit f1e2f18

Please sign in to comment.