Skip to content

Update CMake to build under library #195

Update CMake to build under library

Update CMake to build under library #195

Workflow file for this run

name: Test REST VOL with socket
on:
workflow_dispatch:
push:
pull_request:
branches: [ master ]
paths-ignore:
- '.github/CODEOWNERS'
- 'docs/**'
- 'COPYING'
- '**.md'
env:
ADMIN_PASSWORD: admin
ADMIN_USERNAME: admin
USER_NAME: test_user1
USER_PASSWORD: test
USER2_NAME: test_user2
USER2_PASSWORD: test
HSDS_USERNAME: test_user1
HSDS_PASSWORD: test
HSDS_PATH: /home/test_user1/
HDF5_API_TEST_PATH_PREFIX: /home/test_user1/
HSDS_ENDPOINT: http+unix://%2Ftmp%2Fhs%2Fsn_1.sock
HDF5_VOL_CONNECTOR: REST
ROOT_DIR: ${{github.workspace}}/hsdsdata
BUCKET_NAME: hsdstest
jobs:
build_and_test_with_autotools:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14", "develop"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5
- name: Get REST VOL dependencies
run: |
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get Autotools Dependencies
run: |
sudo apt update
sudo apt install automake autoconf libtool libtool-bin
- name: Get REST VOL
uses: actions/checkout@v3
with:
path: ${{github.workspace}}/vol-rest
ref: build_under_lib_workflow
repository: mattjala/vol-rest # TODO: For workflow testing
- name: Autotools Configure + Build HDF5
run: |
./autogen.sh
./configure --prefix=${{github.workspace}}/hdf5install \
--enable-hl --disable-threadsafe \
--enable-build-mode=production --enable-shared
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5
- name: Autotools Configure REST VOL
run: |
./autogen.sh
mkdir ${{github.workspace}}/rest_vol_install
CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure --prefix=${{github.workspace}}/rest_vol_install --with-hdf5=${{github.workspace}}/hdf5install
shell: bash
working-directory: ${{github.workspace}}/vol-rest
- name: Build + Install REST VOL
run: |
make
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/
- uses: actions/cache/restore@v3
with:
key: hsds
path: ${{github.workspace}}/hsds
id: hsds-restore
- uses: actions/checkout@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds
- uses: actions/cache/save@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
key: hsds
path: ${{github.workspace}}/hsds
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Install valgrind
run: sudo apt install valgrind
working-directory: ${{ github.workspace }}
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds
- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds
- name: Test REST VOL
working-directory: ${{github.workspace}}/vol-rest/
run: |
HDF5_PLUGIN_PATH=${{github.workspace}}/rest_vol_install/lib HDF5_VOL_CONNECTOR=REST ./test/test_rest_vol
build_and_test_with_cmake:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
hdf5-branch: ["hdf5_1_14", "develop"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5
- name: Get REST VOL dependencies
run: |
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get REST VOL
uses: actions/checkout@v3
with:
path: ${{github.workspace}}/vol-rest
ref: build_under_lib_workflow
repository: mattjala/vol-rest # TODO: For workflow testing
- name: CMake Configure + Build HDF5
run: |
mkdir ${{github.workspace}}/hdf5/build
cd ./build
cmake \
-DHDF5_BUILD_HL_LIB=ON \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_TEST_API=ON \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
..
make
make install
shell: bash
working-directory: ${{github.workspace}}/hdf5
- name: CMake Configure REST VOL
run: |
mkdir ./build
cd ./build
CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \
..
shell: bash
working-directory: ${{github.workspace}}/vol-rest
- name: Build + Install REST VOL
run: |
make
make install
shell: bash
working-directory: ${{github.workspace}}/vol-rest/build
- uses: actions/cache/restore@v3
with:
key: hsds
path: ${{github.workspace}}/hsds
id: hsds-restore
- uses: actions/checkout@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds
- uses: actions/cache/save@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
key: hsds
path: ${{github.workspace}}/hsds
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Install valgrind
run: sudo apt install valgrind
working-directory: ${{ github.workspace }}
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds
- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds
- name: Test REST VOL
working-directory: ${{github.workspace}}/hdf5/build/
run: |
echo "HDF5_PLUGIN_PATH=${{github.workspace}}/hdf5/build/bin/" >> $GITHUB_ENV
valgrind --leak-check=full -s ctest -R "test_rest_vol" -VV
build_with_fetchcontent:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10"]
vol-source: ['GIT', 'LOCAL_DIR']
hdf5-branch: ["hdf5_1_14", "develop"]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
with:
repository: HDFGroup/hdf5
ref: ${{matrix.hdf5-branch}}
path: ${{github.workspace}}/hdf5
- name: Get REST VOL dependencies
run: |
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libyajl-dev
- name: Get REST VOL
if: ${{matrix.vol-source == 'LOCAL_DIR'}}
uses: actions/checkout@v3
with:
path: ${{github.workspace}}/vol-rest
ref: build_under_lib_workflow
repository: mattjala/vol-rest # TODO: For workflow testing
- name: CMake Configure HDF5 + REST VOL from GIT
if: ${{matrix.vol-source == 'GIT'}}
run: |
mkdir ${{github.workspace}}/hdf5/build
cd ./build
cmake -DHDF5_VOL_REST_ENABLE_EXAMPLES=ON \
-DHDF5_BUILD_HL_LIB=ON \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DHDF5_TEST_API=ON -DHDF5_VOL_ALLOW_EXTERNAL='GIT' \
-DHDF5_VOL_URL01=https://github.com/mattjala/vol-rest.git \
-DHDF5_VOL_VOL-REST_BRANCH=build_under_lib_workflow \
-DHDF5_VOL_VOL-REST_NAME="REST" -DHDF5_VOL_VOL-REST_TEST_PARALLEL=OFF \
-DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
..
shell: bash
working-directory: ${{github.workspace}}/hdf5
- name: CMake Configure HDF5 + REST VOL from LOCAL_DIR
if: ${{matrix.vol-source == 'LOCAL_DIR'}}
run: |
mkdir ${{github.workspace}}/hdf5/build
sudo cmake -DHDF5_BUILD_HL_LIB=ON -DHDF5_VOL_REST_ENABLE_EXAMPLES=ON \
-DHDF5_ENABLE_SZIP_SUPPORT=OFF \
-DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \
-DHDF5_TEST_API=ON -DHDF5_VOL_ALLOW_EXTERNAL=${{matrix.vol-source}} \
-DHDF5_VOL_PATH01=${{github.workspace}}/vol-rest \
-DHDF5_VOL_VOL-REST_NAME="REST" -DHDF5_VOL_VOL-REST_TEST_PARALLEL=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \
--log-level=verbose \
-B ${{github.workspace}}/hdf5/build
shell: bash
working-directory: ${{github.workspace}}/hdf5/
- name: CMake Build HDF5 + REST VOL
run: |
sudo make
shell: bash
working-directory: ${{github.workspace}}/hdf5/build
- name: CMake Install HDF5 + REST VOL
run: |
sudo make install
shell: bash
working-directory: ${{github.workspace}}/hdf5/build
- name: Install valgrind
run: sudo apt install valgrind
working-directory: ${{ github.workspace }}
- uses: actions/cache/restore@v3
with:
key: hsds
path: ${{github.workspace}}/hsds
id: hsds-restore
- uses: actions/checkout@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
repository: HDFGroup/hsds
path: ${{github.workspace}}/hsds
- uses: actions/cache/save@v3
if: ${{!steps.hsds-restore.outputs.cache-hit}}
with:
key: hsds
path: ${{github.workspace}}/hsds
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install HSDS dependencies
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Install HSDS package
shell: bash
run: |
cd ${{github.workspace}}/hsds
pip install -e .
- name: Run HSDS unit tests
shell: bash
run: |
cd ${{github.workspace}}/hsds
pytest
- name: Start HSDS
if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
cd ${{github.workspace}}/hsds
mkdir ${{github.workspace}}/hsdsdata &&
mkdir ${{github.workspace}}/hsdsdata/hsdstest &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt &&
cp admin/config/groups.default admin/config/groups.txt &&
cp admin/config/passwd.default admin/config/passwd.txt
ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 &
sleep 10
working-directory: ${{github.workspace}}/hsds
- name: Test HSDS
if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}}
run: |
python tests/integ/setup_test.py
working-directory: ${{github.workspace}}/hsds
- name: Test REST VOL
working-directory: ${{github.workspace}}/hdf5/build/
run: |
sudo \
HDF5_PLUGIN_PATH="${{github.workspace}}/hdf5install/lib" HDF5_VOL_CONNECTOR=REST \
ADMIN_PASSWORD=admin ADMIN_USERNAME=admin \
USER_NAME=test_user1 USER_PASSWORD=test \
USER2_NAME=test_user2 USER2_PASSWORD=test \
HSDS_USERNAME=test_user1 HSDS_PASSWORD=test \
HSDS_PATH=/home/test_user1/ HDF5_API_TEST_PATH_PREFIX=/home/test_user1/ \
HSDS_ENDPOINT=http+unix://%2Ftmp%2Fhs%2Fsn_1.sock HDF5_VOL_CONNECTOR=REST \
ROOT_DIR=${{github.workspace}}/hsdsdata BUCKET_NAME=hsdstest \
valgrind --leak-check=full -s ctest -R "test_rest_vol" -VV
# TODO: Attribute, dataset, link, and testhdf5 tests currently fail
# - name: Test REST VOL with API
# run: |
# valgrind --leak-check=full -s ctest -R "vol-rest" -VV
# working-directory: ${{github.workspace}}/hdf5/build/