Try to install in local directory, because of artifact collection. #388
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: Pipeline | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
# Every Friday at 22:00 - rerun pipeline to check for dependency-based issues | |
- cron: '0 22 * * 5' | |
jobs: | |
UnitTestingParams: | |
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev | |
with: | |
name: pyEDAA.CLITool | |
CompileUbuntu: | |
name: Compile GHDL on Ubuntu 2024.04 (LTS) | |
runs-on: "ubuntu-24.04" | |
strategy: | |
fail-fast: false | |
matrix: | |
backend: [mcode, llvm] | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ghdl/ghdl | |
- name: 🔧 Install dependencies | |
run: | | |
[ '${{ matrix.backend }}' == 'llvm' ] && LLVM_ARGS='llvm clang' || unset LLVM_ARGS | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends gcc g++ gnat $LLVM_ARGS | |
- name: Prepare build environemnt | |
run: | | |
mkdir -p build/${{ matrix.backend }} | |
./configure --help | |
- name: ⚙ Configure | |
run: | | |
cd build/${{ matrix.backend }} | |
[ '${{ matrix.backend }}' == 'llvm' ] && LLVM_ARGS='--with-llvm-config' || unset LLVM_ARGS | |
NPROC=$(nproc) | |
GNATMAKE="gnatmake -j$NPROC" \ | |
MAKE="make -j$NPROC" \ | |
../../configure --prefix=/opt/ghdl-${{ matrix.backend }} $LLVM_ARGS | |
- name: 🔨 Make | |
run: | | |
cd build/${{ matrix.backend }} | |
make | |
- name: 📋 Install | |
run: | | |
cd build/${{ matrix.backend }} | |
sudo make install | |
- name: 📤 Upload 'GHDL' artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ghdl-ubuntu-24.04-x86_64-${{ matrix.backend }} | |
path: /opt/ghdl-${{ matrix.backend }}/ | |
if-no-files-found: error | |
retention-days: 1 | |
CompileMacOS: | |
name: Compile GHDL on macOS 14.0 (aarch64) | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
backend: [mcode, llvm] | |
env: | |
GNAT_ARCH: "aarch64" | |
GNAT_VERSION: "14.1.0-3" | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ghdl/ghdl | |
- name: Install dependencies | |
run: | | |
brew install llvm | |
echo "LLVM_BINARY_PATH=$(brew --prefix llvm)/bin" >> $GITHUB_ENV | |
- name: Install GNAT | |
run: | | |
GNAT_NAME="gnat-${{ env.GNAT_ARCH }}-darwin-${{ env.GNAT_VERSION }}" | |
GNAT_URL="https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-${{ env.GNAT_VERSION }}/${GNAT_NAME}.tar.gz" | |
echo "Downloading GNAT ${{ env.GNAT_VERSION }} (${{ env.GNAT_ARCH }}) from '$GNAT_URL'" | |
wget -q --show-progress --progress=bar:force:noscroll -O GNAT.tar.gz "$GNAT_URL" | |
test $? -ne 0 && echo -e "ERROR: Downloading '$GNAT_URL'" && exit 1 | |
ls -lAh | |
tar -zxf GNAT.tar.gz && rm GNAT.tar.gz | |
test $? -ne 0 && echo -e "ERROR: Extracting 'GNAT.tar.gz'" && exit 1 | |
mv ${GNAT_NAME} gnat | |
echo "ls gnat" | |
ls -lAh gnat | |
echo "ls gnat/bin" | |
ls -lAh gnat/bin | |
./gnat/bin/gnatls -v | |
echo "PWD: $(pwd)" | |
ls -lAh $(pwd)/gnat | |
ls -lAh $(pwd)/gnat/bin | |
echo "GNAT_BINARY_PATH=$(pwd)/gnat/bin" >> $GITHUB_ENV | |
- name: Prepare build environemnt | |
run: | | |
mkdir -p build/${{ matrix.backend }} | |
echo $PATH | |
echo "PATH=$GNAT_BINARY_PATH:$LLVM_BINARY_PATH:$PATH" >> $GITHUB_ENV | |
- name: Check build environemnt | |
run: | | |
echo $PATH | |
ls -lAh $(pwd) | |
ls -lAh /Users/runner/work/pyEDAA.CLITool/pyEDAA.CLITool/gnat/bin | |
echo "which gnat: $(which gnat) ($($(which gnat) --version))" | |
echo "which gnatmake: $(which gnatmake) ($($(which gnatmake) --version))" | |
echo "which llvm-config: $(which llvm-config) ($($(which llvm-config) --version))" | |
- name: ⚙ Configure | |
run: | | |
cd build/${{ matrix.backend }} | |
[ '${{ matrix.backend }}' == 'llvm' ] && LLVM_ARGS='--with-llvm-config' || unset LLVM_ARGS | |
# Use static libs (including libzstd) and dead-strip (to avoid libz3) | |
libzstd=$(brew --prefix zstd)/lib/libzstd.a | |
export LLVM_LDFLAGS="$(llvm-config --link-static --libfiles --system-libs | sed -e s@-lzstd@$libzstd@) -Wl,-dead_strip,-dead_strip_dylibs" | |
echo $LLVM_LDFLAGS | |
# Use classic ld and not lld (which simply crashes) | |
NPROC=$(sysctl -n hw.logicalcpu) | |
GNATMAKE="gnatmake -j$NPROC" \ | |
MAKE="make -j$NPROC" \ | |
LDFLAGS=-Wl,-ld_classic \ | |
../../configure --prefix=/opt/ghdl-${{ matrix.backend }} $LLVM_ARGS | |
- name: 🔨 Make | |
run: | | |
cd build/${{ matrix.backend }} | |
make | |
- name: 📋 Install | |
run: | | |
cd build/${{ matrix.backend }} | |
sudo make install | |
- name: 📤 Upload 'GHDL' artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ghdl-macos-14.0-aarch64-${{ matrix.backend }} | |
path: /opt/ghdl-${{ matrix.backend }}/ | |
if-no-files-found: error | |
retention-days: 1 | |
CompileWindows: | |
name: Compile GHDL on Windows Server | |
runs-on: windows-latest | |
env: | |
msys2_packages: "make" | |
common_packages: "gcc:p gcc-ada:p diffutils:p" | |
mcode_packages: "" | |
llvm_packages: "llvm:p clang:p" | |
strategy: | |
fail-fast: false | |
matrix: | |
runtime: [mingw64, ucrt64] | |
backend: [mcode, llvm] | |
defaults: | |
run: | |
shell: "msys2 {0}" | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ghdl/ghdl | |
- name: '🟦 Setup MSYS2 for ${{ matrix.runtime }}' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.runtime }} | |
update: true | |
install: ${{ env.msys2_packages }} | |
pacboy: "${{ env.common_packages }} ${{ env.mcode_packages }} ${{ env.llvm_packages }}" | |
- name: Check build environemnt | |
run: | | |
echo "which gnat: $(which gnat) ($($(which gnat) --version))" | |
echo "which gnatmake: $(which gnatmake) ($($(which gnatmake) --version))" | |
echo "which llvm-config: $(which llvm-config) ($($(which llvm-config) --version))" | |
- name: Prepare build environemnt | |
run: | | |
mkdir -p build/${{ matrix.backend }} | |
mkdir -p install | |
- name: ⚙ Configure | |
run: | | |
cd build/${{ matrix.backend }} | |
[ '${{ matrix.backend }}' == 'llvm' ] && LLVM_ARGS='--with-llvm-config' || unset LLVM_ARGS | |
NPROC=$(nproc) | |
GNATMAKE="gnatmake -j$NPROC" \ | |
MAKE="make -j$NPROC" \ | |
../../configure --prefix=../install/ghdl-${{ matrix.runtime }}-${{ matrix.backend }} $LLVM_ARGS | |
- name: 🔨 Make | |
run: | | |
cd build/${{ matrix.backend }} | |
make | |
- name: 📋 Install | |
run: | | |
cd build/${{ matrix.backend }} | |
make install | |
- name: Debug | |
run: | | |
ls -lAh ./install | |
ls -lAh ./install/ghdl-${{ matrix.runtime }}-${{ matrix.backend }} | |
ls -lAh ./install/ghdl-${{ matrix.runtime }}-${{ matrix.backend }}/bin | |
- name: 📤 Upload 'GHDL' artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ghdl-windows-${{ matrix.runtime }}-${{ matrix.backend }} | |
path: ./install/ghdl-${{ matrix.runtime }}-${{ matrix.backend }}/ | |
if-no-files-found: error | |
retention-days: 1 | |
UnitTesting: | |
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev | |
needs: | |
- UnitTestingParams | |
# - CompileUbuntu | |
- CompileMacOS | |
- CompileWindows | |
with: | |
jobs: ${{ needs.UnitTestingParams.outputs.python_jobs }} | |
apt: ghdl-mcode | |
brew: --cask ghdl | |
pacboy: ghdl | |
ubuntu_before_script: | | |
which ghdl | |
ghdl version | |
echo "GHDL_PREFIX=/usr/lib/x86_64-linux-gnu/ >> $GITHUB_ENV" | |
echo "GHDL_PREFIX=/usr/lib/x86_64-linux-gnu/" >> $GITHUB_ENV | |
macos_arm_before_script: | | |
which ghdl | |
ghdl version | |
echo $(brew --prefix llvm@15) | |
export DYLD_LIBRARY_PATH=$(brew --prefix llvm@15)/lib | |
echo -$DYLD_LIBRARY_PATH- | |
echo "DYLD_LIBRARY_PATH=$(brew --prefix llvm@15)/lib" >> $GITHUB_ENV | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl) >> $GITHUB_ENV" | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl)" >> $GITHUB_ENV | |
ls -lAh "$(realpath $(dirname $(which ghdl))/../lib)" | |
echo "----" | |
ls $(brew --prefix llvm@15)/lib | |
mingw64_before_script: | | |
which ghdl | |
ghdl version | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl) >> $GITHUB_ENV" | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl)" >> $GITHUB_ENV | |
# ls -lAh "$(realpath $(dirname $(which ghdl))/../lib)" | |
ucrt64_before_script: | | |
which ghdl | |
ghdl version | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl) >> $GITHUB_ENV" | |
echo "GHDL_PREFIX=$(realpath $(dirname $(which ghdl))/../lib/ghdl)" >> $GITHUB_ENV | |
# ls -lAh "$(realpath $(dirname $(which ghdl))/../lib)" | |
# ubuntu_before_script: sudo install -m 755 tests/mock/ghdl /usr/local/bin | |
requirements: "-r tests/unit/requirements.txt" | |
unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} | |
StaticTypeCheck: | |
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev | |
needs: | |
- UnitTestingParams | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
commands: | | |
touch pyEDAA/__init__.py | |
mypy --html-report htmlmypy -p pyEDAA.CLITool | |
html_report: 'htmlmypy' | |
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
DocCoverage: | |
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@dev | |
needs: | |
- UnitTestingParams | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
directory: pyEDAA/CLITool | |
fail_under: 75 | |
Package: | |
uses: pyTooling/Actions/.github/workflows/Package.yml@dev | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
PublishCoverageResults: | |
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@dev | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
with: | |
coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
coverage_html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
secrets: | |
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
PublishTestResults: | |
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
with: | |
additional_merge_args: '"--pytest=rewrite-dunder-init;reduce-depth:pytest.tests.unit" --render=tree' | |
merged_junit_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
IntermediateCleanUp: | |
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@dev | |
needs: | |
- UnitTestingParams | |
- PublishCoverageResults | |
- PublishTestResults | |
- HTMLDocumentation | |
with: | |
sqlite_coverage_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}- | |
xml_unittest_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}- | |
# VerifyDocs: | |
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@dev | |
# needs: | |
# - UnitTestingParams | |
# with: | |
# python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
HTMLDocumentation: | |
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@dev | |
needs: | |
- UnitTestingParams | |
- PublishTestResults | |
- PublishCoverageResults | |
# - VerifyDocs | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} | |
PDFDocumentation: | |
uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@dev | |
needs: | |
- UnitTestingParams | |
- HTMLDocumentation | |
with: | |
document: pyEDAA.CLITool | |
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} | |
pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} | |
PublishToGitHubPages: | |
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev | |
needs: | |
- UnitTestingParams | |
- HTMLDocumentation | |
# - PDFDocumentation | |
- PublishCoverageResults | |
- StaticTypeCheck | |
with: | |
doc: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
# coverage: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
ReleasePage: | |
uses: pyTooling/Actions/.github/workflows/Release.yml@dev | |
if: startsWith(github.ref, 'refs/tags') | |
needs: | |
- PublishToGitHubPages | |
PublishOnPyPI: | |
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev | |
if: startsWith(github.ref, 'refs/tags') | |
needs: | |
- UnitTestingParams | |
- ReleasePage | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
requirements: -r dist/requirements.txt | |
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
secrets: | |
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | |
ArtifactCleanUp: | |
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
- StaticTypeCheck | |
- HTMLDocumentation | |
# - PDFDocumentation | |
- PublishTestResults | |
- PublishCoverageResults | |
- PublishToGitHubPages | |
with: | |
package: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
remaining: | | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} | |
# ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} |