From 336c22f15ba351ef875b7fb23fb9f09be8cf10fb Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 21 Mar 2017 15:02:15 +0100
Subject: [PATCH] [CMake] Generating an eve-module.

---
 scripts/cmake/Find.cmake                     |  3 +++
 scripts/cmake/packaging/PackagingLinux.cmake | 16 ++++++++++++++++
 scripts/cmake/packaging/module.in            |  9 +++++++++
 scripts/jenkins/gcc-dynamic.groovy           |  8 ++++++++
 4 files changed, 36 insertions(+)
 create mode 100644 scripts/cmake/packaging/module.in

diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 8a59a261167..d2baee31e8d 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -73,6 +73,9 @@ find_program(YARN yarn)
 find_program(PIP pip)
 find_package(PythonInterp)
 
+find_program(MODULE_CMD modulecmd
+    PATHS /usr/local/modules/3.2.10-1/Modules/3.2.10/bin)
+
 ######################
 ### Find libraries ###
 ######################
diff --git a/scripts/cmake/packaging/PackagingLinux.cmake b/scripts/cmake/packaging/PackagingLinux.cmake
index fb99d45ebc9..853f44ecf08 100644
--- a/scripts/cmake/packaging/PackagingLinux.cmake
+++ b/scripts/cmake/packaging/PackagingLinux.cmake
@@ -2,3 +2,19 @@ set(CPACK_GENERATOR TGZ)
 # Adds the binaries location to the LD_LIBRARY_PATH
 set(CMAKE_INSTALL_RPATH \$ORIGIN/)
 
+if(MODULE_CMD)
+    message(STATUS "Found module cmd -> writing module file.")
+    execute_process(COMMAND ${MODULE_CMD} bash list --terse
+        ERROR_VARIABLE MODULE_LIST_OUTPUT
+    )
+    string(REPLACE "\n" ";" MODULE_LIST_OUTPUT ${MODULE_LIST_OUTPUT})
+    foreach(line ${MODULE_LIST_OUTPUT})
+        if(NOT line STREQUAL "Currently Loaded Modulefiles:")
+            set(MODULE_LOAD_STRING "${MODULE_LOAD_STRING}module load ${line}\n")
+        endif()
+    endforeach()
+    configure_file(${CMAKE_SOURCE_DIR}/scripts/cmake/packaging/module.in
+        ${CMAKE_BINARY_DIR}/module
+    )
+    install(FILES ${CMAKE_BINARY_DIR}/module DESTINATION .)
+endif()
diff --git a/scripts/cmake/packaging/module.in b/scripts/cmake/packaging/module.in
new file mode 100644
index 00000000000..225eb1a4baa
--- /dev/null
+++ b/scripts/cmake/packaging/module.in
@@ -0,0 +1,9 @@
+#%Module1.0
+
+module-whatis OpenGeoSys @OGS_VERSION@
+
+append-path MODULEPATH /global/apps/modulefiles/
+
+@MODULE_LOAD_STRING@
+
+prepend-path PATH @CMAKE_INSTALL_PREFIX@/bin
diff --git a/scripts/jenkins/gcc-dynamic.groovy b/scripts/jenkins/gcc-dynamic.groovy
index ff6329daa21..9a20d6db16d 100644
--- a/scripts/jenkins/gcc-dynamic.groovy
+++ b/scripts/jenkins/gcc-dynamic.groovy
@@ -11,6 +11,10 @@ def post = new ogs.post()
 def helper = new ogs.helper()
 
 stage('Configure (envinf1)') {
+    if (helper.isOriginMaster(this)) {
+        defaultCMakeOptions +=
+            ' -DCMAKE_INSTALL_PREFIX=/global/apps/ogs/head/default'
+    }
     configure.linux(cmakeOptions: defaultCMakeOptions, env: 'envinf1/cli.sh', script: this)
     configure.linux(cmakeOptions: defaultCMakeOptions + '-DOGS_USE_PETSC=ON',
         dir: 'build-petsc', env: 'envinf1/petsc.sh', script: this)
@@ -33,6 +37,10 @@ stage('Test (envinf1)') {
     }
 }
 
+stage('Deploy (envinf1)') {
+    build.linux(env: 'envinf1/cli.sh', script: this, target: 'install')
+}
+
 stage('Post (envinf1)') {
     post.publishTestReports 'build*/Testing/**/*.xml', 'build*/Tests/testrunner.xml',
         'ogs/scripts/jenkins/clang-log-parser.rules'
-- 
GitLab