AcademySoftwareFoundation / AcademySoftwareFoundation/Imath

Set up a wheel workflow for python bindings

Open
#432 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
488
Forks
161
Avg merge
1d 3h
Merged PRs (30d)
3

Description

Use OpenEXR's [wheel workflow](https://github.com/AcademySoftwareFoundation/openexr/blob/main/.github/workflows/python-wheels.yml) as a template: copy OpenEXR's python_wheels.yml, python_wheels_publish.yml, python_wheels_publish_test.yml, and pyproject.toml files into Imath and get it work. Ignore the publish workflows to start with; getting the basic wheel workflow building is the significant first step.

Install the PyImath and PyImathNumpy modules. Ignore the PyBindImath, which should be deprecated and removed.

PyImath uses Boost.Python, so this will require building Boost.Python from source, since actions/cibuildwheel needs installations that the build environments don’t provide. cibuildwheel builds against a matrix of python versions and machine architectures across Linux, macOS, and Windows.

Build the same matrix of python/architectures as OpenEXR. This is mostly an exercise in getting Boost.Python to build across these combinations.

Contributor guide

Open the contributing guide

Research direction

Compare OpenEXR's .github/workflows/python_wheels.yml, python_wheels_publish.yml, python_wheels_publish_test.yml, and pyproject.toml with Imath's layout. Start with the basic wheel workflow and its Boost.Python build requirements, ignoring publishing workflows initially. Done means PyImath and PyImathNumpy build across OpenEXR's Python-version and architecture matrix on Linux, macOS, and Windows, without PyBindImath.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, github-actions, python
Domain
build-system, ci-cd
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.