Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows workflow + other workflows update #591

Merged
merged 10 commits into from
Aug 17, 2024
172 changes: 172 additions & 0 deletions .github/workflows/build-and-test-windows-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
name: Build and test Python wheels for Windows and make PyPI release

on:
workflow_dispatch:
push:
paths:
- '.github/workflows/build-and-test-windows-wheels.yml'
- 'include/**'
- 'scripts/**'
- 'src/**'
- 'CMakeLists.txt'
- 'setup.py'
- 'pyproject.toml'
branches: [master]
pull_request:
paths:
- '.github/workflows/**'
- 'include/**'
- 'scripts/**'
- 'src/**'
- 'tests/**'
- 'CMakeLists.txt'
- 'setup.py'
- 'pyproject.toml'
release:
types: [published]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
# Set paths to dependencies here
BOOST_DIR: ${{ github.workspace }}\deps\boost
DXSDK_DIR: ${{ github.workspace }}\deps\DXSDK
OPENALDIR: ${{ github.workspace }}\deps\openal-soft
# Point to the correct generator and dependencies
VIZDOOM_WIN_DEPS_ROOT: ${{ github.workspace }}\deps
VIZDOOM_BUILD_GENERATOR_NAME: Visual Studio 17 2022

jobs:
build_and_test_wheels:
strategy:
matrix:
os: [windows-2022]
python-version: ['3.9', '3.10', '3.11', '3.12']
fail-fast: false
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

# Gather all dependencies
- name: Set up Python ${{ matrix.python-version }} environment
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Python environment report
run: python -c "import sys; print(sys.version)"

- name: Get deps repo
uses: actions/checkout@v4
with:
repository: mwydmuch/ViZDoomWinDepBin
path: ${{ github.workspace }}\deps

- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/actions/boost-versions/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a toolset on windows
toolset: msvc14.2
# OPTIONAL: Specify a custom install location
boost_install_dir: ${{ github.workspace }}\deps

- name: Download DXSDK
id: download-dxsdk
working-directory: ${{ github.workspace }}/deps
run: |
curl -L https://download.microsoft.com/download/a/e/7/ae743f1f-632b-4809-87a9-aa1bb3458e31/DXSDK_Jun10.exe -o _DX2010_.exe
7z x _DX2010_.exe DXSDK/Include -o_DX2010_
7z x _DX2010_.exe DXSDK/Lib -o_DX2010_
mv _DX2010_/DXSDK .
rm -fR _DX*_ _DX*_.exe
shell: bash

- name: Report working directory structure (cmd)
run: |
dir .
dir deps
- name: Report working directory structure (bash)
shell: bash
run: |
ls -la .
ls -la deps
- name: Report env (bash)
shell: bash
env:
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
run: |
echo $BUILD_TYPE
echo $BOOST_DIR
echo $BOOST_ROOT
echo $DXSDK_DIR
echo $VIZDOOM_BUILD_GENERATOR_NAME
echo $VIZDOOM_WIN_DEPS_ROOT
# Build
- name: Python environment report
run: python -c "import sys; print(sys.version)"

- name: CMake report
run: cmake --version

