Reduce command duplications

This commit is contained in:
Nicola Soranzo
2025-10-29 18:45:25 +00:00
parent c68f850da6
commit ae62f129c6
4 changed files with 61 additions and 71 deletions
@@ -8,22 +8,26 @@ set -e
THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)"
if command -v uv >/dev/null; then
VENV_CMD="$(command -v uv) venv --python python3.9"
PIP_CMD="$(command -v uv) pip"
FREEZE_OPTIONS=''
else
VENV_CMD='python3.9 -m venv'
PIP_CMD='python -m pip'
FREEZE_OPTIONS='-l'
fi
update_pinned_reqs() {
VENV=$(mktemp -d "${TMPDIR:-/tmp}/$1_venv.XXXXXXXXXX")
if command -v uv >/dev/null; then
uv self update
uv venv "${VENV}" --python python3.9
. "${VENV}/bin/activate"
uv pip install -r "${THIS_DIRECTORY}/$1-requirements.txt"
uv pip freeze | grep -v 'pkg_resources==0.0.0' > "${THIS_DIRECTORY}/pinned-$1-requirements.txt"
else
python3.9 -m venv "${VENV}"
. "${VENV}/bin/activate"
pip install --upgrade pip setuptools
pip install -r "${THIS_DIRECTORY}/$1-requirements.txt"
# The grep below is needed to workaround https://github.com/pypa/pip/issues/8331
pip freeze -l | grep -v 'pkg_resources==0.0.0' > "${THIS_DIRECTORY}/pinned-$1-requirements.txt"
${VENV_CMD} "${VENV}"
. "${VENV}/bin/activate"
if [ "${PIP_CMD}" = 'python -m pip' ]; then
${PIP_CMD} install --upgrade pip setuptools
fi
${PIP_CMD} install -r "${THIS_DIRECTORY}/$1-requirements.txt"
# The grep below is needed to workaround https://github.com/pypa/pip/issues/8331
${PIP_CMD} freeze ${FREEZE_OPTIONS} | grep -v 'pkg_resources==0.0.0' > "${THIS_DIRECTORY}/pinned-$1-requirements.txt"
rm -rf "${VENV}"
}
+13 -22
View File
@@ -16,6 +16,14 @@ EDITABLE=false
META=false
WHEELHOUSE=
if command -v uv >/dev/null; then
VENV_CMD="$(command -v uv) venv"
PIP_CMD="$(command -v uv) pip"
else
VENV_CMD='python3 -m venv'
PIP_CMD='pip'
fi
# Prevent making a venv for build deps for each package, Used inside the package dir, so refers to
# <source_root>/packages/.venv
: ${VENV=../.venv}
@@ -65,28 +73,15 @@ while read package; do
printf "\n========= PACKAGE %s =========\n\n" "$package"
pushd $package
if $EDITABLE; then
if command -v uv >/dev/null; then
uv pip install -e .
else
pip install -e .
fi
${PIP_CMD} install -e .
else
if [ ! -d "$VENV" ]; then
if command -v uv >/dev/null; then
uv venv "$VENV"
VIRTUAL_ENV="${VENV}" uv pip install -r dev-requirements.txt
else
python3 -m venv "$VENV"
"${VENV}/bin/pip" install -r dev-requirements.txt
fi
${VENV_CMD} "$VENV"
VIRTUAL_ENV="${VENV}" ${PIP_CMD} install -r dev-requirements.txt
fi
make dist
if $INSTALL && ! $META; then
if command -v uv >/dev/null; then
uv pip install dist/*.whl
else
pip install dist/*.whl
fi
${PIP_CMD} install dist/*.whl
fi
fi
popd
@@ -96,9 +91,5 @@ done < "$PACKAGE_LIST_FILE"
if $INSTALL && $META && ! $EDITABLE; then
WHEELHOUSE=$(mktemp -d -t gxpkgwheelhouseXXXXXX)
cp */dist/*.whl "$WHEELHOUSE"
if command -v uv >/dev/null; then
uv pip install $PIP_EXTRA_ARGS --find-links "$WHEELHOUSE" meta/dist/*.whl
else
pip install $PIP_EXTRA_ARGS --find-links "$WHEELHOUSE" meta/dist/*.whl
fi
${PIP_CMD} install $PIP_EXTRA_ARGS --find-links "$WHEELHOUSE" meta/dist/*.whl
fi
+10 -10
View File
@@ -37,20 +37,20 @@ TEST_PYTHON=${TEST_PYTHON:-"python3"}
TEST_ENV_DIR=${TEST_ENV_DIR:-$(mktemp -d -t gxpkgtestenvXXXXXX)}
if command -v uv >/dev/null; then
uv venv "$TEST_ENV_DIR" --python "$TEST_PYTHON"
PIP="$(command -v uv) pip"
uv venv --python "$TEST_PYTHON" "$TEST_ENV_DIR"
PIP_CMD="$(command -v uv) pip"
else
"$TEST_PYTHON" -m venv "$TEST_ENV_DIR"
PIP="pip"
PIP_CMD='python -m pip'
fi
# shellcheck disable=SC1091
. "${TEST_ENV_DIR}/bin/activate"
if ! command -v uv >/dev/null; then
pip install --upgrade pip setuptools wheel
if [ "${PIP_CMD}" = 'python -m pip' ]; then
${PIP_CMD} install --upgrade pip setuptools wheel
fi
if [ $FOR_PULSAR -eq 0 ]; then
${PIP} install -r ../lib/galaxy/dependencies/pinned-typecheck-requirements.txt
${PIP_CMD} install -r ../lib/galaxy/dependencies/pinned-typecheck-requirements.txt
fi
# Ensure ordered by dependency DAG
@@ -74,13 +74,13 @@ while read -r package_dir || [ -n "$package_dir" ]; do # https://stackoverflow.
# Install extras (if needed)
if [ "$package_dir" = "util" ]; then
${PIP} install '.[image-util,template,jstree,config-template,test]'
${PIP_CMD} install '.[image-util,template,jstree,config-template,test]'
elif [ "$package_dir" = "tool_util" ]; then
${PIP} install '.[cwl,mulled,edam,extended-assertions,test]'
${PIP_CMD} install '.[cwl,mulled,edam,extended-assertions,test]'
elif grep -q 'test =' setup.cfg 2>/dev/null; then
${PIP} install '.[test]'
${PIP_CMD} install '.[test]'
else
${PIP} install .
${PIP_CMD} install .
fi
if [ $FOR_PULSAR -eq 0 ]; then
+21 -26
View File
@@ -133,7 +133,7 @@ if [ $SET_VENV -eq 1 ] && [ $CREATE_VENV -eq 1 ]; then
echo "To avoid this, use the --no-create-venv flag or set \$GALAXY_VIRTUAL_ENV to an"
echo "existing environment before starting Galaxy."
if command -v uv >/dev/null; then
uv venv "$GALAXY_VIRTUAL_ENV" --python "$GALAXY_PYTHON"
uv venv --python "$GALAXY_PYTHON" "$GALAXY_VIRTUAL_ENV"
else
# First try to use the venv standard library module, although it is
# not always installed by default on Linux distributions.
@@ -168,6 +168,14 @@ if [ $SET_VENV -eq 1 ] && [ $CREATE_VENV -eq 1 ]; then
fi
fi
if command -v uv >/dev/null; then
PIP_CMD="$(command -v uv) pip"
UNINSTALL_OPTIONS=''
else
PIP_CMD='python -m pip'
UNINSTALL_OPTIONS='--yes'
fi
# activate virtualenv or conda env, sets $GALAXY_VIRTUAL_ENV and $GALAXY_CONDA_ENV
setup_python
@@ -188,32 +196,19 @@ fi
[ "$CI" = 'true' ] && export PIP_PROGRESS_BAR=off
if [ $FETCH_WHEELS -eq 1 ]; then
if command -v uv >/dev/null; then
uv pip install $requirement_args --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
set_galaxy_config_file_var
GALAXY_CONDITIONAL_DEPENDENCIES=$(PYTHONPATH=lib python -c "from __future__ import print_function; import galaxy.dependencies; print('\n'.join(galaxy.dependencies.optional('$GALAXY_CONFIG_FILE')))")
if [ -n "$GALAXY_CONDITIONAL_DEPENDENCIES" ]; then
if uv pip list --format=columns | grep "psycopg2[\(\ ]*2.7.3" > /dev/null; then
echo "An older version of psycopg2 (non-binary, version 2.7.3) has been detected. Galaxy now uses psycopg2-binary, which will be installed after removing psycopg2."
uv pip uninstall psycopg2 psycopg2-binary
fi
echo "$GALAXY_CONDITIONAL_DEPENDENCIES" | uv pip install -r /dev/stdin --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
fi
else
python -m pip install "pip>=$MIN_PIP_VERSION" wheel
# shellcheck disable=SC2086
pip install $requirement_args --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
set_galaxy_config_file_var
GALAXY_CONDITIONAL_DEPENDENCIES=$(PYTHONPATH=lib python -c "from __future__ import print_function; import galaxy.dependencies; print('\n'.join(galaxy.dependencies.optional('$GALAXY_CONFIG_FILE')))")
if [ -n "$GALAXY_CONDITIONAL_DEPENDENCIES" ]; then
if pip list --format=columns | grep "psycopg2[\(\ ]*2.7.3" > /dev/null; then
echo "An older version of psycopg2 (non-binary, version 2.7.3) has been detected. Galaxy now uses psycopg2-binary, which will be installed after removing psycopg2."
pip uninstall -y psycopg2 psycopg2-binary
fi
echo "$GALAXY_CONDITIONAL_DEPENDENCIES" | pip install -r /dev/stdin --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
if [ "${PIP_CMD}" = 'python -m pip' ]; then
${PIP_CMD} install "pip>=${MIN_PIP_VERSION}" wheel
fi
# shellcheck disable=SC2086
${PIP_CMD} install $requirement_args --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
set_galaxy_config_file_var
GALAXY_CONDITIONAL_DEPENDENCIES=$(PYTHONPATH=lib python -c "from __future__ import print_function; import galaxy.dependencies; print('\n'.join(galaxy.dependencies.optional('$GALAXY_CONFIG_FILE')))")
if [ -n "$GALAXY_CONDITIONAL_DEPENDENCIES" ]; then
if ${PIP_CMD} list --format=columns | grep "psycopg2[\(\ ]*2.7.3" > /dev/null; then
echo "An older version of psycopg2 (non-binary, version 2.7.3) has been detected. Galaxy now uses psycopg2-binary, which will be installed after removing psycopg2."
${PIP_CMD} uninstall ${UNINSTALL_OPTIONS} psycopg2 psycopg2-binary
fi
echo "$GALAXY_CONDITIONAL_DEPENDENCIES" | ${PIP_CMD} install -r /dev/stdin --index-url "${GALAXY_WHEELS_INDEX_URL}" --extra-index-url "${PYPI_INDEX_URL}"
fi
fi