From 9ef19046d2a31083e6a8c967d6625a2942b27aac Mon Sep 17 00:00:00 2001 From: Yukizhu001 Date: Fri, 7 Mar 2025 17:08:10 +0800 Subject: [PATCH] init: cppy-1.3.1 project: TC2024080206 --- build.sh | 47 ++++++++++++++++++++++++++++++++++++++++++++++ buildspec.yaml | 7 +++++++ cppy-1.3.1.tar.gz | Bin 0 -> 18699 bytes source | 1 + 4 files changed, 55 insertions(+) create mode 100644 build.sh create mode 100644 buildspec.yaml create mode 100644 cppy-1.3.1.tar.gz create mode 100644 source diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..31764d5 --- /dev/null +++ b/build.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -euo pipefail + +# 导入通用函数 +git clone https://gitee.com/src-anolis-whl/build-common.git +. build-common/common.sh + +# =======构建前准备,可以安装一些构建依赖等========== +setup_py310 # for Python 3.10, default +#setup_py38 # for Python 3.8 +#setup_py312 # for Python 3.12 +## 其他系统依赖 +#yum install -y +# =================================================== + +prepare_source +apply_patches + +# 对于每个Python版本,构建相应的whl +for pybin in "${PYTHON_BINS[@]}"; do + get_build_env $pybin + + # 构建Python环境准备 + #$PIPBIN install -i https://pypi.openanolis.cn/prod/simple + + # ==========构建环境变量========== + export BUILD_WHEEL_FLAGS= + #export CUDA_C_FLAGS= + # ================================ + build_wheel $pybin + + # 测试Python环境准备 + #$PIPBIN install + + # ==========测试环境变量========== + export PYTEST_FLAGS= + export SETUPPYTEST_FLAGS= + # ================================ + build_test $pybin +done + +# 调用auditwheel将运行依赖捆绑至whl中 +# 使用 --exclude xxx.so 来跳过加入某些动态链接库 +bundle_libs + +# 构建产物收集 +output_whls diff --git a/buildspec.yaml b/buildspec.yaml new file mode 100644 index 0000000..e9c4b84 --- /dev/null +++ b/buildspec.yaml @@ -0,0 +1,7 @@ +wheel: + region: cn-hangzhou # Optional, default [cn-hangzhou]. One of [cn-hangzhou, cn-hongkong]. + device_type: cpu # Optional, default [cpu]. One of [cpu, gpu, cpu-large]. + script: # Required, at least have one of + generic: build.sh # [generic, x86_64, aarch64] key. + #x86_64: build-x86_64.sh + #aarch64: build-aarch64.sh diff --git a/cppy-1.3.1.tar.gz b/cppy-1.3.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..acfacc922363a401e637afdc32f719affd1032e0 GIT binary patch literal 18699 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
  • mSqs4@I=#t%Wm&z7$F&B=M%{)1|6f}B4_0gDw#)wu zb3zaBbO!+&BfU_gZRiRhxkb6iJlhNieXV;G_a{Ke<0`A(@2p>O7f)NVj2AoZxk`sd z4Ed|nn(u_+-^2k+6~9#;?ZOs+2gFgSYn+ok&82HC%~t@KU#=Jhxjp+GV4eH5|J>GO zpWKc_(0wJK{WsP|r^FWkf1X+(KyjI*L;>qCR&9Ck<}+&2UQd;8l5y^b&DmMVb=Q`3 z^B%RxW_zvGB?tad$na(A6GQ-~@P4*QKgOD_z~pG;Yq^cf?Ne3(J7=Yp6r~_GX(bwv jXL(?ciqf!