ansible-role-python_venv_build/tasks/python_venv_install_symlink.yml
Jonathan Rosser 43d785eff2 Improve python version detection when symlinking libraries
The previous code assumed that the major version ('python3') could be
obtained by removing the last two characters from 'python3.X. This
does not work for pyhton releases 3.10 and onward, so this patch
changes the code to split the string on '.' and take the first portion.

Change-Id: I771cac2fc9badb61c22cfde65775aee97c31f89c
2022-04-21 07:52:16 +01:00

45 lines
1.6 KiB
YAML

---
# Copyright 2021, City Network International AB.
#
# 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.
- name: Find the venv's python version
find:
paths: "{{ venv_install_destination_path }}/lib/"
patterns: "python*"
file_type: directory
recurse: no
register: _python_venv_details
- name: Search for lib files to link
vars:
_venv_python_major_version: "{{ (_python_venv_details.files[0].path | basename | split('.') )[0] }}"
shell: >-
{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary('dpkg -L ' ~ (venv_packages_to_symlink | join(' ')), 'rpm -ql ' ~ (venv_packages_to_symlink | join(' ')) ) }}
| egrep '^.*{{ _venv_python_major_version }}.*/(site|dist)-packages/.*'
| egrep -v "__pycache__"
args:
warn: no
changed_when: false
register: _python_files
- name: Link the python host package files into venv
vars:
_venv_python_lib_folder: "{{ _python_venv_details.files[0].path }}"
file:
src: "{{ item }}"
dest: "{{ _venv_python_lib_folder }}/site-packages/{{ item | basename }}"
state: link
force: yes
with_items: "{{ _python_files.stdout_lines }}"