#!/bin/sh # # This tool can be used to install a new package into MicroPython # library location (for unix port, default behavior), or produce # complete library snapshot to be deployed on a device for baremetal # ports (if PIP_MICROPY_DEST environment var is set). # if [ "$1" != "install" ]; then echo "Only install command is supported currently" exit 1 fi shift if [ -n "$PIP_MICROPY_DEST" ]; then dest="$PIP_MICROPY_DEST" echo "Destination snapshot directory: $dest" elif [ -n "$MICROPYPATH" ]; then libdest=$(echo "$MICROPYPATH" | awk -F: ' {print $1}') echo "Destination library directory: $libdest" else echo "Warning: MICROPYPATH is not set, assuming default value" libdest=~/.micropython/lib echo "Destination library directory: $libdest" fi # Due to bugs in pip, installation should happen with active virtualenv # The issue (at least with pip 1.0 which is still what's shipped with many # distros) is that even if --ignore-installed is used, package is not # installed if it's already installed for main python distribution. if [ ! -d /tmp/pip-micropy-venv ]; then virtualenv --no-site-packages /tmp/pip-micropy-venv fi . /tmp/pip-micropy-venv/bin/activate # We need to specify --record to override this switch as passed by pip # pip will try to parse this file (at the location in specifies), and try to # access files as specified in it. But paths there will be relative to --root # we pass, so it won't find files and crash. However, if it won't find the # file, it will just issue a warning and continue. if [ -n "$dest" ]; then pip install "$@" \ --install-option="--install-base=." \ --install-option="--install-purelib=lib" \ --install-option="--install-platlib=lib" \ --install-option="--install-scripts=." \ --install-option="--install-headers=headers" \ --install-option="--install-data=lib" \ --install-option="--record=/tmp/setuptools-record.txt" \ --install-option="--no-compile" \ --install-option="--root=$dest" else # Here we assume that base dir is lib dir, and install scripts a level # higher. For default value of ~/micropython/lib/ , this should give # reasonable behavior, though better would make it overridable (or # go bold and use ~/bin ?) pip install "$@" \ --install-option="--install-base=." \ --install-option="--install-purelib=." \ --install-option="--install-platlib=." \ --install-option="--install-scripts=.." \ --install-option="--install-headers=../headers" \ --install-option="--install-data=." \ --install-option="--record=/tmp/setuptools-record.txt" \ --install-option="--no-compile" \ --install-option="--root=$libdest" fi