summaryrefslogtreecommitdiffstats
path: root/sw_config/bmra/patched_install_dpdk_meson.yml
diff options
context:
space:
mode:
Diffstat (limited to 'sw_config/bmra/patched_install_dpdk_meson.yml')
-rw-r--r--sw_config/bmra/patched_install_dpdk_meson.yml132
1 files changed, 132 insertions, 0 deletions
diff --git a/sw_config/bmra/patched_install_dpdk_meson.yml b/sw_config/bmra/patched_install_dpdk_meson.yml
new file mode 100644
index 0000000..9b9a7e7
--- /dev/null
+++ b/sw_config/bmra/patched_install_dpdk_meson.yml
@@ -0,0 +1,132 @@
+##
+## Copyright (c) 2020-2021 Intel Corporation.
+##
+## 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: install Python3 from epel-release
+ package:
+ name:
+ - python36
+ - python36-devel
+ - libselinux-python
+ state: present
+ enablerepo: "epel"
+ when:
+ - ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS'
+ - ansible_distribution_version < '8'
+
+- name: install dpdk-devel required for libraries enablement in RHEL / CentOS >= 8.2
+ dnf:
+ name: dpdk-devel
+ when: ansible_distribution in ["RedHat", "CentOS"] and ansible_distribution_version >= '8.2'
+
+- name: build and install dpdk using meson and ninja tools
+ block:
+ - name: install building tools as python packages
+ pip:
+ name:
+ - selinux
+ - meson>=0.53.2,<0.60.0
+ - ninja>=1.10.0
+ - pyelftools>=0.26
+ state: present
+ register: pip_result
+ retries: 5
+ until: pip_result is succeeded
+ delay: 5
+
+ - name: meson build for ease of compiling and linking libraries enablement
+ command: "meson build"
+ args:
+ chdir: "{{ dpdk_dir }}"
+
+ - name: configure DPDK with ninja
+ command: "ninja"
+ args:
+ chdir: "{{ dpdk_dir }}/build"
+
+ - name: install DPDK with ninja
+ command: "ninja install"
+ args:
+ chdir: "{{ dpdk_dir }}/build"
+
+ - name: update the dynamic linker cache
+ command: "ldconfig"
+ args:
+ chdir: "{{ dpdk_dir }}/build"
+ vars:
+ ansible_python_interpreter: /usr/bin/python3
+
+- name: Ensure dpdk libs is in loader search path on RHEL/CentOS
+ copy:
+ dest: "/etc/ld.so.conf.d/libdpdk-x86_64.conf"
+ content: "/usr/local/lib64/"
+ mode: 0644
+ owner: root
+ group: root
+ become: yes
+ when: ansible_os_family == "RedHat"
+
+- name: find dpdk tools
+ find:
+ path: "{{ dpdk_dir }}"
+ patterns: "dpdk-devbind.py"
+ recurse: yes
+ register: dpdk_tools_dir
+
+- name: set path to dpdk usertools directory
+ set_fact:
+ dpdk_tools: "{{ dpdk_tools_dir.files[0].path }}"
+
+- name: load userspace modules
+ modprobe:
+ name: "{{ item }}"
+ state: present
+ with_items:
+ - vfio-pci
+ - uio
+
+- name: install dpdk-devbind.py in /usr/local/bin
+ copy:
+ remote_src: yes
+ src: "{{ dpdk_tools }}"
+ dest: "/usr/local/bin/dpdk-devbind.py"
+ mode: 0700
+ owner: root
+ group: root
+ become: yes
+
+- name: clone intel module
+ git:
+ repo: "{{ dpdk_kmods_repo }}"
+ dest: "{{ dpdk_kmods_dest }}"
+ version: 'main'
+ force: yes
+
+- name: apply fix to Makefile
+ replace:
+ path: "{{ dpdk_kmods_dest }}/linux/igb_uio/Makefile"
+ regexp: "\\(PWD\\)"
+ replace: "(CURDIR)"
+ mode: "0644"
+
+- name: build intel module
+ make:
+ chdir: "{{ dpdk_kmods_dest }}/linux/igb_uio"
+
+- name: load intel module
+ command: "insmod {{ dpdk_kmods_dest }}/linux/igb_uio/igb_uio.ko"
+ register: result
+ failed_when: "'No such file or directory' in result.stderr"
+ changed_when: "'already bound' not in result.stderr"