From 1b6af8e1546b25303cd0ce78a715cf97de4ea5de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <andre.mueller@fz-juelich.de>
Date: Fri, 28 Jul 2023 06:59:29 +0200
Subject: [PATCH] Add changes needed to compile packages on JURECA@JSC

---
 packages/hxtorch/package.py          |  6 +++-
 packages/pynn-brainscales/package.py |  6 +++-
 site-config/jurecadc/compilers.yaml  |  3 +-
 site-config/jurecadc/config.yaml     | 10 +++----
 site-config/jurecadc/packages.yaml   | 42 +++++++++++++++-------------
 5 files changed, 40 insertions(+), 27 deletions(-)

diff --git a/packages/hxtorch/package.py b/packages/hxtorch/package.py
index e3c90f63..0049abf1 100644
--- a/packages/hxtorch/package.py
+++ b/packages/hxtorch/package.py
@@ -135,6 +135,11 @@ class Hxtorch(WafPackage):
     def configure(self, spec, prefix):
         """Setup and configure the project."""
 
+        env = os.environ
+        if 'SPACK_COMPILER_IMPLICIT_RPATHS' in env:
+            env['LIBRARY_PATH'] = env['SPACK_COMPILER_IMPLICIT_RPATHS'] + ':' + env['LIBRARY_PATH']
+            env['WAF_CONFIGURE_LD_LIBRARY_PATH'] = env['SPACK_COMPILER_IMPLICIT_RPATHS'] + ':' + env['WAF_CONFIGURE_LD_LIBRARY_PATH']
+
         self.waf('setup', '--repo-db-url=https://github.com/electronicvisions/projects',
             '--without-munge',
             '--without-hxcomm-hostarq',
@@ -146,7 +151,6 @@ class Hxtorch(WafPackage):
         args = ['--prefix={0}'.format(self.prefix)]
         args += self.configure_args()
 
-        env = os.environ
         env['LD_LIBRARY_PATH'] = env.get('WAF_CONFIGURE_LD_LIBRARY_PATH')
         self.waf('configure', '--build-profile=release', '--disable-doxygen', *args)
 
diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py
index 2dfdd256..40352a69 100644
--- a/packages/pynn-brainscales/package.py
+++ b/packages/pynn-brainscales/package.py
@@ -111,6 +111,11 @@ class PynnBrainscales(WafPackage):
     def configure(self, spec, prefix):
         """Setup and configure the project."""
 
+        env = os.environ
+        if 'SPACK_COMPILER_IMPLICIT_RPATHS' in env:
+            env['LIBRARY_PATH'] = env['SPACK_COMPILER_IMPLICIT_RPATHS'] + ':' + env['LIBRARY_PATH']
+            env['WAF_CONFIGURE_LD_LIBRARY_PATH'] = env['SPACK_COMPILER_IMPLICIT_RPATHS'] + ':' + env['WAF_CONFIGURE_LD_LIBRARY_PATH']
+
         self.waf('setup', '--repo-db-url=https://github.com/electronicvisions/projects',
             '--without-munge',
             '--without-hxcomm-hostarq',
@@ -122,7 +127,6 @@ class PynnBrainscales(WafPackage):
         args = ['--prefix={0}'.format(self.prefix)]
         args += self.configure_args()
 
-        env = os.environ
         env['LD_LIBRARY_PATH'] = env.get('WAF_CONFIGURE_LD_LIBRARY_PATH')
         self.waf('configure', '--build-profile=release', '--disable-doxygen', *args)
 
diff --git a/site-config/jurecadc/compilers.yaml b/site-config/jurecadc/compilers.yaml
index 69485034..7b45d5dd 100644
--- a/site-config/jurecadc/compilers.yaml
+++ b/site-config/jurecadc/compilers.yaml
@@ -9,7 +9,8 @@ compilers:
     flags: {}
     operating_system: rocky8
     target: x86_64
-    modules: []
+    modules:
+      - StdEnv/2023
     environment: {}
     extra_rpaths: []
 - compiler:
diff --git a/site-config/jurecadc/config.yaml b/site-config/jurecadc/config.yaml
index 9dd3b0b0..10b9121e 100644
--- a/site-config/jurecadc/config.yaml
+++ b/site-config/jurecadc/config.yaml
@@ -1,10 +1,10 @@
 config:
   build_stage:
-  - $USERSOFTWARE/spack/user-cache/$user/spack-stage
+  - $USERSOFTWARE/EBRAINS/$SYSTEMNAME/spack/user-cache/$user/spack-stage
   - $tempdir/$user/spack-stage
-  source_cache: $USERSOFTWARE/spack/source-cache
-  test_stage: $USERSOFTWARE/spack/user-cache/$user/test
-  misc_cache: $USERSOFTWARE/spack/user-cache/$user/cache
+  source_cache: $USERSOFTWARE/EBRAINS/$SYSTEMNAME/spack/source-cache
+  test_stage: $USERSOFTWARE/EBRAINS/$SYSTEMNAME/spack/user-cache/$user/test
+  misc_cache: $USERSOFTWARE/EBRAINS/$SYSTEMNAME/spack/user-cache/$user/cache
   install_tree:
-    root: $USERSOFTWARE/install
+    root: $USERSOFTWARE/EBRAINS/$SYSTEMNAME/install
   db_lock_timeout: 10
diff --git a/site-config/jurecadc/packages.yaml b/site-config/jurecadc/packages.yaml
index c5f285aa..58af7370 100644
--- a/site-config/jurecadc/packages.yaml
+++ b/site-config/jurecadc/packages.yaml
@@ -2,6 +2,10 @@
 # Currently Loaded Modules:
 #   1) Stages/2023 (S)   2) GCCcore/.11.3.0 (H)   3) zlib/.1.2.12 (H)   4) binutils/.2.38 (H)   5) StdEnv/2023   6) spack/0.19.2
 packages:
+  all:
+    variants: +cuda cuda_arch=75,80
+  llvm:
+    variants: ~cuda
   findutils:
     externals:
     - spec: findutils@4.6.0
@@ -18,18 +22,20 @@ packages:
     externals:
     - spec: diffutils@3.6
       prefix: /usr
-  git:
-    externals:
-    - spec: git@2.31.1~tcltk
-      prefix: /usr
+# TODO git, git-lsf and especially curl have been removed due to system curl not having support for https
+#  git:
+#    externals:
+#    - spec: git@2.31.1~tcltk
+#      prefix: /usr
   m4:
     externals:
     - spec: m4@1.4.18
       prefix: /usr
-  texinfo:
-    externals:
-    - spec: texinfo@6.5
-      prefix: /usr
+# TODO Using system version causes 'missing makeinfo', as the binary is not available
+#  texinfo:
+#    externals:
+#    - spec: texinfo@6.5
+#      prefix: /usr
   subversion:
     externals:
     - spec: subversion@1.10.2
@@ -42,12 +48,10 @@ packages:
     externals:
     - spec: binutils@2.38
       prefix: /p/software/jurecadc/stages/2023/software/binutils/2.38-GCCcore-11.3.0
-    - spec: binutils@2.30.117
-      prefix: /usr
   openssl:
     externals:
     - spec: openssl@1.1.1k
-      prefix: /usr
+      prefix: /p/software/jurecadc/stages/2023/software/OpenSSL/1.1
   pkgconf:
     externals:
     - spec: pkgconf@1.4.2
@@ -68,14 +72,14 @@ packages:
     externals:
     - spec: openssh@8.0p1
       prefix: /usr
-  curl:
-    externals:
-    - spec: curl@7.61.1+gssapi+ldap+nghttp2
-      prefix: /usr
-  git-lfs:
-    externals:
-    - spec: git-lfs@2.13.3
-      prefix: /usr
+#  curl:
+#    externals:
+#    - spec: curl@7.61.1+gssapi+ldap+nghttp2
+#      prefix: /usr
+#  git-lfs:
+#    externals:
+#    - spec: git-lfs@2.13.3
+#      prefix: /usr
   gawk:
     externals:
     - spec: gawk@4.2.1
-- 
GitLab