summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Stankevich <stankevich@users.noreply.github.com>2014-01-03 23:16:55 -0800
committerSergey Stankevich <stankevich@users.noreply.github.com>2014-01-03 23:16:55 -0800
commit45c01b6b018b7fd01119ea592c22cb17be8d4a8d (patch)
tree941f683c78fc104022970538ad72fe046d932944
parent2bab9c9a03cd01450877d897399c68f37fea0ff7 (diff)
parentb5f48bc7cc5861dee404d43eed5a6d327d22c54e (diff)
Merge pull request #49 from jalli/master
Add compatability/support for pip 1.5 and fix erroneous rebuilds
-rw-r--r--lib/facter/pip_version.rb2
-rw-r--r--manifests/pip.pp13
-rw-r--r--manifests/virtualenv.pp15
3 files changed, 22 insertions, 8 deletions
diff --git a/lib/facter/pip_version.rb b/lib/facter/pip_version.rb
index 48dd0bf..131d1f9 100644
--- a/lib/facter/pip_version.rb
+++ b/lib/facter/pip_version.rb
@@ -5,7 +5,7 @@ pkg = Puppet::Type.type(:package).new(:name => "python-pip")
Facter.add("pip_version") do
has_weight 100
setcode do
- Facter::Util::Resolution.exec('pip --version')
+ /^pip (\d+\.\d+\.?\d*).*$/.match(Facter::Util::Resolution.exec('pip --version'))[1]
end
end
diff --git a/manifests/pip.pp b/manifests/pip.pp
index ebe549b..fb73ae7 100644
--- a/manifests/pip.pp
+++ b/manifests/pip.pp
@@ -85,10 +85,17 @@ define python::pip (
default => "${url}#egg=${egg_name}",
}
+ # Python 2.6 and older does not support setuptools/distribute > 0.8 which
+ # is required for pip wheel support, pip therefor requires --no-use-wheel flag
+ # if the # pip version is more recent than 1.4.1 but using an old python or
+ # setuputils/distribute version
+ # To check for this we test for wheel parameter using help and then using
+ # version, this makes sure we only use wheels if they are supported
+
case $ensure {
present: {
exec { "pip_install_${name}":
- command => "${pip_env} --log ${cwd}/pip.log install ${install_args} ${proxy_flag} ${source}",
+ command => "${pip_env} wheel --help > /dev/null 2>&1 && { ${pip_env} wheel --version > /dev/null 2>&1 || wheel_support_flag='--no-use-wheel'; } ; ${pip_env} --log ${cwd}/pip.log install ${install_args} \$wheel_support_flag ${proxy_flag} ${source}",
unless => "${pip_env} freeze | grep -i -e ${grep_regex}",
user => $owner,
environment => $environment,
@@ -98,7 +105,7 @@ define python::pip (
latest: {
exec { "pip_install_${name}":
- command => "${pip_env} --log ${cwd}/pip.log install --upgrade ${proxy_flag} ${source}",
+ command => "${pip_env} wheel --help > /dev/null 2>&1 && { ${pip_env} wheel --version > /dev/null 2>&1 || wheel_support_flag='--no-use-wheel'; } ; ${pip_env} --log ${cwd}/pip.log install --upgrade \$wheel_support_flag ${proxy_flag} ${source}",
user => $owner,
environment => $environment,
path => ['/usr/local/bin','/usr/bin','/bin', '/usr/sbin'],
@@ -107,7 +114,7 @@ define python::pip (
latest: {
exec { "pip_install_${name}":
- command => "${pip_env} --log ${cwd}/pip.log install -U ${install_args} ${proxy_flag} ${source}",
+ command => "${pip_env} wheel --help > /dev/null 2>&1 && { ${pip_env} wheel --version > /dev/null 2>&1 || wheel_support_flag='--no-use-wheel'; } ; ${pip_env} --log ${cwd}/pip.log install -U ${install_args} \$wheel_support_flag ${proxy_flag} ${source}",
user => $owner,
environment => $environment,
}
diff --git a/manifests/virtualenv.pp b/manifests/virtualenv.pp
index 85fc67a..7f7fbb4 100644
--- a/manifests/virtualenv.pp
+++ b/manifests/virtualenv.pp
@@ -119,18 +119,25 @@ define python::virtualenv (
default => "-i ${index}",
}
+ # Python 2.6 and older does not support setuptools/distribute > 0.8 which
+ # is required for pip wheel support, pip therefor requires --no-use-wheel flag
+ # if the # pip version is more recent than 1.4.1 but using an old python or
+ # setuputils/distribute version
+ # To check for this we test for wheel parameter using help and then using
+ # version, this makes sure we only use wheels if they are supported
+
exec { "python_virtualenv_${venv_dir}":
- command => "mkdir -p ${venv_dir} ${proxy_command} && virtualenv ${system_pkgs_flag} -p ${python} ${venv_dir} && ${venv_dir}/bin/pip --log ${venv_dir}/pip.log install ${pypi_index} ${proxy_flag} --upgrade pip ${distribute_pkg}",
+ command => "mkdir -p ${venv_dir} ${proxy_command} && virtualenv ${system_pkgs_flag} -p ${python} ${venv_dir} && ${venv_dir}/bin/pip wheel --help > /dev/null 2>&1 && { ${venv_dir}/bin/pip wheel --version > /dev/null 2>&1 || wheel_support_flag='--no-use-wheel'; } ; ${venv_dir}/bin/pip --log ${venv_dir}/pip.log install ${pypi_index} ${proxy_flag} \$wheel_support_flag --upgrade pip ${distribute_pkg}",
user => $owner,
path => $path,
- cwd => '/tmp',
+ cwd => $venv_dir,
environment => $environment,
- unless => "grep '^[ \t]*VIRTUAL_ENV=[\'\"]*/tmp[\"\']*[ \t]*$' /tmp/bin/activate", #Unless activate exists and VIRTUAL_ENV is correct we re-create the virtualenv
+ unless => "grep '^[\\t ]*VIRTUAL_ENV=[\\\\'\\\"]*${venv_dir}[\\\"\\\\'][\\t ]*$' ${venv_dir}/bin/activate", #Unless activate exists and VIRTUAL_ENV is correct we re-create the virtualenv
}
if $requirements {
exec { "python_requirements_initial_install_${requirements}_${venv_dir}":
- command => "${venv_dir}/bin/pip --log ${venv_dir}/pip.log install ${pypi_index} ${proxy_flag} -r ${requirements}",
+ command => "${venv_dir}/bin/pip wheel --help > /dev/null 2>&1 && { ${venv_dir}/bin/pip wheel --version > /dev/null 2>&1 || wheel_support_flag='--no-use-wheel'; } ; ${venv_dir}/bin/pip --log ${venv_dir}/pip.log install ${pypi_index} ${proxy_flag} \$wheel_support_flag -r ${requirements}",
refreshonly => true,
timeout => $timeout,
user => $owner,