Linux wxGTK master builds #108
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux wxGTK master builds | |
on: | |
schedule: | |
- cron: '0 5 * * 5' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
env: | |
WXWIDGETS_ROOT: ${{ github.workspace }}/ext/wxWidgets | |
WXWIN_INSTALL: ${{ github.workspace }}/ext/wxWidgets/install | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-22.04 | |
gtk_version: 3 | |
CC: gcc-12 | |
CXX: g++-12 | |
ruby: '3.2' | |
wxWidgets: 'master' | |
swig: '4' | |
configure_flags: | |
use_xvfb: true | |
wxw_type: develop | |
wxr_type: develop | |
- os: ubuntu-22.04 | |
gtk_version: 3 | |
CC: gcc-12 | |
CXX: g++-12 | |
ruby: '3.2' | |
wxWidgets: 'master' | |
swig: '4' | |
configure_flags: | |
use_xvfb: true | |
wxw_type: develop | |
wxr_type: gem | |
runs-on: ${{ matrix.os }} | |
name: ${{ matrix.os }} wxRuby(${{ matrix.wxr_type }}) ${{ matrix.CXX }} ruby-${{ matrix.ruby }} wxWidgets-${{ matrix.wxWidgets }}(${{ matrix.wxw_type }}) SWIG${{ matrix.swig }} | |
env: | |
wxGTK_VERSION: ${{ matrix.gtk_version && matrix.gtk_version || 3 }} | |
wxCONFIGURE_FLAGS: ${{ matrix.configure_flags }} | |
wxUSE_ASAN: ${{ matrix.use_asan && 1 || 0 }} | |
wxUSE_XVFB: ${{ matrix.use_xvfb && 1 || 0 }} | |
WX_EXTRA_PACKAGES: doxygen patchelf | |
CC: ${{ matrix.CC }} | |
CXX: ${{ matrix.CXX }} | |
steps: | |
- name: Checkout wxRuby3 | |
uses: actions/checkout@v4 | |
- name: Install Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
- name: Setup Ruby gems | |
run: | | |
bundle install | |
- name: checkout wxWidgets | |
uses: actions/checkout@v4 | |
with: | |
repository: wxWidgets/wxWidgets | |
path: ${{ env.WXWIDGETS_ROOT }} | |
ref: ${{ matrix.wxWidgets }} | |
submodules: 'recursive' | |
- name: Set up build environment | |
run: | | |
# Install locales used by our tests to run all the tests instead of | |
# skipping them. | |
sudo locale-gen de_DE.utf8 de_CH.utf8 en_US.utf8 fr_FR.utf8 sv_SE.utf8 | |
$WXWIDGETS_ROOT/build/tools/before_install.sh | |
- name: Display build environment | |
run: | | |
echo $PATH | |
ruby -v | |
doxygen -v | |
gcc -v | |
g++ -v | |
- name: Configuring wxWidgets | |
if: matrix.wxw_type != 'embed' | |
working-directory: ${{ env.WXWIDGETS_ROOT }} | |
run: | | |
wxCONFIGURE_OPTIONS="$wxCONFIGURE_FLAGS" | |
if [ -n "${{ matrix.gtk_version }}" ]; then | |
wxCONFIGURE_OPTIONS="--with-gtk=${{ matrix.gtk_version }} $wxCONFIGURE_OPTIONS" | |
fi | |
if [ "${{ matrix.wxw_type }}" == "develop" ]; then | |
./configure $wxCONFIGURE_OPTIONS --prefix=$WXWIN_INSTALL --disable-tests --without-subdirs --disable-debug_info || rc=$? | |
else | |
./configure $wxCONFIGURE_OPTIONS --disable-tests --without-subdirs --disable-debug_info || rc=$? | |
fi | |
if [ -n "$rc" ]; then | |
echo '*** Configuring failed, contents of config.log follows: ***' | |
echo '-----------------------------------------------------------' | |
cat $WXWIDGETS_ROOT/config.log | |
echo '-----------------------------------------------------------' | |
exit $rc | |
fi | |
- name: Build wxWidgets | |
if: matrix.wxw_type != 'embed' | |
working-directory: ${{ env.WXWIDGETS_ROOT }} | |
run: | | |
if [ "${{ matrix.wxw_type }}" == "develop" ]; then | |
WX_SKIP_DOXYGEN_VERSION_CHECK=1 | |
make && make install && pushd docs/doxygen && ./regen.sh xml && popd | |
else | |
make && sudo make install && sudo ldconfig | |
fi | |
- name: Remove wxWidgets | |
if: matrix.wxw_type != 'develop' | |
run: rm -rf $WXWIDGETS_ROOT | |
- name: Configure wxRuby3 | |
if: matrix.wxr_type != 'gem' | |
run: | | |
if [ "${{ matrix.wxw_type }}" == "embed" ]; then | |
bundle exec rake configure[--with-wxwin] | |
elif [ "${{ matrix.wxw_type }}" == "develop" ]; then | |
bundle exec rake configure[--wxwin=$WXWIN_INSTALL,--wxxml=$WXWIDGETS_ROOT/docs/doxygen/out/xml] | |
else | |
bundle exec rake configure | |
fi | |
- name: Build wxRuby3 | |
if: matrix.wxr_type != 'gem' | |
run: | | |
bundle exec rake build | |
- name: Run wxRuby3 post-build checks | |
if: matrix.wxr_type != 'gem' | |
run: | | |
ruby tools/check_swig_types.rb | |
- name: Build wxRuby3 gem | |
if: matrix.wxr_type == 'gem' || matrix.wxr_type == 'bingem' | |
run: | | |
if [ "${{ matrix.wxr_type }}" == "gem" ]; then | |
bundle exec rake gem | |
else | |
BUILD_CMD="bundle exec rake bingem" | |
/bin/bash -o pipefail -c "xvfb-run -a -s '-screen 0 1600x1200x24' $BUILD_CMD 2>&1 | tee -a gembuild.out" || rc=$? | |
if [ -n "$rc" ]; then | |
if fgrep -q '(core dumped)' gembuild.out; then | |
echo '*** Test crashed, trying to get more information ***' | |
gdb --quiet --core=core -ex 'where' -ex 'thread apply all bt' -ex 'q' --args $BUILD_CMD | |
fi | |
exit $rc | |
fi | |
fi | |
- name: Install wxRuby3 gem | |
if: matrix.wxr_type != 'develop' | |
run: | | |
if [ "${{ matrix.wxr_type }}" == "bingem" ]; then | |
gem install $(echo pkg/*.gem) | |
else | |
if [ "${{ matrix.wxw_type }}" == "system" ]; then | |
gem install $(echo pkg/*.gem) && wxruby setup | |
elif [ "${{ matrix.wxw_type }}" == "embed" ]; then | |
gem install $(echo pkg/*.gem) && wxruby setup --autoinstall | |
else | |
gem install $(echo pkg/*.gem) && wxruby setup --wxwin=$WXWIN_INSTALL | |
fi | |
fi | |
- name: Run wxRuby3 regression tests | |
run: | | |
ulimit -c unlimited | |
if [ "${{ matrix.wxr_type }}" == "develop" ]; then | |
TEST_CMD="bundle exec rake test" | |
else | |
if [ "${{ matrix.wxw_type }}" == "develop" ]; then | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$WXWIN_INSTALL/lib | |
fi | |
TEST_CMD="wxruby test" | |
fi | |
/bin/bash -o pipefail -c "xvfb-run -a -s '-screen 0 1600x1200x24' $TEST_CMD 2>&1 | tee -a wxtest.out" || rc=$? | |
if [ -n "$rc" ]; then | |
if fgrep -q '(core dumped)' wxtest.out; then | |
echo '*** Test crashed, trying to get more information ***' | |
gdb --quiet --core=core -ex 'where' -ex 'thread apply all bt' -ex 'q' --args $TEST_CMD | |
fi | |
exit $rc | |
fi |