Updated test cases #1800
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
env: | |
CI: true | |
DOCKER_BUILDKIT: 1 | |
jobs: | |
# Convention for the names: | |
# lin, osx, win, msys2: build package for the platform | |
# *-test: test on the platform | |
# | |
# Generate and upload doc | |
# | |
gnatdoc: | |
name: '📚 gnatdoc' | |
runs-on: ubuntu-latest | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- name: '📚 Run gnatdoc' | |
run: | | |
docker run --rm -i -v $(pwd):/src -w /src ghdl/debug:base <<'EOF' | |
#!/usr/bin/env sh | |
./configure --enable-werror && make && make install | |
gnatdoc -P./ghdl | |
EOF | |
- name: '📤 Upload artifact: gnatdoc' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: gnatdoc | |
path: gnatdoc | |
# | |
# Upload Build The Doc | |
# | |
doc: | |
needs: gnatdoc | |
name: '📓 Docs' | |
runs-on: ubuntu-latest | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- name: '⛴ Build ghdl/doc' | |
run: | | |
docker build -t ghdl/doc . -f- <<-EOF | |
FROM ghdl/build:doc | |
COPY . /opt/ghdl | |
RUN cd /opt/ghdl && ./configure --enable-werror && make && make install | |
EOF | |
- name: '📥 Download artifact: gnatdoc' | |
uses: actions/download-artifact@v4 | |
with: | |
name: gnatdoc | |
path: public/gnatdoc | |
- name: '📓 BuildTheDocs (BTD)' | |
uses: buildthedocs/btd@v0 | |
with: | |
token: ${{ github.token }} | |
# skip-deploy: ${{ github.event_name == 'pull_request' }} | |
# git push currently fails | |
skip-deploy: true | |
#- run: nroff -man doc/_build/man/ghdl.1 | |
- name: '📤 Upload artifact: HTML, LaTeX and man' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: doc | |
path: | | |
doc/_build/html | |
doc/_build/latex | |
doc/_build/man | |
# | |
# pyGHDL Bindings, Formatting and pure wheel | |
# | |
pyGHDL: | |
name: '🐍 pyGHDL' | |
runs-on: ubuntu-latest | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- name: '🐍 Setup Python' | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: '🔧 Install dependencies' | |
run: | | |
sudo apt update -qq | |
sudo apt install -y gnat | |
python -m pip install --disable-pip-version-check black wheel | |
python -m pip install --disable-pip-version-check -r pyGHDL/requirements.txt | |
- name: '🚧 Update Python bindings' | |
run: ./scripts/update_py_bindings.sh | |
- name: '🚦 Check if Python bindings changed' | |
run: | | |
git diff --stat | |
echo "NOTE: Bindings can be updated by executing ./scripts/update_py_bindings.sh (see previous step)" | |
git diff --exit-code | |
- name: '🚦 Check if python follows code formatting standards' | |
run: python -m black --check pyGHDL | |
- name: 🔨 Build Python package (source distribution) | |
run: python setup.py sdist | |
- name: 🔨 Build Python package (binary distribution - wheel) | |
run: python setup.py bdist_wheel | |
- name: '📤 Upload artifact: pyGHDL' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pyGHDL | |
path: dist/ | |
if-no-files-found: error | |
# | |
# GPL | |
# | |
gpl: | |
if: false | |
name: '🚧🚦🐧 GPL mcode' | |
runs-on: ubuntu-latest | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- run: TASK=bullseye+mcode ./scripts/ci-run.sh -c --gplcompat | |
# | |
# Build for GNU/Linux | |
# | |
lin: | |
name: '🚧🚦🐧 Ubuntu ${{ matrix.os }} ${{ matrix.backend }}' | |
runs-on: ubuntu-${{ matrix.os }}.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { os: 24, backend: mcode } | |
- { os: 22, backend: mcode } | |
- { os: 22, backend: llvm-14 } | |
- { os: 22, backend: gcc-12.1.0 } | |
- { os: 20, backend: mcode } | |
# - { os: 20, backend: llvm-10 } | |
# - { os: 20, backend: gcc-9.4.0 } | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- name: '🛳 Build and test GHDL in containers' | |
run: | | |
TASK=ubuntu${{ matrix.os }}+${{ matrix.backend }} ./scripts/ci-run.sh -c | |
mv ghdl-*-ubuntu${{ matrix.os }}-*.tgz ghdl-gha-ubuntu-${{ matrix.os }}.04-$(echo ${{ matrix.backend }} | sed 's#-.*##g').tgz | |
- name: '📤 Upload artifact: package' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ubuntu${{ matrix.os }}-${{ matrix.backend }} | |
path: ghdl-gha-ubuntu-*.tgz | |
if-no-files-found: error | |
# | |
# Build for MacOS | |
# | |
osx: | |
name: '🚧🚦🍎 macOS ${{ matrix.os }} ${{ matrix.backend }}' | |
runs-on: 'macOS-${{ matrix.os }}' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { os: 11, backend: mcode } | |
- { os: 11, backend: llvm } | |
- { os: 12, backend: mcode } | |
steps: | |
- name: '🧰 Checkout' | |
uses: actions/checkout@v4 | |
- name: '💾 Cache gnat' | |
id: cache-gnat | |
uses: actions/cache@v4 | |
with: | |
path: gnat | |
key: ${{ runner.os }}-gnat | |
# Although we cache this, we let the script run to check if the cache is valid (without conditions) | |
- name: '⚙ Dependencies (brew)' | |
run: ./scripts/macosx/install-ada.sh | |
- name: '🚧 Build and 🚦 Test GHDL' | |
run: | | |
ls -l /usr/local/Cellar/llvm* | |
echo $(brew --prefix llvm@15) | |
PATH=$PWD/gnat/bin:$PATH:$(brew --prefix llvm@15)/bin/ | |
./scripts/ci-run.sh -c | |
mv ghdl-*.tgz ghdl-macos-${{ matrix.os }}-${{ matrix.backend }}.tgz | |
env: | |
TASK: macosx+${{ matrix.backend }} | |
GITHUB_OS: ${{ runner.os }} | |
MACOSX_DEPLOYMENT_TARGET: '10.14' | |
- name: '📤 Upload artifact: package' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos${{ matrix.os }}-${{ matrix.backend }} | |
path: ghdl-macos-${{ matrix.os }}-${{ matrix.backend }}.tgz | |
if-no-files-found: error | |
Windows-MSYS2: | |
uses: ./.github/workflows/Windows-MSYS2.yml | |
Windows-Standalone: | |
uses: ./.github/workflows/Windows-Standalone.yml | |
Windows-pyGHDL: | |
needs: Windows-Standalone | |
uses: ./.github/workflows/Windows-pyGHDL.yml | |
# | |
# Release | |
# | |
Release: | |
name: '📦 Release' | |
runs-on: ubuntu-latest | |
needs: | |
- doc | |
- lin | |
- osx | |
- Windows-MSYS2 | |
- Windows-Standalone | |
- Windows-pyGHDL | |
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || contains(github.ref, 'refs/tags/')) | |
steps: | |
- name: '📥 Download artifacts' | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
# Tagged: create a pre-release or a release (semver) | |
# Untagged: update the assets of pre-release 'nightly' | |
- uses: pyTooling/Actions/releaser@r0 | |
with: | |
token: ${{ github.token }} | |
tag: 'nightly' | |
snapshots: false | |
files: | | |
**/*.zst | |
**/*.tgz | |
**/ghdl-*.zip | |
**/*.whl | |
**/man/ghdl.1 | |
Coverage: | |
needs: Windows-MSYS2 | |
uses: ./.github/workflows/Coverage.yml | |
secrets: inherit |