Skip to content

Commit

Permalink
Merge branch 'develop' into fix-H5Pset_external-offset
Browse files Browse the repository at this point in the history
  • Loading branch information
derobins authored Mar 28, 2024
2 parents 65650a3 + 1dfaef2 commit bb6bd04
Show file tree
Hide file tree
Showing 3,157 changed files with 333,326 additions and 155,849 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 6 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
[codespell]
skip = .git,*.svg,.codespellrc,./bin/trace,./hl/tools/h5watch/h5watch.c,./tools/test/h5jam/tellub.c,./config/sanitizer/LICENSE,./config/sanitizer/sanitizers.cmake,./tools/test/h5repack/testfiles/*.dat,./test/API/driver,./configure,./bin/ltmain.sh,./bin/depcomp,./bin/config.guess,./bin/config.sub,./autom4te.cache,./m4/libtool.m4,./c++/src/*.html,./HDF5Examples/depcomp
check-hidden = true
# ignore-regex =
ignore-words-list = ot,isnt,inout,nd,parms,parm,ba,offsetP,ser,ois,had,fiter,fo,clude,refere,minnum,offsetp,creat,ans:,eiter,lastr,ans,isn't,ifset,sur,trun,dne,tthe,hda,filname,te,htmp,ake,gord,numer,ro,oce,msdos
5 changes: 5 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM mcr.microsoft.com/devcontainers/base:debian

RUN apt-get update && apt-get -y install --no-install-recommends \
build-essential cmake cmake-curses-gui doxygen git graphviz \
less libtool-bin libyajl-dev mpi-default-dev valgrind wget
26 changes: 26 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "HDF5 Developer",
"build": {
"context": "..",
"dockerfile": "Dockerfile"
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-toolsai.jupyter",
"ms-vscode.cpptools",
"ms-vscode.live-server",
"ms-vscode-remote.remote-containers",
"ms-azuretools.vscode-docker",
"h5web.vscode-h5web",
"davidanson.vscode-markdownlint"
],
"settings": {
"C_Cpp.default.cppStandard": "c++17",
"C_Cpp.default.cStandard": "c99",
"terminal.integrated.shell.linux": "/bin/bash"
}
}
}
}
3 changes: 3 additions & 0 deletions .devcontainer/noop.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This file is copied into the container along with environment.yml* from the
parent folder. This file prevents the Dockerfile COPY instruction from failing
if no environment.yml is found.
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# These are supported funding model platforms

custom: "https://hdfgroup.org/about-us/donate-to-the-hdf-group/"
custom: "https://www.hdfgroup.org/donate"
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
groups:
github-actions:
patterns:
- "*"
181 changes: 181 additions & 0 deletions .github/workflows/abi-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
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)
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
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: Run hl ABI report
run: |
abi-dumper ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/lib/libhdf5_hl.so -o ABI-2.dump -public-headers ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/include
abi-dumper ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/lib/libhdf5_hl.so -o ABI-3.dump -public-headers ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/include
abi-compliance-checker -l ${{ inputs.file_base }}_hl -old ABI-2.dump -new ABI-3.dump
continue-on-error: true

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

- name: Run hl_cpp ABI report
run: |
abi-dumper ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/lib/libhdf5_hl_cpp.so -o ABI-6.dump -public-headers ${{ steps.set-hdf5lib-refname.outputs.HDF5R_ROOT }}/include
abi-dumper ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/lib/libhdf5_hl_cpp.so -o ABI-7.dump -public-headers ${{ steps.set-hdf5lib-name.outputs.HDF5_ROOT }}/include
abi-compliance-checker -l ${{ inputs.file_base }}_hl_cpp -old ABI-6.dump -new ABI-7.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
ls -l compat_reports/${{ inputs.file_base }}_hl/X_to_Y
cp compat_reports/${{ inputs.file_base }}_hl/X_to_Y/compat_report.html ${{ inputs.file_base }}-hdf5_hl_compat_report.html
ls -l compat_reports/${{ inputs.file_base }}_cpp/X_to_Y
cp compat_reports/${{ inputs.file_base }}_cpp/X_to_Y/compat_report.html ${{ inputs.file_base }}-hdf5_cpp_compat_report.html
# ls -l compat_reports/${{ inputs.file_base }}_hl_cpp/X_to_Y
# cp compat_reports/${{ inputs.file_base }}_hl_cpp/X_to_Y/compat_report.html ${{ inputs.file_base }}-hdf5_hl_cpp_compat_report.html

- name: List files for the report spaces (Linux)
run: |
ls -l compat_reports
ls -l *.html
- name: Publish ABI reports
id: publish-abi-reports
run: |
mkdir "${{ runner.workspace }}/buildabi"
mkdir "${{ runner.workspace }}/buildabi/hdf5"
cp ${{ inputs.file_base }}-hdf5_compat_report.html ${{ runner.workspace }}/buildabi/hdf5
cp ${{ inputs.file_base }}-hdf5_hl_compat_report.html ${{ runner.workspace }}/buildabi/hdf5
cp ${{ inputs.file_base }}-hdf5_cpp_compat_report.html ${{ runner.workspace }}/buildabi/hdf5
cp ${{ inputs.file_base }}-java_compat_report.html ${{ runner.workspace }}/buildabi/hdf5
cd "${{ runner.workspace }}/buildabi"
tar -zcvf ${{ inputs.file_base }}.html.abi.reports.tar.gz hdf5
shell: bash

- name: Save output as artifact
uses: actions/upload-artifact@v4
with:
name: abi-reports
path: |
${{ runner.workspace }}/buildabi/${{ inputs.file_base }}.html.abi.reports.tar.gz
102 changes: 102 additions & 0 deletions .github/workflows/aocc-auto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: hdf5 dev PAR autotools aocc ompi

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:
- name: Get Sources
uses: actions/checkout@v4.1.1

- name: Install Dependencies
shell: bash
run: |
sudo apt update
sudo apt install -y autoconf automake libtool libtool-bin libaec-dev
sudo apt install -y doxygen libncurses-dev libquadmath0 libstdc++6 libxml2
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
shell: bash
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/hdf5/hdf5/setenv_AOCC.sh
which clang
which flang
clang -v
- name: Cache OpenMPI 4.1.5 installation
id: cache-openmpi-4_1_5
uses: actions/cache@v4
with:
path: /home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
key: ${{ runner.os }}-${{ runner.arch }}-openmpi-4_1_5-cache

- name: Install OpenMPI 4.1.5
if: ${{ steps.cache-openmpi-4_1_5.outputs.cache-hit != 'true' }}
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/usr/local/lib
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
tar zxvf openmpi-4.1.5.tar.gz
cd openmpi-4.1.5
./configure CC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/clang FC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/flang --prefix=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
make
make install
- name: Autotools Configure
env:
NPROCS: 2
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export LD_RUN_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
CC=mpicc $GITHUB_WORKSPACE/configure \
--prefix=/tmp \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-shared \
--enable-parallel \
LDFLAGS="-L/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib \
-L/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib"
- name: Autotools Build
shell: bash
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make -j3
working-directory: ${{ runner.workspace }}/build

- name: Autotools Run Tests
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make check -j
working-directory: ${{ runner.workspace }}/build

- name: Autotools Install
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make install
working-directory: ${{ runner.workspace }}/build
Loading

0 comments on commit bb6bd04

Please sign in to comment.