Ability to use updater script to pin dev requirements (#14644)

* Add a dev option for updater script to pin CI reqs

* Avoid removing git links for dev requirements

* Add dev to primary options

* Fix up sanitize git switch
This commit is contained in:
Alan Rominger
2024-02-12 11:57:59 -05:00
committed by GitHub
parent 3ae72219b4
commit 4c41f6b018
2 changed files with 22 additions and 10 deletions

View File

@@ -10,7 +10,6 @@ black
pytest!=7.0.0 pytest!=7.0.0
pytest-cov pytest-cov
pytest-django pytest-django
pytest-pythonpath
pytest-mock==1.11.1 pytest-mock==1.11.1
pytest-timeout pytest-timeout
pytest-xdist==1.34.0 # 2.0.0 broke zuul for some reason pytest-xdist==1.34.0 # 2.0.0 broke zuul for some reason

View File

@@ -4,7 +4,9 @@ set -ue
requirements_in="$(readlink -f ./requirements.in)" requirements_in="$(readlink -f ./requirements.in)"
requirements="$(readlink -f ./requirements.txt)" requirements="$(readlink -f ./requirements.txt)"
requirements_git="$(readlink -f ./requirements_git.txt)" requirements_git="$(readlink -f ./requirements_git.txt)"
requirements_dev="$(readlink -f ./requirements_dev.txt)"
pip_compile="pip-compile --no-header --quiet -r --allow-unsafe" pip_compile="pip-compile --no-header --quiet -r --allow-unsafe"
sanitize_git="1"
_cleanup() { _cleanup() {
cd / cd /
@@ -21,18 +23,22 @@ generate_requirements() {
# FIXME: https://github.com/jazzband/pip-tools/issues/1558 # FIXME: https://github.com/jazzband/pip-tools/issues/1558
${venv}/bin/python3 -m pip install -U 'pip<22.0' pip-tools ${venv}/bin/python3 -m pip install -U 'pip<22.0' pip-tools
${pip_compile} "${requirements_in}" "${requirements_git}" --output-file requirements.txt ${pip_compile} "$1" --output-file requirements.txt
# consider the git requirements for purposes of resolving deps # consider the git requirements for purposes of resolving deps
# Then remove any git+ lines from requirements.txt # Then remove any git+ lines from requirements.txt
while IFS= read -r line; do if [[ "$sanitize_git" == "1" ]] ; then
if [[ $line != \#* ]]; then # ignore comments while IFS= read -r line; do
sed -i "\!${line%#*}!d" requirements.txt if [[ $line != \#* ]]; then # ignore comments
fi sed -i "\!${line%#*}!d" requirements.txt
done < "${requirements_git}" fi
done < "${requirements_git}"
fi;
} }
main() { main() {
base_dir=$(pwd) base_dir=$(pwd)
dest_requirements="${requirements}"
input_requirements="${requirements_in} ${requirements_git}"
_tmp=$(python -c "import tempfile; print(tempfile.mkdtemp(suffix='.awx-requirements', dir='/tmp'))") _tmp=$(python -c "import tempfile; print(tempfile.mkdtemp(suffix='.awx-requirements', dir='/tmp'))")
@@ -42,6 +48,12 @@ main() {
"run") "run")
NEEDS_HELP=0 NEEDS_HELP=0
;; ;;
"dev")
dest_requirements="${requirements_dev}"
input_requirements="${requirements_dev}"
sanitize_git=0
NEEDS_HELP=0
;;
"upgrade") "upgrade")
NEEDS_HELP=0 NEEDS_HELP=0
pip_compile="${pip_compile} --upgrade" pip_compile="${pip_compile} --upgrade"
@@ -61,12 +73,13 @@ main() {
echo "This script generates requirements.txt from requirements.in and requirements_git.in" echo "This script generates requirements.txt from requirements.in and requirements_git.in"
echo "It should be run from within the awx container" echo "It should be run from within the awx container"
echo "" echo ""
echo "Usage: $0 [run|upgrade]" echo "Usage: $0 [run|upgrade|dev]"
echo "" echo ""
echo "Commands:" echo "Commands:"
echo "help Print this message" echo "help Print this message"
echo "run Run the process only upgrading pinned libraries from requirements.in" echo "run Run the process only upgrading pinned libraries from requirements.in"
echo "upgrade Upgrade all libraries to latest while respecting pinnings" echo "upgrade Upgrade all libraries to latest while respecting pinnings"
echo "dev Pin the development requirements file"
echo "" echo ""
exit exit
fi fi
@@ -85,10 +98,10 @@ main() {
cp -vf requirements.txt "${_tmp}" cp -vf requirements.txt "${_tmp}"
cd "${_tmp}" cd "${_tmp}"
generate_requirements generate_requirements "${input_requirements}"
echo "Changing $base_dir to /awx_devel/requirements" echo "Changing $base_dir to /awx_devel/requirements"
cat requirements.txt | sed "s:$base_dir:/awx_devel/requirements:" > "${requirements}" cat requirements.txt | sed "s:$base_dir:/awx_devel/requirements:" > "${dest_requirements}"
_cleanup _cleanup
} }