Add a pip-cache element.
The element bind mounts a pip cache inside the image build chroot so that pip downloads can be reused across image builds. While similar in purpose to the PyPi element that sets up a mirror, this element just allows for a reusable download cache and doesn't require anything to be setup beforehand. The pip-cache element is not concurrency safe, and that is indicated in the README for the element. An upstream bug was file as well: https://github.com/pypa/pip/issues/1141 Change-Id: Ibd1d4ea17c24923ed939357ada95b781e3179cfd
This commit is contained in:
parent
11df3a45f4
commit
0702ce9843
18
elements/pip-cache/README.md
Normal file
18
elements/pip-cache/README.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Use a cache for pip
|
||||||
|
|
||||||
|
Using a download cache speeds up image builds.
|
||||||
|
|
||||||
|
Including this element in an image build causes
|
||||||
|
$HOME/.cache/image-create/pip to be bind mounted as /tmp/pip inside
|
||||||
|
the image build chroot. The $PIP_DOWNLOAD_CACHE environment variable
|
||||||
|
is then defined as /tmp/pip, which causes pip to cache all downloads
|
||||||
|
to the defined location.
|
||||||
|
|
||||||
|
Note that pip and its use of $PIP_DOWNLOAD_CACHE is not concurrency
|
||||||
|
safe. Running multiple instances of diskimage-builder concurrently
|
||||||
|
can cause issues. Therefore, it is advised to only have one instance
|
||||||
|
of diskimage-builder that includes the pip-cache element running at a
|
||||||
|
time.
|
||||||
|
|
||||||
|
The pip concurrency issue is being tracked upstream at
|
||||||
|
https://github.com/pypa/pip/issues/1141
|
1
elements/pip-cache/environment.d/10-pip-cache
Executable file
1
elements/pip-cache/environment.d/10-pip-cache
Executable file
@ -0,0 +1 @@
|
|||||||
|
export PIP_DOWNLOAD_CACHE=/tmp/pip
|
9
elements/pip-cache/root.d/01-pip-cache
Executable file
9
elements/pip-cache/root.d/01-pip-cache
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PIP_CACHE_DIR=$HOME/.cache/image-create/pip
|
||||||
|
mkdir -p $PIP_CACHE_DIR
|
||||||
|
|
||||||
|
sudo mkdir -p $TMP_MOUNT_PATH/tmp/pip
|
||||||
|
sudo mount --bind $PIP_CACHE_DIR $TMP_MOUNT_PATH/tmp/pip
|
Loading…
Reference in New Issue
Block a user