Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
3d15279
Remove silence check in FreesoundExtractor
ffont May 4, 2026
d328c0b
Use system's Python3 to build Essentia
palonso May 5, 2026
88e9098
Use system's py3 version in TensorFlow's cibuildwheel
palonso May 5, 2026
2707095
Unpin brew's FFmpeg formula
palonso May 5, 2026
62e87d2
Bump c++11 -> c++14
palonso May 5, 2026
e832aed
Unpin ffmpeg from the main cibuildwheel script
palonso May 5, 2026
f1cd09b
Fix missing --with-tensorflow flag
palonso May 5, 2026
9099c00
Update MACOSX_DEPLOYMENT_TARGET 15.2 → 15.4
palonso May 5, 2026
7af5ca3
Use manylinux to build docs (experimental)
palonso May 5, 2026
1465097
Run doc workflow inside Ubuntu instead of ManyLinix
palonso May 5, 2026
9dc0d41
Mark project/ as safe for git to prevent exception
palonso May 5, 2026
0716f5d
Bump macos intel runner version
palonso May 5, 2026
d391ccb
Bump MACOSX_DEPLOYMENT_TARGET for the intel wheels
palonso May 5, 2026
eb4a059
Fix comment
palonso May 5, 2026
72af688
Bump workflow versions
palonso May 5, 2026
49239c0
Update build skip selectors
palonso May 5, 2026
42c5a6f
Bump upload-artifact to v6
palonso May 5, 2026
98fbd9b
Merge branch 'palonso-use-system-python3-cibuildwheel' into ffont-pat…
ffont May 6, 2026
26411f5
WIP add computation of Freesound similarity space
ffont May 6, 2026
f0a2e1b
Merge branch 'ffont-patch-1' of github.com:MTG/essentia into ffont-pa…
ffont May 6, 2026
63eb43b
Proper implementation of sim vector computation
ffont May 7, 2026
1fd3929
Add post-processing of results in fs extractor
ffont May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 28 additions & 26 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,45 @@ on:
- master
jobs:
build-docs:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Fetch release tags from GitHub
# Workaround for https://github.com/actions/checkout/issues/290
run: git fetch --tags --force
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential libeigen3-dev libyaml-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libsamplerate0-dev libtag1-dev libchromaprint-dev python3-dev python3-numpy-dev python3-numpy python3-yaml python3-six
sudo apt-get install -y doxygen python3-pip pandoc
pip3 install sphinx pyparsing sphinxcontrib-doxylink docutils jupyter sphinx-toolbox nbformat gitpython sphinx-copybutton
# Install TensorFlow
sudo sh src/3rdparty/tensorflow/setup_from_libtensorflow.sh
# Install Gaia dependencies
sudo apt-get install qtbase5-dev swig pkg-config
- name: Build Gaia

- name: Build Essentia and documentation
# Run inside the same image used by cibuildwheel.toml so the
# docs are generated against the same toolchain and static deps as the
# published wheels. We invoke Docker manually (rather than via the job's
# `container:`) because manylinux2014 ships glibc 2.17, which is too old
# for the Node 20 runtime that GitHub Actions injects into containers.
run: |
git clone https://github.com/MTG/gaia.git
cd gaia
python3 waf configure --with-python-bindings
python3 waf
sudo python3 waf install
docker run --rm \
-v "${PWD}:/project" \
-w /project \
mtgupf/essentia-builds:manylinux2014_x86_64 \
bash -euxc '
# Repo is bind-mounted from the host runner; container runs as
# root, so git refuses to touch it without this exception.
git config --global --add safe.directory /project

- name: Build Essentia
run: |
python3 waf configure --with-python --with-gaia --with-tensorflow
python3 waf
python3 -m pip install --upgrade pip
python3 -m pip install sphinx pyparsing sphinxcontrib-doxylink docutils jupyter sphinx-toolbox nbformat gitpython sphinx-copybutton
yum install -y doxygen pandoc

python3 waf configure --with-python --with-gaia --with-tensorflow --build-static --static-dependencies --pkg-config-path="${PKG_CONFIG_PATH}"
python3 waf
python3 waf install
python3 waf doc
'

- name: Build documentation
run: |
python3 waf doc
- name: Upload built documentation
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: essentia-docs
path: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/build-wheels-cibuildwheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, macos-13, macos-15]
os: [ubuntu-24.04, macos-15-intel, macos-15]
config: [cibuildwheel, cibuildwheel-tensorflow]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0

Expand All @@ -21,11 +21,11 @@ jobs:
run: git fetch --tags --force

