diff --git a/.azure-pipelines/templates/steps/sphinx-steps.yml b/.azure-pipelines/templates/steps/sphinx-steps.yml index 7e1d2ee9d..fa2952b05 100644 --- a/.azure-pipelines/templates/steps/sphinx-steps.yml +++ b/.azure-pipelines/templates/steps/sphinx-steps.yml @@ -2,14 +2,12 @@ steps: - bash: | FINAL_STATUS=0 declare -a FAILED_BUILDS - python3 -m venv .venv - source .venv/bin/activate - python tools/pipstrap.py + tools/venv.py + source venv/bin/activate for doc_path in */docs do echo "" echo "##[group]Building $doc_path" - tools/pip_install_editable.py $doc_path/..[docs] if ! sphinx-build -W --keep-going -b html $doc_path $doc_path/_build/html; then FINAL_STATUS=1 FAILED_BUILDS[${#FAILED_BUILDS[@]}]="${doc_path%/docs}" diff --git a/certbot-apache/local-oldest-requirements.txt b/certbot-apache/local-oldest-requirements.txt deleted file mode 100644 index 323e315f1..000000000 --- a/certbot-apache/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==1.8.0 -certbot[dev]==1.10.1 diff --git a/certbot-apache/setup.py b/certbot-apache/setup.py index 3bc1b0906..3397671a6 100644 --- a/certbot-apache/setup.py +++ b/certbot-apache/setup.py @@ -3,11 +3,12 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ - 'acme>=1.8.0', - 'certbot>=1.10.1', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', 'python-augeas', 'setuptools>=39.0.1', 'zope.component', diff --git a/certbot-dns-cloudflare/local-oldest-requirements.txt b/certbot-dns-cloudflare/local-oldest-requirements.txt deleted file mode 100644 index cf61c15a5..000000000 --- a/certbot-dns-cloudflare/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.29.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-cloudflare/setup.py b/certbot-dns-cloudflare/setup.py index 74d71e780..3e5cade98 100644 --- a/certbot-dns-cloudflare/setup.py +++ b/certbot-dns-cloudflare/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'cloudflare>=1.5.1', 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.29.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-cloudxns/local-oldest-requirements.txt b/certbot-dns-cloudxns/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-cloudxns/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-cloudxns/setup.py b/certbot-dns-cloudxns/setup.py index 6ffc245b6..da667657a 100644 --- a/certbot-dns-cloudxns/setup.py +++ b/certbot-dns-cloudxns/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dns-lexicon>=3.1.0', # Changed `rtype` parameter name 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-digitalocean/local-oldest-requirements.txt b/certbot-dns-digitalocean/local-oldest-requirements.txt deleted file mode 100644 index cf61c15a5..000000000 --- a/certbot-dns-digitalocean/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.29.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-digitalocean/setup.py b/certbot-dns-digitalocean/setup.py index 8f0ce22cb..5b59ab4ac 100644 --- a/certbot-dns-digitalocean/setup.py +++ b/certbot-dns-digitalocean/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'python-digitalocean>=1.11', # 1.15.0 or newer is recommended for TTL support 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.29.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-dnsimple/local-oldest-requirements.txt b/certbot-dns-dnsimple/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-dnsimple/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-dnsimple/setup.py b/certbot-dns-dnsimple/setup.py index 87584ffa7..5a1b13f44 100644 --- a/certbot-dns-dnsimple/setup.py +++ b/certbot-dns-dnsimple/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'setuptools>=39.0.1', 'zope.interface', @@ -15,8 +13,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-dnsmadeeasy/local-oldest-requirements.txt b/certbot-dns-dnsmadeeasy/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-dnsmadeeasy/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-dnsmadeeasy/setup.py b/certbot-dns-dnsmadeeasy/setup.py index b2a4ce7de..e0ff95a3b 100644 --- a/certbot-dns-dnsmadeeasy/setup.py +++ b/certbot-dns-dnsmadeeasy/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dns-lexicon>=3.1.0', # Changed `rtype` parameter name 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-gehirn/local-oldest-requirements.txt b/certbot-dns-gehirn/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-gehirn/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-gehirn/setup.py b/certbot-dns-gehirn/setup.py index 5228efcc8..997cd4cca 100644 --- a/certbot-dns-gehirn/setup.py +++ b/certbot-dns-gehirn/setup.py @@ -14,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-google/local-oldest-requirements.txt b/certbot-dns-google/local-oldest-requirements.txt deleted file mode 100644 index cf61c15a5..000000000 --- a/certbot-dns-google/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.29.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-google/setup.py b/certbot-dns-google/setup.py index f1a11fc36..fd3bb4559 100644 --- a/certbot-dns-google/setup.py +++ b/certbot-dns-google/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'google-api-python-client>=1.5.5', 'oauth2client>=4.0', @@ -19,8 +17,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.29.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-linode/local-oldest-requirements.txt b/certbot-dns-linode/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-linode/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-linode/setup.py b/certbot-dns-linode/setup.py index 778867ad0..2c21ceecb 100644 --- a/certbot-dns-linode/setup.py +++ b/certbot-dns-linode/setup.py @@ -14,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-luadns/local-oldest-requirements.txt b/certbot-dns-luadns/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-luadns/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-luadns/setup.py b/certbot-dns-luadns/setup.py index 798890efa..024b1100b 100644 --- a/certbot-dns-luadns/setup.py +++ b/certbot-dns-luadns/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dns-lexicon>=3.1.0', # Changed `rtype` parameter name 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-nsone/local-oldest-requirements.txt b/certbot-dns-nsone/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-nsone/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-nsone/setup.py b/certbot-dns-nsone/setup.py index a60e400e7..959c3876d 100644 --- a/certbot-dns-nsone/setup.py +++ b/certbot-dns-nsone/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dns-lexicon>=3.1.0', # Changed `rtype` parameter name 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-ovh/local-oldest-requirements.txt b/certbot-dns-ovh/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-ovh/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-ovh/setup.py b/certbot-dns-ovh/setup.py index dfc75a2b7..52dca456b 100644 --- a/certbot-dns-ovh/setup.py +++ b/certbot-dns-ovh/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dns-lexicon>=3.1.0', # Changed `rtype` parameter name 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-rfc2136/local-oldest-requirements.txt b/certbot-dns-rfc2136/local-oldest-requirements.txt deleted file mode 100644 index cf61c15a5..000000000 --- a/certbot-dns-rfc2136/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.29.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-rfc2136/setup.py b/certbot-dns-rfc2136/setup.py index 38274b963..25f0f2bfe 100644 --- a/certbot-dns-rfc2136/setup.py +++ b/certbot-dns-rfc2136/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'dnspython', 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.29.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-route53/local-oldest-requirements.txt b/certbot-dns-route53/local-oldest-requirements.txt deleted file mode 100644 index cf61c15a5..000000000 --- a/certbot-dns-route53/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.29.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-route53/setup.py b/certbot-dns-route53/setup.py index 83dd491b0..90069b3e2 100644 --- a/certbot-dns-route53/setup.py +++ b/certbot-dns-route53/setup.py @@ -6,8 +6,6 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ 'boto3', 'setuptools>=39.0.1', @@ -16,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.29.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-dns-sakuracloud/local-oldest-requirements.txt b/certbot-dns-sakuracloud/local-oldest-requirements.txt deleted file mode 100644 index 1307698d4..000000000 --- a/certbot-dns-sakuracloud/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==0.31.0 -certbot[dev]==1.1.0 diff --git a/certbot-dns-sakuracloud/setup.py b/certbot-dns-sakuracloud/setup.py index 777811c7e..8f98058f0 100644 --- a/certbot-dns-sakuracloud/setup.py +++ b/certbot-dns-sakuracloud/setup.py @@ -14,8 +14,11 @@ install_requires = [ if not os.environ.get('SNAP_BUILD'): install_requires.extend([ - 'acme>=0.31.0', - 'certbot>=1.1.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', ]) elif 'bdist_wheel' in sys.argv[1:]: raise RuntimeError('Unset SNAP_BUILD when building wheels ' diff --git a/certbot-nginx/local-oldest-requirements.txt b/certbot-nginx/local-oldest-requirements.txt deleted file mode 100644 index d47e74959..000000000 --- a/certbot-nginx/local-oldest-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==1.8.0 -certbot[dev]==1.16.0 diff --git a/certbot-nginx/setup.py b/certbot-nginx/setup.py index 9d27d3fc9..371df2a3b 100644 --- a/certbot-nginx/setup.py +++ b/certbot-nginx/setup.py @@ -3,11 +3,12 @@ from setuptools import setup version = '1.17.0.dev0' -# Remember to update local-oldest-requirements.txt when changing the minimum -# acme/certbot version. install_requires = [ - 'acme>=1.8.0', - 'certbot>=1.16.0', + # We specify the minimum acme and certbot version as the current plugin + # version for simplicity. See + # https://github.com/certbot/certbot/issues/8761 for more info. + f'acme>={version}', + f'certbot>={version}', 'PyOpenSSL>=17.3.0', 'pyparsing>=2.2.0', 'setuptools>=39.0.1', diff --git a/certbot/CHANGELOG.md b/certbot/CHANGELOG.md index 6ff1c52cb..04326ef30 100644 --- a/certbot/CHANGELOG.md +++ b/certbot/CHANGELOG.md @@ -10,7 +10,12 @@ Certbot adheres to [Semantic Versioning](https://semver.org/). ### Changed -* +* We changed how dependencies are specified between Certbot packages. For this + and future releases, higher level Certbot components will require that lower + level components are the same version or newer. More specifically, version X + of the Certbot package will now always require acme>=X and version Y of a + plugin package will always require acme>=Y and certbot=>Y. Specifying + dependencies in this way simplifies testing and development. ### Fixed diff --git a/certbot/local-oldest-requirements.txt b/certbot/local-oldest-requirements.txt deleted file mode 100644 index 983f11cca..000000000 --- a/certbot/local-oldest-requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Remember to update setup.py to match the package versions below. -acme[dev]==1.8.0 diff --git a/certbot/setup.py b/certbot/setup.py index e0078bd6e..eba0db3d7 100644 --- a/certbot/setup.py +++ b/certbot/setup.py @@ -41,7 +41,10 @@ version = meta['version'] # here to avoid masking the more specific request requirements in acme. See # https://github.com/pypa/pip/issues/988 for more info. install_requires = [ - 'acme>=1.8.0', + # We specify the minimum acme version as the current Certbot version for + # simplicity. See https://github.com/certbot/certbot/issues/8761 for more + # info. + f'acme>={version}', # We technically need ConfigArgParse 0.10.0 for Python 2.6 support, but # saying so here causes a runtime error against our temporary fork of 0.9.3 # in which we added 2.6 support (see #2243), so we relax the requirement. diff --git a/tools/_release.sh b/tools/_release.sh index 7dd4601ff..03945da21 100755 --- a/tools/_release.sh +++ b/tools/_release.sh @@ -87,14 +87,6 @@ for pkg_dir in $SUBPKGS certbot-compatibility-test do sed -i 's/\.dev0//' "$pkg_dir/setup.py" git add "$pkg_dir/setup.py" - - if [ -f "$pkg_dir/local-oldest-requirements.txt" ]; then - sed -i "s/-e acme\[dev\]/acme[dev]==$version/" "$pkg_dir/local-oldest-requirements.txt" - sed -i "s/-e acme/acme[dev]==$version/" "$pkg_dir/local-oldest-requirements.txt" - sed -i "s/-e certbot\[dev\]/certbot[dev]==$version/" "$pkg_dir/local-oldest-requirements.txt" - sed -i "s/-e certbot/certbot[dev]==$version/" "$pkg_dir/local-oldest-requirements.txt" - git add "$pkg_dir/local-oldest-requirements.txt" - fi done SetVersion() { diff --git a/tools/oldest_constraints.txt b/tools/oldest_constraints.txt index c0f114639..c31c5d4f8 100644 --- a/tools/oldest_constraints.txt +++ b/tools/oldest_constraints.txt @@ -74,6 +74,4 @@ parsedatetime==2.4 # Tracking at https://github.com/certbot/certbot/issues/6473 boto3==1.4.7 botocore==1.7.41 -# Lexicon oldest constraint is overridden appropriately on relevant DNS provider plugins -# using their local-oldest-requirements.txt dns-lexicon==3.1.0 diff --git a/tools/pip_install.py b/tools/pip_install.py index 07e1e5b13..047b93f08 100755 --- a/tools/pip_install.py +++ b/tools/pip_install.py @@ -1,10 +1,7 @@ #!/usr/bin/env python # pip installs packages using pinned package versions. If CERTBOT_OLDEST is set -# to 1, a combination of tools/oldest_constraints.txt, -# tools/dev_constraints.txt, and local-oldest-requirements.txt contained in the -# top level of the package's directory is used, otherwise, -# tools/requirements.txt is used. If CERTBOT_OLDEST is set, this script must -# be run with `-e ` and no other arguments. +# to 1, a combination of tools/oldest_constraints.txt and +# tools/dev_constraints.txt is used, otherwise, tools/requirements.txt is used. from __future__ import absolute_import from __future__ import print_function @@ -37,27 +34,13 @@ def find_tools_path(): return os.path.dirname(readlink.main(__file__)) -def certbot_oldest_processing(tools_path, args, constraints_path): - if args[0] != '-e' or len(args) != 2: - raise ValueError('When CERTBOT_OLDEST is set, this script must be run ' - 'with a single -e argument.') - # remove any extras such as [dev] - pkg_dir = re.sub(r'\[\w+\]', '', args[1]) +def certbot_oldest_processing(tools_path, constraints_path): # The order of the files in this list matters as files specified later can # override the pinnings found in earlier files. pinning_files = [os.path.join(tools_path, 'dev_constraints.txt'), os.path.join(tools_path, 'oldest_constraints.txt')] - requirements = os.path.join(pkg_dir, 'local-oldest-requirements.txt') - # packages like acme don't have any local oldest requirements - if os.path.isfile(requirements): - # We add requirements to the end of the list so it can override - # anything that it needs to. - pinning_files.append(requirements) - else: - requirements = None with open(constraints_path, 'w') as fd: fd.write(merge_module.main(*pinning_files)) - return requirements def certbot_normal_processing(tools_path, constraints_path): @@ -91,27 +74,14 @@ def main(args): else: # Otherwise, we merge requirements to build the constraints and pin dependencies constraints_path = os.path.join(working_dir, 'constraints.txt') - requirements = None if os.environ.get('CERTBOT_OLDEST') == '1': - requirements = certbot_oldest_processing(tools_path, args, constraints_path) + certbot_oldest_processing(tools_path, constraints_path) else: certbot_normal_processing(tools_path, constraints_path) env = os.environ.copy() env["PIP_CONSTRAINT"] = constraints_path - if requirements: # This branch is executed during the oldest tests - # First step, install the transitive dependencies of oldest requirements - # in respect with oldest constraints. - pip_install_with_print('--requirement "{0}"'.format(requirements), - env=env) - # Second step, ensure that oldest requirements themselves are effectively - # installed using --force-reinstall, and avoid corner cases like the one described - # in https://github.com/certbot/certbot/issues/7014. - pip_install_with_print('--force-reinstall --no-deps --requirement "{0}"' - .format(requirements)) - - print(' '.join(args)) pip_install_with_print(' '.join(args), env=env) diff --git a/tox.ini b/tox.ini index a45766d87..cfe6ba2c5 100644 --- a/tox.ini +++ b/tox.ini @@ -14,51 +14,13 @@ pip_install = python {toxinidir}/tools/pip_install_editable.py # before the script moves on to the next package. All dependencies are pinned # to a specific version for increased stability for developers. install_and_test = python {toxinidir}/tools/install_and_test.py -dns_packages = - certbot-dns-cloudflare \ - certbot-dns-cloudxns \ - certbot-dns-digitalocean \ - certbot-dns-dnsimple \ - certbot-dns-dnsmadeeasy \ - certbot-dns-gehirn \ - certbot-dns-google \ - certbot-dns-linode \ - certbot-dns-luadns \ - certbot-dns-nsone \ - certbot-dns-ovh \ - certbot-dns-rfc2136 \ - certbot-dns-route53 \ - certbot-dns-sakuracloud -all_packages = - acme[dev] \ - certbot[dev] \ - certbot-apache \ - {[base]dns_packages} \ - certbot-nginx -install_packages = - python {toxinidir}/tools/pip_install_editable.py {[base]all_packages} -source_paths = - acme/acme - certbot/certbot - certbot-ci/certbot_integration_tests - certbot-apache/certbot_apache - certbot-compatibility-test/certbot_compatibility_test - certbot-dns-cloudflare/certbot_dns_cloudflare - certbot-dns-cloudxns/certbot_dns_cloudxns - certbot-dns-digitalocean/certbot_dns_digitalocean - certbot-dns-dnsimple/certbot_dns_dnsimple - certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy - certbot-dns-gehirn/certbot_dns_gehirn - certbot-dns-google/certbot_dns_google - certbot-dns-linode/certbot_dns_linode - certbot-dns-luadns/certbot_dns_luadns - certbot-dns-nsone/certbot_dns_nsone - certbot-dns-ovh/certbot_dns_ovh - certbot-dns-rfc2136/certbot_dns_rfc2136 - certbot-dns-route53/certbot_dns_route53 - certbot-dns-sakuracloud/certbot_dns_sakuracloud - certbot-nginx/certbot_nginx - tests/lock_test.py +install_packages = python {toxinidir}/tools/pip_install_editable.py {[base]all_packages} +# Packages are listed on one line because tox seems to have inconsistent +# behavior with substitutions that contain line continuations, see +# https://github.com/tox-dev/tox/issues/2069 for more info. +dns_packages = certbot-dns-cloudflare certbot-dns-cloudxns certbot-dns-digitalocean certbot-dns-dnsimple certbot-dns-dnsmadeeasy certbot-dns-gehirn certbot-dns-google certbot-dns-linode certbot-dns-luadns certbot-dns-nsone certbot-dns-ovh certbot-dns-rfc2136 certbot-dns-route53 certbot-dns-sakuracloud +all_packages = acme[dev] certbot[dev] certbot-apache {[base]dns_packages} certbot-nginx +source_paths = acme/acme certbot/certbot certbot-ci/certbot_integration_tests certbot-apache/certbot_apache certbot-compatibility-test/certbot_compatibility_test certbot-dns-cloudflare/certbot_dns_cloudflare certbot-dns-cloudxns/certbot_dns_cloudxns certbot-dns-digitalocean/certbot_dns_digitalocean certbot-dns-dnsimple/certbot_dns_dnsimple certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy certbot-dns-gehirn/certbot_dns_gehirn certbot-dns-google/certbot_dns_google certbot-dns-linode/certbot_dns_linode certbot-dns-luadns/certbot_dns_luadns certbot-dns-nsone/certbot_dns_nsone certbot-dns-ovh/certbot_dns_ovh certbot-dns-rfc2136/certbot_dns_rfc2136 certbot-dns-route53/certbot_dns_route53 certbot-dns-sakuracloud/certbot_dns_sakuracloud certbot-nginx/certbot_nginx tests/lock_test.py [testenv] passenv = @@ -100,7 +62,8 @@ setenv = basepython = {[testenv:oldest]basepython} commands = - {[base]install_and_test} certbot-apache + {[base]pip_install} acme[dev] certbot[dev] certbot-apache + pytest certbot-apache setenv = {[testenv:oldest]setenv} @@ -108,7 +71,8 @@ setenv = basepython = {[testenv:oldest]basepython} commands = - {[base]install_and_test} certbot-apache[dev] + {[base]pip_install} acme[dev] certbot[dev] certbot-apache[dev] + pytest certbot-apache setenv = {[testenv:oldest]setenv} @@ -116,7 +80,8 @@ setenv = basepython = {[testenv:oldest]basepython} commands = - {[base]install_and_test} certbot[dev] + {[base]pip_install} acme[dev] certbot[dev] + pytest certbot setenv = {[testenv:oldest]setenv} @@ -124,7 +89,8 @@ setenv = basepython = {[testenv:oldest]basepython} commands = - {[base]install_and_test} {[base]dns_packages} + {[base]pip_install} acme[dev] certbot[dev] {[base]dns_packages} + pytest {[base]dns_packages} setenv = {[testenv:oldest]setenv} @@ -132,7 +98,8 @@ setenv = basepython = {[testenv:oldest]basepython} commands = - {[base]install_and_test} certbot-nginx + {[base]pip_install} acme[dev] certbot[dev] certbot-nginx + pytest certbot-nginx python tests/lock_test.py setenv = {[testenv:oldest]setenv} @@ -258,8 +225,7 @@ passenv = DOCKER_* basepython = {[testenv:oldest]basepython} commands = - {[base]pip_install} certbot - {[base]pip_install} certbot-ci + {[base]pip_install} acme certbot certbot-ci pytest certbot-ci/certbot_integration_tests/certbot_tests \ --acme-server={env:ACME_SERVER:pebble} passenv = DOCKER_* @@ -269,8 +235,7 @@ setenv = {[testenv:oldest]setenv} basepython = {[testenv:oldest]basepython} commands = - {[base]pip_install} certbot-nginx - {[base]pip_install} certbot-ci + {[base]pip_install} acme certbot certbot-nginx certbot-ci pytest certbot-ci/certbot_integration_tests/nginx_tests \ --acme-server={env:ACME_SERVER:pebble} passenv = DOCKER_*