From 294853896abf326b9b44a8ada646c6af170cc07b Mon Sep 17 00:00:00 2001 From: Alexander Krimm Date: Wed, 24 Apr 2024 17:07:37 +0200 Subject: [PATCH] CI: use gnuradio4 docker container --- .github/workflows/build_cmake.yml | 66 ++++++++++------------------ cmake/Dependencies.cmake | 10 ++++- src/service/cmake/Dependencies.cmake | 2 +- src/ui/cmake/Dependencies.cmake | 2 +- 4 files changed, 32 insertions(+), 48 deletions(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index 8956f134..4e7d5fa7 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -10,71 +10,45 @@ on: permissions: contents: read pages: write + packages: read id-token: write jobs: build: name: "${{ matrix.configurations.name }} | ${{ matrix.cmake-build-type }}" - environment: configure coverage - runs-on: ${{ matrix.configurations.os }} + runs-on: ubuntu-latest + container: "ghcr.io/fair-acc/gr4-build-container:latest" strategy: fail-fast: false matrix: configurations: - - name: Ubuntu gcc 13 - os: ubuntu-22.04 - compiler: gcc13 - # - name: Ubuntu Latest clang - # os: ubuntu-22.04 # pre-release, ubuntu-latest still points to ubuntu-2004 - # compiler: clang - # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + - name: Ubuntu gcc 14 + compiler: gcc-14 cmake-build-type: [ Release, Debug ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: - fetch-depth: 100 + fetch-depth: 0 - name: Cache - uses: actions/cache@v3 + uses: actions/cache@v4 env: cache-name: cache-fetchContent-cache with: path: ${{runner.workspace}}/build/_deps - key: ${{ runner.os }}-${{ matrix.configurations.compiler }}-${{ matrix.cmake-build-type }}-${{ hashFiles('CMakeLists.txt') }}-${{ hashFiles('cmake/Dependencies.cmake') }} - - - name: Install emscripten - shell: bash - run: | - cd - git clone --depth=1 https://github.com/emscripten-core/emsdk.git - cd emsdk - # Download and install emscripten. - ./emsdk install 3.1.51 # (2023-12-14) - # Make "active" for the current user. (writes .emscripten file) - ./emsdk activate 3.1.51 - - - name: Install gcovr - shell: bash - if: matrix.cmake-build-type == 'Debug' - run: | - python3 -m pip install gcovr --user --no-warn-script-location - gcovr --version - - - name: Install gcc-13 - run: | - sudo apt-get install -y gcc-13 g++-13 # gcovr # packaged gcovr is too old for gcc13 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 110 --slave /usr/bin/g++ g++ /usr/bin/g++-13 --slave /usr/bin/gcov gcov /usr/bin/gcov-13 + key: ${{ matrix.configurations.compiler }}-${{ matrix.cmake-build-type }}-${{ hashFiles('CMakeLists.txt') }}-${{ hashFiles('cmake/Dependencies.cmake') }} - name: Install openGL run: | sudo apt update sudo apt install -y libx11-dev libgl1-mesa-dev libsdl2-dev - # Temporary dependencies for gr-digitizers (should become runtime dependency) - name: "Install timing system dependencies: etherbone" shell: bash run: | + sudo apt-get update + sudo apt-get -y install build-essential autoconf automake libtool git clone --branch v2.1.3 --depth=1 https://ohwr.org/project/etherbone-core.git cd etherbone-core/api touch ChangeLog # add an empty changelog file which is required by autotools @@ -101,29 +75,33 @@ jobs: wget -O - https://labs.picotech.com/Release.gpg.key|sudo apt-key add - sudo add-apt-repository 'deb https://labs.picotech.com/rc/picoscope7/debian/ picoscope main' sudo apt update - sudo apt install -y udev libusb-1.0-0-dev libps3000a libps4000a libps5000a libps6000 libps6000a || true # ignore udev errors in post install because of udev in container + sudo apt install -y udev libusb-1.0-0-dev libps3000a libps4000a libps5000a libps6000 libps6000a libx11-dev libgl1-mesa-dev libsdl2-dev || true # ignore udev errors in post install because of udev in container - name: Configure CMake shell: bash + env: + CC: gcc-14 + CXX: g++-14 run: | - export SYSTEM_NODE=`which node` # use system node instead of old version distributed with emsdk for threading support - source ~/emsdk/emsdk_env.sh + $EMSDK_HOME/emsdk activate $EMSDK_VERSION + source $EMSDK_HOME/emsdk_env.sh cmake -S . -B ../build -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} -DEMCMAKE_COMMAND=`which emcmake` - name: Build shell: bash run: | - source ~/emsdk/emsdk_env.sh + $EMSDK_HOME/emsdk activate $EMSDK_VERSION + source $EMSDK_HOME/emsdk_env.sh cmake --build ../build - name: execute tests - if: matrix.configurations.compiler != 'gcc13' || matrix.cmake-build-type != 'Debug' + if: matrix.configurations.compiler != 'gcc-14' || matrix.cmake-build-type != 'Debug' working-directory: ${{runner.workspace}}/build shell: bash run: ctest --output-on-failure - name: execute tests with coverage - if: matrix.configurations.compiler == 'gcc13' && matrix.cmake-build-type == 'Debug' + if: matrix.configurations.compiler == 'gcc-14' && matrix.cmake-build-type == 'Debug' working-directory: ${{runner.workspace}}/build shell: bash run: cmake --build . --target opendigitizer_coverage @@ -144,7 +122,7 @@ jobs: name: Deploy to GitHub Pages if: ${{ github.ref_name == 'main' && github.event_name == 'push' }} environment: github-pages - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: build steps: - name: "Setup Pages" diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 665b548a..e7c050b9 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -1,15 +1,21 @@ include(FetchContent) +FetchContent_Declare( + graph-prototype + GIT_REPOSITORY https://github.com/fair-acc/graph-prototype.git + GIT_TAG 5d73fd21d6c0478b6cc37b6b51e741b6dd5458a1 # main as of 2024-04-24 +) + FetchContent_Declare( opencmw-cpp GIT_REPOSITORY https://github.com/fair-acc/opencmw-cpp.git - GIT_TAG c7236c423f4f1f4de8a762c1e946f6ad76cd0a8d # main as of 2024-03-13 + GIT_TAG aa502486f4ed7fd8849d992b415f33b628b09fd4 # main as of 2024-04-25 ) FetchContent_Declare( graph-prototype GIT_REPOSITORY https://github.com/fair-acc/graph-prototype.git - GIT_TAG 3cb5c2aff7046bc3760ccd8f8b701cbde361ecfd # main as of 2024-04-05 + GIT_TAG 5e15e8478d267a5e74fdd3b310a7483a690fe1b4 # main as of 2024-04-25 ) FetchContent_Declare( diff --git a/src/service/cmake/Dependencies.cmake b/src/service/cmake/Dependencies.cmake index 29bfb610..3b1c5058 100644 --- a/src/service/cmake/Dependencies.cmake +++ b/src/service/cmake/Dependencies.cmake @@ -5,7 +5,7 @@ include(FetchContent) FetchContent_Declare( gr-digitizers GIT_REPOSITORY https://github.com/fair-acc/gr-digitizers.git - GIT_TAG 417f997f696f2bdaadfaf41ac7d8a339a95481be # dev-prototype as of 2024-04-05 + GIT_TAG ciUseDocker # 417f997f696f2bdaadfaf41ac7d8a339a95481be # dev-prototype as of 2024-04-05 ) FetchContent_MakeAvailable(gr-digitizers) diff --git a/src/ui/cmake/Dependencies.cmake b/src/ui/cmake/Dependencies.cmake index 93b1dbfa..d61071b4 100644 --- a/src/ui/cmake/Dependencies.cmake +++ b/src/ui/cmake/Dependencies.cmake @@ -49,7 +49,7 @@ FetchContent_Declare( FetchContent_Declare( graph-prototype GIT_REPOSITORY https://github.com/fair-acc/graph-prototype.git - GIT_TAG 3cb5c2aff7046bc3760ccd8f8b701cbde361ecfd # main as of 2024-04-05 + GIT_TAG 5e15e8478d267a5e74fdd3b310a7483a690fe1b4 # main as of 2024-04-25 ) FetchContent_MakeAvailable(imgui implot imgui-node-editor yaml-cpp stb opencmw-cpp plf_colony graph-prototype)