diff --git a/.github/workflows/c_actions.yml b/.github/workflows/c_actions.yml index 46226cd97e..aaf24ccb7a 100644 --- a/.github/workflows/c_actions.yml +++ b/.github/workflows/c_actions.yml @@ -96,7 +96,8 @@ jobs: timeout-minutes: 60 strategy: matrix: - runner: [ubuntu-latest, windows-latest, macos-latest] + #runner: [ubuntu-latest, windows-latest, macos-latest] + runner: [ubuntu-latest, windows-latest] steps: - name: Prepare diff --git a/.github/workflows/macos_actions.yml b/.github/workflows/macos_actions.yml new file mode 100644 index 0000000000..77780f5908 --- /dev/null +++ b/.github/workflows/macos_actions.yml @@ -0,0 +1,139 @@ +# Copyright (c) 2020 The University of Manchester +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This workflow will install Python dependencies, run tests, lint and rat with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: C Actions +on: [push] +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Prepare + uses: SpiNNakerManchester/SupportScripts/actions/prepare@main + with: + checkout_dependencies: spinnaker_tools spinn_common SpiNNFrontEndCommon + install_dependencies: SpiNNUtils + install_module: false + install_check_tools: false + ubuntu_packages: doxygen gcc-arm-none-eabi + + - name: Set environment variables + run: | + echo "SPINN_DIRS=$PWD/spinnaker_tools" >> $GITHUB_ENV + echo "NEURAL_MODELLING_DIRS=$PWD/neural_modelling" >> $GITHUB_ENV + echo "C_LOGS_DICT=$PWD/logs.sqlite3" >> $GITHUB_ENV + + - name: Lint C code using Vera++ + uses: SpiNNakerManchester/SupportScripts/actions/vera@main + with: + base-dir: neural_modelling/src + + - name: Build C dependencies + run: | + make -C $SPINN_DIRS + make -C spinn_common install + + - name: Build FEC C code + run: make + working-directory: SpiNNFrontEndCommon/c_common + env: + CFLAGS: -fdiagnostics-color=always + + - name: Build PYNN C code + run: make + working-directory: neural_modelling + env: + CFLAGS: -fdiagnostics-color=always + + - name: Build C code in DEBUG mode + run: make clean; make SPYNNAKER_DEBUG=DEBUG + working-directory: neural_modelling + env: + CFLAGS: -fdiagnostics-color=always + + - name: Build documentation using doxygen + run: make doxysetup doxygen + working-directory: neural_modelling + + - name: Upload Fec binaries + uses: actions/upload-artifact@v4 + with: + name: fec_binaries + path: SpiNNFrontEndCommon/spinn_front_end_common/common_model_binaries/*.aplx + retention-days: 5 + + - name: Upload PyNN binaries + uses: actions/upload-artifact@v4 + with: + name: pynn_binaries + path: spynnaker/pyNN/model_binaries/*.aplx + retention-days: 5 + + - name: Upload log.sqlite3s + uses: actions/upload-artifact@v4 + with: + name: logs.sqlite3 + path: logs.sqlite3 + retention-days: 5 + + test: + needs: build + runs-on: macos-latest + timeout-minutes: 60 + steps: + - name: Prepare + uses: SpiNNakerManchester/SupportScripts/actions/prepare@main + with: + install_dependencies: > + SpiNNUtils SpiNNMachine SpiNNMan PACMAN spalloc + SpiNNFrontEndCommon TestBase + install_module: true + install_check_tools: false + ubuntu_packages: graphviz + cfg_file: spynnaker + + - name: Download Fec binaries + uses: actions/download-artifact@v4 + with: + name: fec_binaries + # Need to go into spynnaker as FEC will have been moved by install + path: external_binaries + + - name: Download PyNN Binaries + uses: actions/download-artifact@v4 + with: + name: pynn_binaries + path: external_binaries + + - name: Download logs.sqlite3 + uses: actions/download-artifact@v4 + with: + name: logs.sqlite3 + path: external_binaries + + - name: Append cfg + # Doing this in the prepare action ended with a different path + run: | + echo '[Mapping]' >> ~/.spynnaker.cfg + echo "external_binaries=$PWD/external_binaries" >> ~/.spynnaker.cfg + cat ~/.spynnaker.cfg + + - name: Test with pytest and proxy + env: + SPALLOC_USER: ${{ secrets.SPALLOC_USER }} + SPALLOC_PASSWORD: ${{ secrets.SPALLOC_PASSWORD }} + run: pytest proxy_integration_tests