bootstrap python #3
This file contains 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
name: bootstrap python | |
on: | |
workflow_dispatch: | |
jobs: | |
build_simple_with_pixi: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-12, macos-14] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
env: | |
TARGET_PLATFORM: emscripten-wasm32 | |
GITHUB_OWNER: "emscripten-forge" | |
steps: | |
################################################################ | |
# SETUP | |
################################################################ | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
################################################################ | |
# CONFIG | |
################################################################ | |
- uses: prefix-dev/[email protected] | |
with: | |
pixi-version: v0.20.1 | |
- run: | | |
# build compiler packages | |
pixi run setup | |
# build bzip2 sqlite zlib and libffi | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/bzip2 | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/zlib | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/sqlite | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/libffi | |
# build python | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/python | |
# build pyjs | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/pyjs | |
# build regex | |
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/regex | |
- name: Upload packages to Quetz | |
if: github.repository == 'emscripten-forge/recipes' | |
env: | |
QUETZ_API_KEY: ${{ secrets.QUETZ_API_KEY }} | |
MATRIX_OS: ${{ matrix.os }} | |
run: | | |
overall_success=true | |
if [ "${MATRIX_OS}" = "ubuntu-latest" ]; then | |
platforms=(emscripten-wasm32 linux-64 noarch) | |
elif [ "${MATRIX_OS}" = "macos-12" ]; then | |
platforms=(osx-64) | |
elif [ "${MATRIX_OS}" = "macos-14" ]; then | |
platforms=(osx-arm64) | |
fi | |
# Loop over platforms | |
for platform in "${platforms[@]}"; do | |
if [ -d "${GITHUB_WORKSPACE}/output/${platform}" ]; then | |
cd "${GITHUB_WORKSPACE}/output/${platform}" | |
files=$(ls *.tar.bz2 2> /dev/null) | |
if [ -n "$files" ]; then | |
for package in $files; do | |
echo "Uploading ${package} for ${platform}" | |
FILE_SHA256=$(sha256sum "${package}" | awk '{ print $1 }') | |
CURL_CMD=( | |
pixi run curl -H "X-API-Key: ${QUETZ_API_KEY}" -X POST | |
"https://beta.mamba.pm/api/channels/emscripten-forge/upload/${package}?sha256=${FILE_SHA256}&force=false" | |
--data-binary "@${package}" | |
-o response_body.txt | |
-w "%{http_code}" | |
-s | |
) | |
HTTP_STATUS=$( "${CURL_CMD[@]}" ) | |
RESPONSE=$(<response_body.txt) | |
# Check the HTTP status code and log appropriate message | |
if [[ "$HTTP_STATUS" -eq 201 ]]; then | |
echo "Upload succeeded for ${package} on ${platform}" | |
else | |
echo "Error: Upload failed with HTTP status $HTTP_STATUS" | |
echo "Response Body: $RESPONSE" | |
overall_success=false | |
fi | |
rm -f response_body.txt | |
done | |
fi | |
fi | |
done | |
# Check if all uploads were successful | |
if [ "$overall_success" = false ]; then | |
echo "One or more uploads failed" | |
exit 1 | |
else | |
echo "All uploads completed successfully" | |
fi | |