From 212b2b0224a0588207e32c7c91403f47a5b8c9e7 Mon Sep 17 00:00:00 2001
From: Romain Boman <romain.boman@gmail.com>
Date: Fri, 28 Oct 2022 16:05:28 +0200
Subject: [PATCH] build & test ubuntu 22.04 OK

---
 .gitlab-ci.yml.tmp => .gitlab-ci.yml |  14 +--------
 CMake/FindMPI4PY.cmake               |  42 +++++++++++++++++++++++++++
 dox/logo.jpg                         | Bin 0 -> 10837 bytes
 3 files changed, 43 insertions(+), 13 deletions(-)
 rename .gitlab-ci.yml.tmp => .gitlab-ci.yml (88%)
 create mode 100644 CMake/FindMPI4PY.cmake
 create mode 100644 dox/logo.jpg

diff --git a/.gitlab-ci.yml.tmp b/.gitlab-ci.yml
similarity index 88%
rename from .gitlab-ci.yml.tmp
rename to .gitlab-ci.yml
index d905eed..f045271 100644
--- a/.gitlab-ci.yml.tmp
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-# gitlab-ci file for waves
+# gitlab-ci file for Katoptron
 
 default:
     image: rboman/waves-py3:2020.3
@@ -37,18 +37,6 @@ format:
         when: on_failure
     allow_failure: true
 
-build-no-tlnos:
-    <<: *global_tag_def
-    stage: build
-    script:
-        - git submodule init
-        - git submodule update
-        - rm -rf build workspace
-        - mkdir build
-        - cd build
-        - cmake -Wno-dev -C ../CMake/disable-trilinos.cmake ..
-        - make -j 8
-
 build:
     <<: *global_tag_def
     stage: build
diff --git a/CMake/FindMPI4PY.cmake b/CMake/FindMPI4PY.cmake
new file mode 100644
index 0000000..9d4bb34
--- /dev/null
+++ b/CMake/FindMPI4PY.cmake
@@ -0,0 +1,42 @@
+# Copyright 2022 University of Liège
+# 
+# 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.
+
+if(NOT MPI4PY_INCLUDE_DIR)
+    execute_process(COMMAND
+      "${PYTHON_EXECUTABLE}" "-c" "import mpi4py; print(mpi4py.get_include())"
+      OUTPUT_VARIABLE MPI4PY_INCLUDE_DIR
+      RESULT_VARIABLE MPI4PY_COMMAND_RESULT
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(MPI4PY_COMMAND_RESULT)
+        message("waves/CMake/FindMPI4PY: mpi4py not found")
+        set(MPI4PY_FOUND FALSE)
+    else(MPI4PY_COMMAND_RESULT)
+        if (MPI4PY_INCLUDE_DIR MATCHES "Traceback")
+            message("waves/CMake/FindMPI4PY: mpi4py matches traceback")
+            ## Did not successfully include MPI4PY
+            set(MPI4PY_FOUND FALSE)
+        else (MPI4PY_INCLUDE_DIR MATCHES "Traceback")
+            ## successful
+            set(MPI4PY_FOUND TRUE)
+            set(MPI4PY_INCLUDE_DIR ${MPI4PY_INCLUDE_DIR} CACHE STRING "mpi4py include path")
+        endif (MPI4PY_INCLUDE_DIR MATCHES "Traceback")
+    endif(MPI4PY_COMMAND_RESULT)
+else(NOT MPI4PY_INCLUDE_DIR)
+    set(MPI4PY_FOUND TRUE)
+endif(NOT MPI4PY_INCLUDE_DIR)
+# ----------------------------------------------------------------------------
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MPI4PY DEFAULT_MSG
+				MPI4PY_INCLUDE_DIR)
diff --git a/dox/logo.jpg b/dox/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..17aeb3377b96b8ec85fed719dd8b3fdc25bd6913
GIT binary patch
literal 10837
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

literal 0
HcmV?d00001

-- 
GitLab