Skip to content

Commit 310f89e

Browse files
ewdurbinmiketheman
andauthored
Dependency stuff (#17588)
* do not '--upgrade' in for deps checking when un-merged releases add transitive dependencies, this check begins failing until that release is merged and the branch rebased over it. by skipping --upgrade, we align this check to simply ensuring that the compiled .txt files match what we expect for our specified dependencies. * add/document helpers for manual dependency upgrades * Update docs/dev/development/patterns.rst Co-authored-by: Mike Fiedler <[email protected]> --------- Co-authored-by: Mike Fiedler <[email protected]>
1 parent ecc145d commit 310f89e

File tree

4 files changed

+88
-8
lines changed

4 files changed

+88
-8
lines changed

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ licenses: .state/docker-build-base
114114
deps: .state/docker-build-base
115115
docker compose run --rm base bin/deps
116116

117+
deps_upgrade_all: .state/docker-build-base
118+
docker compose run --rm base bin/deps-upgrade -a
119+
120+
deps_upgrade_project: .state/docker-build-base
121+
docker compose run --rm base bin/deps-upgrade -p $(P)
122+
117123
translations: .state/docker-build-base
118124
docker compose run --rm base bin/translations
119125

@@ -181,4 +187,4 @@ purge: stop clean
181187
stop:
182188
docker compose stop
183189

184-
.PHONY: default build serve resetdb initdb shell dbshell tests dev-docs user-docs deps clean purge debug stop compile-pot runmigrations checkdb
190+
.PHONY: default build serve resetdb initdb shell dbshell tests dev-docs user-docs deps deps_upgrade_all deps_upgrade_project clean purge debug stop compile-pot runmigrations checkdb

bin/deps

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ set -ex
33

44
export TMPDIR=$(mktemp -d)
55
mkdir -p $TMPDIR/docs
6-
pip-compile --upgrade -o $TMPDIR/deploy.txt requirements/deploy.in > /dev/null
7-
pip-compile --upgrade -o $TMPDIR/main.txt requirements/main.in > /dev/null
8-
pip-compile --upgrade -o $TMPDIR/lint.txt requirements/lint.in > /dev/null
9-
pip-compile --upgrade -o $TMPDIR/tests.txt requirements/tests.in > /dev/null
10-
pip-compile --upgrade -o $TMPDIR/docs-dev.txt requirements/docs-dev.in > /dev/null
11-
pip-compile --upgrade -o $TMPDIR/docs-user.txt requirements/docs-user.in > /dev/null
12-
pip-compile --upgrade -o $TMPDIR/docs-blog.txt requirements/docs-blog.in > /dev/null
6+
pip-compile -o $TMPDIR/deploy.txt requirements/deploy.in > /dev/null
7+
pip-compile -o $TMPDIR/main.txt requirements/main.in > /dev/null
8+
pip-compile -o $TMPDIR/lint.txt requirements/lint.in > /dev/null
9+
pip-compile -o $TMPDIR/tests.txt requirements/tests.in > /dev/null
10+
pip-compile -o $TMPDIR/docs-dev.txt requirements/docs-dev.in > /dev/null
11+
pip-compile -o $TMPDIR/docs-user.txt requirements/docs-user.in > /dev/null
12+
pip-compile -o $TMPDIR/docs-blog.txt requirements/docs-blog.in > /dev/null
1313
python bin/depchecker.py $TMPDIR/deploy.txt requirements/deploy.txt
1414
python bin/depchecker.py $TMPDIR/main.txt requirements/main.txt
1515
python bin/depchecker.py $TMPDIR/lint.txt requirements/lint.txt

bin/deps-upgrade

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/bin/bash
2+
3+
usage() {
4+
echo "Usage: $0 [OPTIONS]"
5+
echo "Options:"
6+
echo " -h, --help Display this help message"
7+
echo " -a, --all Upgrade all dependencies"
8+
echo " -p, --package PACKAGE_NAME Upgrade a specific package"
9+
}
10+
11+
has_argument() {
12+
[[ ("$1" == *=* && -n ${1#*=}) || ( ! -z "$2" && "$2" != -*) ]];
13+
}
14+
15+
extract_argument() {
16+
echo "${2:-${1#*=}}"
17+
}
18+
19+
pip_compile_args=""
20+
21+
handle_options() {
22+
while [ $# -gt 0 ]; do
23+
case $1 in
24+
-h | --help)
25+
usage
26+
exit 0
27+
;;
28+
-a | --all)
29+
pip_compile_args="--upgrade"
30+
;;
31+
-p | --package*)
32+
if ! has_argument $@; then
33+
echo "Project name not specified." >&2
34+
usage
35+
exit 1
36+
fi
37+
38+
pip_compile_args="--upgrade-package $(extract_argument $@)"
39+
40+
shift
41+
;;
42+
*)
43+
echo "Invalid option: $1" >&2
44+
usage
45+
exit 1
46+
;;
47+
esac
48+
shift
49+
done
50+
}
51+
52+
# Main script execution
53+
handle_options "$@"
54+
55+
set -ex
56+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/deploy.txt requirements/deploy.in
57+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/main.txt requirements/main.in
58+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/lint.txt requirements/lint.in
59+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/tests.txt requirements/tests.in
60+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/docs-dev.txt requirements/docs-dev.in
61+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/docs-user.txt requirements/docs-user.in
62+
pip-compile --allow-unsafe --generate-hashes $pip_compile_args --output-file=requirements/docs-blog.txt requirements/docs-blog.in

docs/dev/development/patterns.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@ Upgrading existing dependencies
2222
Dependencies are automatically upgraded via `Dependabot pull requests`_, and
2323
occasionally merged by maintainers.
2424

25+
You can manually upgrade a specific dependency with::
26+
27+
make deps_upgrade_project P={project_name}
28+
29+
For instance, to upgrade boto3::
30+
31+
make deps_upgrade_project P=boto3
32+
33+
To upgrade all dependencies, you can use::
34+
35+
make deps_upgrade_all
36+
2537
Adding new dependencies
2638
~~~~~~~~~~~~~~~~~~~~~~~
2739

0 commit comments

Comments
 (0)