- name: Build wheels
uses: pypa/cibuildwheel@v2.23.2
uses: pypa/cibuildwheel@v3.2.1
with:
config-file: ${{ matrix.config }}.toml

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
path: ./wheelhouse/*.whl
name: artifact-${{ matrix.os }}-${{ matrix.config }}
8 changes: 4 additions & 4 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,16 @@ jobs:
PRE_CMD: ${{ matrix.PRE_CMD }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Fetch release tags from GitHub
# Workaround for https://github.com/actions/checkout/issues/290
run: git fetch --tags --force
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v6
with:
python-version: 3.8
python-version: '3.12'
- name: Build wheels in a Docker image
run: |
docker pull $DOCKER_IMAGE > /dev/null
Expand All @@ -51,7 +51,7 @@ jobs:
ls wheelhouse/
sudo python setup.py sdist
- name: Upload wheels and sdist
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: essentia-python-wheels
path: |
Expand Down
39 changes: 22 additions & 17 deletions cibuildwheel-tensorflow.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,22 @@ manylinux-x86_64-image = "mtgupf/essentia-builds:manylinux2014_x86_64"
# Only support x86_64 for essentia-tensorflow.
build = "cp**-manylinux_x86_64"

skip = ["pp*", "*-musllinux*", "*i686", "*cp36*", "*cp37*", "*cp38*"]
# Skip selectors:
# - 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.
skip = ["*cp38*", "*t-*", "*-musllinux*", "*i686"]

environment = { PROJECT_NAME="essentia-tensorflow", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1 }

# Use system's Python3 to build Essentia.
before-all = [
"PYBIN=/opt/python/cp36-cp36m/bin/",
"\"${PYBIN}/python\" waf configure --with-gaia --with-tensorflow --build-static --static-dependencies --pkg-config-path=\"${PKG_CONFIG_PATH}\"",
"\"${PYBIN}/python\" waf",
"\"${PYBIN}/python\" waf install",
"python3 waf configure --with-gaia --with-tensorflow --build-static --static-dependencies --pkg-config-path=\"${PKG_CONFIG_PATH}\"",
"python3 waf",
"python3 waf install",
# Monkey-patch package name.
# We could have a separate pyproject.toml configuration, but the build backend does not accept custom configuration filepaths.
"sed 's/^name *= *\"essentia\"$/name = \"essentia-tensorflow\"/' pyproject.toml > pyproject.toml.patched && mv pyproject.toml.patched pyproject.toml"
Expand All @@ -24,18 +31,17 @@ test-command = "python -c 'import essentia; import essentia.standard; import ess

[tool.cibuildwheel.macos]

skip = ["pp*", "*cp36*", "*cp37*", "*cp38*"]
# See linux section for skip rationale.
skip = ["*cp38*", "*t-*"]

environment = { PROJECT_NAME="essentia-tensorflow", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, MACOSX_DEPLOYMENT_TARGET=14.2 }
environment = { PROJECT_NAME="essentia-tensorflow", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, MACOSX_DEPLOYMENT_TARGET=15.2 }

before-all = [
"brew install pkg-config gcc readline sqlite gdbm freetype libpng",
"brew install eigen libyaml fftw ffmpeg@2.8 libsamplerate libtag",
"brew link --force ffmpeg@2.8",
"brew install eigen libyaml fftw ffmpeg libsamplerate libtag",
"brew install chromaprint",
"brew link --overwrite ffmpeg@2.8",
# Delocate checks for the min OS version (LC_BUILD_VERSION or C_VERSION_MIN_MACOSX).
# Tensorflow bottle a has minimum target of 14.2 which is too new.
# Tensorflow bottle has a minimum target of 15.2 which is too new.
# We could build from source as a workaround, however, it takes too much time on the CI worker.
# To keep it simple, just use the bottles available for tensorflow.
"brew install tensorflow",
Expand All @@ -61,18 +67,17 @@ before-all = [
[[tool.cibuildwheel.overrides]]
select = "*macosx_arm64*"

skip = ["pp*", "*cp36*", "*cp37*", "*cp38*"]
# See linux section for skip rationale.
skip = ["*cp38*", "*t-*"]

environment = { PROJECT_NAME="essentia-tensorflow", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, ESSENTIA_MACOSX_ARM64=1, MACOSX_DEPLOYMENT_TARGET=15.2 }
environment = { PROJECT_NAME="essentia-tensorflow", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, ESSENTIA_MACOSX_ARM64=1, MACOSX_DEPLOYMENT_TARGET=15.4 }

before-all = [
"brew install pkg-config gcc readline sqlite gdbm libpng",
"brew install eigen libyaml fftw ffmpeg@2.8 libsamplerate libtag",
"brew link --force ffmpeg@2.8",
"brew install eigen libyaml fftw ffmpeg libsamplerate libtag",
"brew install chromaprint",
"brew link --overwrite ffmpeg@2.8",
# Delocate checks for the min OS version (LC_BUILD_VERSION or C_VERSION_MIN_MACOSX).
# Tensorflow bottle a has minimum target of 15.2 which is too new.
# Tensorflow bottle has a minimum target of 15.4 which is too new.
# We could build from source as a workaround, however, it takes too much time on the CI worker.
# To keep it simple, just use the bottles available for tensorflow.
"brew install tensorflow",
Expand Down
35 changes: 19 additions & 16 deletions cibuildwheel.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,37 @@
manylinux-x86_64-image = "mtgupf/essentia-builds:manylinux2014_x86_64"
manylinux-i686-image = "mtgupf/essentia-builds:manylinux2014_i686"

skip = ["pp*", "*-musllinux*", "*i686", "*cp36*", "*cp37*", "*cp38*"]
# Skip selectors:
# - 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.
skip = ["*cp38*", "*t-*", "*-musllinux*", "*i686"]

environment = { PROJECT_NAME="essentia", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1 }

# Use system's Python3 to build Essentia.
before-all = [
"PYBIN=/opt/python/cp36-cp36m/bin/",
"\"${PYBIN}/python\" waf configure --with-gaia --build-static --static-dependencies --pkg-config-path=\"${PKG_CONFIG_PATH}\"",
"\"${PYBIN}/python\" waf",
"\"${PYBIN}/python\" waf install"
"python3 waf configure --with-gaia --build-static --static-dependencies --pkg-config-path=\"${PKG_CONFIG_PATH}\"",
"python3 waf",
"python3 waf install",
]

test-command = "python -c 'import essentia; import essentia.standard; import essentia.streaming; from essentia.standard import MonoLoader, MetadataReader, YamlInput, Chromaprinter'"


[tool.cibuildwheel.macos]

skip = ["pp*", "*cp36*", "*cp37*", "*cp38*"]
# See linux section for skip rationale.
skip = ["*cp38*", "*t-*"]

environment = { PROJECT_NAME="essentia", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, MACOSX_DEPLOYMENT_TARGET=13.0 }
environment = { PROJECT_NAME="essentia", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, MACOSX_DEPLOYMENT_TARGET=15.0 }

before-all = [
"brew install pkg-config gcc readline sqlite gdbm freetype libpng",
"brew install eigen libyaml fftw ffmpeg@2.8 libsamplerate libtag",
"brew link --force ffmpeg@2.8",
"brew install chromaprint",
"brew link --overwrite ffmpeg@2.8",
"brew install eigen libyaml fftw ffmpeg libsamplerate libtag chromaprint",
#"brew tap MTG/essentia",
#"brew install gaia --HEAD",
# Override VIRTUAL_ENV set by cibuildwheel to ensure global install
Expand All @@ -43,16 +48,14 @@ test-command = "python -c 'import essentia; import essentia.standard; import ess
[[tool.cibuildwheel.overrides]]
select = "*macosx_arm64*"

skip = ["pp*", "*cp36*", "*cp37*", "*cp38*"]
# See linux section for skip rationale.
skip = ["*cp38*", "*t-*"]

environment = { PROJECT_NAME="essentia", ESSENTIA_PROJECT_NAME="${PROJECT_NAME}", ESSENTIA_WHEEL_SKIP_3RDPARTY=1, ESSENTIA_WHEEL_ONLY_PYTHON=1, ESSENTIA_MACOSX_ARM64=1, MACOSX_DEPLOYMENT_TARGET=15.0 }

before-all = [
"brew install pkg-config gcc readline sqlite gdbm libpng",
"brew install eigen libyaml fftw ffmpeg@2.8 libsamplerate libtag",
"brew link --force ffmpeg@2.8",
"brew install chromaprint",
"brew link --overwrite ffmpeg@2.8",
"brew install eigen libyaml fftw ffmpeg libsamplerate libtag chromaprint",
# Override VIRTUAL_ENV set by cibuildwheel to ensure global install
"VIRTUAL_ENV=/usr/local python waf configure --pkg-config-path=\"${PKG_CONFIG_PATH}\" --arch arm64 --no-msse",
"python waf",
Expand Down
Loading
Loading