From a804833aa8a97d755ff809f33ff165a7c2d30594 Mon Sep 17 00:00:00 2001 From: Evan Van Dam Date: Mon, 13 Jan 2020 21:28:05 -0800 Subject: [PATCH] allow packages to be specified as package=version=build --- library/conda.py | 16 +++++++++++----- molecule/default/playbook.yml | 9 ++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/library/conda.py b/library/conda.py index fda80de..2ef6a9c 100644 --- a/library/conda.py +++ b/library/conda.py @@ -26,9 +26,13 @@ def __init__(self, module, env): def split_name_version(package_spec, default_version=None): name = package_spec version = default_version + build = None if '=' in package_spec: - name, version = package_spec.split('=') - return {'name': name, 'version': version} + splits = package_spec.split('=') + name, version = splits[:2] + if len(splits) > 2: + build = splits[2] + return {'name': name, 'version': version, 'build': build} def _get_conda(self, executable): conda_exe = None @@ -153,10 +157,12 @@ def install_packages(self, packages, channels): """Install the packages""" pkg_strs = [] for package in packages: + pkg_str = package['name'] if package['version']: - pkg_strs.append('{name}={version}'.format(**package)) - else: - pkg_strs.append(package['name']) + pkg_str += '=' + package['version'] + if package['build']: + pkg_str += '=' + package['build'] + pkg_strs.append(pkg_str) return self._run_package_cmd('install', channels, *pkg_strs + self.env_args) diff --git a/molecule/default/playbook.yml b/molecule/default/playbook.yml index a3d5f4c..10bec64 100644 --- a/molecule/default/playbook.yml +++ b/molecule/default/playbook.yml @@ -4,15 +4,20 @@ roles: - role: evandam.conda tasks: + - name: Install jupyter with a specific build + conda: + name: jupyter=1.0.0=py37_4 + - name: Install an older version of conda conda: name: conda - version: 4.5.0 + version: 4.8.0 - name: Update conda to latest version conda: name: conda state: latest + - name: Update conda again conda: name: conda @@ -30,6 +35,7 @@ conda: name: numpy state: present + - name: Install numpy again conda: name: numpy @@ -40,6 +46,7 @@ conda: name: numpy state: absent + - name: Remove numpy again conda: name: numpy