Skip to content

Commit

Permalink
Merge branch 'main' into bump-scikit-learn_1.1.3_to_1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
DerThorsten authored Dec 2, 2024
2 parents cccf17c + 73f44fc commit 0946a50
Show file tree
Hide file tree
Showing 300 changed files with 20,090 additions and 1,887 deletions.
110 changes: 110 additions & 0 deletions .github/workflows/bootstrap_python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
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

65 changes: 47 additions & 18 deletions .github/workflows/build_recipes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ jobs:
GITHUB_OWNER: "emscripten-forge"
strategy:
fail-fast: false
matrix:
emsdk_ver: ["3.1.45"]

steps:
################################################################
Expand Down Expand Up @@ -53,20 +51,13 @@ jobs:
- name: Install micromamba
uses: mamba-org/setup-micromamba@v1
with:
micromamba-version: '1.5.8-0'
environment-file: ci_env.yml
environment-name: ci
init-shell: bash
cache-environment: true
post-cleanup: 'all'

################################################################
# EMSDK
################################################################
- name: Setup emsdk
shell: bash -el {0}
run: |
./emsdk/setup_emsdk.sh ${{ matrix.emsdk_ver }} $(pwd)/emsdk_install
################################################################
# POST ENV INSTALL CONFIG
################################################################
Expand Down Expand Up @@ -99,13 +90,51 @@ jobs:
################################################################
- name: Upload packages to Quetz
if: (github.event_name == 'push' && github.repository == 'emscripten-forge/recipes')
shell: bash -el {0}
shell: bash -l {0}
env:
QUETZ_API_KEY: ${{ secrets.QUETZ_API_KEY }}
run: |
# loop over {emscripten-wasm32, linux-64, noarch}
overall_success=true
# Loop over {emscripten-wasm32, linux-64, noarch}
for platform in emscripten-wasm32 linux-64 noarch; do
mkdir -p ${GITHUB_WORKSPACE}/output/${platform}
for package in $(ls ${GITHUB_WORKSPACE}/output/${platform}/*.tar.bz2); do
echo "Uploading ${package} for ${platform} (build with rattler)"
QUETZ_API_KEY=${{ secrets.QUETZ_API_KEY}} quetz-client -u https://beta.mamba.pm post_file_to_channel emscripten-forge ${package}
done
done
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=(
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
38 changes: 38 additions & 0 deletions .github/workflows/on_compiler_changes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: compile pyjs
on:
push:
branches:
- 'main'
paths:
- 'recipes/recipes/emscripten_emscripten-wasm3/**'
pull_request:
paths:
- 'recipes/recipes/emscripten_emscripten-wasm32/**'
jobs:

build_simple_with_pixi:
runs-on: ubuntu-latest
env:
TARGET_PLATFORM: emscripten-wasm32
GITHUB_OWNER: "emscripten-forge"
strategy:
fail-fast: false

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: |
pixi run setup
pixi run build-emscripten-wasm32-pkg recipes/recipes_emscripten/pyjs
2 changes: 0 additions & 2 deletions .github/workflows/run_with_pixi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ jobs:
GITHUB_OWNER: "emscripten-forge"
strategy:
fail-fast: false
matrix:
emsdk_ver: ["3.1.45"]

steps:
################################################################
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Emscripten forge
[![CI](https://img.shields.io/badge/emscripten_forge-docs-yellow)](https://emscripten-forge.org)
[![CI](https://img.shields.io/badge/emscripten_forge-blog-pink)](https://emscripten-forge.org)

[![CI](https://img.shields.io/badge/emscripten_forge-blog-pink)](https://emscripten-forge.org/blog/)


Visit [emscripten-forge.org](https://emscripten-forge.org) for more information and the documentation.
5 changes: 3 additions & 2 deletions ci_env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ dependencies:
- python
- ruamel.yaml
- typer
- rattler-build >= 0.16.0
- rattler-build >=0.18.1
- pixi
- quetz-client
- jinja2
- curl
- requests
34 changes: 21 additions & 13 deletions conda_build_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,48 @@ c_compiler:
then:
- clang

c_compiler_version:


cxx_compiler:
- if: emscripten
then:
- 3
- emscripten
- if: linux
then:
- 9
- gxx
- if: osx
then:
- 11
- clangxx

cxx_compiler:
c_compiler_version:
- if: emscripten
then:
- emscripten
- 3.1.45
- if: linux
then:
- gxx
- 9
- if: osx
then:
- clangxx
- 11


cxx_compiler_version:
- if: emscripten
then:
- 3
- 3.1.45
- if: linux
then:
- 9
- if: osx
then:
- 11

zip_keys:
-
- cxx_compiler_version
- c_compiler_version


cuda_compiler:
- undefined
cuda_compiler_version:
Expand Down Expand Up @@ -367,7 +376,7 @@ hdf4:
hdf5:
- 1.12.2
icu:
- '69'
- '73'
ipopt:
- 3.14
isl:
Expand Down Expand Up @@ -558,7 +567,7 @@ poco:
poppler:
- '22.01'
proj:
- 8.2.0
- 9.4.1
pybind11_abi:
- 4

Expand Down Expand Up @@ -592,8 +601,7 @@ ruby:
- 2.5
- 2.6
r_base:
- 4.0
- 4.1
- 4.4.1
scotch:
- 6.0.9
ptscotch:
Expand Down
7 changes: 7 additions & 0 deletions docs/blog/.authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,10 @@ authors:
avatar: https://avatars.githubusercontent.com/u/904752?v=4 # Author avatar
slug: DerThorsten # Author profile slug
url: https://github.com/DerThorsten # Author website URL

wolfv:
name: Wolf Vollprecht
description: main author of emscripten-forge
avatar: https://avatars.githubusercontent.com/u/885054?v=4
slug: wolfv # Author profile slug
url: https://prefix.dev # Author website URL
15 changes: 15 additions & 0 deletions docs/blog/posts/repack_emscripten.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
date: 2024-05-24
category:
- rust

authors:
- derthorsten
- wolfv
---

# Emscripten is now a proper package

So far, the emscripten package was a bit of a hack. It relied on a text file `~.emsdkdir` in the home directory which contained the directory of the emscripten installation. This was not very nice, because it was hard to build packages for several emscripten versions.

But now, emscripten is a repacked package that installs emscripten into the conda environment. This allows in principle to compile packages for multiple emscripten versions.
Loading

0 comments on commit 0946a50

Please sign in to comment.