diff --git a/diskimage_builder/elements/ensure-venv/README.rst b/diskimage_builder/elements/ensure-venv/README.rst new file mode 100644 index 00000000..d9a52113 --- /dev/null +++ b/diskimage_builder/elements/ensure-venv/README.rst @@ -0,0 +1,5 @@ +=========== +ensure-venv +=========== + +A simple element to make sure `python3 -m venv` will work. diff --git a/diskimage_builder/elements/ensure-venv/element-deps b/diskimage_builder/elements/ensure-venv/element-deps new file mode 100644 index 00000000..7076aba9 --- /dev/null +++ b/diskimage_builder/elements/ensure-venv/element-deps @@ -0,0 +1 @@ +package-installs diff --git a/diskimage_builder/elements/ensure-venv/package-installs.yaml b/diskimage_builder/elements/ensure-venv/package-installs.yaml new file mode 100644 index 00000000..78b2e885 --- /dev/null +++ b/diskimage_builder/elements/ensure-venv/package-installs.yaml @@ -0,0 +1 @@ +python3-venv: diff --git a/diskimage_builder/elements/ensure-venv/pkg-map b/diskimage_builder/elements/ensure-venv/pkg-map new file mode 100644 index 00000000..0056fefa --- /dev/null +++ b/diskimage_builder/elements/ensure-venv/pkg-map @@ -0,0 +1,19 @@ +{ + "family": { + "debian": { + "python3-venv": "python3-venv" + }, + "gentoo": { + "python3-venv": "dev-lang/python" + }, + "redhat": { + "python3-venv": "python3" + }, + "suse": { + "python3-venv": "python3" + } + }, + "default": { + "python3-venv": "" + } +} diff --git a/diskimage_builder/elements/simple-init/element-deps b/diskimage_builder/elements/simple-init/element-deps index 9d4a9f73..014ef9be 100644 --- a/diskimage_builder/elements/simple-init/element-deps +++ b/diskimage_builder/elements/simple-init/element-deps @@ -1,6 +1,6 @@ cloud-init-datasources dib-init-system +ensure-venv install-types -pip-and-virtualenv runtime-ssh-host-keys source-repositories diff --git a/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean b/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean index a7491ab9..5a838de7 100755 --- a/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean +++ b/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean @@ -21,4 +21,10 @@ fi set -eu set -o pipefail -$DIB_PYTHON_PIP install /tmp/glean.git +python3 -m venv /usr/glean +/usr/glean/bin/pip install /tmp/glean.git + +mkdir -p /usr/local/bin +ln -sf /usr/glean/bin/glean /usr/local/bin/glean +ln -sf /usr/glean/bin/glean.sh /usr/local/bin/glean.sh +ln -sf /usr/glean/bin/glean-install /usr/local/bin/glean-install diff --git a/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean b/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean index 4dd685ad..2107a87d 100755 --- a/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean +++ b/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean @@ -21,4 +21,10 @@ fi set -eu set -o pipefail -$DIB_PYTHON_PIP install glean +python3 -m venv /usr/glean +/usr/glean/bin/pip install glean + +mkdir -p /usr/local/bin +ln -sf /usr/glean/bin/glean /usr/local/bin/glean +ln -sf /usr/glean/bin/glean.sh /usr/local/bin/glean.sh +ln -sf /usr/glean/bin/glean-install /usr/local/bin/glean-install diff --git a/releasenotes/notes/ensure-venv-d7c16a2a04fd3b8f.yaml b/releasenotes/notes/ensure-venv-d7c16a2a04fd3b8f.yaml new file mode 100644 index 00000000..0af105cc --- /dev/null +++ b/releasenotes/notes/ensure-venv-d7c16a2a04fd3b8f.yaml @@ -0,0 +1,13 @@ +--- +features: + - | + The `ensure-venv` module is added to ensure that `python3 -m venv` + is available on the host. This can be useful if you wish to + install non-distribution-packaged Python software on a host during + build, but not mix any non-distro installation. This works on all + platforms with Python 3 available. +depreceations: + - | + The `simple-init` element now uses `ensure-venv` so is technically + Python 3 only. At this stage, all supported platforms have Python + 3 available. \ No newline at end of file