a00d02f6a1
Several people have popped up in IRC recently with failures in these elements. Without Python 2.7 available in the image they are unsupported (OpenStack hasn't supported it for a long time). Remove these to avoid further confusion. The centos/centos7 DISTRO split that has happened with centos-minimal is unfortunate but I don't think it helps to rename centos7/rhel7 ATM. To summarise; DISTRO=centos7 means image based build, DISTRO=centos && DIB_RELEASE=7 means the minimal build. In the future, I think it is important that the minimal builds and image builds set the same DISTRO. This reflects that "upper" layers shouldn't care about the exact building of the lower layers. I see CentOS 8 going one of two ways 1) the changes are so significant, we start separate centos8 / centos8-minimal elements. They both set DISTRO=centos8 (and DIB_RELEASE to point-release maybe?). This means we have to update all "if DISTRO == centos || DISTRO == centos7" branches to also check for "centos8". Evenually (!) "centos" goes away for versioned DISTRO only 2) we restore centos element with DISTRO=centos and DIB_RELEASE=8, and centos-minimal remains the same. This means we have to audit all "if DISTRO == centos" calls to make sure they're appropriate for version 8 (stick a "&& DIB_RELEASE=7" on them all basically). I'm not sure we can fully decide until we start to see excatly how the distro switching/matching bits look, but (2) is consistent with Ubuntu and probably the preferred solution. Some "rhel" parts have been cleaned up. More could be done in rhel-common, but given our lack of coverage of that I'd prefer to leave it for now. Change-Id: I6ea784116ef59ca22878c8512c963f29c815a00a |
||
---|---|---|
.. | ||
install.d/pip-and-virtualenv-source-install | ||
test-elements | ||
element-deps | ||
package-installs.yaml | ||
pkg-map | ||
README.rst | ||
source-repository-pip-and-virtualenv |
================== pip-and-virtualenv ================== This element installs pip and virtualenv in the image. Package install =============== If the package installtype is used then these programs are installed from distribution packages. In this case, ``pip`` and ``virtualenv`` will be installed *only* for the python version identified by ``dib-python`` (i.e. the default python for the platform). Distribution packages have worked out name-spacing such that only python2 or python3 owns common scripts like ``/usr/bin/pip`` (on most platforms, ``pip`` refers to python2 pip, and ``pip3`` refers to python3 pip, although some may choose the reverse). To install pip and virtualenv from package:: export DIB_INSTALLTYPE_pip_and_virtualenv=package Source install ============== Source install is the default. If the source installtype is used, ``pip`` and ``virtualenv`` are installed from the latest upstream releases. Source installs from these tools are not name-spaced. It is inconsistent across platforms if the first or last install gets to own common scripts like ``/usr/bin/pip`` and ``virtualenv``. To avoid inconsistency, we firstly install the packaged python 2 **and** 3 versions of ``pip`` and ``virtualenv``. This prevents a later install of these distribution packages conflicting with the source install. We then overwrite ``pip`` and ``virtualenv`` via ``get-pip.py`` and ``pip`` respectively. The system will be left in the following state: * ``/usr/bin/pip`` : python2 pip * ``/usr/bin/pip2`` : python2 pip (same as prior) * ``/usr/bin/pip3`` : python3 pip * ``/usr/bin/virtualenv`` : python2 virtualenv (note python3 ``virtualenv`` script is *not* installed, see below) Source install is supported on limited platforms. See the code, but this includes Ubuntu and RedHat platforms. Using the tools =============== Due to the essentially unsolvable problem of "who owns the script", it is recommended to *not* call ``pip`` or ``virtualenv`` directly. You can directly call them with the ``-m`` argument to the python interpreter you wish to install with. For example, to create a python3 environment do:: # python3 -m virtualenv myenv # myenv/bin/pip install mytool To install a python2 tool from pip:: # python2 -m pip install mytool In this way, you can always know which interpreter is being used (and affected by) the call. Ordering ======== Any element that uses these commands must be designated as 05-* or higher to ensure that they are first installed.