3808e6a28d
This should address 009a:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution. Wine error and the subsequent test failures.
211 lines
6.3 KiB
YAML
211 lines
6.3 KiB
YAML
# CI workflow cross-building wxMSW under Linux.
|
|
name: wxMSW cross-build
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.github/workflows/ci.yml'
|
|
- 'build/tools/appveyor*.bat'
|
|
- 'build/tools/travis-ci.sh'
|
|
- 'distrib/**'
|
|
- 'docs/**'
|
|
- 'interface/**'
|
|
- 'include/msvc/**'
|
|
- 'include/wx/gtk/**'
|
|
- 'include/wx/osx/**'
|
|
- 'locale/**'
|
|
- 'src/msw/**'
|
|
- 'src/osx/**'
|
|
- '*.md'
|
|
- '*.yml'
|
|
- 'wxwidgets.props'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.github/workflows/ci.yml'
|
|
- 'build/tools/appveyor*.bat'
|
|
- 'build/tools/travis-ci.sh'
|
|
- 'distrib/**'
|
|
- 'docs/**'
|
|
- 'interface/**'
|
|
- 'include/msvc/**'
|
|
- 'include/wx/gtk/**'
|
|
- 'include/wx/osx/**'
|
|
- 'locale/**'
|
|
- 'src/msw/**'
|
|
- 'src/osx/**'
|
|
- '*.md'
|
|
- '*.yml'
|
|
- 'wxwidgets.props'
|
|
|
|
jobs:
|
|
msw-cross-build:
|
|
# Set up this job to run in a Debian Sid container because it has recent
|
|
# versions of MinGW and Wine and is simpler to test with locally than the
|
|
# bespoke container used by GitHub Actions by default.
|
|
runs-on: ubuntu-latest
|
|
container: debian:sid-slim
|
|
name: ${{ matrix.name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: wxMSW 64 bits
|
|
- name: wxMSW 32 bits
|
|
triplet: i686-w64-mingw32
|
|
env:
|
|
# Default to 64-bit build.
|
|
HOST_TRIPLET: ${{ matrix.triplet || 'x86_64-w64-mingw32' }}
|
|
|
|
# Run all commands as the normal user, created by the first step below.
|
|
#
|
|
# Note that the Bash options used here are the same as for the default
|
|
# shell used by GitHub Actions to minimize any surprises.
|
|
defaults:
|
|
run:
|
|
shell: /usr/bin/setpriv --reuid=runner --regid=adm --clear-groups --inh-caps=-all bash --noprofile --norc -eo pipefail {0}
|
|
|
|
steps:
|
|
- name: Set up container user
|
|
# Specify the default shell explicitly to override the default value above.
|
|
shell: bash
|
|
run: |
|
|
apt-get -q -o=Dpkg::Use-Pty=0 update
|
|
apt-get -qq install sudo
|
|
|
|
# Create a user with the same UID/GID and name as the existing user
|
|
# outside of the container and allow it using sudo without password.
|
|
useradd --home-dir $HOME --no-create-home --gid adm --uid 1001 runner
|
|
|
|
echo 'runner ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/runner
|
|
|
|
- name: Install prerequisites
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
packages="git make python3 python3-pip winbind wine x11-xserver-utils xvfb"
|
|
|
|
case "${HOST_TRIPLET}" in
|
|
x86_64-w64-mingw32)
|
|
packages="$packages g++-mingw-w64-x86-64 wine64"
|
|
winerun=wine64
|
|
;;
|
|
|
|
i686-w64-mingw32)
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get -q -o=Dpkg::Use-Pty=0 update
|
|
packages="$packages g++-mingw-w64-i686 wine32"
|
|
winerun=wine
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown host triplet \"${HOST_TRIPLET}\"."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
sudo apt-get -qq install $packages
|
|
|
|
echo "WINERUN=${winerun}" >> $GITHUB_ENV
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'recursive'
|
|
|
|
- name: System and environment setup
|
|
run: |
|
|
normal_uid=`id --user`
|
|
|
|
# The checkout actions runs as root and there doesn't seem to be any
|
|
# way to change this, so just adjust the owner after checkout.
|
|
sudo chown -R $normal_uid $GITHUB_WORKSPACE
|
|
|
|
# Add the directories containing MinGW and wx DLLs to Wine path.
|
|
winepath="$(winepath --windows /usr/lib/gcc/${HOST_TRIPLET}/$(${HOST_TRIPLET}-gcc -dumpversion|tr -d '\r'))"
|
|
winepath="${winepath};$(winepath --windows $(pwd)/lib)"
|
|
echo "WINEPATH=${winepath}" >> $GITHUB_ENV
|
|
|
|
cpu_count=`nproc`
|
|
((cpu_count++))
|
|
echo "wxMAKE_ARGS=-k -j$cpu_count" >> $GITHUB_ENV
|
|
|
|
echo "wxMAKEFILE_ERROR_CXXFLAGS=-Werror -Wno-error=cpp" >> $GITHUB_ENV
|
|
|
|
- name: Configure
|
|
run: |
|
|
./configure --host=${HOST_TRIPLET} --disable-sys-libs --disable-optimise --disable-debug_info || rc=$?
|
|
|
|
if [ -n "$rc" ]; then
|
|
echo '*** Configuring failed, contents of config.log follows: ***'
|
|
echo '-----------------------------------------------------------'
|
|
cat config.log
|
|
echo '-----------------------------------------------------------'
|
|
exit $rc
|
|
fi
|
|
|
|
- name: Build
|
|
run: |
|
|
make $wxMAKE_ARGS "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS"
|
|
|
|
- name: Build samples
|
|
run: |
|
|
make $wxMAKE_ARGS "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS" samples
|
|
|
|
- name: Build tests
|
|
working-directory: tests
|
|
run: |
|
|
make $wxMAKE_ARGS failtest
|
|
make $wxMAKE_ARGS "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS"
|
|
|
|
- name: Launch Xvfb
|
|
run: |
|
|
echo 'Launching Xvfb...'
|
|
sudo mkdir /tmp/.X11-unix
|
|
sudo chmod 1777 /tmp/.X11-unix
|
|
Xvfb :10 -screen 0 1600x1200x24 &
|
|
num_tries=1
|
|
while true; do
|
|
if xset -d :10 -q >/dev/null 2>&1; then
|
|
echo 'Xvfb has become available.'
|
|
# Trying to use it immediately can still result in errors
|
|
# when creating the windows, somehow, so give it some time
|
|
# to settle.
|
|
sleep 3
|
|
break
|
|
fi
|
|
|
|
if [[ $num_tries -gt 10 ]]; then
|
|
echo 'Timed out waiting for Xvfb'
|
|
exit 1
|
|
fi
|
|
|
|
((num_tries++))
|
|
echo "Still waiting for Xvfb (attempt #$num_tries)"
|
|
sleep 3
|
|
done
|
|
echo 'Xvfb is running on display :10'
|
|
echo 'DISPLAY=:10' >> $GITHUB_ENV
|
|
|
|
- name: Run non-GUI tests
|
|
working-directory: tests
|
|
run: |
|
|
. ../build/tools/httpbin.sh
|
|
|
|
httpbin_launch
|
|
|
|
$WINERUN ./test || rc=$?
|
|
|
|
if [ -n "$rc" ]; then
|
|
httpbin_show_log
|
|
exit $rc
|
|
fi
|
|
|
|
- name: Run GUI tests
|
|
working-directory: tests
|
|
run: |
|
|
$WINERUN ./test_gui
|