Skip to content

[issue1082] Use Options objects only in Features #1430

[issue1082] Use Options objects only in Features

[issue1082] Use Options objects only in Features #1430

Workflow file for this run

---
name: Ubuntu
on:
push:
branches: [main, release-*]
pull_request:
branches: [main, release-*]
# Some notes on file paths: the working directory is $GITHUB_WORKSPACE,
# which equals /home/runner/work/my-repo-name/my-repo-name. The code is
# checked out to $GITHUB_WORKSPACE as well. We put all libraries under
# /home/runner/lib.
jobs:
compile:
name: Compile planner
timeout-minutes: 60
runs-on: ${{ matrix.version.ubuntu }}
strategy:
matrix:
version:
- {ubuntu: 'ubuntu-20.04', python: '3.8', cc: gcc-10, cxx: g++-10, run_tox_tests: true}
- {ubuntu: 'ubuntu-20.04', python: '3.8', cc: clang-12, cxx: clang++-12, run_tox_tests: false}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: gcc-11, cxx: g++-11, run_tox_tests: false}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: gcc-12, cxx: g++-12, run_tox_tests: true}
- {ubuntu: 'ubuntu-22.04', python: '3.10', cc: clang-14, cxx: clang++-14, run_tox_tests: false}
env:
CC: ${{ matrix.version.cc }}
CXX: ${{ matrix.version.cxx }}
CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }}
cplex_DIR: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex
CPLEX_LIB: /home/runner/lib/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/libcplex2211.so
soplex_DIR: /home/runner/lib/soplex-6.0.3x
SOPLEX_LIB: /home/runner/lib/soplex-6.0.3x/lib/
SOPLEX_INCLUDE: /home/runner/lib/soplex-6.0.3x/include/
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version.python }}
- name: Install dependencies
run: |
sudo apt-get -y install zlib1g-dev libgmp3-dev ${{ matrix.version.cc }}
mkdir /home/runner/lib
# In 22.04 g++-12 is not automatically installed when gcc-12 gets
# installed, so we do it separately. We do not use an unconditional
# install for any value of cxx because there is no separate package for
# clang++.
- name: Install CXX
if: startsWith(matrix.version.cxx, 'g++-')
run: |
sudo apt-get -y install ${{ matrix.version.cxx }}
# TODO: Remove once issue with Ubuntu 22.04 and clang++-14 is resolved.
- name: Work around https://github.com/actions/runner-images/issues/8659
if: matrix.version.cxx == 'clang++-14'
run: |
sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list
sudo apt-get update
sudo apt-get install -y --allow-downgrades libc6=2.35-* libc6-dev=2.35-* libstdc++6=12.3.0-* libgcc-s1=12.3.0-*
# Only install CPLEX if its URL/secret is set.
- name: Install CPLEX
if: ${{ env.CPLEX_URL != 0 }}
run: |
# We redirect output of wget to hide the secret URLs.
wget -O cplex_installer $CPLEX_URL &> /dev/null
chmod +x cplex_installer
./cplex_installer -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR="$(dirname "${cplex_DIR}")" -i silent
rm cplex_installer
# Always install SoPlex
- name: Install SoPlex
run: |
git clone https://github.com/scipopt/soplex.git
cd soplex
git checkout a5df0814d67812c13a00f06eec507b4d071fb862
cd ..
cmake -S soplex -B build
cmake --build build
cmake --install build --prefix "${soplex_DIR}"
rm -rf soplex build
- name: Compile planner
run: |
export CXXFLAGS="-Werror" # Treat compilation warnings as errors.
./build.py --debug
./build.py
- name: Archive required files
# We only run tests on one compiler version per Ubuntu version, so we
# only need to archive that one.
if: ${{ matrix.version.run_tox_tests }}
run: |
files_to_archive="fast-downward.py driver misc builds/debug/bin/ \
builds/release/bin/ ${SOPLEX_LIB} ${SOPLEX_INCLUDE}"
if [[ ! -z "${CPLEX_URL}" ]]; then
files_to_archive="${files_to_archive} ${CPLEX_LIB}"
fi
tar cfz archive.tar.gz -C "/home/runner" $(realpath --relative-to="/home/runner" $files_to_archive)
- name: Upload archive
if: ${{ matrix.version.run_tox_tests }}
uses: actions/upload-artifact@v3
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
path: archive.tar.gz
retention-days: 1
run_tox_tests:
name: Test planner
runs-on: ${{ matrix.version.ubuntu }}
needs: compile # TODO: this only depends on the compile step with the gcc version we test
strategy:
matrix:
version:
- {ubuntu: ubuntu-20.04, python: '3.8'}
- {ubuntu: ubuntu-22.04, python: '3.10'}
env:
CPLEX_URL: ${{ secrets.CPLEX2211_LINUX_URL }}
steps:
- name: Download archive
uses: actions/download-artifact@v3
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
- name: Delete artifact
uses: geekyeggo/delete-artifact@v2
with:
name: compiled-planner-${{ matrix.version.ubuntu }}
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version.python }}
- name: Install dependencies
run: |
pip3 install tox
sudo apt-get -y install zlib1g-dev libgmp3-dev gcc flex bison
# NOTE: VAL does not compile with clang-12.
- name: Install VAL
run: |
git clone https://github.com/KCL-Planning/VAL.git
cd VAL
git checkout a5565396007eee73ac36527fbf904142b3077c74
make clean # Remove old build artifacts and binaries.
sed -i 's/-Werror //g' Makefile # Ignore warnings.
make -j2
mv validate ../
cd ../
rm -rf VAL
echo `pwd` >> $GITHUB_PATH # Add VAL to path of subsequent steps.
- name: Extract archive
# We need to make sure that library paths are the same as
# during compilation.
run: |
tar xfz archive.tar.gz -C "/home/runner"
- name: Run driver, translator and search tests
run: |
cd misc/
tox -e driver,translator,search,autodoc
- name: Run CPLEX tests
if: ${{ env.CPLEX_URL != 0 }}
run: |
cd misc/
tox -e cplex
- name: Run SoPlex tests
run: |
cd misc/
tox -e soplex
...