From 839a8a56ab9ad12fc1ff2c551987a93d5b4533e6 Mon Sep 17 00:00:00 2001 From: James Muehlner Date: Fri, 1 Nov 2024 18:19:02 +0000 Subject: [PATCH] GUACAMOLE-1841: Add windows build CI job. --- .github/workflows/windows-build.yml | 73 +++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/windows-build.yml diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml new file mode 100644 index 000000000..f1bc43e21 --- /dev/null +++ b/.github/workflows/windows-build.yml @@ -0,0 +1,73 @@ +name: Windows Build + +# Automatically verify pull requests +on: [pull_request] + +# Limit to only one build for a given PR source branch at a time, +# cancelling any in-progress builds +concurrency: + group: windows-build-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + + # This runs on a github-hosted runner, guaranteed fresh for every job run. + # Git, msys2, and other tools come preinstalled. For more, see + # https://github.com/actions/runner-images/blob/main/images/win/Windows2022-Readme.md + windows-build: + name: Build guacamole-server on windows server 2022 + runs-on: windows-2022 + steps: + + # TODO: Install libtelnet from source - it's not available in msys2 + - name: Update MSYS2 repos and install dependencies + shell: powershell + run: | + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S git base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-autotools mingw-w64-x86_64-libtool + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-cunit mingw-w64-x86_64-make mingw-w64-x86_64-python + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-cairo + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-dlfcn + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-freerdp + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libssh2 + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libvncserver + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libwebsockets + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libjpeg-turbo + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libpng + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libgxps + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libtool + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-libwebp + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-openssl + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-pango + C:\\msys64\\usr\\bin\\pacman.exe --noconfirm -S mingw-w64-x86_64-pulseaudio + + C:\\msys64\\usr\\bin\\pacman.exe -Q + + - name: Configure git to not mangle line endings + run: git config --global core.autocrlf input + + - name: Checkout guacamole-server source + uses: actions/checkout@v4 + + - name: Build guacamole-server + shell: C:\\msys64\\usr\\bin\\bash.exe --login -eo pipefail -o igncr '{0}' + run: | + + SERVER_BASE=`cygpath -u '${{ github.workspace }}'` + cd "$SERVER_BASE" + + autoreconf -fi + + export MINGW_ARCH="mingw64" + export PKG_CONFIG_PATH="/mingw64/lib/pkgconfig:/usr/lib/pkgconfig" + export PATH="$PATH:/mingw64/bin:/usr/bin" + export LDFLAGS="-L/mingw64/bin/ -L/usr/bin/ -L/mingw64/lib -lws2_32" + export CFLAGS="-isystem/mingw64/include/ \ + -I/mingw64/include/pango-1.0 \ + -I/mingw64/include/glib-2.0/ \ + -I/mingw64/lib/glib-2.0/include/ \ + -I/mingw64/include/harfbuzz/ \ + -I/mingw64/include/cairo/ \ + -I/mingw64/include/winpr2 \ + -Wno-error=expansion-to-defined -Wno-error=attributes -Wno-incompatible-pointer-types" + ./configure --with-windows --disable-guacenc --disable-guacd --disable-guaclog + make