...
+ lib/keystone:install_keystone:500 : setup_develop /opt/stack/keystone
+ inc/python:setup_develop:351 : local bindep
+ inc/python:setup_develop:352 : [[ /opt/stack/keystone == -bindep* ]]
+ inc/python:setup_develop:356 : local project_dir=/opt/stack/keystone
+ inc/python:setup_develop:357 : local extras=
+ inc/python:setup_develop:358 : _setup_package_with_constraints_edit /opt/stack/keystone -e
+ inc/python:_setup_package_with_constraints_edit:377 : local bindep
+ inc/python:_setup_package_with_constraints_edit:378 : [[ /opt/stack/keystone == -bindep* ]]
+ inc/python:_setup_package_with_constraints_edit:382 : local project_dir=/opt/stack/keystone
+ inc/python:_setup_package_with_constraints_edit:383 : local flags=-e
+ inc/python:_setup_package_with_constraints_edit:384 : local extras=
++ inc/python:_setup_package_with_constraints_edit:391 : cd /opt/stack/keystone
++ inc/python:_setup_package_with_constraints_edit:391 : pwd
+ inc/python:_setup_package_with_constraints_edit:391 : project_dir=/opt/stack/keystone
+ inc/python:_setup_package_with_constraints_edit:393 : '[' -n /opt/stack/requirements ']'
+ inc/python:_setup_package_with_constraints_edit:395 : local name
++ inc/python:_setup_package_with_constraints_edit:396 : awk '/^name.*=/ {print $3}' /opt/stack/keystone/setup.cfg
+ inc/python:_setup_package_with_constraints_edit:396 : name=keystone
+ inc/python:_setup_package_with_constraints_edit:398 : /opt/stack/requirements/.venv/bin/edit-constraints /opt/stack/requirements/upper-constraints.txt -- keystone '-e file:///opt/stack/keystone#egg=keystone'
+ inc/python:_setup_package_with_constraints_edit:402 : setup_package /opt/stack/keystone -e
+ inc/python:setup_package:430 : local bindep=0
+ inc/python:setup_package:431 : local bindep_flag=
+ inc/python:setup_package:432 : local bindep_profiles=
+ inc/python:setup_package:433 : [[ /opt/stack/keystone == -bindep* ]]
+ inc/python:setup_package:438 : local project_dir=/opt/stack/keystone
+ inc/python:setup_package:439 : local flags=-e
+ inc/python:setup_package:440 : local extras=
+ inc/python:setup_package:444 : [[ -n -e ]]
+ inc/python:setup_package:444 : [[ -z '' ]]
+ inc/python:setup_package:444 : [[ ! -e =~ ^-.* ]]
+ inc/python:setup_package:449 : [[ ! -z '' ]]
+ inc/python:setup_package:454 : [[ 0 == 1 ]]
+ inc/python:setup_package:458 : pip_install -e /opt/stack/keystone
Using python 3.6 to install /opt/stack/keystone because python3_enabled=True
+ inc/python:pip_install:200 : sudo -H LC_ALL=en_US.UTF-8 SETUPTOOLS_USE_DISTUTILS=stdlib http_proxy= https_proxy= no_proxy= PIP_FIND_LINKS= SETUPTOOLS_SYS_PATH_TECHNIQUE=rewrite /usr/local/bin/pip3.6 install -c /opt/stack/requirements/upper-constraints.txt -e /opt/stack/keystone
WARNING: The directory '/home/semaphore/.pip_download_cache' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
DEPRECATION: Constraints are only allowed to take the form of a package name and a version specifier. Other forms were originally permitted as an accident of the implementation, but were undocumented. The new implementation of the resolver no longer supports these forms. A possible replacement is replacing the constraint with a requirement.. You can find discussion regarding this at
https://github.com/pypa/pip/issues/8210.
ERROR: Links are not allowed as constraints
As far as I can work out, it's because install_keystone edits /opt/stack/requirements/upper-constraints.txt so that the line for keystone has "-e file:///opt/stack/keystone#egg=keystone", and pip then complains that file:// constraints are not supported.
I'm sure there's a good reason but - as is often the case - I'm left wondering why this isn't broken for everyone!
Any clues or suggestions gratefully received.