mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2025-12-06 11:31:44 +08:00
Some checks failed
No Response / no-response (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 compatible 3.0 (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK ASAN not compatible (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK UTF-8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxQt (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxX11 (push) Has been cancelled
Unix builds / Ubuntu 20.04 wxGTK 3 with clang (push) Has been cancelled
Unix builds / Ubuntu 22.04 wxGTK with wx containers (push) Has been cancelled
Unix builds / Ubuntu 24.04 wxGTK UBSAN (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxDFB (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 3 static with gcc 4.8 (push) Has been cancelled
Unix builds / Ubuntu 18.04 wxGTK 2 (push) Has been cancelled
CMake builds / Ubuntu 22.04 wxGTK 3 (push) Has been cancelled
CMake builds / MSW/MSVC wxMSW (push) Has been cancelled
CMake builds / MSW/Clang wxMSW (push) Has been cancelled
CMake builds / macOS latest wxOSX Ninja (push) Has been cancelled
CMake builds / macOS 14 wxOSX Xcode (push) Has been cancelled
CMake builds / macOS 14 wxIOS (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 5.15 (push) Has been cancelled
CMake builds / MSW/MSVC wxQt 6.8 (push) Has been cancelled
Mac builds / wxMac ARM ASAN not compatible (push) Has been cancelled
Mac builds / wxMac Universal C++14 (push) Has been cancelled
Mac builds / wxiOS (push) Has been cancelled
Mac builds / wxMac Intel C++17 (push) Has been cancelled
Mac Xcode builds / iOS Simulator static (push) Has been cancelled
Mac Xcode builds / macOS dynamic Release (push) Has been cancelled
Mac Xcode builds / iOS static Debug (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Debug x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 DLL Release x64 (push) Has been cancelled
MSW builds / wxMSW vs2022 Debug Win32 (push) Has been cancelled
MSW builds / wxMSW vs2022 Release arm64 (push) Has been cancelled
MSW cross-builds / wxMSW 64 bits not compatible (push) Has been cancelled
MSW cross-builds / wxMSW/Univ (push) Has been cancelled
MSW cross-builds / wxMSW 32 bits (push) Has been cancelled
Code Checks / Check Spelling (push) Has been cancelled
Code Checks / Check Whitespace (push) Has been cancelled
Code Checks / Check Mixed EOL (push) Has been cancelled
Code Checks / Check C++ Style (push) Has been cancelled
Code Checks / Check All Headers In allheaders.h (push) Has been cancelled
After the changes 35c35c235e (Remove wxUSE_STL which is not really used
any longer, 2023-04-15) there were no more CI builds using wxString
without implicit conversion to "char*", so errors like the one fixed in
the parent commit were not detected any more.
Add builds using wxUSE_STD_STRING_CONV_IN_WXSTRING=1 which disables
conversions to "char*" in wxString to ensure this doesn't happen again.
288 lines
9.6 KiB
YAML
288 lines
9.6 KiB
YAML
# CI workflow cross-building wxMSW under Linux.
|
|
name: MSW cross-builds
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.circleci/**'
|
|
- '.github/ISSUE_TEMPLATE/**'
|
|
- '.github/workflows/ci.yml'
|
|
- '.github/workflows/ci_cmake.yml'
|
|
- '.github/workflows/ci_mac.yml'
|
|
- '.github/workflows/ci_msw.yml'
|
|
- '.github/workflows/docs_update.yml'
|
|
- 'build/cmake/**'
|
|
- 'build/tools/appveyor*.bat'
|
|
- 'distrib/**'
|
|
- 'docs/**'
|
|
- 'interface/**'
|
|
- 'include/msvc/**'
|
|
- 'include/wx/gtk/**'
|
|
- 'include/wx/osx/**'
|
|
- 'locale/**'
|
|
- 'src/gtk/**'
|
|
- 'src/osx/**'
|
|
- '*.md'
|
|
- '*.yml'
|
|
- 'wxwidgets.props'
|
|
- 'CMakeLists.txt'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.circleci/**'
|
|
- '.github/ISSUE_TEMPLATE/**'
|
|
- '.github/workflows/ci.yml'
|
|
- '.github/workflows/ci_cmake.yml'
|
|
- '.github/workflows/ci_mac.yml'
|
|
- '.github/workflows/ci_msw.yml'
|
|
- '.github/workflows/docs_update.yml'
|
|
- 'build/cmake/**'
|
|
- 'build/tools/appveyor*.bat'
|
|
- 'distrib/**'
|
|
- 'docs/**'
|
|
- 'interface/**'
|
|
- 'include/msvc/**'
|
|
- 'include/wx/gtk/**'
|
|
- 'include/wx/osx/**'
|
|
- 'locale/**'
|
|
- 'src/gtk/**'
|
|
- 'src/osx/**'
|
|
- '*.md'
|
|
- '*.yml'
|
|
- 'wxwidgets.props'
|
|
- 'CMakeLists.txt'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
msw-cross-build:
|
|
# Set up this job to run in a Debian Testing 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:${{ matrix.debian_release }}-slim
|
|
name: ${{ matrix.name }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: wxMSW 64 bits not compatible
|
|
debian_release: testing
|
|
configure_flags: --enable-std_string_conv_in_wxstring --disable-compat32
|
|
- name: wxMSW 32 bits
|
|
# Testing doesn't have 32 bit support any more.
|
|
debian_release: stable
|
|
triplet: i686-w64-mingw32
|
|
- name: wxMSW/Univ
|
|
debian_release: testing
|
|
configure_flags: --enable-universal --disable-compat32 --disable-debug --disable-optimise
|
|
minimal: true
|
|
env:
|
|
wxCONFIGURE_FLAGS: ${{ matrix.configure_flags }}
|
|
|
|
# Default to 64-bit build.
|
|
HOST_TRIPLET: ${{ matrix.triplet || 'x86_64-w64-mingw32' }}
|
|
|
|
# While our tests should run in any locale natively, it seems that Wine
|
|
# requires the locale encoding to be UTF-8 for Unicode file names to work
|
|
# correctly, so set the locale explicitly for it.
|
|
LC_ALL: C.UTF-8
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
steps:
|
|
- name: Install prerequisites
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
packages="bash git make wine x11-xserver-utils"
|
|
|
|
case "${HOST_TRIPLET}" in
|
|
x86_64-w64-mingw32)
|
|
packages="$packages g++-mingw-w64-x86-64 wine wine64 xvfb"
|
|
;;
|
|
|
|
i686-w64-mingw32)
|
|
dpkg --add-architecture i386
|
|
packages="$packages g++-mingw-w64-i686 wine32 libgl1:i386 xvfb:i386"
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown host triplet \"${HOST_TRIPLET}\"."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
apt-get -q -o=Dpkg::Use-Pty=0 update
|
|
apt-get -q -o=Dpkg::Use-Pty=0 -y install $packages
|
|
|
|
echo "wxTEST_RUNNER=wine" >> $GITHUB_ENV
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: 'recursive'
|
|
|
|
- name: Install CCache
|
|
uses: hendrikmuhs/ccache-action@v1.2.12
|
|
with:
|
|
key: ${{ matrix.name }}
|
|
|
|
- name: System and environment setup
|
|
run: |
|
|
# Wine refuses to run if home is not owned by the current user (which
|
|
# is actually root, but /github/home is actually owned by "runner").
|
|
chown -R `id --user` $HOME
|
|
|
|
# Add the directories containing MinGW and wx DLLs to Wine path.
|
|
winepath="$(winepath --windows $(dirname $(${HOST_TRIPLET}-g++ -print-libgcc-file-name)))"
|
|
winepath="${winepath};$(winepath --windows $(pwd)/lib)"
|
|
echo "WINEPATH=${winepath}" >> $GITHUB_ENV
|
|
|
|
cpu_count=`./build/tools/proc_count.sh`
|
|
echo "wxMAKE_ARGS=-k -j$cpu_count" >> $GITHUB_ENV
|
|
|
|
echo "wxMAKEFILE_ERROR_CXXFLAGS=-Werror -Wno-error=cpp" >> $GITHUB_ENV
|
|
|
|
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
|
|
|
|
echo "Compiler version:"
|
|
${HOST_TRIPLET}-g++ --version
|
|
echo
|
|
|
|
- name: Configure
|
|
run: |
|
|
./configure --host=${HOST_TRIPLET} --disable-sys-libs --disable-debug_info $wxCONFIGURE_FLAGS || 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: Install and test
|
|
run: |
|
|
make install
|
|
make -C samples/minimal -f makefile.unx "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS"
|
|
|
|
|
|
- name: Build samples
|
|
if: matrix.minimal != true
|
|
run: |
|
|
make $wxMAKE_ARGS "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS" samples
|
|
|
|
- name: Build tests
|
|
if: matrix.minimal != true
|
|
working-directory: tests
|
|
run: |
|
|
make $wxMAKE_ARGS failtest
|
|
make $wxMAKE_ARGS "CXXFLAGS=$wxMAKEFILE_ERROR_CXXFLAGS"
|
|
|
|
- name: Launch Xvfb
|
|
if: matrix.minimal != true
|
|
run: |
|
|
echo 'Launching Xvfb...'
|
|
mkdir /tmp/.X11-unix
|
|
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
|
|
if: matrix.minimal != true
|
|
working-directory: tests
|
|
run: |
|
|
# Some tests are currently failing under Wine while they pass under
|
|
# native MSW, just skip running them until they can be dealt with.
|
|
|
|
# As soon as we specify the tests to exclude explicitly, we also need
|
|
# to exclude the tests that are not run by default, so start with this.
|
|
excluded_tests=('~[.]')
|
|
|
|
# Somehow, this test itself passes, but causes subsequent tests, such
|
|
# as FileFunctions::CopyFile, to fail. It would be nice to debug this.
|
|
excluded_tests+=('~wxFileName::LongPath')
|
|
|
|
# There is 1 day difference in creation time under Wine somehow.
|
|
excluded_tests+=('~wxFileName::SetTimes')
|
|
|
|
# Closing the file fails for unknown reason under Wine.
|
|
excluded_tests+=('~FileFunctions::Error')
|
|
|
|
# Sporadic failures due to extra events.
|
|
excluded_tests+=('~wxFileSystemWatcher::EventCreate')
|
|
|
|
# The test fails (even with wxTEST_RUNNER-related changes) and hangs.
|
|
excluded_tests+=('~[exec]')
|
|
|
|
# Wine WinHTTP implementations seems buggy, there are many errors.
|
|
excluded_tests+=('~[webrequest]')
|
|
|
|
$wxTEST_RUNNER ./test.exe "${excluded_tests[@]}"
|
|
|
|
- name: Run GUI tests
|
|
if: matrix.minimal != true
|
|
working-directory: tests
|
|
run: |
|
|
# Same as for the non-GUI test above, except many more GUI tests fail
|
|
# under Wine.
|
|
excluded_gui_tests=('~[.]')
|
|
|
|
excluded_gui_tests+=('~BitmapComboBoxTestCase') # TextChangeEvents
|
|
excluded_gui_tests+=('~ClippingBoxTestCase*')
|
|
excluded_gui_tests+=('~ComboBoxTestCase') # TextChangeEvents
|
|
excluded_gui_tests+=('~DatePickerCtrlTestCase') # Range
|
|
excluded_gui_tests+=('~wxEnhMetaFileDC::GetTextExtent')
|
|
excluded_gui_tests+=('~[exec]')
|
|
excluded_gui_tests+=('~wxFont::GetSet')
|
|
excluded_gui_tests+=('~GraphicsPathTestCaseGDIPlus')
|
|
excluded_gui_tests+=('~ImageList*')
|
|
excluded_gui_tests+=('~RadioButton::Focus')
|
|
excluded_gui_tests+=('~SettingsTestCase') # GetFont fails
|
|
excluded_gui_tests+=('~SliderTestCase') # Thumb
|
|
excluded_gui_tests+=('~TransformMatrixTestCase*')
|
|
excluded_gui_tests+=('~wxTreeCtrl::LabelEdit') # LabelEdit
|
|
excluded_gui_tests+=('~TextCtrlTestCase') # many sub-tests
|
|
excluded_gui_tests+=('~wxTextCtrl::InitialCanUndo')
|
|
excluded_gui_tests+=('~[wxWebView]')
|
|
excluded_gui_tests+=('~Window::PositioningBeyondShortLimit')
|
|
excluded_gui_tests+=('~XRC::LoadURL')
|
|
|
|
$wxTEST_RUNNER ./test_gui.exe "${excluded_gui_tests[@]}"
|