Skip to content

Commit

Permalink
Merge pull request #591 from Farama-Foundation/windows-workflows
Browse files Browse the repository at this point in the history
Windows workflow + other workflows update
  • Loading branch information
mwydmuch authored Aug 17, 2024
2 parents bf97975 + 3956631 commit cff3dae
Show file tree
Hide file tree
Showing 8 changed files with 228 additions and 19 deletions.
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

0 comments on commit cff3dae

Please sign in to comment.