summarylogtreecommitdiffstats
path: root/spack.patch
blob: 00eddf03820c03d743ea0e0ba49fa24d9a38a302 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
--- bin/spack	2025-07-25 01:09:39.027283539 +0200
+++ bin/spack	2025-07-25 01:07:33.000000000 +0200
@@ -26,24 +26,37 @@
 
 import os
 import sys
-
-min_python3 = (3, 6)
-
-if sys.version_info[:2] < min_python3:
-    v_info = sys.version_info[:3]
-    msg = "Spack requires Python %d.%d or higher " % min_python3
-    msg += "You are running spack with Python %d.%d.%d." % v_info
-    sys.exit(msg)
-
-# Find spack's location and its prefix.
-spack_file = os.path.realpath(os.path.expanduser(__file__))
-spack_prefix = os.path.dirname(os.path.dirname(spack_file))
-
-# Allow spack libs to be imported in our scripts
-sys.path.insert(0, os.path.join(spack_prefix, "lib", "spack"))
-
-from spack.main import main  # noqa: E402
-
-# Once we've set up the system path, run the spack main method
-if __name__ == "__main__":
-    sys.exit(main())
+if os.environ["USER"] != "spack":
+    # Modified script, pkexec to `spack` user
+    env = os.environ.copy()
+    # removing user-specific environement variables
+    for var in ["USER", "HOME", "LOGNAME"]:
+        if var in env:
+            env.pop(var)
+    arg_list = ["/usr/bin/pkexec", "--user", "spack", "/usr/bin/env"]
+    arg_list += [var + "=" + value for var, value in env.items()]
+    arg_list.append(sys.argv[0])
+    arg_list += sys.argv[1:]
+    os.execv("/usr/bin/pkexec", arg_list)
+else:
+    # Original script
+    min_python3 = (3, 6)
+
+    if sys.version_info[:2] < min_python3:
+        v_info = sys.version_info[:3]
+        msg = "Spack requires Python %d.%d or higher " % min_python3
+        msg += "You are running spack with Python %d.%d.%d." % v_info
+        sys.exit(msg)
+
+    # Find spack's location and its prefix.
+    spack_file = os.path.realpath(os.path.expanduser(__file__))
+    spack_prefix = os.path.dirname(os.path.dirname(spack_file))
+
+    # Allow spack libs to be imported in our scripts
+    sys.path.insert(0, os.path.join(spack_prefix, "lib", "spack"))
+
+    from spack.main import main  # noqa: E402
+
+    # Once we've set up the system path, run the spack main method
+    if __name__ == "__main__":
+        sys.exit(main())