From f70e5518833ef73c8887a00bff65ac724a86eb98 Mon Sep 17 00:00:00 2001 From: Pierre Fenoll Date: Tue, 31 Aug 2021 13:38:18 +0200 Subject: [PATCH] Add Continuous Integration for Linux with GitHub Actions --- .github/workflows/ci.yml | 160 +++++++++++++++++++++++++++++++++++++++ tools/CMakeLists.txt | 7 +- 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..a03482a9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,160 @@ +name: CI + +on: + push: + pull_request: + +jobs: + build-on-ubuntu1804: + runs-on: ubuntu-18.04 + env: + RUNS_ON: ubuntu1804 + GH_WORKSPACE: /home/runner/work/wex/wex #= $GITHUB_WORKSPACE + steps: + - name: Install OS dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + build-essential \ + cmake \ + freeglut3-dev \ + g++ \ + libcurl4-openssl-dev \ + libfontconfig-dev \ + libgl1-mesa-dev \ + libgtk2.0-dev \ + mesa-common-dev \ + unzip + - name: Get GCC version + run: gcc --version + - name: Get libc version + run: ldd --version + + - name: Install wxWidgets + run: | + sudo apt-get install -y libwxgtk*-dev + sudo ln -s $(which wx-config) /usr/local/bin/wx-config-3 + wx-config-3 --cflags | grep I + + - name: Get git ref of sibling dependency LK + run: | + ref=$(git ls-remote --exit-code git://github.com/NREL/lk.git refs/heads/develop | awk '{print $1}') + echo "ref_of_lk=$ref" | tee --append $GITHUB_ENV + - name: Get cached build data of sibling dependency LK + uses: actions/cache@v2 + id: cachedlk + with: + path: ${{ env.GH_WORKSPACE }}/lk + key: ${{ env.RUNS_ON }}-${{ env.ref_of_lk }}-LK + - name: Clone sibling dependency LK + if: steps.cachedlk.outputs.cache-hit != 'true' + uses: actions/checkout@v2 + with: + ref: ${{ env.ref_of_lk }} + path: lk + repository: NREL/lk + - name: Build LK + if: steps.cachedlk.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE/lk + cmake -Bbuild_linux -DCMAKE_BUILD_TYPE=Debug + cmake --build build_linux -- -j + - name: Set LKDIR and LKD_LIB envs + run: | + echo "LKDIR=$GITHUB_WORKSPACE/lk" >>$GITHUB_ENV + echo "LKD_LIB=$GITHUB_WORKSPACE/lk/build_linux" >>$GITHUB_ENV # iff CMAKE_BUILD_TYPE=Debug + + - name: Checkout + uses: actions/checkout@v2 + with: + path: wex + - name: Build WEX + run: | + cd $GITHUB_WORKSPACE/wex + cmake -Bbuild_linux -DCMAKE_BUILD_TYPE=Debug + cmake --build build_linux + - name: Save static lib, Dview & wexsandbox + uses: actions/upload-artifact@v2 + with: + name: WEX-${{ env.RUNS_ON }}-x86_64 + path: | + ${{ env.GH_WORKSPACE }}/wex/build_linux/tools/DView* + ${{ env.GH_WORKSPACE }}/wex/build_linux/tools/wexsandbox* + ${{ env.GH_WORKSPACE }}/wex/build_linux/wex*.a + + build-on-ubuntu2004: + runs-on: ubuntu-20.04 + env: + RUNS_ON: ubuntu2004 + GH_WORKSPACE: /home/runner/work/wex/wex #= $GITHUB_WORKSPACE + steps: + - name: Install OS dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + build-essential \ + cmake \ + freeglut3-dev \ + g++ \ + libcurl4-openssl-dev \ + libfontconfig-dev \ + libgl1-mesa-dev \ + libgtk2.0-dev \ + mesa-common-dev \ + unzip + - name: Get GCC version + run: gcc --version + - name: Get libc version + run: ldd --version + + - name: Install wxWidgets + run: | + sudo apt-get install -y libwxgtk*-dev + sudo ln -s $(which wx-config) /usr/local/bin/wx-config-3 + wx-config-3 --cflags | grep I + + - name: Get git ref of sibling dependency LK + run: | + ref=$(git ls-remote --exit-code git://github.com/NREL/lk.git refs/heads/develop | awk '{print $1}') + echo "ref_of_lk=$ref" | tee --append $GITHUB_ENV + - name: Get cached build data of sibling dependency LK + uses: actions/cache@v2 + id: cachedlk + with: + path: ${{ env.GH_WORKSPACE }}/lk + key: ${{ env.RUNS_ON }}-${{ env.ref_of_lk }}-LK + - name: Clone sibling dependency LK + if: steps.cachedlk.outputs.cache-hit != 'true' + uses: actions/checkout@v2 + with: + ref: ${{ env.ref_of_lk }} + path: lk + repository: NREL/lk + - name: Build LK + if: steps.cachedlk.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE/lk + cmake -Bbuild_linux -DCMAKE_BUILD_TYPE=Debug + cmake --build build_linux -- -j + - name: Set LKDIR and LKD_LIB envs + run: | + echo "LKDIR=$GITHUB_WORKSPACE/lk" >>$GITHUB_ENV + echo "LKD_LIB=$GITHUB_WORKSPACE/lk/build_linux" >>$GITHUB_ENV # iff CMAKE_BUILD_TYPE=Debug + + - name: Checkout + uses: actions/checkout@v2 + with: + path: wex + - name: Build WEX + run: | + cd $GITHUB_WORKSPACE/wex + cmake -Bbuild_linux -DCMAKE_BUILD_TYPE=Debug + cmake --build build_linux + - name: Save static lib, Dview & wexsandbox + uses: actions/upload-artifact@v2 + with: + name: WEX-${{ env.RUNS_ON }}-x86_64 + path: | + ${{ env.GH_WORKSPACE }}/wex/build_linux/tools/DView* + ${{ env.GH_WORKSPACE }}/wex/build_linux/tools/wexsandbox* + ${{ env.GH_WORKSPACE }}/wex/build_linux/wex*.a diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index f4006a84..9246c13c 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -90,7 +90,12 @@ else () target_link_libraries(wexsandbox optimized ${LK_LIB}) endif() endif () -target_link_libraries(wexsandbox wex ${wxWidgets_LIBRARIES}) +if (UNIX AND NOT APPLE) + target_link_libraries(wexsandbox wex ${wxWidgets_LIBRARIES} ${FONTCONFIG_LIBRARY}) +else () + target_link_libraries(wexsandbox wex ${wxWidgets_LIBRARIES}) +endif () + if (UNIX) target_link_libraries(wexsandbox -ldl -lcurl)