docs: Update projects #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| name: Build rawpy wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/rawpy.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-rawpy.yml' | |
| - 'docs/packages/rawpy.yaml' | |
| - 'patches/rawpy/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-rawpy.yml' | |
| - 'docs/packages/rawpy.yaml' | |
| - 'patches/rawpy/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: rawpy | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build rawpy ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| python: ["cp312", "cp313", "cp314", "cp314t"] | |
| env: | |
| RAWPY_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout rawpy v${{ env.RAWPY_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: letmaik/rawpy | |
| ref: v${{ env.RAWPY_VERSION }} | |
| submodules: true | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Patch rawpy source | |
| run: git apply python-wheels/patches/rawpy/${{ env.RAWPY_VERSION }}/*.patch | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # Rocky 10 riscv64 ships lcms2/jasper directly; its libjpeg-turbo lacks the | |
| # JPEG8 ABI (DNG lossy codec) upstream's own build-linux.sh gets by building | |
| # from source with -DWITH_JPEG8=ON, so only that one is built the same way | |
| # upstream does (riscv64 has no libjpeg-turbo SIMD kernels, hence -DWITH_SIMD=0). | |
| CIBW_BEFORE_BUILD: > | |
| dnf install -y zlib-ng-compat-devel lcms2-devel jasper-devel && | |
| curl -fsSL -o /tmp/libjpeg-turbo.tar.gz | |
| https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.3/libjpeg-turbo-3.1.3.tar.gz && | |
| echo "075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0 /tmp/libjpeg-turbo.tar.gz" | sha256sum -c - && | |
| tar xzf /tmp/libjpeg-turbo.tar.gz -C /tmp && | |
| cmake -S /tmp/libjpeg-turbo-3.1.3 -B /tmp/libjpeg-turbo-3.1.3/build | |
| -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release | |
| -DENABLE_SHARED=ON -DENABLE_STATIC=OFF -DWITH_JPEG8=ON -DWITH_SIMD=0 && | |
| cmake --build /tmp/libjpeg-turbo-3.1.3/build -j"$(nproc)" --target install && | |
| rm -f /usr/include/jconfig-32.h /usr/include/jconfig-64.h && | |
| curl -fsSL -o {project}/LICENSE.lcms2 https://raw.githubusercontent.com/mm2/Little-CMS/lcms2.16/LICENSE && | |
| curl -fsSL -o {project}/LICENSE.libjpeg-turbo https://raw.githubusercontent.com/libjpeg-turbo/libjpeg-turbo/3.1.3/LICENSE.md && | |
| curl -fsSL -o {project}/LICENSE.jasper https://raw.githubusercontent.com/jasper-software/jasper/version-4.1.0/LICENSE.txt | |
| CIBW_ENVIRONMENT: PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| CIBW_TEST_ENVIRONMENT: CI=true | |
| CIBW_TEST_EXTRAS: test | |
| CIBW_TEST_SOURCES: test examples | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import importlib.metadata as m; names={p.name for p in m.files('rawpy') if '.dist-info/licenses/' in str(p)}; assert names == {'LICENSE','LICENSE.LibRaw','LICENSE.lcms2','LICENSE.libjpeg-turbo','LICENSE.jasper'}, names" && | |
| python -m pytest -v test | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: rawpy-${{ env.RAWPY_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| gpl_sources: | |
| name: Collect GPL sources (gcc) for rawpy ${{ matrix.version }} | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| runs-on: ubuntu-24.04-riscv | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| steps: | |
| - uses: riseproject-dev/python-wheels/actions/collect-gpl-sources@main | |
| with: | |
| image: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: rawpy-${{ matrix.version }}-gpl-sources | |
| path: gpl-sources.tar | |
| if-no-files-found: error | |
| publish: | |
| name: Publish rawpy ${{ matrix.version }} | |
| needs: [setup, build_wheels, gpl_sources] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: rawpy-${{ matrix.version }}-*-manylinux_riscv64 | |
| gpl-sources-artifact: rawpy-${{ matrix.version }}-gpl-sources | |
| gpl-sources-description: gcc |