]> begriffs open source - cmsis/blob - .github/workflows/corevalidation.yml
Update gen-pack lib bootstrap
[cmsis] / .github / workflows / corevalidation.yml
1 name: CoreValidation
2 on:
3   workflow_dispatch:
4   pull_request:
5     paths: 
6       - .github/workflows/corevalidation.yml
7       - .github/workflows/corevalidation-report.yml
8       - CMSIS/Core/Include/**/*
9       - CMSIS/Core/Source/**/*
10       - CMSIS/CoreValidation/**/*
11   push:
12     branches: [main]
13   
14 concurrency:
15   group: ${{ github.workflow }}-${{ github.ref }}
16   cancel-in-progress: true
17
18 jobs:
19   build-and-run:
20     
21     strategy:
22       fail-fast: true
23       matrix:
24         compiler: [AC6, GCC, Clang]
25     
26     runs-on: ubuntu-latest
27
28     env:
29       ARM_UBL_ACTIVATION_CODE: ${{ secrets.ARM_UBL_ACTIVATION_CODE }}
30
31     steps:
32       - run: |
33           sudo add-apt-repository ppa:deadsnakes/ppa
34           sudo apt-get install libpython3.9
35
36       - uses: actions/checkout@v4
37
38       - working-directory: /home/runner
39         env:
40           GH_TOKEN: ${{ github.token }}
41         run: |
42           if [ -d Cortex_DFP ]; then
43             cd Cortex_DFP
44             git fetch origin main
45             git checkout -f origin/main
46           else
47             gh repo clone ARM-software/Cortex_DFP
48           fi
49
50       - uses: actions/setup-python@v4
51         with:
52           python-version: '3.10'    
53           cache: 'pip'
54
55       - name: Python requirements
56         run: |
57           pip install -r ./CMSIS/CoreValidation/Project/requirements.txt
58
59       - name: Cache vcpkg
60         uses: actions/cache@v3
61         with:
62           key: vcpkg-${{ runner.os }}-${{ runner.arch }}-${{ github.run_id }}-${{ matrix.compiler }}
63           restore-keys: |
64             vcpkg-${{ runner.os }}-${{ runner.arch }}-
65           path: /home/runner/.vcpkg
66
67       - name: Install LLVM/Clang dependencies
68         if: matrix.compiler == 'Clang'
69         working-directory: /home/runner
70         run: |
71           sudo apt-get update
72           sudo apt-get install libtinfo5
73     
74       - name: Prepare vcpkg env
75         working-directory: ./CMSIS/CoreValidation/Project
76         run: |
77           . <(curl https://aka.ms/vcpkg-init.sh -L)
78           vcpkg x-update-registry --all
79           vcpkg activate
80           
81           echo "Fix library search path for VHT models"
82           echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(dirname $(which VHT_MPS2_Cortex-M3))" >> $GITHUB_ENV
83
84           echo "Fix execute permissions for VHT models"
85           chmod +x $(dirname $(which VHT_MPS2_Cortex-M3))/VHT_*
86
87           echo "Patch CMSIS-Toolbox"
88           pushd $(dirname $(which cbuild))/../etc
89           curl -O https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/main/tools/buildmgr/cbuildgen/config/CLANG.17.0.1.cmake
90           popd
91
92       - name: Activate Arm tool license
93         working-directory: ./CMSIS/CoreValidation/Project
94         run: |
95           . /home/runner/.vcpkg/vcpkg-init
96           vcpkg activate
97           if [[ -n "${{ env.ARM_UBL_ACTIVATION_CODE }}" ]]; then
98             armlm activate --code ${{ env.ARM_UBL_ACTIVATION_CODE }}
99           else
100             armlm activate --server https://mdk-preview.keil.arm.com --product KEMDK-COM0
101           fi
102         
103       - name: Initialize CodeQL
104         if: matrix.compiler == 'GCC'
105         uses: github/codeql-action/init@v2
106         with:
107           languages: cpp
108           queries: security-and-quality
109
110       - uses: ammaraskar/gcc-problem-matcher@master
111         if: matrix.compiler == 'Clang' || matrix.compiler == 'GCC'
112
113       - name: Build
114         working-directory: ./CMSIS/CoreValidation/Project
115         run: |
116           . /home/runner/.vcpkg/vcpkg-init
117           vcpkg activate
118
119           echo "Register local Cortex_DFP pack"
120           cpackget add /home/runner/Cortex_DFP/ARM.Cortex_DFP.pdsc
121
122           echo "Build test projects ..."
123           ./build.py --verbose -m VHT -c ${{ matrix.compiler }} build || echo "::warning::=== Some configurations failed to build! ==="
124
125       - name: Perform CodeQL Analysis
126         if: ${{ !cancelled() && matrix.compiler == 'GCC' }}
127         uses: github/codeql-action/analyze@v2
128
129       - name: Execute
130         if: ${{ env.ARM_UBL_ACTIVATION_CODE }}
131         working-directory: ./CMSIS/CoreValidation/Project
132         run: |
133           . /home/runner/.vcpkg/vcpkg-init
134           vcpkg activate
135       
136           echo "Run test projects ..."
137           ./build.py --verbose -m VHT -c ${{ matrix.compiler }} -d "CM[047]*" -d "CM3" -d "CM[23]3*" run || echo "::warning::==== Some configurations failed to run! ==="
138
139       - name: Deactivate Arm tool license
140         if: always()
141         working-directory: ./CMSIS/CoreValidation/Project
142         run: |
143           . /home/runner/.vcpkg/vcpkg-init
144           vcpkg activate
145           if [[ -n "${{ env.ARM_UBL_ACTIVATION_CODE }}" ]]; then
146             armlm deactivate --code ${{ env.ARM_UBL_ACTIVATION_CODE }}
147           else
148             armlm deactivate --product KEMDK-COM0
149           fi
150
151       - name: Archive Test Reports
152         if: ${{ !cancelled() && env.ARM_UBL_ACTIVATION_CODE }}
153         uses: actions/upload-artifact@v3
154         with:
155           name: test-results-${{ matrix.compiler }}
156           path: ./CMSIS/CoreValidation/Project/build/*.junit
157
158   event-file:
159     needs: [build-and-run]
160     runs-on: ubuntu-latest
161     steps:
162       - name: Archive event file
163         if: ${{ !cancelled() }}
164         uses: actions/upload-artifact@v3
165         with:
166           name: EventFile
167           path: ${{ github.event_path }}