diff --git a/tools/pinning/common/export-pinned-dependencies.sh b/tools/pinning/common/export-pinned-dependencies.sh index e1c93b0dc..06f1da8a1 100755 --- a/tools/pinning/common/export-pinned-dependencies.sh +++ b/tools/pinning/common/export-pinned-dependencies.sh @@ -13,7 +13,7 @@ set -euo pipefail # If this script wasn't given a command line argument, print usage and exit. if [ -z ${1+x} ]; then echo "Usage:" >&2 - echo "$0 PYPROJECT_TOML_DIRECTORY" >&2 + echo "$0 PYPROJECT_TOML_DIRECTORY [POETRY_ARGS]" >&2 exit 1 fi @@ -37,10 +37,14 @@ if [ -f poetry.lock ]; then rm poetry.lock fi +echo "If this takes more than a few minutes, you can try running this script again" >&2 +echo "with arguments for poetry like -vvv on the command line to help see where" >&2 +echo "poetry is getting stuck." >&2 +extra_args="${*:2}" # If you're running this with different Python versions (say to update both our # "current" and "oldest" pinnings), poetry's cache can become corrupted causing # poetry to hang indefinitely. --no-cache avoids this. -poetry lock --no-cache >&2 +poetry lock --no-cache ${extra_args:+"$extra_args"} >&2 trap 'rm poetry.lock' EXIT # We need to remove local packages from the output. diff --git a/tools/pinning/current/repin.sh b/tools/pinning/current/repin.sh index c8ec8e87f..533604019 100755 --- a/tools/pinning/current/repin.sh +++ b/tools/pinning/current/repin.sh @@ -1,6 +1,7 @@ #!/bin/bash -# This script accepts no arguments and automates the process of updating -# Certbot's dependencies including automatically updating the correct file. +# This script automates the process of updating Certbot's dependencies +# including automatically updating the correct file. It is usually run without +# any arguments, but if any are provided, they will be passed to Poetry. # Dependencies can be pinned to older versions by modifying pyproject.toml in # the same directory as this file. set -euo pipefail @@ -11,7 +12,7 @@ REPO_ROOT="$(git rev-parse --show-toplevel)" RELATIVE_SCRIPT_PATH="$(realpath --relative-to "$REPO_ROOT" "$WORK_DIR")/$(basename "${BASH_SOURCE[0]}")" REQUIREMENTS_FILE="$REPO_ROOT/tools/requirements.txt" -PINNINGS=$("${COMMON_DIR}/export-pinned-dependencies.sh" "${WORK_DIR}") +PINNINGS=$("${COMMON_DIR}/export-pinned-dependencies.sh" "${WORK_DIR}" "$@") cat << EOF > "$REQUIREMENTS_FILE" # This file was generated by $RELATIVE_SCRIPT_PATH and can be updated using # that script. diff --git a/tools/pinning/oldest/repin.sh b/tools/pinning/oldest/repin.sh index e2b685a22..4bfe0831a 100755 --- a/tools/pinning/oldest/repin.sh +++ b/tools/pinning/oldest/repin.sh @@ -1,6 +1,7 @@ #!/bin/bash -# This script accepts no arguments and automates the process of updating -# Certbot's dependencies including automatically updating the correct file. +# This script automates the process of updating Certbot's dependencies +# including automatically updating the correct file. It is usually run without +# any arguments, but if any are provided, they will be passed to Poetry. # Dependencies can be pinned to older versions by modifying pyproject.toml in # the same directory as this file. set -euo pipefail @@ -11,7 +12,7 @@ REPO_ROOT="$(git rev-parse --show-toplevel)" RELATIVE_SCRIPT_PATH="$(realpath --relative-to "$REPO_ROOT" "$WORK_DIR")/$(basename "${BASH_SOURCE[0]}")" CONSTRAINTS_FILE="$REPO_ROOT/tools/oldest_constraints.txt" -PINNINGS=$("${COMMON_DIR}/export-pinned-dependencies.sh" "${WORK_DIR}") +PINNINGS=$("${COMMON_DIR}/export-pinned-dependencies.sh" "${WORK_DIR}" "$@") cat << EOF > "$CONSTRAINTS_FILE" # This file was generated by $RELATIVE_SCRIPT_PATH and can be updated using # that script.