diskimage-builder/elements/pypi
Monty Taylor 3acc866f6d Use DIB_IMAGE_CACHE everywhere
disk-image-create processes a DIB_IMAGE_CACHE variable and exports it,
but there are several elements that ignore the value and wrote out
the base location themselves. Use the variable everywhere so that it
will get overridden everywhere.

Change-Id: I00fff354d6c931ad67cf3052d055f0e4604dfdc8
2014-10-05 13:58:32 -07:00
..
extra-data.d Use DIB_IMAGE_CACHE everywhere 2014-10-05 13:58:32 -07:00
post-install.d set -u and -o pipefail everywhere 2014-05-06 15:51:07 -05:00
pre-install.d Permit use of wheel mirrors in pypi element. 2014-03-25 16:48:18 +13:00
README.md Remove docs about deprecated pypi-mirror tool 2014-08-28 11:33:52 +10:00

Inject a PyPI mirror

Use a custom PyPI mirror to build images. The default is to bind mount one from ~/.cache/image-create/pypi/mirror into the build environment as mirror URL file:///tmp/pypi. The element temporarily overwrites /root/.pip.conf and .pydistutils.cfg to use it.

When online, the official pypi.python.org pypi index is supplied as an extra-url, so uncached dependencies will still be available. When offline, only the mirror is used - be warned that a stale mirror will cause build failures. To disable the pypi.python.org index without using --offline (e.g. when working behind a corporate firewall that prohibits pypi.python.org) set DIB_NO_PYPI_PIP to any non-empty value.

To use an arbitrary mirror set PYPI_MIRROR_URL=http[s]://somevalue/

Additional mirrors can be added by exporting PYPI_MIRROR_URL_1=... etc. Only the one mirror can be used by easy-install, but since wheels need to be in the first mirror to be used, the last listed mirror is used as the pydistutils index. NB: The sort order for these variables is a simple string sort - if you have more than 9 additional mirrors, some care will be needed.

A typical use of this element is thus: export PYPI_MIRROR_URL=http://site/pypi/Ubuntu-13.10 export PYPI_MIRROR_URL_1=http://site/pypi/ export PYPI_MIRROR_URL_2=file:///tmp/pypi

devpi-server can be useful in making a partial PyPI mirror suitable for building images. For instance:

The next time packages are installed, they'll be cached on the local devpi server; subsequent runs pointed at the same mirror will use the local cache if the upstream can't be contacted.

Note that this process only has the server running temporarily; see Quickstart: Permanent install on server/laptop guide from the devpi developers for more information on a more permanent setup.