- name: Build
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade numpy
python -m pip install --upgrade setuptools wheel twine
python setup.py bdist_wheel
- name: Report built wheels (bash)
shell: bash
run: |
ls -l ./dist/*.whl
# Test
- name: Install wheel (bash)
shell: bash
run: |
python -m pip install $(ls dist/vizdoom-*.whl)[test]
- name: Test
run: |
python -m pytest tests
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: ./dist/*.whl

upload_pypi:
name: Upload to PyPI
needs: [build_and_test_wheels]
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- name: Download all dists
uses: actions/download-artifact@v3
with:
# Unpacks default artifact into dist/
# If `name: artifact` is omitted, the action will create extra parent dir
name: artifact
path: dist

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
# To test:
# with:
# repository_url: https://test.pypi.org/legacy/
20 changes: 13 additions & 7 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Build and test
on:
push:
paths:
- '.github/workflows/**'
- '.github/workflows/build-and-test.yml'
- 'include/**'
- 'scripts/**'
- 'src/**'
Expand All @@ -29,23 +29,29 @@ env:
HOMEBREW_NO_INSTALL_CLEANUP: 1

jobs:
build:
build_and_test:
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04, macos-12]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
os: [ubuntu-22.04, ubuntu-24.04, macos-13, macos-14]
python-version: ['3.9', '3.10', '3.11', '3.12']
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Report OS
run: |
echo ${{ matrix.os }}
echo ${{ runner.os }}
uname -p

- name: Install dependencies on Ubuntu
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install -y cmake git libboost-all-dev libsdl2-dev libopenal-dev
sudo apt update
sudo apt install -y cmake git libboost-all-dev libsdl2-dev libopenal-dev

- name: Apt report
if: runner.os == 'Linux'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-docs-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
env:
SPHINX_GITHUB_CHANGELOG_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-docs-manual-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:
env:
SPHINX_GITHUB_CHANGELOG_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
if: inputs.commit == ''

- uses: actions/checkout@v3
- uses: actions/checkout@v4
if: inputs.commit != ''
with:
ref: ${{ inputs.commit }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-docs-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
env:
SPHINX_GITHUB_CHANGELOG_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: actions/setup-python@v4
with:
Expand Down
34 changes: 27 additions & 7 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
push:
paths:
- '.github/workflows/**'
- '.github/workflows/build-wheels.yml'
- 'include/**'
- 'scripts/**'
- 'src/**'
Expand All @@ -21,29 +21,49 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, macos-11]
os: [ubuntu-22.04, macos-13, macos-14]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Report OS
run: |
echo ${{ matrix.os }}
echo ${{ runner.os }}
uname -p
- name: Set up QEMU
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v2
with:
platforms: all

- name: Build wheels
uses: pypa/[email protected]
- name: Build manylinux wheels
if: matrix.os == 'ubuntu-22.04'
uses: pypa/[email protected]
env:
# Configure cibuildwheel to build native archs, and some emulated ones
CIBW_ARCHS_LINUX: x86_64 aarch64
CIBW_ARCHS_MACOS: x86_64
CIBW_BUILD_VERBOSITY: 3
CIBW_REPAIR_WHEEL_COMMAND_LINUX: >
auditwheel show {wheel} && auditwheel repair -w {dest_dir} {wheel}
- name: Build macOS Intel wheels
if: matrix.os == 'macos-13'
uses: pypa/[email protected]
env:
CIBW_ARCHS_MACOS: x86_64
CIBW_BUILD_VERBOSITY: 3

- name: Build macOS Apple Silicon wheels
if: matrix.os == 'macos-14'
uses: pypa/[email protected]
env:
CIBW_ARCHS_MACOS: arm64
CIBW_BUILD_VERBOSITY: 3

- name: Report built wheels
run: |
ls -l ./wheelhouse/*.whl
Expand All @@ -57,7 +77,7 @@ jobs:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
name: Pre-commit checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- run: python -m pip install pre-commit
- run: python -m pre_commit --version
Expand Down
11 changes: 11 additions & 0 deletions src/lib_python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,17 @@ add_custom_target(assemble_package ALL
COMMENT "Assembling Python package in ${VIZDOOM_PYTHON_OUTPUT_DIR}/vizdoom"
)

if(WIN32) # Copy DLLs for Windows
file(GLOB TXT_FILES "${VIZDOOM_OUTPUT_DIR}/*.dll")

foreach(file ${TXT_FILES})
add_custom_command(
TARGET assemble_package
COMMAND ${CMAKE_COMMAND} -E copy ${file} ${VIZDOOM_PYTHON_PACKAGE_DIR}
)
endforeach()
endif()

set_target_properties(assemble_package
PROPERTIES
PROJECT_LABEL "Python package")
Expand Down
2 changes: 1 addition & 1 deletion src/lib_python/pybind11
Submodule pybind11 updated 175 files
Loading