From 57e6ac3358111022ff5c86b06ad00a02289db87d Mon Sep 17 00:00:00 2001
From: Andreas Hamacher <andreas.hamacher@monash.edu>
Date: Thu, 24 Sep 2020 07:36:36 +1000
Subject: [PATCH] enabling mellanox and lustre builds from source with a fresh
 kernel modification

---
 roles/buildLustreClient/defaults/main.yml |  2 +
 roles/buildLustreClient/tasks/main.yml    | 51 +++++++++++++++++++++++
 roles/mellanox_drivers/defaults/main.yml  |  1 +
 roles/mellanox_drivers/tasks/main.yml     | 10 ++++-
 4 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 roles/buildLustreClient/defaults/main.yml
 create mode 100644 roles/buildLustreClient/tasks/main.yml

diff --git a/roles/buildLustreClient/defaults/main.yml b/roles/buildLustreClient/defaults/main.yml
new file mode 100644
index 00000000..8f4a9282
--- /dev/null
+++ b/roles/buildLustreClient/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+lustreVersion: v2_13_55
diff --git a/roles/buildLustreClient/tasks/main.yml b/roles/buildLustreClient/tasks/main.yml
new file mode 100644
index 00000000..cf843640
--- /dev/null
+++ b/roles/buildLustreClient/tasks/main.yml
@@ -0,0 +1,51 @@
+---
+# see documentation at https://sites.google.com/a/monash.edu/hpc-services/work-instructions/system-configuration/lustre/compile-lustre-client-from-source
+
+- name: get lustre sources for latest tags see https://git.whamcloud.com/?p=fs/lustre-release.git;a=summary
+  git:
+    repo: git://git.whamcloud.com/fs/lustre-release.git
+    dest: /tmp/lustre-release
+    version: "{{ lustreVersion }}"
+  #command: git clone git://git.whamcloud.com/fs/lustre-release.git -b v2_12_5
+   # chdir: /tmp/lustre-release
+  #  creates: /tmp/lustre-release
+
+#- name: get a magic patch
+#    command: git fetch https://review.whamcloud.com/fs/lustre-release refs/changes/67/32267/1 && git checkout FETCH_HEAD
+#    chdir: /tmp/lustre-release
+- name: install dependencies
+  package: #libelf-dev, libelf-devel or elfutils-libelf-devel
+    name:
+      - libyaml
+      - libyaml-devel
+      - libtool
+      - elfutils-libelf-devel
+      - libselinux-devel
+      #- kernel-rpm-macros #centos8.2
+      - kernel-abi-whitelists
+    state: present
+  become: true
+  when: ansible_os_family == 'RedHat'
+
+- name: autogen
+  command:
+    cmd: '/bin/sh ./autogen.sh'
+    chdir: /tmp/lustre-release
+
+- name: configure
+  command:
+    cmd: './configure --disable-server --with-o2ib=/usr/src/ofa_kernel/default'
+    chdir: /tmp/lustre-release
+
+- name: make
+  make:
+    chdir: /tmp/lustre-release
+    params:
+      NUM_THREADS: 6
+#- name: make rpms
+#    command: make rpms
+#    chdir: /tmp/lustre-release
+- name: make rpms
+  make:
+    target: rpms
+    chdir: /tmp/lustre-release
diff --git a/roles/mellanox_drivers/defaults/main.yml b/roles/mellanox_drivers/defaults/main.yml
index 4fb42fdb..c02c5fbf 100644
--- a/roles/mellanox_drivers/defaults/main.yml
+++ b/roles/mellanox_drivers/defaults/main.yml
@@ -3,3 +3,4 @@
 #MELLANOX_DRIVER_SRC: "{% if ansible_os_family == 'RedHat'  %}MLNX_OFED_LINUX-4.4-1.0.0.0-rhel7.4-x86_64{% elif ansible_os_family == 'Debian' %}MLNX_OFED_LINUX-3.1-1.0.3-ubuntu14.04-x86_64{% endif %}"
 #MELLANOX_DRIVER_SRC: "{% if ansible_os_family == 'RedHat'  %}MLNX_OFED_LINUX-4.5-1.0.1.0-rhel7.6-x86_64{% elif ansible_os_family == 'Debian' %}MLNX_OFED_LINUX-3.1-1.0.3-ubuntu14.04-x86_64{% endif %}"
 MELLANOX_DRIVER_SRC: "{% if ansible_os_family == 'RedHat'  %}MLNX_OFED_LINUX-4.7-3.2.9.0-rhel7.7-x86_64{% elif ansible_os_family == 'Debian' %}MLNX_OFED_LINUX-3.1-1.0.3-ubuntu14.04-x86_64{% endif %}"
+buildKMOD: False
\ No newline at end of file
diff --git a/roles/mellanox_drivers/tasks/main.yml b/roles/mellanox_drivers/tasks/main.yml
index 7046800e..da0c3290 100644
--- a/roles/mellanox_drivers/tasks/main.yml
+++ b/roles/mellanox_drivers/tasks/main.yml
@@ -111,7 +111,15 @@
     chdir: "/tmp/{{ MELLANOX_DRIVER_SRC }}"
   become: true
   become_user: root
-  when: install_now
+  when: install_now and buildKMOD!=True
+  
+- name: install drivers
+  shell: ./mlnxofedinstall -q --skip-repo --without-fw-update --add-kernel-support --hpc --kmp --all
+  args:
+    chdir: "/tmp/{{ MELLANOX_DRIVER_SRC }}"
+  become: true
+  become_user: root
+  when: install_now and buildKMOD==True
 
 #- name: install ofa_kernel  # this will be installed by mlnxofedinstall
 #  yum:
-- 
GitLab