image: debian:10 cache: when: always paths: - ccache - linux.bundle build: stage: build before_script: - apt-get update # one package per line to simplify sorting, git diff, etc. - >- apt-get -y install --no-install-recommends aria2 autoconf binutils-powerpc64-linux-gnu binutils-powerpc64le-linux-gnu bison build-essential ccache clang cmake curl flex g++-powerpc64le-linux-gnu gawk git gperf libboost-program-options-dev libffi-dev libftdi-dev libgmp-dev libreadline-dev mercurial pkg-config python python3 python3-dev python3-pip python3-setuptools python3-setuptools-scm python3-wheel qemu-system-ppc tcl-dev - export PATH="$HOME/.local/bin:/usr/lib/ccache:$PATH" - export CCACHE_BASEDIR="$PWD" - export CCACHE_DIR="$PWD/ccache" - export CCACHE_COMPILERCHECK=content - ccache --zero-stats || true - ccache --show-stats || true # one package per line to simplify sorting, git diff, etc. - >- python3 -m pip install --user pytest-xdist==3.3.1 pytest==7.3.1 pytest-subtests==0.11.0 script: - git clone --depth 1 -b yosys-0.17 https://github.com/YosysHQ/yosys.git yosys - pushd yosys - make config-gcc - make -j$(nproc) - make install - popd - yosys -V - git clone https://github.com/YosysHQ/SymbiYosys.git SymbiYosys - pushd SymbiYosys - git checkout d10e472edf4ea9be3aa6347b264ba575fbea933a - make install - popd - git clone --depth 1 -b Yices-2.6.4 https://github.com/SRI-CSL/yices2.git yices2 - pushd yices2 - autoconf - ./configure - make -j$(nproc) - make install - popd - git clone --depth 1 -b z3-4.8.17 https://github.com/Z3Prover/z3.git z3 - pushd z3 - python scripts/mk_make.py - cd build - make -j$(nproc) - make install - popd - git clone --depth 1 https://gitlab.com/nmigen/nmigen.git nmigen - pushd nmigen - git rev-parse HEAD - python3 setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/mdis.git mdis - pushd mdis - git rev-parse HEAD - python3 setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/nmutil.git nmutil - pushd nmutil - git rev-parse HEAD - python3 setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/pytest-output-to-files.git pytest-output-to-files - pushd pytest-output-to-files - git rev-parse HEAD - python3 setup.py develop - popd # kernel.org recommends cloning from a bundle in CI since that uses a CDN - if [[ ! -f linux.bundle ]]; then aria2c -x 16 -s 16 -o linux.bundle https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/clone.bundle || { rm -f linux.bundle; exit 1; }; fi - git clone linux.bundle - pushd linux - git remote set-url origin https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git - git remote update origin - git checkout v6.5.8 - popd - python3 setup.py develop - make generate &> generate.log || { cat generate.log; false; } - python3 -m openpower.syscalls json linux > src/openpower/syscalls/syscalls.json # maxschedchunk substantially speeds up testing -- by ~2x on CI # it is supported by the version of pytest-xdist used by both this file # and the dev-env-setup scripts (which should be the same versions). # # maxfail=10 because otherwise the output log is too long and gitlab # truncates it, removing the testing summary. - SILENCELOG=1 SIM_NO_VCD=1 pytest -v --maxfail=10 --maxschedchunk=1