Skip to content
Snippets Groups Projects
Commit 972eea08 authored by Laurent COLBOIS's avatar Laurent COLBOIS
Browse files

Add script to install all CI versions of external Bob dependencies

parent f92a8f51
No related branches found
No related tags found
1 merge request!298Add script to install CI versions of all external Bob dependencies
Pipeline #62348 passed
......@@ -716,7 +716,9 @@ def base_build(
return conda_build.api.build(recipe_dir, config=conda_config)
def load_packages_from_conda_build_config(conda_build_config, condarc_options):
def load_packages_from_conda_build_config(
conda_build_config, condarc_options, with_pins=False
):
with open(conda_build_config, "r") as f:
content = f.read()
......@@ -734,7 +736,15 @@ def load_packages_from_conda_build_config(conda_build_config, condarc_options):
package_names_map = package_pins.pop("package_names_map")
packages = [package_names_map.get(p, p) for p in package_pins.keys()]
if with_pins:
# NB : in pins, need to strip the occasional " cuda*" suffix
# tensorflow=x.x.x cuda* -> tensorflow=x.x.x
packages = [
f"{package_names_map.get(p, p)}={str(v[0]).split(' ')[0]}"
for p, v in package_pins.items()
]
else:
packages = [package_names_map.get(p, p) for p in package_pins.keys()]
return packages, package_names_map
......
"""Create an environment with all external dependencies listed in bob/devtools/data/conda_build_config.yaml"""
import click
@click.command(
epilog="""Example:
1. Creates an environment called `myenv' containing all external bob dependencies:
python bob/devtools/scripts/install_deps.py myenv
2. The version of python to solve with can be provided as option:
python bob/devtools/scripts/install_deps.py myenv --python=3.8
"""
)
@click.argument("env_name", nargs=1)
@click.option("--python", required=True, help="Python version to pin, e.g. 3.8")
def install_deps(env_name, python):
import subprocess
from bob.devtools.build import load_packages_from_conda_build_config
conda_config_path = "bob/devtools/data/conda_build_config.yaml"
packages, package_names_map = load_packages_from_conda_build_config(
conda_config_path, {"channels": []}, with_pins=True
)
# ask mamba to create an environment with the packages
try:
_ = subprocess.run(
[
"mamba",
"create",
"--override-channels",
"-c",
"conda-forge",
"-n",
env_name,
f"python={python}",
]
+ packages,
check=True,
)
except subprocess.CalledProcessError as e:
print(e.output.decode())
raise e
if __name__ == "__main__":
install_deps()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment