File G4-multi.patch of Package geant4.11.2

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b2559017b..95b4cf717d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,3 +48,4 @@ set(CMAKE_MODULE_PATH
 #
 include(G4CMakeMain)
 
+add_subdirectory(G4-multi)
diff --git a/G4-multi/CMakeLists.txt b/G4-multi/CMakeLists.txt
new file mode 100644
index 0000000000..91948efe6f
--- /dev/null
+++ b/G4-multi/CMakeLists.txt
@@ -0,0 +1,72 @@
+set(_multi_g4_version ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR})
+
+set(_multi_g4_config_script ${_scriptbasename}.${_multi_g4_version})
+
+if(NOT DEFINED shells_list)
+   set(shells_list bourne;cshell)
+endif ()
+
+geant4_get_datasetnames(ALL_GEANT4_DATASETS)
+foreach(_ds ${ALL_GEANT4_DATASETS})
+   geant4_get_dataset_property(${_ds} ENVVAR ${_ds}_ENVVAR)
+   geant4_get_dataset_property(${_ds} DIRECTORY ${_ds}_DIRECTORY)
+endforeach()
+
+macro(_function_shell_setup SHELL_FAMILY)
+   if(${SHELL_FAMILY} STREQUAL "bourne")
+      set(SET_SHELL_FUNCTION "config_${_multi_g4_config_script} () {\n")
+      set(SET_SHELL_FUNCTION "${SET_SHELL_FUNCTION}\tsource ${CMAKE_INSTALL_FULL_BINDIR}/${_scriptbasename}${GEANT4_TC_SHELL_EXTENSION}")
+      set(CLOSE_SHELL_FUNCTION "}\nexport -f config_${_multi_g4_config_script}")
+   elseif(${SHELL_FAMILY} STREQUAL "cshell")
+      set(SET_SHELL_FUNCTION "alias config_${_multi_g4_config_script} \'source ${CMAKE_INSTALL_FULL_BINDIR}/${_scriptbasename}${GEANT4_TC_SHELL_EXTENSION} ;\\")
+      set(CLOSE_SHELL_FUNCTION "\'")
+   endif()
+endmacro()
+
+function(_function_setenv_command TEMPLATE_NAME SHELL_FAMILY VARIABLE_NAME VARIABLE_VALUE)
+   if(${SHELL_FAMILY} STREQUAL "bourne")
+      set(${TEMPLATE_NAME} "\tif [ -d ${VARIABLE_VALUE} ] ; then export ${VARIABLE_NAME}=${VARIABLE_VALUE} ; fi"
+         PARENT_SCOPE
+   )
+   elseif(${SHELL_FAMILY} STREQUAL "cshell")
+      set(${TEMPLATE_NAME} "\tif [ -d ${VARIABLE_VALUE} ] ; then setenv ${VARIABLE_NAME} ${VARIABLE_VALUE} ; fi ;\\"
+         PARENT_SCOPE
+   )
+   endif()
+endfunction()
+
+macro(create_multi_config_scripts SCRIPT_NAME)
+   foreach(_shell IN LISTS shells_list)
+      _g4tc_shell_setup(_shell)
+      _function_shell_setup(_shell)
+      set(_scriptfullname ${_multi_g4_config_script}${GEANT4_TC_SHELL_EXTENSION})
+
+      unset(ALL_GEANT4_ENV_DATASETS)  
+      foreach(_ds ${ALL_GEANT4_DATASETS})
+         _function_setenv_command(_dssetenvcmd ${_shell} ${${_ds}_ENVVAR} "$GEANT4_DATA_DIR/${${_ds}_DIRECTORY}")
+         if(DEFINED ALL_GEANT4_ENV_DATASETS)
+            set(ALL_GEANT4_ENV_DATASETS "${ALL_GEANT4_ENV_DATASETS}\n${_dssetenvcmd}")
+         else()
+            set(ALL_GEANT4_ENV_DATASETS "${_dssetenvcmd}")
+         endif()
+      endforeach()
+
+      configure_file(
+         ${PROJECT_SOURCE_DIR}/G4-multi/${SCRIPT_NAME}-skeleton.in
+         ${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
+         @ONLY
+      )
+
+     install(FILES
+        ${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
+        DESTINATION ${CMAKE_INSTALL_BINDIR}/../../geant4-multi_config/
+        PERMISSIONS
+        OWNER_READ OWNER_WRITE
+        GROUP_READ
+        WORLD_READ
+        COMPONENT Runtime
+      )
+   endforeach()
+endmacro()
+
+create_multi_config_scripts(${_scriptbasename}-multi)
diff --git a/G4-multi/geant4-multi-skeleton.in b/G4-multi/geant4-multi-skeleton.in
new file mode 100644
index 0000000000..9301d8dedd
--- /dev/null
+++ b/G4-multi/geant4-multi-skeleton.in
@@ -0,0 +1,3 @@
+@SET_SHELL_FUNCTION@
+@ALL_GEANT4_ENV_DATASETS@
+@CLOSE_SHELL_FUNCTION@
openSUSE Build Service is sponsored by