Fix venv build error introduced in a822fc7

The recent patch merged [1] had two errors:

1) The 'requires_pip_packages' list was taken as part of the list
   of packages which should go into the venv. This should not be
   the case as these packages go on to the host.

2) When looping through each list set of packages for the role, each
   list in turn would replace the last - therefore only the last set
   would be built into the venv.

This patch ensures that the 'requires_pip_packages' list is ignored
(along with the optional and proprietary lists) and also ensures that
each list processed that should be included is properly merged into
a consolidated list before executing the build.

[1] https://review.openstack.org/360406

Change-Id: I35ca4305803d55fdad23039851a25915b2cf0100
This commit is contained in:
Jesse Pretorius 2016-08-26 10:31:53 +01:00
parent a822fc7366
commit 5a28792a98

View File

@ -49,13 +49,17 @@ function venv_create {
{% for role_name, role_data in local_packages.results.0.item.role_requirements.items() %}
{% set _host_group = role_data['project_group'] %}
{% if ("os_" in role_name) and ((not repo_build_venv_selective | bool) or ((groups[_host_group] is defined) and (groups[_host_group] | length > 0))) %}
{% set requirement_list = [] %}
{% for requirement_key, requirement_data in role_data.items() %}
{% if '_pip_packages' in requirement_key and 'optional' not in requirement_key and 'proprietary' not in requirement_key %}
# venv to build {{ role_name }}
# * packages within the {{ role_name }} venv: {{ requirement_data }}
{% set _ = os_group.update({role_name: requirement_data}) %}
{% if '_pip_packages' in requirement_key and 'requires' not in requirement_key and 'optional' not in requirement_key and 'proprietary' not in requirement_key %}
{% for requirement in requirement_data %}
{% set _ = requirement_list.append(requirement) %}
{% endfor %}
{% endif %}
{% endfor %}
# venv to build {{ role_name }}
# * packages within the {{ role_name }} venv: {{ requirement_list }}
{% set _ = os_group.update({role_name: requirement_list}) %}
{% endif %}
{% endfor %}