Use "pip list" in check_libs_from_git

As described in the change, "pip freeze" has issues with the way
zuulv3 clones repos without a remote.  This is an attempt to use "pip
list" to check for local install

Change-Id: I33d25f86b6afcadb4b190a0f6c53311111c64521
(cherry picked from commit ae9c6ab759)
(cherry picked from commit 4358418d7d)
(cherry picked from commit 8cb43d098c)
This commit is contained in:
Ian Wienand 2017-09-29 10:16:47 +10:00 committed by Matt Riedemann
parent d577fd5bd5
commit 386aefe441
1 changed files with 14 additions and 1 deletions

View File

@ -203,7 +203,20 @@ function use_library_from_git {
# determine if a package was installed from git
function lib_installed_from_git {
local name=$1
pip freeze 2>/dev/null | grep -- "$name" | grep -q -- '-e git'
# Note "pip freeze" doesn't always work here, because it tries to
# be smart about finding the remote of the git repo the package
# was installed from. This doesn't work with zuul which clones
# repos with no remote.
#
# The best option seems to be to use "pip list" which will tell
# you the path an editable install was installed from; for example
# in response to something like
# pip install -e 'git+http://git.openstack.org/openstack-dev/bashate#egg=bashate'
# pip list shows
# bashate (0.5.2.dev19, /tmp/env/src/bashate)
# Thus we look for "path after a comma" to indicate we were
# installed from some local place
pip list 2>/dev/null | grep -- "$name" | grep -q -- ', .*)$'
}
# check that everything that's in LIBS_FROM_GIT was actually installed