
Currently everything is wired in the venv to work on python2. If the virtualenv was built during repo build with python3, the linking of the library will fail, as the lib folder for python2 doesn't exist. This should solve the issue by ensuring the existing lib folder of the env is used. A problem arises then: Different distros organise packages differently, in different locations. This makes the approach compatible with multi-distros and multiple python versions. Change-Id: I02b296089d5351d68bb14e87e458a4f5d18a4776
57 lines
2.0 KiB
YAML
57 lines
2.0 KiB
YAML
---
|
|
# Copyright 2018, SUSE Linux GmbH
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Note (odyssey4me):
|
|
# These python libraries have C bindings which tend to be very
|
|
# particular about the version of their companion packages.
|
|
# To ensure things run smoothly for stable releases, we opt to
|
|
# use the distro packages for these and symlink the appropriate
|
|
# library files and binding into the venv.
|
|
|
|
- name: Find the venv's python version
|
|
find:
|
|
paths: "{{ nova_bin | dirname }}/lib/"
|
|
patterns: "python*"
|
|
file_type: directory
|
|
recurse: no
|
|
register: python_venv_details
|
|
|
|
- name: Set python venvs details
|
|
set_fact:
|
|
venv_python_version: "{{ (python_venv_details.files[0].path | basename) }}"
|
|
venv_python_major_version: "{{ (python_venv_details.files[0].path | basename)[:-2] }}"
|
|
venv_python_lib_folder: "{{ python_venv_details.files[0].path }}"
|
|
|
|
- name: Search for lib files to link
|
|
shell: >-
|
|
{{ (ansible_pkg_mgr == 'apt') | ternary('dpkg -L ' ~ (nova_compute_kvm_packages_to_symlink | join(' ')), 'rpm -ql ' ~ (nova_compute_kvm_packages_to_symlink | join(' ')) ) }}
|
|
| egrep '^.*{{ venv_python_major_version }}.*/(site|dist)-packages/.*'
|
|
args:
|
|
warn: no
|
|
changed_when: false
|
|
register: _python_files
|
|
tags:
|
|
- nova-pip-packages
|
|
|
|
- name: Link the python host package files into venv
|
|
file:
|
|
src: "{{ item }}"
|
|
dest: "{{ venv_python_lib_folder }}/site-packages/{{ item | basename }}"
|
|
state: link
|
|
force: yes
|
|
with_items: "{{ _python_files.stdout_lines }}"
|
|
tags:
|
|
- nova-pip-packages
|