Skip to content

CI fixes and modernization#1511

Open
palonso wants to merge 16 commits into
MTG:masterfrom
palonso:use-system-python3-cibuildwheel
Open

CI fixes and modernization#1511
palonso wants to merge 16 commits into
MTG:masterfrom
palonso:use-system-python3-cibuildwheel

Conversation

@palonso
Copy link
Copy Markdown
Contributor

@palonso palonso commented May 5, 2026

This PR brings the build system and CI workflows up to date with current toolchains and runner availability, fixing several breakages along the way.

C++ standard: C++11 → C++14

Homebrew's current eigen formula (5.x) requires C++14 features (std::enable_if_t, std::integer_sequence, std::make_signed_t, etc.), which fail to compile under Essentia's previous C++11 default. Bumped the default in wscript to C++14.

macOS deployment target bumps

The libtensorflow Homebrew bottle has tightened its minimum macOS target. delocate-wheel rejected wheels whose bundled libs required a newer OS than the wheel's own tag advertised. Updated MACOSX_DEPLOYMENT_TARGET for the cibuildwheel-tensorflow.toml arm64 override (15.2 → 15.4) to match the current bottle.

cibuildwheel.toml skip selectors

cibuildwheel 3.x rejected several legacy selectors with warnings:

  • Removed pp*, cp36, cp37 (no longer valid in 3.x).
  • Kept cp38 (project choice) and -musllinux/*i686 (unsupported by our manylinux2014 image).
  • Added t- to skip Python free-threaded builds (cp313t, cp314t). The Essentia C bindings define types via the legacy PyTypeObject API and fail to instantiate under no-GIL Python with SystemError: Type does not define the tp_name field. Re-enable once the bindings are audited for free-threading.

build-docs.yml: aligned with the wheel build

The docs workflow was building Essentia from scratch on a stock Ubuntu host: apt-get for system deps, manual git clone + build of Gaia, and setup_from_libtensorflow.sh for TensorFlow. This drifted from how the published wheels are produced and meant docs could pass while wheels failed (or vice versa).

Now the docs job runs the build inside the same mtgupf/essentia-builds:manylinux2014_x86_64 image used by cibuildwheel-tensorflow.toml, with the same waf configure flags. Only Sphinx/Doxygen/pandoc are layered on top.

Workflow modernization

  • actions/checkout: v4 → v6
  • actions/upload-artifact: v4 → v6
  • actions/setup-python: v2 → v6 (host Python 3.8 → 3.12 for sdist)
  • pypa/cibuildwheel: v2.23.2 → v3.2.1
  • Hosted runners: ubuntu-22.04 → ubuntu-24.04 (preempts upcoming GitHub deprecation; the actual builds still run inside the manylinux container, so host changes are just to prevent sooner deprecation).

Removed macos-13 runner

GitHub retired the Intel macos-13 hosted runner; jobs targeting it sit indefinitely in "Waiting for a runner". Replaced with macos-15-intel / kept macos-15 (arm64).

palonso added 10 commits May 5, 2026 10:02
Before it was hardcoded to use python3.6, which is no longer installed
in our manylinux images.
We don't need to use FFmpeg 2.8 as since MTG#1494 we support FFmpeg 5+
Eigen 5.x (current Homebrew formula) requires C++14 features
(std::enable_if_t, std::integer_sequence, etc.), causing build
failures with the previous C++11 default.
Update cibuildwheel-tensorflow.toml arm64 override:
MACOSX_DEPLOYMENT_TARGET 15.2 → 15.4 (matching the current libtensorflow
2.20.0 bottle's minimum)
Let's use the same pipeline in both workflows so that we don't have to
fix deps individually everytime we change something.
This avoids running checkout@v4, which depends on Node 20 on Centos7 as
it is not supported.
Build doc inside docker to mimic the cibuildwheel behaviour.
@palonso palonso force-pushed the use-system-python3-cibuildwheel branch from 7a98a86 to 7d5fa36 Compare May 5, 2026 15:03
palonso added 2 commits May 5, 2026 17:39
- 15.0 for the normal wheels as required by libcrypto.3.dylib and
libssl.3.dylib
- 15.2 for the tensorflow wheels as required by libtensorflow
@palonso palonso force-pushed the use-system-python3-cibuildwheel branch from 03b6c8b to d391ccb Compare May 5, 2026 15:50
palonso added 4 commits May 5, 2026 18:08
Let's take the opportunity to bump our tooling:
- ubuntu22.04 --> ubuntu24.04
- checkout v4 --> v6
- cibuildwheel v2.23 -> v3.2
- upload-artifact v4 -> v5
- cp38: project does not target Python 3.8.
- *t-*: free-threaded (no-GIL) builds. The Essentia C bindings rely on
  legacy PyTypeObject definitions that fail to instantiate under
  cp313t/cp314t ("Type does not define the tp_name field"). Re-enable
  once the bindings are audited for free-threading compatibility.
- *-musllinux*, *i686: not supported by our manylinux2014 build images.
Since Node.js 20 actions are deprecated
@palonso palonso changed the title Use system's Python3 to build Essentia CI fixes and modernization May 5, 2026
@palonso palonso requested a review from dbogdanov May 6, 2026 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant