image: debian:10 cache: paths: - ccache - .cache/pip - apt-cache variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" GIT_SUBMODULE_STRATEGY: recursive build: stage: build timeout: 2h before_script: - mkdir -p apt-cache - apt-get -o dir::cache::archives="$(pwd)/apt-cache" update - >- apt-get -o dir::cache::archives="$(pwd)/apt-cache" -y install build-essential git python3-dev python3-pip python3-setuptools python3-wheel pkg-config tcl-dev libreadline-dev bison flex libffi-dev ccache python3-venv binutils-powerpc64-linux-gnu binutils-powerpc64le-linux-gnu autoconf gperf libgmp-dev libmpfr-dev libssl-dev curl - export PATH="/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 - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source $HOME/.cargo/env after_script: - export CCACHE_DIR="$PWD/ccache" - ccache --show-stats script: - python3 -m venv .env - . .env/bin/activate - pip install nose - git clone --depth 1 https://github.com/SRI-CSL/yices2.git yices2 - pushd yices2 - autoconf - ./configure - make -j$(nproc) > /dev/null - make install - popd - git clone --depth 1 https://github.com/YosysHQ/yosys.git yosys - pushd yosys - make config-gcc - make -j$(nproc) > /dev/null - make install - popd - yosys -V - git clone --depth 1 https://github.com/YosysHQ/SymbiYosys.git SymbiYosys - pushd SymbiYosys - make install > /dev/null - popd - git clone --depth 1 https://github.com/nmigen/nmigen.git nmigen - pushd nmigen - python setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/nmutil.git nmutil - pushd nmutil - python setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/nmigen-soc.git nmigen-soc - pushd nmigen-soc - git tag | xargs git tag -d - python setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/ieee754fpu.git ieee754fpu - pushd ieee754fpu - python setup.py develop - popd - git clone --depth 1 https://git.libre-soc.org/git/openpower-isa.git openpower-isa - pushd openpower-isa - python3 setup.py develop - make -j$(nproc) svanalysis > /dev/null - make -j$(nproc) pyfnwriter > /dev/null 2>&1 - make -j$(nproc) pywriter > /dev/null 2>&1 - popd - git clone --depth 1 https://git.libre-soc.org/git/c4m-jtag.git c4m-jtag - pushd c4m-jtag - python setup.py develop - popd - IEEE754FPU_PATH="$(pwd)"/ieee754fpu - git clone --depth 1 --recursive https://github.com/billzorn/sfpy.git sfpy - pushd sfpy - pushd berkeley-softfloat-3 - git apply "$IEEE754FPU_PATH"/berkeley-softfloat.patch - popd - pushd SoftPosit - git apply ../softposit_sfpy_build.patch - git apply "$IEEE754FPU_PATH"/SoftPosit.patch - popd - pip install --upgrade -r requirements.txt - make lib -j$(nproc) - make cython -j$(nproc) - make wheel -j$(nproc) - pip install dist/sfpy*.whl - popd - cargo install maturin - git clone --depth 1 https://git.libre-soc.org/git/power-instruction-analyzer.git pia - pushd pia - maturin build --cargo-extra-args=--features=python-extension - python3 -m pip install target/wheels/*.whl - popd - python setup.py develop - nosetests -v --processes=-1 --process-timeout=120 -w src/