Skip to content

bootstrap python

bootstrap python #2

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/sqlite
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/zlib
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