Merge branch 'm1-ci-builds'

Make self-hosted Mac CI builds faster and more useful.

See https://github.com/wxWidgets/wxWidgets/pull/2476
This commit is contained in:
Vadim Zeitlin
2021-08-21 18:33:26 +02:00
8 changed files with 59 additions and 19 deletions

View File

@@ -6,7 +6,7 @@ on:
branches: branches:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/MacS-M1-make.yml' - '.github/workflows/ci_mac_selfhosted.yml'
- '.github/workflows/ci_cmake.yml' - '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_msw_cross.yml' - '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
@@ -24,7 +24,7 @@ on:
branches: branches:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/MacS-M1-make.yml' - '.github/workflows/ci_mac_selfhosted.yml'
- '.github/workflows/ci_cmake.yml' - '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_msw_cross.yml' - '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'

View File

@@ -7,6 +7,7 @@ on:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml' - '.github/workflows/ci.yml'
- '.github/workflows/ci_mac_selfhosted.yml'
- '.github/workflows/ci_msw_cross.yml' - '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'distrib/**' - 'distrib/**'
@@ -24,6 +25,7 @@ on:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml' - '.github/workflows/ci.yml'
- '.github/workflows/ci_mac_selfhosted.yml'
- '.github/workflows/ci_msw_cross.yml' - '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'distrib/**' - 'distrib/**'

View File

@@ -1,12 +1,14 @@
name: Mac make CI name: Mac builds
on: on:
workflow_dispatch: workflow_dispatch:
push: push:
branches: [ master ] branches: [ master ]
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml'
- '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'build/tools/travis-ci.sh'
- 'distrib/**' - 'distrib/**'
- 'docs/**' - 'docs/**'
- 'interface/**' - 'interface/**'
@@ -30,8 +32,10 @@ on:
pull_request: pull_request:
branches: [ master ] branches: [ master ]
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml'
- '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_msw_cross.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'build/tools/travis-ci.sh'
- 'distrib/**' - 'distrib/**'
- 'docs/**' - 'docs/**'
- 'interface/**' - 'interface/**'
@@ -61,26 +65,26 @@ jobs:
runs-on: self-hosted runs-on: self-hosted
name: ${{ matrix.build }}, arch ${{ matrix.arch }}, cxx${{ matrix.cxx }} name: ${{ matrix.name }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
arch: [arm64e, x86_64]
build: [debug, release]
cxx: [11, 17]
include: include:
- build: debug - name: ARM C++11
configure_flags: --without-liblzma --enable-debug --disable-sys-libs --with-osx_cocoa arch: arm64
- build: release configure_flags: --with-cxx=11
configure_flags: --without-liblzma --disable-sys-libs --with-osx_cocoa use_asan: true
- cxx: 17 - name: Intel C++17
cxxconfig: --with-macosx-version-min=10.12 arch: x86_64
- cxx: 11 configure_flags: --with-cxx=17 --with-macosx-version-min=10.12 --enable-debug
cxxconfig: - name: Universal C++14
arch: arm64
configure_flags: --with-cxx=14 --enable-universal_binary=arm64,x86_64 --disable-shared --disable-debug --enable-optimise
env: env:
wxCONFIGURE_FLAGS: ${{ matrix.configure_flags }} ${{ matrix.cxxconfig }} --with-cxx=${{ matrix.cxx }} --prefix=${{ github.workspace }}/localbin_${{ matrix.arch }} wxCONFIGURE_FLAGS: --disable-sys-libs --without-liblzma ${{ matrix.configure_flags }} --prefix=${{ github.workspace }}/localbin_${{ matrix.arch }}
wxUSE_ASAN: ${{ matrix.use_asan && 1 || 0 }}
DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer
NSUnbufferedIO: YES NSUnbufferedIO: YES
@@ -132,6 +136,15 @@ jobs:
run: | run: |
wxCONFIGURE_OPTIONS="--disable-optimise $wxCONFIGURE_FLAGS" wxCONFIGURE_OPTIONS="--disable-optimise $wxCONFIGURE_FLAGS"
./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$? ./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$?
if [ ${{ matrix.use_asan }} ]; then
wxASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
wxASAN_CXXFLAGS=$wxASAN_CFLAGS
wxASAN_LDFLAGS="-fsanitize=address"
./configure $wxCONFIGURE_OPTIONS --enable-debug "CFLAGS=$wxASAN_CFLAGS" "CXXFLAGS=$wxASAN_CXXFLAGS" "LDFLAGS=$wxASAN_LDFLAGS" || rc=$?
else
./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$?
fi
if [ -n "$rc" ]; then if [ -n "$rc" ]; then
echo '*** Configuring failed, contents of config.log follows: ***' echo '*** Configuring failed, contents of config.log follows: ***'
echo '-----------------------------------------------------------' echo '-----------------------------------------------------------'

View File

@@ -1,5 +1,5 @@
# CI workflow cross-building wxMSW under Linux. # CI workflow cross-building wxMSW under Linux.
name: wxMSW cross-build name: MSW cross-builds
on: on:
push: push:
@@ -7,6 +7,8 @@ on:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml' - '.github/workflows/ci.yml'
- '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_mac_selfhosted.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'distrib/**' - 'distrib/**'
- 'docs/**' - 'docs/**'
@@ -25,6 +27,8 @@ on:
- master - master
paths-ignore: paths-ignore:
- '.github/workflows/ci.yml' - '.github/workflows/ci.yml'
- '.github/workflows/ci_cmake.yml'
- '.github/workflows/ci_mac_selfhosted.yml'
- 'build/tools/appveyor*.bat' - 'build/tools/appveyor*.bat'
- 'distrib/**' - 'distrib/**'
- 'docs/**' - 'docs/**'

View File

@@ -331,6 +331,8 @@ extern WXDLLIMPEXP_BASE void wxOnAssert(const char *file,
#define wxFAIL #define wxFAIL
#define wxFAIL_MSG(msg) #define wxFAIL_MSG(msg)
#define wxFAIL_COND_MSG(cond, msg) #define wxFAIL_COND_MSG(cond, msg)
#define wxFAIL_MSG_AT(msg, file, line, func)
#define wxFAIL_COND_MSG_AT(cond, msg, file, line, func)
#endif // wxDEBUG_LEVEL #endif // wxDEBUG_LEVEL
#if wxDEBUG_LEVEL >= 2 #if wxDEBUG_LEVEL >= 2

View File

@@ -34,6 +34,10 @@ class WXDLLIMPEXP_FWD_CORE wxFileDialogBase;
#include "wx/msgdlg.h" #include "wx/msgdlg.h"
#include "wx/filedlg.h" #include "wx/filedlg.h"
#ifndef __WXDEBUG__
#include "wx/crt.h"
#endif // !__WXDEBUG__
#include <typeinfo> #include <typeinfo>
class wxTestingModalHook; class wxTestingModalHook;
@@ -421,10 +425,20 @@ protected:
// course, can itself be customized. // course, can itself be customized.
virtual void ReportFailure(const wxString& msg) virtual void ReportFailure(const wxString& msg)
{ {
#ifdef __WXDEBUG__
wxFAIL_MSG_AT( msg, wxFAIL_MSG_AT( msg,
m_file ? m_file : __FILE__, m_file ? m_file : __FILE__,
m_line ? m_line : __LINE__, m_line ? m_line : __LINE__,
m_func ? m_func : __WXFUNCTION__ ); m_func ? m_func : __WXFUNCTION__ );
#else // !__WXDEBUG__
// We still need to report the failure somehow when wx asserts are
// disabled.
wxFprintf(stderr, wxASCII_STR("%s at %s:%d in %s()\n"),
msg,
wxASCII_STR(m_file ? m_file : __FILE__),
m_line ? m_line : __LINE__,
wxASCII_STR(m_func ? m_func : __WXFUNCTION__));
#endif // __WXDEBUG__/!__WXDEBUG__
} }
private: private:

View File

@@ -125,6 +125,8 @@ void MiscTestCase::Delete()
namespace namespace
{ {
#ifdef __WXDEBUG__
// helper function used just to avoid warnings about value computed not being // helper function used just to avoid warnings about value computed not being
// used in WX_ASSERT_FAILS_WITH_ASSERT() in StaticCast() below // used in WX_ASSERT_FAILS_WITH_ASSERT() in StaticCast() below
bool IsNull(void *p) bool IsNull(void *p)
@@ -132,6 +134,8 @@ bool IsNull(void *p)
return p == NULL; return p == NULL;
} }
#endif // __WXDEBUG__
} // anonymous namespace } // anonymous namespace
void MiscTestCase::StaticCast() void MiscTestCase::StaticCast()

View File

@@ -128,6 +128,7 @@ public:
// normal build with wxDEBUG_LEVEL != 0 we can pass something not // normal build with wxDEBUG_LEVEL != 0 we can pass something not
// evaluating to a bool at all but it then would fail to compile in // evaluating to a bool at all but it then would fail to compile in
// wxDEBUG_LEVEL == 0 case, so just don't do anything at all now). // wxDEBUG_LEVEL == 0 case, so just don't do anything at all now).
#define WX_ASSERT_FAILS_WITH_ASSERT_MESSAGE(msg, code)
#define WX_ASSERT_FAILS_WITH_ASSERT(cond) #define WX_ASSERT_FAILS_WITH_ASSERT(cond)
#endif #endif