From 3e17ee3f4867d1989ab49885a2d6cfd0c36913ec Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Mon, 10 Apr 2017 21:45:51 -0400 Subject: [PATCH] Clean up dib-python symlink We only need dib-python when we build the image, no need to leak it to the final product. Remove it in cleanup.d outside the chroot so nothing can be using it. Change-Id: I1e229caad7968fb3ab8e44ecdda427e174088d2d Signed-off-by: Paul Belanger --- .../elements/dib-python/README.rst | 28 +++++++++++-------- .../dib-python/cleanup.d/50-dib-python | 12 ++++++++ 2 files changed, 29 insertions(+), 11 deletions(-) create mode 100755 diskimage_builder/elements/dib-python/cleanup.d/50-dib-python diff --git a/diskimage_builder/elements/dib-python/README.rst b/diskimage_builder/elements/dib-python/README.rst index 2ed7b5ad..09afe76d 100644 --- a/diskimage_builder/elements/dib-python/README.rst +++ b/diskimage_builder/elements/dib-python/README.rst @@ -2,23 +2,29 @@ dib-python ========== -Adds a symlink to `/usr/local/bin/dib-python` which points at either a -`python2` or `python3` executable as appropriate. +Adds a symlink to ``/usr/local/bin/dib-python`` which points at either a +``python2`` or ``python3`` executable as appropriate. In-chroot scripts should use this as their interpreter -(`#!/usr/local/bin/dib-python`) to make scripts that are compatible -with both `python2` and `python3`. We can not assume -`/usr/bin/python` exists, as some platforms have started shipping with +(``#!/usr/local/bin/dib-python``) to make scripts that are compatible +with both ``python2`` and ``python3``. We can not assume +``/usr/bin/python`` exists, as some platforms have started shipping with only Python 3. -`DIB_PYTHON` will be exported as the python interpreter. You should -use this instead of `python script.py` (e.g. `${DIB_PYTHON} -script.py`). Note you can also call `/usr/local/bin/dib-python -script.py` but in some circumstances, such as creating a `virtualenv`, -it can create somewhat confusing references to `dib-python` that +``DIB_PYTHON`` will be exported as the python interpreter. You should +use this instead of ``python script.py`` (e.g. ``${DIB_PYTHON} +script.py``). Note you can also call ``/usr/local/bin/dib-python +script.py`` but in some circumstances, such as creating a ``virtualenv``, +it can create somewhat confusing references to ``dib-python`` that remain in the built image. This does not install a python if one does not exist, and instead fails. -This also exports a variable `DIB_PYTHON_VERSION` which will either be +This also exports a variable ``DIB_PYTHON_VERSION`` which will either be '2' or '3' depending on the python version which dib-python points to. + + +.. note:: + + The ``dib-python`` interpreter will be removed in ``cleanup.d``. It + is only intended for build scripts. diff --git a/diskimage_builder/elements/dib-python/cleanup.d/50-dib-python b/diskimage_builder/elements/dib-python/cleanup.d/50-dib-python new file mode 100755 index 00000000..028ad858 --- /dev/null +++ b/diskimage_builder/elements/dib-python/cleanup.d/50-dib-python @@ -0,0 +1,12 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Remove dib-python wrapper. Nothing else should be running in chroot +# and required this any more. + +sudo unlink $TARGET_ROOT/usr/local/bin/dib-python # dib-lint: safe_sudo