diff --git a/.github/workflows/build_wheels_macos.yml b/.github/workflows/build_wheels_macos.yml index 4a96dd3e..c52bfe34 100644 --- a/.github/workflows/build_wheels_macos.yml +++ b/.github/workflows/build_wheels_macos.yml @@ -1,4 +1,4 @@ -name: macOS x86_64 +name: MacOS on: pull_request: @@ -8,7 +8,6 @@ on: paths-ignore: - '.github/workflows/build_wheels_manylinux*' - '.github/workflows/build_wheels_windows*' - - '.github/workflows/build_wheels_macos_m1.yml' release: types: [published, edited] schedule: @@ -18,12 +17,12 @@ on: jobs: Build: - runs-on: python-macos-intel + runs-on: ${{ matrix.platform == 'arm64' && 'macos-15' || 'macos-15-intel' }} strategy: fail-fast: false matrix: - python-version: ['3.9'] - platform: [x64] + python-version: ['3.10'] + platform: [x86_64, arm64] with_contrib: [0, 1] without_gui: [0, 1] build_sdist: [0] @@ -40,12 +39,15 @@ jobs: CONFIG_PATH: travis_config.sh USE_CCACHE: 1 UNICODE_WIDTH: 32 - PLAT: x86_64 + PLAT: ${{ matrix.platform }} SDIST: ${{ matrix.build_sdist || 0 }} ENABLE_HEADLESS: ${{ matrix.without_gui }} ENABLE_CONTRIB: ${{ matrix.with_contrib }} PIP_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple steps: + - uses: actions/setup-python@v7 + with: + python-version: ${{ matrix.python-version }} - name: Cleanup run: find . -mindepth 1 -delete working-directory: ${{ github.workspace }} @@ -65,37 +67,39 @@ jobs: echo $ENABLE_CONTRIB > contrib.enabled echo $ENABLE_HEADLESS > headless.enabled export MACOSX_DEPLOYMENT_TARGET=14.0 - python${{ matrix.python-version }} -m pip install toml && python${{ matrix.python-version }} -c 'import toml; c = toml.load("pyproject.toml"); print("\n".join(c["build-system"]["requires"]))' | python${{ matrix.python-version }} -m pip install -r /dev/stdin - python${{ matrix.python-version }} setup.py bdist_wheel --py-limited-api=cp37 --dist-dir=wheelhouse -v + python --version + python -m pip install delocate toml && python -c 'import toml; c = toml.load("pyproject.toml"); print("\n".join(c["build-system"]["requires"]))' | python -m pip install -r /dev/stdin + python setup.py bdist_wheel --py-limited-api=cp37 --dist-dir=wheelhouse -v delocate-wheel ${{ github.workspace }}/wheelhouse/opencv* - name: Saving a wheel accordingly to matrix uses: actions/upload-artifact@v7 with: - name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} + name: wheel-${{ matrix.platform }}-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} path: wheelhouse/opencv*.whl Test: needs: [Build] - runs-on: python-macos-intel + runs-on: ${{ matrix.platform == 'arm64' && 'macos-15' || 'macos-15-intel' }} strategy: fail-fast: false matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] - platform: [x64] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + platform: [x86_64, arm64] with_contrib: [0, 1] without_gui: [0, 1] build_sdist: [0] env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true MB_PYTHON_VERSION: ${{ matrix.python-version }} - NP_TEST_DEP: numpy==1.19.4 - NP_TEST_DEP_LATEST: numpy==2.2.6 CONFIG_PATH: travis_config.sh - PLAT: x86_64 + PLAT: ${{ matrix.platform }} OPENCV_TEST_DATA_PATH: ${{ github.workspace }}/opencv_extra/testdata PYLINT_TEST_FILE: ${{ github.workspace }}/opencv/samples/python/squares.py PIP_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple steps: + - uses: actions/setup-python@v7 + with: + python-version: ${{ matrix.python-version }} - name: Cleanup run: find . -mindepth 1 -delete working-directory: ${{ github.workspace }} @@ -107,30 +111,31 @@ jobs: - name: Download a wheel accordingly to matrix uses: actions/download-artifact@v8 with: - name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} + name: wheel-${{ matrix.platform }}-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} path: wheelhouse/ - name: Create Venv for test run: | test -d "${{ github.workspace }}/opencv_test" && rm -rf "${{ github.workspace }}/opencv_test" - python${{ matrix.python-version }} -m venv ${{ github.workspace }}/opencv_test + python -m venv ${{ github.workspace }}/opencv_test - name: Package installation run: | source ${{ github.workspace }}/opencv_test/bin/activate - python${{ matrix.python-version }} -m pip install --upgrade pip - python${{ matrix.python-version }} -m pip install --no-cache --force-reinstall wheelhouse/opencv*.whl + python --version + python -m pip install --upgrade pip + python -m pip install --no-cache --force-reinstall wheelhouse/opencv*.whl cd ${{ github.workspace }}/tests - python${{ matrix.python-version }} get_build_info.py + python get_build_info.py - name: Run tests run: | source ${{ github.workspace }}/opencv_test/bin/activate cd ${{ github.workspace }}/opencv - python${{ matrix.python-version }} modules/python/test/test.py -v --repo . + python modules/python/test/test.py -v --repo . - name: Pylint test run: | source ${{ github.workspace }}/opencv_test/bin/activate - python${{ matrix.python-version }} -m pip install pylint==2.15.9 + python -m pip install pylint==2.15.9 cd ${{ github.workspace }}/tests - python${{ matrix.python-version }} -m pylint $PYLINT_TEST_FILE + python -m pylint $PYLINT_TEST_FILE Release_rolling: if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} diff --git a/.github/workflows/build_wheels_macos_m1.yml b/.github/workflows/build_wheels_macos_m1.yml deleted file mode 100644 index 9c8c670f..00000000 --- a/.github/workflows/build_wheels_macos_m1.yml +++ /dev/null @@ -1,192 +0,0 @@ -name: macOS ARM64 - -on: - pull_request: - branches: - - 4.x - - 5.x - paths-ignore: - - '.github/workflows/build_wheels_manylinux*' - - '.github/workflows/build_wheels_windows*' - - '.github/workflows/build_wheels_macos.yml' - release: - types: [published, edited] - schedule: - - cron: '0 3 * * 6' - workflow_dispatch: - - -jobs: - Build: - runs-on: python-macos12-m1 - strategy: - fail-fast: false - matrix: - python-version: ['3.9'] - platform: [x64] - with_contrib: [0, 1] - without_gui: [0, 1] - build_sdist: [0] - env: - CI_BUILD: 1 - SDIST: ${{ matrix.build_sdist || 0 }} - ENABLE_HEADLESS: ${{ matrix.without_gui }} - ENABLE_CONTRIB: ${{ matrix.with_contrib }} - PIP_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple - steps: - - name: Cleanup - run: find . -mindepth 1 -delete - working-directory: ${{ github.workspace }} - - name: Setup environment - run: | - if [[ "${{ github.event_name }}" == "schedule" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo "ENABLE_ROLLING=1" >> $GITHUB_ENV - fi - - name: Checkout - uses: actions/checkout@v7 - with: - submodules: false - fetch-depth: 0 - - name: Build a package - run: | - git submodule update --init multibuild - echo $ENABLE_CONTRIB > contrib.enabled - echo $ENABLE_HEADLESS > headless.enabled - export MACOSX_DEPLOYMENT_TARGET=13.0 - python${{ matrix.python-version }} -m pip install toml && python${{ matrix.python-version }} -c 'import toml; c = toml.load("pyproject.toml"); print("\n".join(c["build-system"]["requires"]))' | python${{ matrix.python-version }} -m pip install -r /dev/stdin - python${{ matrix.python-version }} setup.py bdist_wheel --py-limited-api=cp37 --dist-dir=wheelhouse -v - delocate-wheel ${{ github.workspace }}/wheelhouse/opencv* - - name: Saving a wheel accordingly to matrix - uses: actions/upload-artifact@v7 - with: - name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} - path: wheelhouse/opencv*.whl - - Test: - needs: [Build] - runs-on: python-macos12-m1 - strategy: - fail-fast: false - matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] - platform: [x64] - with_contrib: [0, 1] - without_gui: [0, 1] - build_sdist: [0] - env: - OPENCV_TEST_DATA_PATH: ${{ github.workspace }}/opencv_extra/testdata - PYLINT_TEST_FILE: ${{ github.workspace }}/opencv/samples/python/squares.py - PIP_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple - steps: - - name: Cleanup - run: find . -mindepth 1 -delete - working-directory: ${{ github.workspace }} - - name: Checkout - uses: actions/checkout@v7 - with: - submodules: true - fetch-depth: 0 - - name: Download a wheel accordingly to matrix - uses: actions/download-artifact@v8 - with: - name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }} - path: wheelhouse/ - - name: Create Venv for test - run: | - test -d "${{ github.workspace }}/opencv_test" && rm -rf "${{ github.workspace }}/opencv_test" - python${{ matrix.python-version }} -m venv ${{ github.workspace }}/opencv_test - - name: Package installation - run: | - source ${{ github.workspace }}/opencv_test/bin/activate - python${{ matrix.python-version }} -m pip install --upgrade pip - python${{ matrix.python-version }} -m pip install --no-cache --force-reinstall wheelhouse/opencv*.whl - cd ${{ github.workspace }}/tests - python${{ matrix.python-version }} get_build_info.py - - name: Run tests - run: | - source ${{ github.workspace }}/opencv_test/bin/activate - cd ${{ github.workspace }}/opencv - python${{ matrix.python-version }} modules/python/test/test.py -v --repo . - - name: Pylint test - run: | - source ${{ github.workspace }}/opencv_test/bin/activate - python${{ matrix.python-version }} -m pip install pylint==2.15.9 - cd ${{ github.workspace }}/tests - python${{ matrix.python-version }} -m pylint $PYLINT_TEST_FILE - - Release_rolling: - if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} - needs: [Build, Test] - runs-on: ubuntu-22.04 - environment: opencv-python-rolling-release - defaults: - run: - shell: bash - steps: - - uses: actions/download-artifact@v8 - with: - name: wheels - path: wheelhouse/ - - name: Upload wheels for opencv_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_rolling-* - - name: Upload wheels for opencv_contrib_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_rolling-* - - name: Upload wheels for opencv_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless_rolling-* - - name: Upload wheels for opencv_contrib_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless_rolling-* - - Pre-release: - if: github.event_name == 'release' && github.event.release.prerelease - needs: [Build, Test] - runs-on: ubuntu-22.04 - environment: test-opencv-python-release - defaults: - run: - shell: bash - steps: - - uses: actions/download-artifact@v8 - with: - path: wheelhouse/ - - name: Upload all wheels - run: | - tree - python -m pip install twine - python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_* - - Release: - if: github.event_name == 'release' && !github.event.release.prerelease - needs: [Build, Test] - runs-on: ubuntu-22.04 - environment: opencv-python-release - defaults: - run: - shell: bash - steps: - - uses: actions/download-artifact@v8 - with: - path: wheelhouse/ - - name: Upload wheels for opencv_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python-* - - name: Upload wheels for opencv_contrib_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python-* - - name: Upload wheels for opencv_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless-* - - name: Upload wheels for opencv_contrib_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless-* diff --git a/.github/workflows/build_wheels_manylinux.yml b/.github/workflows/build_wheels_manylinux.yml index 1e795174..d614c28a 100644 --- a/.github/workflows/build_wheels_manylinux.yml +++ b/.github/workflows/build_wheels_manylinux.yml @@ -17,7 +17,7 @@ on: jobs: Build: - runs-on: ${{ matrix.platform == 'aarch64' && 'opencv-cn-lin-arm64' || 'ubuntu-22.04' }} + runs-on: ${{ matrix.platform == 'aarch64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }} defaults: run: shell: bash @@ -33,16 +33,16 @@ jobs: include: - platform: aarch64 manylinux: 2014 - DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64:20260725 + DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64:20261110 - platform: x86_64 manylinux: 2014 - DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20260725 + DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20261110 - platform: x86_64 manylinux: 2_28 - DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-x86-64:20260725 + DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-x86-64:20261110 - platform: aarch64 manylinux: 2_28 - DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-aarch64:20260725 + DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-aarch64:20261110 env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true @@ -86,7 +86,7 @@ jobs: Test: needs: [Build] - runs-on: ${{ matrix.platform == 'aarch64' && 'opencv-cn-lin-arm64' || 'ubuntu-22.04' }} + runs-on: ${{ matrix.platform == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-22.04' }} defaults: run: shell: bash @@ -165,7 +165,7 @@ jobs: NP_TEST_DEP: numpy==1.19.4 TRAVIS_BUILD_DIR: ${{ github.workspace }} CONFIG_PATH: travis_config.sh - DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20260102 + DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20261110 USE_CCACHE: 1 UNICODE_WIDTH: 32 SDIST: ${{ matrix.build_sdist || 0 }} diff --git a/README.md b/README.md index 96b7dd52..b92e7f06 100644 --- a/README.md +++ b/README.md @@ -37,14 +37,14 @@ Check the manual build section if you wish to compile the bindings from source t **a.** Packages for standard desktop environments (Windows, macOS, almost any GNU/Linux distribution) - Option 1 - Main modules package: ``pip install opencv-python`` - - Option 2 - Full package (contains both main modules and contrib/extra modules): ``pip install opencv-contrib-python`` (check contrib/extra modules listing from [OpenCV documentation](https://docs.opencv.org/master/)) + - Option 2 - Full package (contains both main modules and contrib/extra modules): ``pip install opencv-contrib-python`` (check contrib/extra modules listing from [OpenCV documentation](https://docs.opencv.org/)) **b.** Packages for server (headless) environments (such as Docker, cloud environments etc.), no GUI library dependencies These packages are smaller than the two other packages above because they do not contain any GUI functionality (not compiled with Qt / other GUI components). This means that the packages avoid a heavy dependency chain to X11 libraries and you will have for example smaller Docker images as a result. You should always use these packages if you do not use `cv2.imshow` et al. or you are using some other package (such as PyQt) than OpenCV to create your GUI. - Option 3 - Headless main modules package: ``pip install opencv-python-headless`` - - Option 4 - Headless full package (contains both main modules and contrib/extra modules): ``pip install opencv-contrib-python-headless`` (check contrib/extra modules listing from [OpenCV documentation](https://docs.opencv.org/master/)) + - Option 4 - Headless full package (contains both main modules and contrib/extra modules): ``pip install opencv-contrib-python-headless`` (check contrib/extra modules listing from [OpenCV documentation](https://docs.opencv.org/)) 4. Import the package: @@ -54,7 +54,7 @@ Check the manual build section if you wish to compile the bindings from source t ``cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")`` -5. Read [OpenCV documentation](https://docs.opencv.org/master/) +5. Read [OpenCV documentation](https://docs.opencv.org/) 6. Before opening a new issue, read the FAQ below and have a look at the other issues which are already open. @@ -161,6 +161,38 @@ If some dependency is not enabled in the pre-built wheels, you can also run the - Optional: on Linux use some of the `manylinux` images as a build hosts if maximum portability is needed and run `auditwheel` for the wheel after build - Optional: on macOS use ``delocate`` (same as ``auditwheel`` but for macOS) for better portability +#### Building with GStreamer on Windows + +To build opencv-python with GStreamer support on Windows, you must install +the official GStreamer MSVC binaries and make them available to CMake during +the build process. + +**Prerequisites** +- Windows 10 or later (64-bit) +- Visual Studio 2019 or newer (MSVC) +- CMake +- Python (matching the target wheel version) +- GStreamer 1.x MSVC (runtime + development packages) + +**Install GStreamer** +Download and install both the **runtime** and **development** installers for +GStreamer 1.x (MSVC 64-bit) from the official GStreamer website. + +**Environment variables** +Before building, ensure the following paths are available: + +set PATH=C:\gstreamer\1.0\msvc_x86_64\bin;%PATH% +set GST_PLUGIN_PATH=C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0 + +Adjust paths if GStreamer is installed in a different location. + +**Build** +Run the standard manual build command: + +If GStreamer is detected correctly, the CMake output will indicate that +GStreamer support is enabled. + + #### Manual debug builds In order to build `opencv-python` in an unoptimized debug build, you need to side-step the normal process a bit. diff --git a/docker/manylinux2014/Dockerfile_aarch64 b/docker/manylinux2014/Dockerfile_aarch64 index b8dc69ed..b99c7362 100644 --- a/docker/manylinux2014/Dockerfile_aarch64 +++ b/docker/manylinux2014/Dockerfile_aarch64 @@ -1,20 +1,20 @@ -# Version: 20260725 +# Version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64 FROM quay.io/pypa/manylinux2014_aarch64:latest -ARG CCACHE_VERSION=4.13.6 -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 +ARG CCACHE_VERSION=4.14.3 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 ARG VPX_VERSION=v1.15.2 ARG NASM_VERSION=2.16.03 ARG OPENSSL_VERSION=1_1_1w ARG QT_VERSION=5.15.19 ARG YASM_VERSION=1.3.0 -ARG AOM_VERSION=v3.14.1 +ARG AOM_VERSION=v3.15.3 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH @@ -157,8 +157,8 @@ RUN curl -O -L https://github.com/ccache/ccache/releases/download/v${CCACHE_VERS cd ../.. && \ rm -rf ccache-${CCACHE_VERSION} ccache-${CCACHE_VERSION}.tar.gz -# Self-hosted runner UID is 1004 -RUN useradd ci -m -s /bin/bash -G users --uid=1004 && \ +# GitHub Actions user`s UID is 1001 +RUN useradd ci -m -s /bin/bash -G users --uid=1001 && \ mkdir /io && \ chown -R ci:ci /io && \ # This needs to find ffmpeg packages from ci user diff --git a/docker/manylinux2014/Dockerfile_x86_64 b/docker/manylinux2014/Dockerfile_x86_64 index ab42b5c4..71dc87d7 100644 --- a/docker/manylinux2014/Dockerfile_x86_64 +++ b/docker/manylinux2014/Dockerfile_x86_64 @@ -1,20 +1,20 @@ -# Version: 20260725 +# Version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64 FROM quay.io/pypa/manylinux2014_x86_64:latest -ARG CCACHE_VERSION=4.13.6 -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 +ARG CCACHE_VERSION=4.14.3 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 ARG VPX_VERSION=v1.15.2 -ARG NASM_VERSION=2.15.04 +ARG NASM_VERSION=2.16.03 ARG OPENSSL_VERSION=1_1_1w ARG QT_VERSION=5.15.19 ARG YASM_VERSION=1.3.0 -ARG AOM_VERSION=v3.14.1 +ARG AOM_VERSION=v3.15.3 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH diff --git a/docker/manylinux_2_28/Dockerfile_aarch64 b/docker/manylinux_2_28/Dockerfile_aarch64 index fba959c1..f8a82ffa 100644 --- a/docker/manylinux_2_28/Dockerfile_aarch64 +++ b/docker/manylinux_2_28/Dockerfile_aarch64 @@ -1,16 +1,16 @@ -# Version: 20260725 +# Version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-manylinux_2_28-aarch64 FROM quay.io/pypa/manylinux_2_28_aarch64:latest -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 ARG VPX_VERSION=v1.15.2 ARG QT_VERSION=5.15.19 -ARG AOM_VERSION=v3.14.1 +ARG AOM_VERSION=v3.15.3 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH @@ -105,8 +105,8 @@ RUN mkdir ~/ffmpeg_sources && \ ldconfig && \ rm -rf ~/ffmpeg_sources -# Self-hosted runner UID is 1004 -RUN useradd ci -m -s /bin/bash -G users --uid=1004 && \ +# GitHub Actions user`s UID is 1001 +RUN useradd ci -m -s /bin/bash -G users --uid=1001 && \ mkdir /io && \ chown -R ci:ci /io && \ # This needs to find ffmpeg packages from ci user diff --git a/docker/manylinux_2_28/Dockerfile_x86_64 b/docker/manylinux_2_28/Dockerfile_x86_64 index 8bec5dee..3f3b0f2a 100644 --- a/docker/manylinux_2_28/Dockerfile_x86_64 +++ b/docker/manylinux_2_28/Dockerfile_x86_64 @@ -1,16 +1,16 @@ -# Version: 20260725 +# Version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-manylinux_2_28-x86-64 FROM quay.io/pypa/manylinux_2_28_x86_64:latest -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 ARG VPX_VERSION=v1.15.2 ARG QT_VERSION=5.15.19 -ARG AOM_VERSION=v3.14.1 +ARG AOM_VERSION=v3.15.3 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH diff --git a/docker/musllinux_1_2/Dockerfile_aarch64 b/docker/musllinux_1_2/Dockerfile_aarch64 index fc4ef7c5..7ba002c8 100644 --- a/docker/musllinux_1_2/Dockerfile_aarch64 +++ b/docker/musllinux_1_2/Dockerfile_aarch64 @@ -1,18 +1,18 @@ -# version: 20260725 +# version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-musllinux_1_2-aarch64 FROM quay.io/pypa/musllinux_1_2_aarch64:latest -ARG CCACHE_VERSION=4.13.6 -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 -ARG VPX_VERSION=v1.15.1 +ARG CCACHE_VERSION=4.14.3 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 +ARG VPX_VERSION=v1.15.2 ARG NASM_VERSION=2.16.03 ARG OPENSSL_VERSION=1_1_1w ARG YASM_VERSION=1.3.0 ARG AOM_VERSION=v3.14.1 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH @@ -161,14 +161,9 @@ RUN curl -O -L https://github.com/ccache/ccache/releases/download/v${CCACHE_VERS cd ../.. && \ rm -rf ccache-${CCACHE_VERSION} ccache-${CCACHE_VERSION}.tar.gz -# Self-hosted runner UID is 1004 -RUN useradd ci -m -s /bin/bash -G users --uid=1004 && \ - mkdir /io && \ - chown -R ci:ci /io && \ - # This needs to find ffmpeg packages from ci user - chown -R ci:ci /ffmpeg_build && \ - # This calls in mutlibuild scripts and cannot be run without permissions - chown -R ci:ci /opt/_internal/pipx/venvs/auditwheel +# user`s UID is 1001 +RUN adduser -D -u 1001 ci && mkdir /io && chown ci:ci /io && \ + chown -R ci:ci /ffmpeg_build USER ci diff --git a/docker/musllinux_1_2/Dockerfile_x86_64 b/docker/musllinux_1_2/Dockerfile_x86_64 index 2761baea..afc29ee2 100644 --- a/docker/musllinux_1_2/Dockerfile_x86_64 +++ b/docker/musllinux_1_2/Dockerfile_x86_64 @@ -1,18 +1,18 @@ -# version: 20260725 +# version: 20261110 # Image name: quay.io/opencv-ci/opencv-python-musllinux_1_2-x86-64 FROM quay.io/pypa/musllinux_1_2_x86_64:latest -ARG CCACHE_VERSION=4.13.6 -ARG FFMPEG_VERSION=8.1.2 -ARG FREETYPE_VERSION=2.14.3 -ARG LIBPNG_VERSION=1.6.58 -ARG VPX_VERSION=v1.15.1 +ARG CCACHE_VERSION=4.14.3 +ARG FFMPEG_VERSION=8.1.3 +ARG FREETYPE_VERSION=2.15.0 +ARG LIBPNG_VERSION=1.6.59 +ARG VPX_VERSION=v1.15.2 ARG NASM_VERSION=2.16.03 ARG OPENSSL_VERSION=1_1_1w ARG YASM_VERSION=1.3.0 ARG AOM_VERSION=v3.14.1 ARG AVIF_VERSION=v1.4.2 -ARG LIBDAV1D_VERSION=1.5.3 +ARG LIBDAV1D_VERSION=1.5.4 ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH diff --git a/pyproject.toml b/pyproject.toml index ff65d776..5c92837a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ requires = [ "pip", "scikit-build>=0.14.0", "setuptools==59.2.0; python_version<'3.12'", - "setuptools<70.0.0; python_version>='3.12'", + "setuptools; python_version>='3.12'", ] # use a custom backend to manage CMake check / installation # see https://scikit-build.readthedocs.io/en/latest/usage.html#adding-cmake-as-building-requirement-only-if-not-installed-or-too-low-a-version