From 10747555ae6f74b0eb44d3aaacea0f8c70dd0ba3 Mon Sep 17 00:00:00 2001 From: Brad Warren Date: Thu, 8 May 2025 13:03:31 -0700 Subject: [PATCH] upgrade python-augeas (#10286) a couple weeks ago, [python-augeas 1.2.0](https://pypi.org/project/python-augeas/#history) was uploaded to pypi. unfortunately, this broke things for us the first major change was from https://github.com/hercules-team/python-augeas/pull/49 where python-augeas now needs the new OS packages described in the initial comment there the second change was from https://github.com/hercules-team/python-augeas/pull/51 which added a python interface to augeas functions that weren't introduced until [augeas 1.13.0](https://github.com/hercules-team/augeas/blob/af2aa88ab37fc48167d8c5e43b1770a4ba2ff403/NEWS#L65-L66). this isn't ideal, but i don't think it's a big deal for us. augeas 1.13.0 is over three years old and [ubuntu 20.04](https://ubuntu.com/blog/ubuntu-20-04-eol-for-devicesional) and [debian bullseye](https://www.debian.org/releases/) which have older versions than that are technically EOL'd regardless of how we feel about these changes, our tests don't currently work with an updated version of python-augeas and this PR fixes it. i'm also tracking https://github.com/certbot/certbot/issues/10282 to update certbot.eff.org to list the newly required OS packages --- .../templates/steps/sphinx-steps.yml | 2 +- .../templates/steps/tox-steps.yml | 2 +- certbot-compatibility-test/Dockerfile | 2 +- certbot/docs/contributing.rst | 4 +-- letstest/scripts/bootstrap_os_packages.sh | 7 ++-- letstest/targets/targets.yaml | 15 +++----- tools/requirements.txt | 35 ++++++++++--------- 7 files changed, 33 insertions(+), 34 deletions(-) diff --git a/.azure-pipelines/templates/steps/sphinx-steps.yml b/.azure-pipelines/templates/steps/sphinx-steps.yml index e6a267e80..c34debe4c 100644 --- a/.azure-pipelines/templates/steps/sphinx-steps.yml +++ b/.azure-pipelines/templates/steps/sphinx-steps.yml @@ -2,7 +2,7 @@ steps: - bash: | set -e sudo apt-get update - sudo apt-get install -y --no-install-recommends libaugeas0 + sudo apt-get install -y --no-install-recommends libaugeas-dev FINAL_STATUS=0 declare -a FAILED_BUILDS tools/venv.py diff --git a/.azure-pipelines/templates/steps/tox-steps.yml b/.azure-pipelines/templates/steps/tox-steps.yml index 156bbeaa2..2466cce58 100644 --- a/.azure-pipelines/templates/steps/tox-steps.yml +++ b/.azure-pipelines/templates/steps/tox-steps.yml @@ -20,7 +20,7 @@ steps: set -e sudo apt-get update sudo apt-get install -y --no-install-recommends \ - libaugeas0 \ + libaugeas-dev \ nginx-light sudo systemctl stop nginx sudo sysctl net.ipv4.ip_unprivileged_port_start=0 diff --git a/certbot-compatibility-test/Dockerfile b/certbot-compatibility-test/Dockerfile index d5e92bb0a..b9310fe89 100644 --- a/certbot-compatibility-test/Dockerfile +++ b/certbot-compatibility-test/Dockerfile @@ -4,7 +4,7 @@ LABEL org.opencontainers.image.authors="certbot-dev@eff.org" # This does not include the dependencies needed to build cryptography. See # https://cryptography.io/en/latest/installation/#building-cryptography-on-linux RUN apt-get update && \ - apt install python3-venv libaugeas0 -y + apt install python3-venv libaugeas-dev -y WORKDIR /opt/certbot/src diff --git a/certbot/docs/contributing.rst b/certbot/docs/contributing.rst index 5bace3602..3c116638b 100644 --- a/certbot/docs/contributing.rst +++ b/certbot/docs/contributing.rst @@ -44,11 +44,11 @@ Install and configure the OS system dependencies required to run Certbot. # For APT-based distributions (e.g. Debian, Ubuntu ...) sudo apt update - sudo apt install python3-venv libaugeas0 + sudo apt install python3-venv libaugeas-dev # For RPM-based distributions (e.g. Fedora, CentOS ...) # NB1: old distributions will use yum instead of dnf # NB2: RHEL-based distributions use python3X instead of python3 (e.g. python38) - sudo dnf install python3 augeas-libs + sudo dnf install python3 augeas-devel # For macOS installations with Homebrew already installed and configured # NB1: If you also run `brew install python` you don't need the ~/lib # directory created below, however, without this directory and symlinks diff --git a/letstest/scripts/bootstrap_os_packages.sh b/letstest/scripts/bootstrap_os_packages.sh index 84cd2df30..6dba40799 100755 --- a/letstest/scripts/bootstrap_os_packages.sh +++ b/letstest/scripts/bootstrap_os_packages.sh @@ -17,12 +17,15 @@ if [ -f /etc/debian_version ]; then PYENV_DEPS="make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \ wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev \ liblzma-dev git" - ALL_DEPS="libaugeas0 $PYENV_DEPS" + ALL_DEPS="libaugeas-dev $PYENV_DEPS" sudo DEBIAN_FRONTEND=noninteractive apt-get install -y $ALL_DEPS elif [ -f /etc/redhat-release ]; then + # the "codeready builder" repository must be enabled to install the + # augeas-devel package needed to compile newer versions of python-augeas + sudo yum config-manager --set-enabled crb PYENV_DEPS="gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel \ tk-devel libffi-devel xz-devel git" - ALL_DEPS="augeas-libs $PYENV_DEPS" + ALL_DEPS="augeas-devel $PYENV_DEPS" if yum list installed "httpd" >/dev/null 2>&1; then ALL_DEPS="mod_ssl $ALL_DEPS" diff --git a/letstest/targets/targets.yaml b/letstest/targets/targets.yaml index 13632bb2c..96f26adf1 100644 --- a/letstest/targets/targets.yaml +++ b/letstest/targets/targets.yaml @@ -6,25 +6,20 @@ targets: #----------------------------------------------------------------------------- # Ubuntu - # These AMI were found onhttps://cloud-images.ubuntu.com/locator/ec2/. - - ami: ami-0fc5d935ebf8bc3bc - name: ubuntu22.04 + # These AMI were found on https://cloud-images.ubuntu.com/locator/ec2/. + - ami: ami-045a47a3b15302634 + name: ubuntu24.04 type: ubuntu virt: hvm user: ubuntu - - ami: ami-0fe0238291c8e3f07 - name: ubuntu20.04 + - ami: ami-0fc5d935ebf8bc3bc + name: ubuntu22.04 type: ubuntu virt: hvm user: ubuntu #----------------------------------------------------------------------------- # Debian # These AMI were found on https://wiki.debian.org/Cloud/AmazonEC2Image. - - ami: ami-0c20d96b50ac700e3 - name: debian11 - type: ubuntu - virt: hvm - user: admin - ami: ami-0f238cd7c96d866ad name: debian12 type: ubuntu diff --git a/tools/requirements.txt b/tools/requirements.txt index 6c228184f..ce79fd33f 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -12,21 +12,21 @@ apacheconfig==0.3.2 ; python_full_version >= "3.9.2" and python_version < "4.0" astroid==3.3.9 ; python_full_version >= "3.9.2" and python_version < "4.0" asttokens==3.0.0 ; python_full_version >= "3.9.2" and python_version < "4.0" attrs==25.3.0 ; python_full_version >= "3.9.2" and python_version < "4.0" -azure-core==1.33.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +azure-core==1.34.0 ; python_full_version >= "3.9.2" and python_version < "4.0" azure-devops==7.1.0b4 ; python_full_version >= "3.9.2" and python_version < "4.0" babel==2.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" backports-tarfile==1.2.0 ; python_full_version >= "3.9.2" and python_version < "3.12" bcrypt==4.3.0 ; python_full_version >= "3.9.2" and python_version < "4.0" beautifulsoup4==4.13.4 ; python_full_version >= "3.9.2" and python_version < "4.0" -boto3==1.38.6 ; python_full_version >= "3.9.2" and python_version < "4.0" -botocore==1.38.6 ; python_full_version >= "3.9.2" and python_version < "4.0" +boto3==1.38.11 ; python_full_version >= "3.9.2" and python_version < "4.0" +botocore==1.38.11 ; python_full_version >= "3.9.2" and python_version < "4.0" build==1.2.2.post1 ; python_full_version >= "3.9.2" and python_version < "4.0" cachecontrol==0.14.3 ; python_full_version >= "3.9.2" and python_version < "4.0" cachetools==5.5.2 ; python_full_version >= "3.9.2" and python_version < "4.0" certifi==2025.4.26 ; python_full_version >= "3.9.2" and python_version < "4.0" cffi==1.17.1 ; python_full_version >= "3.9.2" and python_version < "4.0" chardet==5.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" -charset-normalizer==3.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +charset-normalizer==3.4.2 ; python_full_version >= "3.9.2" and python_version < "4.0" cleo==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" cloudflare==2.19.4 ; python_full_version >= "3.9.2" and python_version < "4.0" colorama==0.4.6 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -34,7 +34,7 @@ configargparse==1.7 ; python_full_version >= "3.9.2" and python_version < "4.0" configobj==5.0.9 ; python_full_version >= "3.9.2" and python_version < "4.0" coverage==7.8.0 ; python_full_version >= "3.9.2" and python_version < "4.0" crashtest==0.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" -cryptography==44.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +cryptography==44.0.3 ; python_full_version >= "3.9.2" and python_version < "4.0" cython==0.29.37 ; python_full_version >= "3.9.2" and python_version < "4.0" decorator==5.2.1 ; python_full_version >= "3.9.2" and python_version < "4.0" deprecated==1.2.18 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -55,7 +55,7 @@ findpython==0.6.3 ; python_full_version >= "3.9.2" and python_version < "4.0" google-api-core==2.24.2 ; python_full_version >= "3.9.2" and python_version < "4.0" google-api-python-client==2.169.0 ; python_full_version >= "3.9.2" and python_version < "4.0" google-auth-httplib2==0.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" -google-auth==2.39.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +google-auth==2.40.1 ; python_full_version >= "3.9.2" and python_version < "4.0" googleapis-common-protos==1.70.0 ; python_full_version >= "3.9.2" and python_version < "4.0" h11==0.16.0 ; python_full_version >= "3.9.2" and python_version < "4.0" httpcore==1.0.9 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -64,7 +64,8 @@ httpx==0.28.1 ; python_full_version >= "3.9.2" and python_version < "4.0" id==1.5.0 ; python_full_version >= "3.9.2" and python_version < "4.0" idna==3.10 ; python_full_version >= "3.9.2" and python_version < "4.0" imagesize==1.4.1 ; python_full_version >= "3.9.2" and python_version < "4.0" -importlib-metadata==8.7.0 ; python_full_version >= "3.9.2" and python_version < "3.12" +importlib-metadata==8.6.1 ; python_full_version >= "3.9.2" and python_version < "3.10" +importlib-metadata==8.7.0 ; python_version >= "3.10" and python_version < "3.12" iniconfig==2.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" installer==0.7.0 ; python_full_version >= "3.9.2" and python_version < "4.0" invoke==2.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -104,14 +105,14 @@ parsedatetime==2.6 ; python_full_version >= "3.9.2" and python_version < "4.0" parso==0.8.4 ; python_full_version >= "3.9.2" and python_version < "4.0" pbs-installer==2025.4.9 ; python_full_version >= "3.9.2" and python_version < "4.0" pexpect==4.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" and (sys_platform != "win32" and sys_platform != "emscripten" or python_version < "3.10") and sys_platform != "win32" -pip==25.1 ; python_full_version >= "3.9.2" and python_version < "4.0" +pip==25.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" pkginfo==1.12.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" -platformdirs==4.3.7 ; python_full_version >= "3.9.2" and python_version < "4.0" +platformdirs==4.3.8 ; python_full_version >= "3.9.2" and python_version < "4.0" pluggy==1.5.0 ; python_full_version >= "3.9.2" and python_version < "4.0" ply==3.11 ; python_full_version >= "3.9.2" and python_version < "4.0" -poetry-core==2.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +poetry-core==2.1.3 ; python_full_version >= "3.9.2" and python_version < "4.0" poetry-plugin-export==1.9.0 ; python_full_version >= "3.9.2" and python_version < "4.0" -poetry==2.1.2 ; python_full_version >= "3.9.2" and python_version < "4.0" +poetry==2.1.3 ; python_full_version >= "3.9.2" and python_version < "4.0" prompt-toolkit==3.0.51 ; python_full_version >= "3.9.2" and python_version < "4.0" proto-plus==1.26.1 ; python_full_version >= "3.9.2" and python_version < "4.0" protobuf==6.30.2 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -132,7 +133,7 @@ pyrfc3339==2.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" pytest-cov==6.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" pytest-xdist==3.6.1 ; python_full_version >= "3.9.2" and python_version < "4.0" pytest==8.3.5 ; python_full_version >= "3.9.2" and python_version < "4.0" -python-augeas==1.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +python-augeas==1.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" python-dateutil==2.9.0.post0 ; python_full_version >= "3.9.2" and python_version < "4.0" python-digitalocean==1.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" pytz==2025.2 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -153,11 +154,11 @@ s3transfer==0.12.0 ; python_full_version >= "3.9.2" and python_version < "4.0" secretstorage==3.3.3 ; python_full_version >= "3.9.2" and python_version < "4.0" and sys_platform == "linux" semantic-version==2.10.0 ; python_full_version >= "3.9.2" and python_version < "4.0" setuptools-rust==1.11.1 ; python_full_version >= "3.9.2" and python_version < "4.0" -setuptools==80.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +setuptools==80.3.1 ; python_full_version >= "3.9.2" and python_version < "4.0" shellingham==1.5.4 ; python_full_version >= "3.9.2" and python_version < "4.0" six==1.17.0 ; python_full_version >= "3.9.2" and python_version < "4.0" sniffio==1.3.1 ; python_full_version >= "3.9.2" and python_version < "4.0" -snowballstemmer==2.2.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +snowballstemmer==3.0.0.1 ; python_full_version >= "3.9.2" and python_version < "4.0" soupsieve==2.7 ; python_full_version >= "3.9.2" and python_version < "4.0" sphinx-rtd-theme==3.0.2 ; python_full_version >= "3.9.2" and python_version < "4.0" sphinx==7.4.7 ; python_full_version >= "3.9.2" and python_version < "3.10" @@ -176,7 +177,7 @@ tomli==2.2.1 ; python_full_version >= "3.9.2" and python_version <= "3.10" tomlkit==0.13.2 ; python_full_version >= "3.9.2" and python_version < "4.0" tox==4.25.0 ; python_full_version >= "3.9.2" and python_version < "4.0" traitlets==5.14.3 ; python_full_version >= "3.9.2" and python_version < "4.0" -trove-classifiers==2025.5.1.12 ; python_full_version >= "3.9.2" and python_version < "4.0" +trove-classifiers==2025.5.8.15 ; python_full_version >= "3.9.2" and python_version < "4.0" twine==6.1.0 ; python_full_version >= "3.9.2" and python_version < "4.0" types-httplib2==0.22.0.20250401 ; python_full_version >= "3.9.2" and python_version < "4.0" types-pyrfc3339==2.0.1.20241107 ; python_full_version >= "3.9.2" and python_version < "4.0" @@ -185,13 +186,13 @@ types-pytz==2025.2.0.20250326 ; python_full_version >= "3.9.2" and python_versio types-pywin32==310.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "4.0" types-requests==2.31.0.6 ; python_full_version >= "3.9.2" and python_version < "3.10" types-requests==2.32.0.20250328 ; python_version >= "3.10" and python_version < "4.0" -types-setuptools==80.0.0.20250429 ; python_full_version >= "3.9.2" and python_version < "4.0" +types-setuptools==80.3.0.20250505 ; python_full_version >= "3.9.2" and python_version < "4.0" types-urllib3==1.26.25.14 ; python_full_version >= "3.9.2" and python_version < "3.10" typing-extensions==4.13.2 ; python_full_version >= "3.9.2" and python_version < "4.0" uritemplate==4.1.1 ; python_full_version >= "3.9.2" and python_version < "4.0" urllib3==1.26.20 ; python_full_version >= "3.9.2" and python_version < "3.10" urllib3==2.4.0 ; python_version >= "3.10" and python_version < "4.0" -virtualenv==20.30.0 ; python_full_version >= "3.9.2" and python_version < "4.0" +virtualenv==20.31.2 ; python_full_version >= "3.9.2" and python_version < "4.0" wcwidth==0.2.13 ; python_full_version >= "3.9.2" and python_version < "4.0" wheel==0.45.1 ; python_full_version >= "3.9.2" and python_version < "4.0" wrapt==1.17.2 ; python_full_version >= "3.9.2" and python_version < "4.0"