From c4c426ed747c9f17684967c339b62ce96db81ab9 Mon Sep 17 00:00:00 2001 From: Andy Alt Date: Sat, 20 Aug 2022 17:29:38 -0500 Subject: [PATCH] workflows/cmake.yml:add tests for recent gcc versions;migrate to checkoutv3 (#250) * workflows/cmake.yml:test on Ubuntu Jammy (22.04);migrate to checkoutv3 This should also fix #247 * maybe fix ssh link error on Ubuntu Jammy gcc and clang build is failing on Jammy with the message: 'cannot find -lssh: No such file or directory' Basically I added libcurl-openssl-dev to the deps * remove libcurl4-gnutls-dev Trying to correct: The following packages have unmet dependencies: libcurl4-gnutls-dev : Conflicts: libcurl4-openssl-dev but 7.81.0-1ubuntu1.3 is to be installed libcurl4-openssl-dev : Conflicts: libcurl4-gnutls-dev but 7.81.0-1ubuntu1.3 is to be installed E: Unable to correct problems, you have held broken packages. An error occurred while installing build dependencies. * use cmake FindCURL module * for OpenSSL, use include instead of find_package * remove jammy, add gcc-10 and 11 test * revert now-unrelated changes * clean-up * add VERBOSE flag to make * Update .github/workflows/cmake.yml * Update .github/workflows/cmake.yml * use '-f' option from build script to force clang * force dynamic libs with '-d' fixes #251 * mk/linux/setupBuildDeps.sh:fix script so 22.04 is detected *remove vlc deps (not required for the CI) *remove ubuntu-18.04 from the build matrix, see https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/ * revert removal of commented macos jobs * run apt-get update and upgrade * cleanup Prep snapshot section --- .github/workflows/cmake.yml | 69 ++++++++++++++++------------------ .github/workflows/snapshot.yml | 39 +++++++++++++++++++ mk/linux/setupBuildDeps.sh | 14 +++---- 3 files changed, 77 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/snapshot.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 74eb4302..d616f2d5 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -15,49 +15,46 @@ jobs: fail-fast: false matrix: arch: [x64] - os: [ubuntu-18.04, ubuntu-latest] + os: [ubuntu-20.04, ubuntu-22.04] compiler: [gcc, clang] runs-on: ${{ matrix.os }} - + env: + MATRIX_COMPILER: ${{matrix.compiler}} + MATRIX_OS: ${{matrix.os}} steps: - - uses: actions/checkout@v2 - + - uses: actions/checkout@v3 - name: Get dependencies run: | - sudo apt update + sudo apt-get update && sudo apt-get upgrade sudo mk/linux/setupBuildDeps.sh + - name: Build + run: | + if [ "${MATRIX_COMPILER}" = "clang" ]; then + EXTRA_OPTS="-f" + fi + mk/linux/build-mg.sh -m -d ${EXTRA_OPTS} + make -C mk/linux/build -j$(nproc) VERBOSE=1 - - name: Bulid MegaGlest With GCC Compiler - if: ${{ matrix.compiler == 'gcc' }} - env: - CC: gcc - CXX: g++ - run: mk/linux/build-mg.sh - - - name: Bulid MegaGlest With Clang Compiler - if: ${{ matrix.compiler == 'clang' }} - env: - CC: clang - CXX: clang++ - run: mk/linux/build-mg.sh - - - name: Prepare Snapshot - if: ${{ matrix.compiler == 'gcc' && matrix.os == 'ubuntu-latest' }} + build-linux-other: + strategy: + fail-fast: false + matrix: + compiler: [10, 12] # 11 is on 22.04 by default, tested above + runs-on: ubuntu-22.04 + env: + CC: gcc-${{matrix.compiler}} + CXX: g++-${{matrix.compiler}} + steps: + - uses: actions/checkout@v3 + - name: Get dependencies run: | - cp mk/shared/*.ini mk/linux/ - strip -g mk/linux/megaglest mk/linux/megaglest_editor mk/linux/megaglest_g3dviewer - - - name: Create Mega Glest Snapshot - if: ${{ matrix.compiler == 'gcc' && matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v2 - with: - name: megaglest-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.compiler }} - path: | - mk/linux/megaglest - mk/linux/megaglest_editor - mk/linux/megaglest_g3dviewer - mk/linux/*.ini - !mk/linux/glest-dev.ini + sudo apt-get update && sudo apt-get upgrade + sudo apt-get install -y $CXX + sudo mk/linux/setupBuildDeps.sh + - name: Build + run: | + mk/linux/build-mg.sh -d -m + make -C mk/linux/build -j$(nproc) VERBOSE=1 build-win64: # The CMake configure and build commands are platform agnostic and should work equally @@ -75,7 +72,7 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cache Vcpkg Libs uses: actions/cache@v2 diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml new file mode 100644 index 00000000..c1d66161 --- /dev/null +++ b/.github/workflows/snapshot.yml @@ -0,0 +1,39 @@ +name: Make Snapshot +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: true +on: + push: + branches: [ develop ] + +# The artifact only runs on the same distro that it was built on. +# TODO: make AppImage instead +jobs: + make-snapshot: + strategy: + fail-fast: false + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - name: Get dependencies + run: | + sudo apt-get update && sudo apt-get upgrade + sudo mk/linux/setupBuildDeps.sh + - name: Build + run: | + mk/linux/build-mg.sh -m + make -C mk/linux/build -j$(nproc) VERBOSE=1 + - name: Prepare Snapshot + run: | + cp mk/shared/*.ini mk/linux/ + strip -g mk/linux/megaglest mk/linux/megaglest_editor mk/linux/megaglest_g3dviewer + - name: Create Mega Glest Snapshot + uses: actions/upload-artifact@v2 + with: + name: megaglest-x64-ubuntu-20.04-gcc + path: | + mk/linux/megaglest + mk/linux/megaglest_editor + mk/linux/megaglest_g3dviewer + mk/linux/*.ini + !mk/linux/glest-dev.ini diff --git a/mk/linux/setupBuildDeps.sh b/mk/linux/setupBuildDeps.sh index ba3b5bb9..a127cd8b 100755 --- a/mk/linux/setupBuildDeps.sh +++ b/mk/linux/setupBuildDeps.sh @@ -159,13 +159,9 @@ case $distribution in #name > zesty, EoL January 2018 installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libvlc-dev libvlccore-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn11-dev libgnutls28-dev libnghttp2-dev libssh2-1-dev libidn2-dev libpsl-dev" ;; - 18.04) - #name > bionic - installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libvlc-dev libvlccore-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn11-dev libgnutls28-dev libnghttp2-dev libssh2-1-dev libidn2-dev libpsl-dev" - ;; - 20.04) - #name > Focal Fossa - installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-gtk3-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libvlc-dev libvlccore-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn2-dev libpsl-dev libgnutls28-dev libnghttp2-dev libssh-dev libbrotli-dev" + "18.04"|"20.04"|"22.04") + #name > Bionic, Focal Fossa, Jammy Jellyfish + installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-gtk3-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn2-dev libpsl-dev libgnutls28-dev libnghttp2-dev libssh-dev libbrotli-dev" ;; *) installcommand="apt-get install $APT_OPTIONS $packages_for_next_debian_ubuntu_mint" @@ -177,7 +173,7 @@ case $distribution in case $release in 20.04) #name > Focal Fossa - installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-gtk3-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libvlc-dev libvlccore-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn2-dev libpsl-dev libgnutls28-dev libnghttp2-dev libssh-dev libbrotli-dev" + installcommand="apt-get install $APT_OPTIONS build-essential cmake libcurl4-gnutls-dev libsdl2-dev libopenal-dev liblua5.3-dev libjpeg-dev libpng-dev libfreetype6-dev libwxgtk3.0-gtk3-dev libcppunit-dev libfribidi-dev libftgl-dev libglew-dev libogg-dev libvorbis-dev libminiupnpc-dev libircclient-dev libxml2-dev libx11-dev libgl1-mesa-dev libglu1-mesa-dev librtmp-dev libkrb5-dev libldap2-dev libidn2-dev libpsl-dev libgnutls28-dev libnghttp2-dev libssh-dev libbrotli-dev" ;; *) installcommand="apt-get install $APT_OPTIONS $packages_for_next_debian_ubuntu_mint" @@ -185,7 +181,7 @@ case $distribution in ;; esac ;; - + LinuxMint|Linuxmint) case $release in 2)