Skip to content

Commit 27f31ff

Browse files
committed
Test setup-nvc.
1 parent 983b93e commit 27f31ff

File tree

2 files changed

+124
-36
lines changed

2 files changed

+124
-36
lines changed

.github/OsvvmRegression.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
set ::osvvm::FailOnBuildErrors "false"
22
include ../OsvvmLibraries.pro
3-
include ../RunAllTests.pro
4-
include ../RunAllTestsVti.pro
3+
# include ../RunAllTests.pro
4+
# include ../RunAllTestsVti.pro

.github/workflows/Pipeline.yml

Lines changed: 122 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,34 @@ on:
88
- cron: '0 15 * * *'
99

1010
jobs:
11+
Variables:
12+
name: Compute pipeline variables
13+
runs-on: ubuntu-24.04
14+
outputs:
15+
branch: ${{ steps.Variables.outputs.branch }}
16+
tag: ${{ steps.Variables.outputs.tag }}
17+
steps:
18+
- name: Compute variables
19+
id: Variables
20+
run: |
21+
ref="${{ github.ref }}"
22+
23+
branch=""
24+
tag="2025.xx"
25+
if [[ "${{ startsWith(github.ref, 'refs/heads/') }}" == "true" ]]; then
26+
branch="${ref:11}"
27+
elif [[ "${{ startsWith(github.ref, 'refs/tags/') }}" == "true" ]]; then
28+
tag="${ref:10}"
29+
else
30+
printf "::error title=%s::%s\n" "Variables" "Unsupported Git reference format: '${ref}'."
31+
exit 1
32+
fi
33+
34+
tee "${GITHUB_OUTPUT}" <<EOF
35+
branch=${branch}
36+
tag=${tag}
37+
EOF
38+
1139
GHDL:
1240
name: ${{ matrix.os.icon }}${{ matrix.os.name }} - GHDL ${{ matrix.backend }}
1341
runs-on: ${{ matrix.os.image }}
@@ -97,65 +125,68 @@ jobs:
97125
if-no-files-found: error
98126

99127
NVC:
100-
name: 🪟Windows - NVC
101-
runs-on: windows-2022
128+
name: ${{ matrix.icon }}${{ matrix.name }} - NVC
129+
runs-on: ${{ matrix.image }}
130+
strategy:
131+
fail-fast: false
132+
matrix:
133+
include:
134+
- {icon: "🐧", name: "Ubuntu", image: "ubuntu-24.04", shell: "bash"}
135+
# - {icon: "🪟", name: "Windows", image: "windows-2022", shell: "powershell"} # No TCL environment available. The embedded TCL of NVC doesn't contain tcllib.
136+
- {icon: "🪟🟨", name: "Windows", image: "windows-2022", shell: "msys2 {0}"}
102137

103138
defaults:
104139
run:
105-
shell: "msys2 {0}"
140+
shell: ${{ matrix.shell }}
106141

107142
steps:
108143
- name: ⏬ Checkout repository
109144
uses: actions/checkout@v4
110145
with:
111146
submodules: recursive
112147

113-
- name: 🟨 Setup MSYS2 for UCRT64
148+
- name: ${{ matrix.icon }} Setup MSYS2 for UCRT64
149+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
114150
uses: msys2/setup-msys2@v2
115151
with:
116152
msystem: ucrt64
117153
update: true
118154
install: git
119155
pacboy: tcl:p tcllib:p
120156

