From ac10630fb984b0f8bbb361fecf472a650ee23484 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Thu, 7 Mar 2024 08:15:23 +0100 Subject: [PATCH] add bundle:pyenv --- bundles/pyenv/items.py | 28 ++++++++++++++++++++++++++++ bundles/pyenv/metadata.py | 20 ++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 bundles/pyenv/items.py create mode 100644 bundles/pyenv/metadata.py diff --git a/bundles/pyenv/items.py b/bundles/pyenv/items.py new file mode 100644 index 0000000..97f1439 --- /dev/null +++ b/bundles/pyenv/items.py @@ -0,0 +1,28 @@ +from shlex import quote + +directories = { + '/opt/pyenv': {}, + '/opt/pyenv/install': {}, +} + +git_deploy = { + '/opt/pyenv/install': { + 'repo': 'https://github.com/pyenv/pyenv.git', + 'rev': node.metadata.get('pyenv/version'), + 'needs': { + 'directory:/opt/pyenv/install', + }, + }, +} + +for version in node.metadata.get('pyenv/python_versions', set()): + actions[f'pyenv_install_{version}'] = { + 'command': f'PYENV_ROOT=/opt/pyenv /opt/pyenv/install/bin/pyenv install {quote(version)}', + 'unless': f'PYENV_ROOT=/opt/pyenv /opt/pyenv/install/bin/pyenv versions --bare | grep -E "^{quote(version)}$"', + 'needs': { + 'git_deploy:/opt/pyenv/install', + }, + 'after': { + 'pkg_apt:', + }, + } diff --git a/bundles/pyenv/metadata.py b/bundles/pyenv/metadata.py new file mode 100644 index 0000000..177a2b3 --- /dev/null +++ b/bundles/pyenv/metadata.py @@ -0,0 +1,20 @@ +defaults = { + 'apt': { + 'packages': { + 'build-essential': {}, + 'curl': {}, + 'libbz2-dev': {}, + 'libffi-dev': {}, + 'liblzma-dev': {}, + 'libncurses-dev': {}, + 'libreadline-dev': {}, + 'libsqlite3-dev': {}, + 'libssl-dev': {}, + 'libxml2-dev': {}, + 'libxmlsec1-dev': {}, + 'tk-dev': {}, + 'xz-utils': {}, + 'zlib1g-dev': {}, + }, + }, +}