From d31abeb8a731618e0fd568b35dd6a690ed1118ba Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Sat, 31 Oct 2015 12:07:00 +0000 Subject: [PATCH 1/5] Pin ConfigArgParse 0.9.3 py2.6 (fixes #640). --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 972e87eaf..a94b22c0c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ # https://github.com/bw2/ConfigArgParse/issues/17 -git+https://github.com/kuba/ConfigArgParse.git@python2.6#egg=ConfigArgParse +git+https://github.com/kuba/ConfigArgParse.git@python2.6-0.9.3#egg=ConfigArgParse From 6f5d37fc21fa01f3272f851d97d13c4e045f27a6 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Sat, 31 Oct 2015 12:17:02 +0000 Subject: [PATCH 2/5] requirements.txt: rename to py26reqs.txt and remove it from deps where possible. When people see requirements.txt they tend to `pip install -r` straight way (c.f. https://github.com/letsencrypt/letsencrypt/issues/1252). It's only necessary for Python2.6. --- Dockerfile | 2 +- Dockerfile-dev | 4 ++-- MANIFEST.in | 2 +- bootstrap/README | 4 ++-- bootstrap/dev/venv.sh | 2 +- requirements.txt => py26reqs.txt | 0 tox.ini | 6 +++--- 7 files changed, 10 insertions(+), 10 deletions(-) rename requirements.txt => py26reqs.txt (100%) diff --git a/Dockerfile b/Dockerfile index b9ea168de..d7aca784b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,7 @@ COPY letsencrypt-apache /opt/letsencrypt/src/letsencrypt-apache/ COPY letsencrypt-nginx /opt/letsencrypt/src/letsencrypt-nginx/ -# requirements.txt not installed! +# py26reqs.txt not installed! RUN virtualenv --no-site-packages -p python2 /opt/letsencrypt/venv && \ /opt/letsencrypt/venv/bin/pip install \ -e /opt/letsencrypt/src/acme \ diff --git a/Dockerfile-dev b/Dockerfile-dev index daa8e9af0..028366b2c 100644 --- a/Dockerfile-dev +++ b/Dockerfile-dev @@ -32,7 +32,8 @@ RUN /opt/letsencrypt/src/ubuntu.sh && \ # the above is not likely to change, so by putting it further up the # Dockerfile we make sure we cache as much as possible -COPY setup.py README.rst CHANGES.rst MANIFEST.in requirements.txt DISCLAIMER linter_plugin.py tox.cover.sh tox.ini pep8.travis.sh .pep8 .pylintrc /opt/letsencrypt/src/ +# py26reqs.txt not installed! +COPY setup.py README.rst CHANGES.rst MANIFEST.in DISCLAIMER linter_plugin.py tox.cover.sh tox.ini pep8.travis.sh .pep8 .pylintrc /opt/letsencrypt/src/ # all above files are necessary for setup.py, however, package source # code directory has to be copied separately to a subdirectory... @@ -52,7 +53,6 @@ COPY tests /opt/letsencrypt/src/tests/ RUN virtualenv --no-site-packages -p python2 /opt/letsencrypt/venv && \ /opt/letsencrypt/venv/bin/pip install \ - -r /opt/letsencrypt/src/requirements.txt \ -e /opt/letsencrypt/src/acme \ -e /opt/letsencrypt/src \ -e /opt/letsencrypt/src/letsencrypt-apache \ diff --git a/MANIFEST.in b/MANIFEST.in index fa0d16e0d..5d5b0bed4 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ -include requirements.txt +include py26reqs.txt include README.rst include CHANGES.rst include CONTRIBUTING.md diff --git a/bootstrap/README b/bootstrap/README index 6a04ac0ba..89fd8b6ba 100644 --- a/bootstrap/README +++ b/bootstrap/README @@ -2,6 +2,6 @@ This directory contains scripts that install necessary OS-specific prerequisite dependencies (see docs/using.rst). General dependencies: -- git-core: requirements.txt git+https://* +- git-core: py26reqs.txt git+https://* - ca-certificates: communication with demo ACMO server at - https://www.letsencrypt-demo.org, requirements.txt git+https://* + https://www.letsencrypt-demo.org, py26reqs.txt git+https://* diff --git a/bootstrap/dev/venv.sh b/bootstrap/dev/venv.sh index d6cf95bb5..2bd32a89b 100755 --- a/bootstrap/dev/venv.sh +++ b/bootstrap/dev/venv.sh @@ -4,7 +4,7 @@ export VENV_ARGS="--python python2" ./bootstrap/dev/_venv_common.sh \ - -r requirements.txt \ + -r py26reqs.txt \ -e acme[testing] \ -e .[dev,docs,testing] \ -e letsencrypt-apache \ diff --git a/requirements.txt b/py26reqs.txt similarity index 100% rename from requirements.txt rename to py26reqs.txt diff --git a/tox.ini b/tox.ini index 8ea3e518f..9988d8d1f 100644 --- a/tox.ini +++ b/tox.ini @@ -17,7 +17,7 @@ envlist = py26,py27,py33,py34,cover,lint commands = pip install -e acme[testing] nosetests -v acme - pip install -r requirements.txt -e .[testing] + pip install -r py26reqs.txt -e .[testing] nosetests -v letsencrypt pip install -e letsencrypt-apache nosetests -v letsencrypt_apache @@ -44,7 +44,7 @@ commands = [testenv:cover] basepython = python2.7 commands = - pip install -r requirements.txt -e acme -e .[testing] -e letsencrypt-apache -e letsencrypt-nginx -e letshelp-letsencrypt + pip install -e acme -e .[testing] -e letsencrypt-apache -e letsencrypt-nginx -e letshelp-letsencrypt ./tox.cover.sh [testenv:lint] @@ -54,7 +54,7 @@ basepython = python2.7 # duplicate code checking; if one of the commands fails, others will # continue, but tox return code will reflect previous error commands = - pip install -r requirements.txt -e acme -e .[dev] -e letsencrypt-apache -e letsencrypt-nginx -e letsencrypt-compatibility-test -e letshelp-letsencrypt + pip install -e acme -e .[dev] -e letsencrypt-apache -e letsencrypt-nginx -e letsencrypt-compatibility-test -e letshelp-letsencrypt ./pep8.travis.sh pylint --rcfile=.pylintrc letsencrypt pylint --rcfile=.pylintrc acme/acme From bbf4d837ede1f17b1e5bf70c63e71481483e45f5 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Sat, 31 Oct 2015 12:21:47 +0000 Subject: [PATCH 3/5] letsencrypt-auto installs py26reqs.txt (fixes #1046). --- letsencrypt-auto | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/letsencrypt-auto b/letsencrypt-auto index d163998aa..bee183dac 100755 --- a/letsencrypt-auto +++ b/letsencrypt-auto @@ -19,7 +19,7 @@ else SUDO= fi -for arg in "$@" ; do +for arg in "$@" ; do # This first clause is redundant with the third, but hedging on portability if [ "$arg" = "-v" ] || [ "$arg" = "--verbose" ] || echo "$arg" | grep -E -- "-v+$" ; then VERBOSE=1 @@ -78,11 +78,11 @@ if [ "$VERBOSE" = 1 ] ; then echo $VENV_BIN/pip install -U setuptools $VENV_BIN/pip install -U pip - $VENV_BIN/pip install -U letsencrypt letsencrypt-apache + $VENV_BIN/pip install -r py26reqs.txt -U letsencrypt letsencrypt-apache # nginx is buggy / disabled for now, but upgrade it if the user has # installed it manually if $VENV_BIN/pip freeze | grep -q letsencrypt-nginx ; then - $VENV_BIN/pip install -U letsencrypt letsencrypt-nginx + $VENV_BIN/pip install -U letsencrypt letsencrypt-nginx fi else $VENV_BIN/pip install -U setuptools > /dev/null @@ -90,6 +90,8 @@ else $VENV_BIN/pip install -U pip > /dev/null printf . # nginx is buggy / disabled for now... + $VENV_BIN/pip install -r py26reqs.txt + printf . $VENV_BIN/pip install -U letsencrypt > /dev/null printf . $VENV_BIN/pip install -U letsencrypt-apache > /dev/null From 6d8e48c4ff74a144bed9269ad7b663b1b840c1f6 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Sat, 31 Oct 2015 12:31:07 +0000 Subject: [PATCH 4/5] Use py26reqs in bootstrap/venv.sh --- bootstrap/venv.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap/venv.sh b/bootstrap/venv.sh index 6ca082446..da8177828 100755 --- a/bootstrap/venv.sh +++ b/bootstrap/venv.sh @@ -20,7 +20,7 @@ fi pip install -U setuptools pip install -U pip -pip install -U letsencrypt letsencrypt-apache # letsencrypt-nginx +pip install -U -r py26reqs.txt letsencrypt letsencrypt-apache # letsencrypt-nginx echo echo "Congratulations, Let's Encrypt has been successfully installed/updated!" From f414f51d823cd96c1a65aafd0dfdba535b8b9e5e Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Sat, 31 Oct 2015 12:39:24 +0000 Subject: [PATCH 5/5] letsencrypt-auto for debian squeeze (fixes #1078). --- bootstrap/venv.sh | 2 +- letsencrypt-auto | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bootstrap/venv.sh b/bootstrap/venv.sh index da8177828..ff1a50c6c 100755 --- a/bootstrap/venv.sh +++ b/bootstrap/venv.sh @@ -13,7 +13,7 @@ VENV_PATH=${VENV_PATH:-"$XDG_DATA_HOME/$VENV_NAME"} # later steps, causing "ImportError: cannot import name unpack_url" if [ ! -d $VENV_PATH ] then - virtualenv --no-site-packages --python python2 $VENV_PATH + virtualenv --no-site-packages --python ${LE_PYTHON:-python2} $VENV_PATH fi . $VENV_PATH/bin/activate diff --git a/letsencrypt-auto b/letsencrypt-auto index bee183dac..dbece5eff 100755 --- a/letsencrypt-auto +++ b/letsencrypt-auto @@ -26,6 +26,13 @@ for arg in "$@" ; do fi done +if [ -f /etc/debian_version ] ; then + # squeeze needs Python 2.6, `python2` doesn't exist + if grep -q '^6\.0' /etc/debian_version ; then + LE_PYTHON=${LE_PYTHON:-python} + fi +fi + # virtualenv call is not idempotent: it overwrites pip upgraded in # later steps, causing "ImportError: cannot import name unpack_url" if [ ! -d $VENV_PATH ] @@ -67,9 +74,9 @@ then echo "Creating virtual environment..." if [ "$VERBOSE" = 1 ] ; then - virtualenv --no-site-packages --python python2 $VENV_PATH + virtualenv --no-site-packages --python ${LE_PYTHON:-python2} $VENV_PATH else - virtualenv --no-site-packages --python python2 $VENV_PATH > /dev/null + virtualenv --no-site-packages --python ${LE_PYTHON:-python2} $VENV_PATH > /dev/null fi fi