Skip to content

Windows wxMSW master builds #98

Windows wxMSW master builds

Windows wxMSW master builds #98

Workflow file for this run

# CI workflow building wxRuby3 under Windows.
name: Windows wxMSW master builds
on:
schedule:
- cron: '0 5 * * 5'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
DOXYGEN_ROOT: ${{ github.workspace }}\doxygen
WXWIDGETS_ROOT: ${{ github.workspace }}\ext\wxWidgets
WXWIN_ROOT: ${{ github.workspace }}\ext\wxWidgets\install
# WXRUBY_RELEASE: 1
jobs:
build:
runs-on: ${{ matrix.os }}
name: wxMSW wxRuby(${{ matrix.wxr_type }}) ${{ matrix.CXX }} ruby-${{ matrix.ruby }} wxWidgets-${{ matrix.wxWidgets }}(${{ matrix.wxw_type }}) SWIG${{ matrix.swig }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: 'master'
swig: '4'
wxw_type: develop
wxr_type: develop
steps:
- name: Checkout wxRuby3
uses: actions/checkout@v4
- name: checkout wxWidgets
if: matrix.wxw_type != 'embed'
uses: actions/checkout@v4
with:
repository: wxWidgets/wxWidgets
path: ${{ env.WXWIDGETS_ROOT }}
ref: ${{ matrix.wxWidgets }}
submodules: 'recursive'
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Setup Ruby gems
run: |
bundle install
- name: Cache Doxygen
id: cache-doxygen
uses: actions/cache@v4
with:
path: doxygen-1.10.0.windows.x64.bin.zip
key: ${{ runner.os }}-doxygen
- name: Download Doxygen tool
if: steps.cache-doxygen.outputs.cache-hit != 'true'
run: |
wget.exe https://www.doxygen.nl/files/doxygen-1.10.0.windows.x64.bin.zip
$hash = '2135c1d5bdd6e067b3d0c40a4daac5d63d0fee1b3f4d6ef1e4f092db0d632d5b'
if ((Get-FileHash doxygen-1.10.0.windows.x64.bin.zip -Algorithm SHA256).Hash -ne $hash) {
del doxygen-1.10.0.windows.x64.bin.zip
throw "Doxygen Hash doesn't match!"
}
- name: Install Doxygen package
run: |
Expand-Archive -LiteralPath '.\doxygen-1.10.0.windows.x64.bin.zip' -DestinationPath $env:DOXYGEN_ROOT -Force
echo "$env:DOXYGEN_ROOT" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Display build environment
run: |
echo "$env:PATH"
ruby -v
doxygen -v
ridk exec bash -c 'gcc -v'
ridk exec bash -c 'g++ -v'
- name: Configuring wxWidgets
if: matrix.wxw_type != 'embed'
working-directory: ${{ env.WXWIDGETS_ROOT }}
run: |
ridk exec bash -c './configure --prefix=`pwd`/install --disable-tests --without-subdirs --disable-debug_info'
- name: Build wxWidgets
if: matrix.wxw_type != 'embed'
working-directory: ${{ env.WXWIDGETS_ROOT }}
run: |
ridk exec bash -c 'make && make install'
- name: Configure wxRuby3
if: matrix.wxr_type != 'gem'
run: |
If ("${{ matrix.wxw_type }}" -eq "embed") {
bundle exec rake configure[--with-wxwin]
}
Else {
bundle exec rake configure WXWIN=$env:WXWIN_ROOT WXRUBY_VERBOSE=1
}
- 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 != 'develop'
run: |
bundle exec rake ${{ matrix.wxr_type }}
- name: Install wxRuby3 gem
if: matrix.wxr_type != 'develop'
run: |
If ("${{ matrix.wxw_type }}" -eq "embed") {
If ("${{ matrix.wxr_type }}" -eq "gem") {
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f && wxruby setup --autoinstall }
}
Else {
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f }
}
}
Else {
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f && wxruby setup --wxwin=$env:WXWIN_ROOT }
}
- name: Run wxRuby3 regression tests
run: |
If ("${{ matrix.wxr_type }}" -eq "develop") {
bundle exec rake test
}
Else {
wxruby test
}