Repository navigation
116 lines (106 loc) · 4.44 KB
/
Copy pathbuild-basedpl.yml
File metadata and controls
116 lines (106 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# SPDX-FileCopyrightText: 2026 The RISE Project
# SPDX-License-Identifier: MIT
---
# Based on the `build` job of
# https://github.com/AnswerDotAI/basedpl/blob/v0.1.82/.github/workflows/ci.yml
name: Build basedpl wheels (riscv64)
on:
workflow_dispatch:
inputs:
version:
description: 'Version glob to (re)build; empty builds every version of docs/packages/basedpl.yaml not released yet'
required: false
default: ''
pull_request:
branches: [main]
paths:
- '.github/workflows/build-basedpl.yml'
- 'docs/packages/basedpl.yaml'
push:
branches: [main]
paths:
- '.github/workflows/build-basedpl.yml'
- 'docs/packages/basedpl.yaml'
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: basedpl
version: ${{ inputs.version }}
build_wheels:
needs: [setup]
if: needs.setup.outputs.versions != '[]'
name: Build basedpl ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64
runs-on: ubuntu-24.04-riscv
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.setup.outputs.matrix) }}
env:
BASEDPL_VERSION: ${{ matrix.version }}
steps:
- name: Checkout basedpl ${{ env.BASEDPL_VERSION }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: AnswerDotAI/basedpl
ref: v${{ env.BASEDPL_VERSION }}
persist-credentials: false
- uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
env:
CIBW_ARCHS: riscv64
CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64
CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }}
# Upstream gitignores Cargo.lock, so a fresh build re-resolves crates to
# today's latest semver-compatible versions (CLAUDE.md gotcha 10's
# "Floating deps in a locally-built sdist"). rustymath 0.1.54 changed the
# table shape its `facts!` macro expands to (added a trailing `identities`
# section), which breaks basedpl's own locally-defined consumer macros in
# src/pervasive.rs (`comparison_arms!`/`primitive_facts!`) that still match
# the pre-0.1.54 shape: "no rules expected `identities`". Pin rustymath and
# rustymath-buffer (whose newer releases require rustymath >=0.1.55) to 0.1.53,
# the versions in upstream's v0.1.82 sdist Cargo.lock.
CIBW_BEFORE_ALL_LINUX: >-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y &&
. "$HOME/.cargo/env" &&
cargo update --manifest-path {project}/Cargo.toml -p rustymath-buffer --precise 0.1.53 &&
cargo update --manifest-path {project}/Cargo.toml -p rustymath --precise 0.1.53
# numpy (a test requirement) has a riscv64 wheel only on our registry.
CIBW_ENVIRONMENT_LINUX: >-
PATH="$PATH:$HOME/.cargo/bin"
PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/
PIP_ONLY_BINARY=numpy
# tests/conftest.py imports fastws.cargo.timing_lock, which fastws-cli 0.0.33
# removed; 0.0.32 was the latest release when v0.1.82 was tagged.
CIBW_TEST_REQUIRES: pytest numpy fastws-cli==0.0.32
CIBW_TEST_SOURCES: tests
CIBW_TEST_COMMAND: python -m pytest tests/test_basic.py -q
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: basedpl-${{ env.BASEDPL_VERSION }}-${{ matrix.python }}-manylinux_riscv64
path: ./wheelhouse/*.whl
if-no-files-found: error
publish:
name: Publish basedpl ${{ matrix.version }}
needs: [setup, build_wheels]
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:
matrix: ${{ needs.setup.outputs.matrix }}
artifact-pattern: basedpl-${{ matrix.version }}-*-manylinux_riscv64