121-
- name: 🐧🛠️ Install NVC
157+
- name: 🐧🛠️ Install tcl and tcllib
158+
if: matrix.name == 'Ubuntu'
122159
run: |
123-
# See https://github.com/nickg/nvc/releases
124-
# and https://github.com/nickg/nvc/issues/1131
125-
NVC_VERSION="1.15.0"
126-
NVC_DATE="20250111"
127-
NVC_HASH="ec21477e"
128-
129-
ANSI_LIGHT_RED=$'\x1b[91m'
130-
ANSI_LIGHT_GREEN=$'\x1b[92m'
131-
ANSI_LIGHT_BLUE="\e[94m"
132-
ANSI_NOCOLOR=$'\x1b[0m'
133-
134-
DOWNLOAD_URL="https://github.com/nickg/nvc/releases/download/r${NVC_VERSION}/mingw-w64-ucrt-x86_64-nvc-${NVC_VERSION}.git${NVC_DATE}.${NVC_HASH}-1-any.pkg.tar.zst"
135-
printf "::group::${ANSI_LIGHT_BLUE}%s${ANSI_NOCOLOR}\n" "Downloading asset from '${DOWNLOAD_URL}' ..."
136-
curl -L "${DOWNLOAD_URL}" -o nvc.pkg.tar.zst
137-
printf "::endgroup::\n"
138-
139-
printf "::group::${ANSI_LIGHT_BLUE}%s${ANSI_NOCOLOR}\n" "Installing 'nvc.pkg.tar.zst' file ..."
140-
pacman -U --noconfirm nvc.pkg.tar.zst
141-
printf "::endgroup::\n"
142-
143-
printf "Deleting '%s' ... " "nvc.pkg.tar.zst"
144-
rm "nvc.pkg.tar.zst"
145-
if [[ $? -eq 0 ]]; then
146-
printf "%s\n" "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}"
147-
else
148-
printf "%s\n" "${ANSI_LIGHT_RED}[FAILED]${ANSI_NOCOLOR}"
149-
printf "::warning title=%s::%s\n" "setup-nvc" "Failed to remove 'nvc.pkg.tar.zst'."
150-
fi
160+
sudo apt-get update
161+
sudo apt-get install -y --no-install-recommends tcl tcllib
151162
152-
- name: 🚧 Run tests'
163+
- name: Install NVC
164+
uses: nickg/setup-nvc-ci@v1
165+
with:
166+
version: latest
167+
168+
- name: 🚧 Run tests on Ubuntu
169+
if: matrix.name == 'Ubuntu'
153170
run: |
154171
mkdir temp
155172
cd temp
156173
157174
tclsh ../.github/test.tcl StartNVC.tcl
158175
176+
- name: 🚧 Run tests on Windows + MSYS2/UCRT64
177+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
178+
run: |
179+
mkdir temp
180+
cd temp
181+
182+
ls /c/
183+
ls "/c/Program Files"
184+
tree "/c/Program Files/NVC"
185+
186+
export PATH="/c/Program\ Files/NVC/bin:$PATH"
187+
188+
tclsh ../.github/test.tcl StartNVC.tcl
189+
159190
- name: '📤 Upload artifact: logs'
160191
uses: actions/upload-artifact@v4
161192
with:
@@ -230,6 +261,7 @@ jobs:
230261
uses: actions/checkout@v4
231262
with:
232263
path: OsvvmLibraries
264+
submodules: recursive
233265

234266
- name: List content of 'OsvvmLibraries' ...
235267
run: |
@@ -241,4 +273,60 @@ jobs:
241273
name: osvvm
242274
path: |
243275
OsvvmLibraries/*
276+
include-hidden-files: true
244277
if-no-files-found: error
278+
279+
Release:
280+
uses: pyTooling/Actions/.github/workflows/NightlyRelease.yml@dev
281+
needs:
282+
- Variables
283+
- Package
284+
# if: github.ref == 'refs/tags/testing'
285+
# if: startsWith(github.ref, 'refs/tags/v')
286+
secrets: inherit
287+
permissions:
288+
contents: write
289+
actions: write
290+
attestations: write
291+
with:
292+
prerelease: true
293+
replacements: |
294+
osvvm=${{ needs.Variables.outputs.tag }}
295+
nightly_name: testing
296+
nightly_description: |
297+
This release contains all important artifacts created by OSVVM's CI pipeline.
298+
299+
# OSVVM %osvvm%
300+
301+
All Git repositories and submodules have been packaged in a single zip file. This file contains the following
302+
OSVVM components.
303+
304+
## Core Components
305+
* [OSVVM Utility Library](https://github.com/OSVVM/OSVVM)
306+
* [OSVVM Model Independent Transactions](https://github.com/OSVVM/OSVVM-Common)
307+
308+
## Verification Components
309+
* [AXI4](https://github.com/OSVVM/AXI4)
310+
* [CoSim](https://github.com/OSVVM/CoSim)
311+
* [DpRam](https://github.com/OSVVM/DpRam)
312+
* [Ethernet](https://github.com/OSVVM/Ethernet)
313+
* [UART](https://github.com/OSVVM/UART)
314+
315+
## Third-Party Verification Components
316+
* [SPI (by Guy Eschemann)](https://github.com/OSVVM/SPI_GuyEschemann)
317+
* [VideoBus (by Louis Adriaens)](https://github.com/OSVVM/VideoBus_LouisAdriaens)
318+
319+
## Scripting
320+
* [OSVVM Scripts](https://github.com/OSVVM/OSVVM-Scripts)
321+
322+
## Documentation
323+
324+
* [Documentation](https://github.com/OSVVM/Documentation)
325+
326+
inventory-json: "inventory.json"
327+
inventory-version: ${{ needs.Variables.outputs.tag }}
328+
inventory-categories: "kind"
329+
assets: |
330+
osvvm: !OsvvmLibraries-%osvvm%.zip: osvvm,zip: OsvvmLibraries - %osvvm% - all-in-one (ZIP)
331+
osvvm: $OsvvmLibraries-%osvvm%.tar.gz: osvvm,tgz: OsvvmLibraries - %osvvm% - all-in-one (TAR/GZ)
332+
osvvm: $OsvvmLibraries-%osvvm%.tar.zst: osvvm,tzst: OsvvmLibraries - %osvvm% - all-in-one (TAR/ZST)

0 commit comments

Comments
 (0)