Skip to content

Commit b57ff44

Browse files
committed
prototype of so-only wheel
1 parent b74bc1e commit b57ff44

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# (C) Copyright 2024- ECMWF.
2+
#
3+
# This software is licensed under the terms of the Apache Licence Version 2.0
4+
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5+
# In applying this licence, ECMWF does not waive the privileges and immunities
6+
# granted to it by virtue of its status as an intergovernmental organisation
7+
# nor does it submit to any jurisdiction.
8+
9+
10+
name: Build Python Wheel for Linux
11+
12+
on:
13+
# Trigger the workflow manually
14+
workflow_dispatch: ~
15+
16+
# Allow to be called from another workflow
17+
workflow_call: ~
18+
19+
# TODO automation trigger
20+
21+
jobs:
22+
build:
23+
name: Build manylinux_2_28
24+
runs-on: [self-hosted, Linux, platform-builder-Rocky-8.6]
25+
# TODO which manylinux do we want to build for? 2014? 2_28? 2_34? Matrix?
26+
container:
27+
image: eccr.ecmwf.int/wheelmaker/2_28:latest
28+
credentials:
29+
username: ${{ secrets.ECMWF_DOCKER_REGISTRY_USERNAME }}
30+
password: ${{ secrets.ECMWF_DOCKER_REGISTRY_ACCESS_TOKEN }}
31+
steps:
32+
# TODO convert this to be matrix-friendly. Note it's a bit tricky since
33+
# we'd ideally not reexecute the compile step multiple times, but it
34+
# (non-essentially) depends on a matrix-based step
35+
# NOTE we dont use action checkout because it doesnt cleanup after itself correctly
36+
- run: git clone --depth=1 --branch="${GITHUB_REF#refs/heads/}" https://github.com/$GITHUB_REPOSITORY /proj
37+
- run: cd /proj && /buildscripts/prepare_deps.sh ./python_wrapper/buildconfig 3.11
38+
- run: cd /proj && /buildscripts/compile.sh ./python_wrapper/buildconfig
39+
- run: cd /proj && PYTHONPATH=/buildscripts /buildscripts/wheel-linux.sh ./python_wrapper/buildconfig 3.11
40+
- run: cd /proj && /buildscripts/test-wheel.sh ./python_wrapper/buildconfig 3.11 /tmp/build/wheel/*whl
41+
- run: cd /proj && /buildscripts/upload-pypi.sh /tmp/build/wheel/*whl
42+
env:
43+
TWINE_USERNAME: __token__
44+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
45+
# NOTE temporary thing until all the mess gets cleared
46+
- run: rm -rf ./* ./.git ./.github

python_wrapper/buildconfig

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# (C) Copyright 2024- ECMWF.
2+
#
3+
# This software is licensed under the terms of the Apache Licence Version 2.0
4+
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5+
# In applying this licence, ECMWF does not waive the privileges and immunities
6+
# granted to it by virtue of its status as an intergovernmental organisation
7+
# nor does it submit to any jurisdiction.
8+
9+
# to be source'd by wheelmaker's compile.sh *and* wheel-linux.sh
10+
# NOTE replace the whole thing with pyproject.toml? Less powerful, and quaint to use for sourcing ecbuild invocation
11+
# TODO we duplicate information -- pyproject.toml's `name` and `packages` are derivable from $NAME and must stay consistent
12+
13+
NAME="eccodes"
14+
15+
# TODO solve the libpng, libjpg, libaec problem
16+
CMAKE_PARAMS1="-DENABLE_PNG=0 -DENABLE_JPG=0 -DENABLE_AEC=0 -DENABLE_JPG_LIBJASPER=0 -DENABLE_JPG_LIBOPENJPEG=0"
17+
# -DOPENJPEG_DIR=$TOPDIR/install \
18+
CMAKE_PARAMS2="-DENABLE_NETCDF=0"
19+
CMAKE_PARAMS3="-DENABLE_EXAMPLES=0 -DENABLE_PYTHON=0 -DENABLE_BUILD_TOOLS=0 -DENABLE_INSTALL_ECCODES_DEFINITIONS=0 -DENABLE_INSTALL_ECCODES_SAMPLES=0"
20+
CMAKE_PARAMS4="-DENABLE_ECCODES_THREADS=1 -DENABLE_MEMFS=1"
21+
CMAKE_PARAMS="$CMAKE_PARAMS1 $CMAKE_PARAMS2 $CMAKE_PARAMS3 $CMAKE_PARAMS4"
22+
23+
PYPROJECT_DIR="python_wrapper"
24+
# TODO add eckit once the dependency is in place
25+
DEPENDENCIES='[]'

python_wrapper/setup.cfg

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[metadata]
2+
description = "eccodeslib"
3+
long_description = file: README.md
4+
long_description_content_type = text/markdown
5+
author = file: AUTHORS

python_wrapper/setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from setup_utils import plain_setup
2+
plain_setup()

0 commit comments

Comments
 (0)