QPID-8631: fill_in python 3 incompatibilities in qmf/console.py #60
Workflow file for this run
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: Build | |
on: [ push, pull_request, workflow_dispatch ] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-20.04, windows-latest ] | |
# https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json | |
python-version: [ "2.7", "3.8" ] | |
buildType: [ RelWithDebInfo ] | |
include: | |
- os: ubuntu-20.04 | |
# QPID-8606: we don't support swig 4.0, it produces runtime errors when used | |
cmake_extra: '-DSWIG_EXECUTABLE="/usr/bin/swig3.0" -DRUBY_EXECUTABLE="/usr/bin/ruby2.6"' | |
- os: windows-latest | |
cmake_extra: '-DBUILD_BINDING_DOTNET=OFF -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake' | |
env: | |
BuildType: ${{matrix.buildType}} | |
BuildDir: ${{github.workspace}}/BLD | |
InstallPrefix: ${{github.workspace}}/INSTALL | |
PKG_CONFIG_PATH: ${{matrix.pkg_config_path}} | |
VCPKG_DEFAULT_TRIPLET: x64-windows | |
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' | |
SCCACHE_DIR: ${{github.workspace}}/SCCACHE | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup python | |
id: python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
# Cannot use https://github.com/ilammy/msvc-dev-cmd/blob/a742a854f54111d83b78e97091b5d85ccdaa3e89/index.js#L163 | |
# as (unapproved) 3rd party GitHub Actions are forbidden on Apache org projects | |
# https://github.com/microsoft/vswhere | |
# https://github.com/microsoft/vswhere/blob/c7a417bfb46cd6a1c3e31a91ba51193d7659b6f8/src/vswhere.lib/vswhere.lib.rc#L77 | |
# https://github.com/microsoft/vswhere/wiki/Start-Developer-Command-Prompt#using-powershell | |
# https://renenyffenegger.ch/notes/Windows/dirs/Program-Files-x86/Microsoft-Visual-Studio/version/edition/Common7/Tools/VsDevCmd_bat | |
# https://renenyffenegger.ch/notes/Windows/dirs/Program-Files-x86/Microsoft-Visual-Studio/version/edition/VC/Auxiliary/Build/vcvarsall_bat | |
- name: Setup Developer Command Prompt environment (on Windows) | |
if: runner.os == 'Windows' | |
run: | | |
$installationPath = vswhere.exe -prerelease -latest -property installationPath | |
if ($installationPath -and (test-path "$installationPath\Common7\Tools\vsdevcmd.bat")) { | |
& "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -no_logo -arch=x64 && set" | foreach-object { | |
$name, $value = $_ -split '=', 2 | |
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable | |
Add-Content ${env:GITHUB_ENV} "${name}=${value}" | |
} | |
} | |
shell: pwsh | |
- name: Install Linux dependencies | |
if: runner.os == 'Linux' | |
run: | | |
# ubuntu packages (https://packages.ubuntu.com/source/focal/qpid-proton) don't carry ProtonConfig.cmake | |
# the `testing` ppa is less likely to be out-of-date | |
sudo add-apt-repository ppa:qpid/testing && sudo apt-get update | |
# https://github.com/swig/swig/issues/1689 | |
# swig3.0 in focal does not work well with ruby2.7 | |
sudo apt-add-repository ppa:brightbox/ruby-ng && sudo apt-get update | |
sudo apt-get -yq --no-install-suggests --no-install-recommends install \ | |
cmake ninja-build \ | |
libboost-dev libboost-program-options-dev libboost-system-dev libboost-test-dev \ | |
libxqilla-dev libxerces-c-dev \ | |
libibverbs-dev librdmacm-dev \ | |
libdb++-dev libaio-dev \ | |
libqpid-proton11-dev libqpid-proton-core10 libqpid-proton-proactor1 \ | |
swig3.0 ruby2.6 ruby2.6-dev \ | |
uuid-dev libnss3-dev libnss3-tools libsasl2-dev sasl2-bin \ | |
valgrind | |
sccache_version=v0.4.1 | |
wget -q https://github.com/mozilla/sccache/releases/download/${sccache_version}/sccache-${sccache_version}-x86_64-unknown-linux-musl.tar.gz | |
tar -xf sccache-${sccache_version}-x86_64-unknown-linux-musl.tar.gz sccache-${sccache_version}-x86_64-unknown-linux-musl/sccache | |
sudo mv sccache-${sccache_version}-x86_64-unknown-linux-musl/sccache /usr/bin/sccache | |
sudo chmod +x /usr/bin/sccache | |
shell: bash | |
- name: Install python dependencies | |
run: | | |
${{ steps.python.outputs.python-path }} -m pip install --upgrade pip | |
${{ steps.python.outputs.python-path }} -m pip install setuptools | |
- name: Fetch qpid-python from git | |
if: matrix.python-version != '2.7' | |
uses: actions/checkout@v3 | |
with: | |
repository: apache/qpid-python | |
ref: main | |
path: qpid-python | |
# We require qpid-python, which is a python2-only library, to run broker tests | |
- name: Install qpid-python (released version) | |
if: matrix.python-version == '2.7' | |
run: | | |
${{ steps.python.outputs.python-path }} -m pip install qpid-python | |
- name: Install qpid-python (git version) | |
if: matrix.python-version != '2.7' | |
run: | | |
cd qpid-python | |
${{ steps.python.outputs.python-path }} setup.py install | |
- name: Cache scoop (restore) (on Windows) | |
uses: actions/cache/restore@v3 | |
id: restore-scoop-cache | |
if: runner.os == 'Windows' | |
with: | |
path: ~\scoop | |
key: ${{ runner.os }}-scoop-${{ env.OS_VER }}-${{ hashFiles('.github/workflows/build.yml') }} | |
restore-keys: | | |
${{ runner.os }}-scoop-${{ env.OS_VER }}- | |
${{ runner.os }}-scoop- | |
- name: Cache vcpkg/downloads and vcpkg/installed (restore) (on Windows) | |
uses: actions/cache/restore@v3 | |
id: restore-vcpkg-cache | |
if: runner.os == 'Windows' | |
with: | |
path: | | |
C:\vcpkg\downloads | |
C:\vcpkg\installed | |
key: ${{ runner.os }}-vcpkg-${{ env.OS_VER }}-${{ hashFiles('.github/workflows/build.yml') }} | |
restore-keys: | | |
${{ runner.os }}-vcpkg-${{ env.OS_VER }}- | |
${{ runner.os }}-vcpkg- | |
- name: Install Windows dependencies | |
if: runner.os == 'Windows' | |
run: | | |
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time | |
iex "& {$(irm get.scoop.sh)} -RunAsAdmin" | |
scoop install sccache | |
vcpkg install boost-program-options boost-system boost-test boost-date-time boost-thread boost-chrono boost-format boost-ptr-container boost-assign boost-parameter boost-foreach boost-utility | |
vcpkg integrate install | |
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#add-a-system-path-add-path | |
Add-Content ${env:GITHUB_PATH} "${HOME}/scoop/shims" | |
shell: pwsh | |
- name: Cache scoop (save) (on Windows) | |
uses: actions/cache/save@v3 | |
if: runner.os == 'Windows' | |
with: | |
path: ~\scoop | |
key: ${{ steps.restore-scoop-cache.outputs.cache-primary-key }} | |
- name: Cache vcpkg/downloads and vcpkg/installed (save) (on Windows) | |
uses: actions/cache/save@v3 | |
if: runner.os == 'Windows' | |
with: | |
path: | | |
C:\vcpkg\downloads | |
C:\vcpkg\installed | |
key: ${{ steps.restore-vcpkg-cache.outputs.cache-primary-key }} | |
# don't save this into the vcpkg cache | |
- name: Copy over Boost DLLs to where we expect them | |
if: runner.os == 'Windows' | |
run: | | |
# work around assumptions in our build scripts about boost libs layout | |
Copy-Item -Path C:/vcpkg/installed/x64-windows/debug/bin/* -Include *.dll -Destination C:/vcpkg/installed/x64-windows/debug/lib | |
Get-Item C:/vcpkg/installed/x64-windows/debug/lib/*.dll | Rename-Item -NewName { $_.Name -replace '-vc14.-mt-gd-x64-1_81.dll','-vc140-mt-gd.dll' } | |
# display results of this hard work | |
ls C:/vcpkg/installed/x64-windows/debug/bin/ | |
ls C:/vcpkg/installed/x64-windows/debug/lib/ | |
# now do the same for release | |
Copy-Item -Path C:/vcpkg/installed/x64-windows/bin/* -Include *.dll -Destination C:/vcpkg/installed/x64-windows/lib | |
Get-Item C:/vcpkg/installed/x64-windows/lib/*.dll | Rename-Item -NewName { $_.Name -replace '-vc14.-mt-x64-1_81.dll','-vc140-mt.dll' } | |
# display results of this hard work | |
ls C:/vcpkg/installed/x64-windows/bin/ | |
ls C:/vcpkg/installed/x64-windows/lib/ | |
shell: pwsh | |
- name: Cache SCCACHE_DIR (restore) | |
uses: actions/cache/restore@v3 | |
id: restore-sccache-cache | |
with: | |
path: "${{ env.SCCACHE_DIR }}" | |
key: ${{ runner.os }}-sccache-${{ matrix.os }}-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-sccache-${{ matrix.os }}- | |
${{ runner.os }}-sccache- | |
# Windows build should ideally use something like '-G "Visual Studio 16 2019" -A x64', | |
# but -DCMAKE_C_COMPILER_LAUNCHER is only supported by make and ninja generators | |
# https://devblogs.microsoft.com/scripting/powertip-line-continuation-in-powershell/ | |
- name: cmake configure | |
run: | | |
cmake -S "${{github.workspace}}" -B "${{env.BuildDir}}" -G Ninja ` | |
-DCMAKE_C_COMPILER_LAUNCHER="sccache" -DCMAKE_CXX_COMPILER_LAUNCHER="sccache" ` | |
"-DCMAKE_BUILD_TYPE=${{env.BuildType}}" ` | |
"-DCMAKE_INSTALL_PREFIX=${{env.InstallPrefix}}" ` | |
"-DPYTHON_EXECUTABLE=${{ steps.python.outputs.python-path }}" ` | |
${{matrix.cmake_extra}} | |
shell: pwsh | |
# https://stackoverflow.com/a/46187862/1047788 | |
# https://github.com/jiridanek/qpid-cpp/actions/runs/3314156604/jobs/5473066487#step:12:1472 | |
- name: cmake build/install | |
run: | | |
cmake --build "${{env.BuildDir}}" --config ${{env.BuildType}} -- -v | |
cmake --install "${{env.BuildDir}}" --config ${{env.BuildType}} | |
shell: pwsh | |
- name: Cache SCCACHE_DIR (save) | |
uses: actions/cache/save@v3 | |
with: | |
path: "${{ env.SCCACHE_DIR }}" | |
key: ${{ steps.restore-sccache-cache.outputs.cache-primary-key }} | |
- id: ctest | |
name: ctest | |
working-directory: ${{env.BuildDir}} | |
run: PYTHONPATH=${InstallPrefix}/lib/python${{ matrix.python-version }}/site-packages ctest -C ${BuildType} -V -T Test --no-compress-output ${{matrix.ctest_extra}} | |
shell: bash | |
- name: Upload Test results | |
if: always() && (steps.ctest.outcome == 'failure' || steps.ctest.outcome == 'success') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Test_Results_${{matrix.os}}_${{matrix.buildType}} | |
path: ${{env.BuildDir}}/Testing/**/*.xml | |
- name: Environment | |
if: always() | |
run: env -0 | sort -z | tr '\0' '\n' | |
shell: bash |