Setup Local Build#

Emscripten-forge recipes can be built locally. To setup a local dev. environment one can either follow the steps of the CI pipeline or follow the steps below:

Fork / Clone the emscripten-forge/recipes repository

git clone git@github.com:emscripten-forge/recipes.git

Go to the repository directory

cd recipes

Create the dev environment named emforge for the conda/mamba env file ci_env.yml

micromamba create -n emforge -f ci_env.yml

or with conda

conda env create -n emforge --file ci_env.yml

Activate the environment

micromamba activate emforge

or with conda

conda activate emforge

Install dependencies where we need non-default branches/forkes.

python -m pip install git+https://github.com/DerThorsten/boa.git@postcb --no-deps --ignore-installed
python -m pip install git+https://github.com/DerThorsten/bitfurnace.git@emscripten_new --no-deps --ignore-installed

Install Playwright

playwright install

Install the emsdk: this will download the emscripten toolchain / compilers.

python -c "from empack.file_packager import download_and_setup_emsdk; download_and_setup_emsdk()"

create a .emsdkdir file in the home

echo $(python -c "from empack.file_packager import EMSDK_INSTALL_PATH; print(EMSDK_INSTALL_PATH / 'emsdk-3.1.2')") > $HOME/.emsdkdir

Add https://repo.mamba.pm/emscripten-forge and conda-forge channels to the .condarc

conda config --add channels conda-forge
conda config --add channels https://repo.mamba.pm/emscripten-forge

You can also manually do this by chaging your .condarc st. it looks like:

channels:
  - https://repo.mamba.pm/emscripten-forge
  - conda-forge
  
add_pip_as_python_dependency: false

Bootstrap Build Recipes#

We are almost done. We now should be able build packages. But we want to create a local conda channel st. we install and use the packages we build localy. To do this, we first need build an arbitrary package. This will populate the conda-bld directory of our emforge environment (ie create and fill the $MAMBA_ROOT_PREFIX/envs/emforge/conda-bld folder).

As an exemplary recipe we use recipes/recipes_emscripten/bzip2. We need to pass --skip-tests because the test mechanism will only work after we created the local conda channel.

python builder.py build explicit  recipes/recipes_emscripten/bzip2   --emscripten-32 --skip-tests

One the build is done we can create the local channel by adding $MAMBA_ROOT_PREFIX/envs/emforge/conda-bld to condarc

conda config --add channels $MAMBA_ROOT_PREFIX/envs/emforge/conda-bld

You can also manually do this by chaging your .condarc st. it looks like (change /home/username/micromamba-root to the value of $MAMBA_ROOT_PREFIX )

channels:
  - /home/username/micromamba-root/envs/ci-env/conda-bld/
  - https://repo.mamba.pm/emscripten-forge
  - conda-forge
  
add_pip_as_python_dependency: false

Build Recipes#

Everything should be setup and recipes should build with

python builder.py build explicit   recipes/recipes_emscripten/bzip2  --emscripten-32