diff --git a/.github/workflows/build-wheel-linux.yml b/.github/workflows/build-wheel-linux.yml index 6120dbdda..5131e0914 100644 --- a/.github/workflows/build-wheel-linux.yml +++ b/.github/workflows/build-wheel-linux.yml @@ -20,27 +20,66 @@ on: jobs: build: - name: Build manylinux_2_28 - runs-on: [self-hosted, Linux, platform-builder-Rocky-8.6] - # TODO which manylinux do we want to build for? 2014? 2_28? 2_34? Matrix? - container: - image: eccr.ecmwf.int/wheelmaker/2_28:0.9 - credentials: - username: ${{ secrets.ECMWF_DOCKER_REGISTRY_USERNAME }} - password: ${{ secrets.ECMWF_DOCKER_REGISTRY_ACCESS_TOKEN }} + name: Build macos wheel + # TODO enable after all tested + # strategy: + # matrix: + # arch_type: [ARM64, X64] + # runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"] + runs-on: [self-hosted, macOS, ARM64 ] steps: - # TODO convert this to be matrix-friendly. Note it's a bit tricky since + # TODO convert this to be matrix-friendly for python versions. Note it's a bit tricky since # we'd ideally not reexecute the compile step multiple times, but it # (non-essentially) depends on a matrix-based step # NOTE we dont use action checkout because it doesnt cleanup after itself correctly - - run: git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY /proj - - run: cd /proj && /buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11 - - run: cd /proj && /buildscripts/compile.sh ./python_wrapper/buildconfig - - run: cd /proj && /buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11 - - run: cd /proj && /buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl - - run: cd /proj && /buildscripts/upload-pypi.sh /build/wheel/*whl + - run: | + if [ -z "$(which uv)" ] ; then curl -LsSf https://astral.sh/uv/install.sh | sh ; fi + rm -rf ecbuild wheelmaker + git clone --depth=1 https://github.com/ecmwf/ecbuild ecbuild + # git clone --depth=1 --branch="wheelmaker" https://github.com/ecmwf/ci-utils wheelmaker # get token in there, get rid of the checkout action + - uses: actions/checkout@v4 + with: + repository: ecmwf/ci-utils + ref: wheelmaker + path: ci-utils + token: ${{ secrets.GH_REPO_READ_TOKEN }} + - run: rm -rf proj && git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY proj + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11 + # - run: cd proj && PATH="$PATH:$GITHUB_WORKSPACE/ecbuild/bin/" $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/compile.sh ./python_wrapper/buildconfig + - run: | + uv python install python3.11 && uv venv --python python3.11 /tmp/buildvenv && source /tmp/buildvenv/bin/activate && uv pip install build + rm -rf /tmp/build/wheel + cd proj && PYTHONPATH=$GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11 + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /tmp/build/wheel/*whl + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/upload-pypi.sh /tmp/build/wheel/*whl env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} # NOTE temporary thing until all the mess gets cleared - run: rm -rf ./* ./.git ./.github +#jobs: +# build: +# name: Build manylinux_2_28 +# runs-on: [self-hosted, Linux, platform-builder-Rocky-8.6] +# # TODO which manylinux do we want to build for? 2014? 2_28? 2_34? Matrix? +# container: +# image: eccr.ecmwf.int/wheelmaker/2_28:0.9 +# credentials: +# username: ${{ secrets.ECMWF_DOCKER_REGISTRY_USERNAME }} +# password: ${{ secrets.ECMWF_DOCKER_REGISTRY_ACCESS_TOKEN }} +# steps: +# # TODO convert this to be matrix-friendly. Note it's a bit tricky since +# # we'd ideally not reexecute the compile step multiple times, but it +# # (non-essentially) depends on a matrix-based step +# # NOTE we dont use action checkout because it doesnt cleanup after itself correctly +# - run: git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY /proj +# - run: cd /proj && /buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11 +# - run: cd /proj && /buildscripts/compile.sh ./python_wrapper/buildconfig +# - run: cd /proj && PYTHONPATH=/buildscripts /buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11 +# - run: cd /proj && /buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /tmp/build/wheel/*whl +# - run: cd /proj && /buildscripts/upload-pypi.sh /tmp/build/wheel/*whl +# env: +# TWINE_USERNAME: __token__ +# TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} +# # NOTE temporary thing until all the mess gets cleared +# - run: rm -rf ./* ./.git ./.github diff --git a/.github/workflows/build-wheel-macos.yml b/.github/workflows/build-wheel-macos.yml new file mode 100644 index 000000000..160a56c19 --- /dev/null +++ b/.github/workflows/build-wheel-macos.yml @@ -0,0 +1,54 @@ +# 1) +# install bison, flex, uv, python setuptools/build +# 2) +# run compile.sh + +# (C) Copyright 2024- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation +# nor does it submit to any jurisdiction. + + +name: Build Python Wheel for MacOS + +on: + # Trigger the workflow manually + workflow_dispatch: ~ + + # Allow to be called from another workflow + workflow_call: ~ + + # TODO automation trigger + +jobs: + build: + name: Build macos wheel + # TODO enable after all tested + # strategy: + # matrix: + # arch_type: [ARM64, X64] + # runs-on: [self-hosted, macOS, "${{ matrix.arch_type }}"] + runs-on: [self-hosted, macOS, ARM64 ] + steps: + # TODO convert this to be matrix-friendly. Note it's a bit tricky since + # we'd ideally not reexecute the compile step multiple times, but it + # (non-essentially) depends on a matrix-based step + # NOTE we dont use action checkout because it doesnt cleanup after itself correctly + - run: | + rm -rf ecbuild wheelmaker + git clone --depth=1 https://github.com/ecmwf/ecbuild ecbuild + git clone --depth=1 --branch="wheelmaker" https://github.com/ecmwf/ci-utils wheelmaker + - run: rm -rf proj && git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY proj + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11 + - run: cd proj && PATH="$PATH:$GITHUB_WORKSPACE/ecbuild/bin/" $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/compile.sh ./python_wrapper/buildconfig + - run: cd proj && PYTHONPATH=$GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11 + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /build/wheel/*whl + - run: cd proj && $GITHUB_WORKSPACE/ci-utils/wheelmaker/buildscripts/upload-pypi.sh /build/wheel/*whl + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + # NOTE temporary thing until all the mess gets cleared + - run: rm -rf ./* ./.git ./.github