Merge "allow for soft updating of global-requirements"

This commit is contained in:
Jenkins 2014-10-29 19:08:03 +00:00 committed by Gerrit Code Review
commit 483940350e
2 changed files with 34 additions and 2 deletions

View File

@ -1645,6 +1645,16 @@ function setup_develop {
setup_package_with_req_sync $project_dir -e setup_package_with_req_sync $project_dir -e
} }
# determine if a project as specified by directory is in
# projects.txt. This will not be an exact match because we throw away
# the namespacing when we clone, but it should be good enough in all
# practical ways.
function is_in_projects_txt {
local project_dir=$1
local project_name=$(basename $project_dir)
return grep "/$project_name\$" $REQUIREMENTS_DIR/projects.txt >/dev/null
}
# ``pip install -e`` the package, which processes the dependencies # ``pip install -e`` the package, which processes the dependencies
# using pip before running `setup.py develop` # using pip before running `setup.py develop`
# #
@ -1663,8 +1673,19 @@ function setup_package_with_req_sync {
local update_requirements=$(cd $project_dir && git diff --exit-code >/dev/null || echo "changed") local update_requirements=$(cd $project_dir && git diff --exit-code >/dev/null || echo "changed")
if [[ $update_requirements != "changed" ]]; then if [[ $update_requirements != "changed" ]]; then
(cd $REQUIREMENTS_DIR; \ if [[ "$REQUIREMENTS_MODE" == "soft" ]]; then
python update.py $project_dir) if is_in_projects_txt $project_dir; then
(cd $REQUIREMENTS_DIR; \
python update.py $project_dir)
else
# soft update projects not found in requirements project.txt
(cd $REQUIREMENTS_DIR; \
python update.py -s $project_dir)
fi
else
(cd $REQUIREMENTS_DIR; \
python update.py $project_dir)
fi
fi fi
setup_package $project_dir $flags setup_package $project_dir $flags

11
stackrc
View File

@ -116,6 +116,17 @@ DATABASE_QUERY_LOGGING=$(trueorfalse True $DATABASE_QUERY_LOGGING)
# Zero disables timeouts # Zero disables timeouts
GIT_TIMEOUT=${GIT_TIMEOUT:-0} GIT_TIMEOUT=${GIT_TIMEOUT:-0}
# Requirements enforcing mode
#
# - strict (default) : ensure all project requirements files match
# what's in global requirements.
#
# - soft : enforce requirements on everything in
# requirements/projects.txt, but do soft updates on all other
# repositories (i.e. sync versions for requirements that are in g-r,
# but pass through any extras)
REQUIREMENTS_MODE=${REQUIREMENTS_MODE:-strict}
# Repositories # Repositories
# ------------ # ------------