summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Groenen <zoni@zoni.nl>2013-03-11 14:20:25 +0100
committerNick Groenen <zoni@zoni.nl>2013-03-11 14:20:25 +0100
commit451b21537565b335a45bca0d90ff03567a10e9c2 (patch)
tree0aab5e3597fc0a7d4877df52beda51bb8b1454bc
parent8fb868d5aa7bbe4d19f83367ba86d4ac4deb6d25 (diff)
Resolve a cyclic dependency
There was a dependency between python::virtualenv and python::requirements. Basically, the virtualenv wanted to initialize requirements, but requirements depended on the virtualenv being created already, resulting in: err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[python_requirements_check_/usr/share/err/repo/requirements.txt] => Python::Requirements[/usr/share/err/repo/requirements.txt] => Exec[python_virtualenv_/usr/share/err/python3] => Python::Requirements[/usr/share/err/repo/requirements.txt] => Exec[python_requirements_check_/usr/share/err/repo/requirements.txt])
-rw-r--r--manifests/config.pp1
-rw-r--r--manifests/virtualenv.pp9
2 files changed, 7 insertions, 3 deletions
diff --git a/manifests/config.pp b/manifests/config.pp
index 43da22e..49e5230 100644
--- a/manifests/config.pp
+++ b/manifests/config.pp
@@ -5,7 +5,6 @@ class python::config {
Class['python::install'] -> Python::Virtualenv <| |>
Python::Virtualenv <| |> -> Python::Pip <| |>
- Python::Virtualenv <| |> -> Python::Requirements <| |>
if $python::gunicorn {
Class['python::install'] -> Python::Gunicorn <| |>
diff --git a/manifests/virtualenv.pp b/manifests/virtualenv.pp
index e816468..e6c3900 100644
--- a/manifests/virtualenv.pp
+++ b/manifests/virtualenv.pp
@@ -76,12 +76,17 @@ define python::virtualenv (
}
if $requirements {
- Exec["python_virtualenv_${venv_dir}"]
- -> Python::Requirements[$requirements]
+ exec { "python_requirements_initial_install_${requirements}":
+ command => "${venv_dir}/bin/pip install ${proxy_flag} --requirement ${requirements}",
+ refreshonly => true,
+ timeout => 1800,
+ subscribe => Exec["python_virtualenv_${venv_dir}"],
+ }
python::requirements { $requirements:
virtualenv => $venv_dir,
proxy => $proxy,
+ require => Exec["python_virtualenv_${venv_dir}"],
}
}