From ae7e56ebe53061787ff853cab632bbb78f4aeaba Mon Sep 17 00:00:00 2001 From: Tony Kuker Date: Fri, 28 Apr 2023 03:00:47 +0000 Subject: [PATCH] #1149 cache pip packages to explicit directory --- easyinstall.sh | 14 +++++++++++--- python/web/start.sh | 7 ++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/easyinstall.sh b/easyinstall.sh index 33c2fdb619..751d5a9c82 100755 --- a/easyinstall.sh +++ b/easyinstall.sh @@ -148,9 +148,17 @@ function installPackagesWeb() { # cache the pip packages function cachePipPackages(){ - pushd $WEB_INSTALL_PATH - sudo pip3 install -r ./requirements.txt - popd + mkdir -p $HOME/.pip_cache + # Note: these need to be installed in source form ONLY. If the binary packages are installed, the architecture + # is selected based upon the building host architecture, not the target architecture. (so, if you're building + # a PiSCSI image on x86, pip will download x86 binaries, which aren't usefull on a Raspberry Pi + python3 -m pip download --no-binary :all: --destination-directory $HOME/.pip_cache setuptools + python3 -m pip download --no-binary :all: --destination-directory $HOME/.pip_cache wheel + python3 -m pip download --no-binary :all: --destination-directory $HOME/.pip_cache flit_core + python3 -m pip download --no-binary :all: --destination-directory $HOME/.pip_cache -r $WEB_INSTALL_PATH/requirements.txt + python3 -m pip download --no-binary :all: --destination-directory $HOME/.pip_cache -r $CTRLBOARD_INSTALL_PATH/requirements.txt + # TODO: The OLED requirements.txt includes a circuit python package that doesn't work with non-binary + # pip3 download } # compile the PiSCSI binaries diff --git a/python/web/start.sh b/python/web/start.sh index 44a6ebedb8..d012852ac7 100755 --- a/python/web/start.sh +++ b/python/web/start.sh @@ -59,8 +59,9 @@ if ! test -e venv; then echo "Activating venv" source venv/bin/activate echo "Installing requirements.txt" - pip3 install wheel - pip3 install -r requirements.txt + pip3 install wheel --no-index --find-links=$HOME/.pip_cache + # Reference: https://pip.pypa.io/en/latest/user_guide/#installing-from-local-packages + pip3 install -r requirements.txt --no-index --find-links=$HOME/.pip_cache if git rev-parse --is-inside-work-tree &> /dev/null; then git rev-parse HEAD > current @@ -79,7 +80,7 @@ if [[ $? -eq 0 ]]; then git rev-parse > current elif [ "$(cat current)" != "$(git rev-parse HEAD)" ]; then echo "New version detected, updating libraries from requirements.txt" - pip3 install -r requirements.txt + pip3 install -r requirements.txt --no-index --find-links=$HOME/.pip_cache git rev-parse HEAD > current fi else