summaryrefslogtreecommitdiffstats
path: root/remote
diff options
context:
space:
mode:
authorSimon Rettberg2013-12-19 16:13:26 +0100
committerSimon Rettberg2013-12-19 16:13:26 +0100
commit1997e591e361f57e342296c9b69ca84531041729 (patch)
treea1fe1ec30f9aff939f95a296936384ca7cbd0f94 /remote
parentMerge branch 'master' of dnbd3:openslx-ng/tm-scripts (diff)
downloadtm-scripts-1997e591e361f57e342296c9b69ca84531041729.tar.gz
tm-scripts-1997e591e361f57e342296c9b69ca84531041729.tar.xz
tm-scripts-1997e591e361f57e342296c9b69ca84531041729.zip
[systemd] Add patch that doesn't clear HOME and USER environment variable to avoid a deadlock in libc/nss/nss_ldap/openssl/libpkcs11
Diffstat (limited to 'remote')
-rw-r--r--remote/modules/systemd/systemd-openslx.patch26
-rw-r--r--remote/modules/systemd/systemd.build9
2 files changed, 31 insertions, 4 deletions
diff --git a/remote/modules/systemd/systemd-openslx.patch b/remote/modules/systemd/systemd-openslx.patch
new file mode 100644
index 00000000..36de20b0
--- /dev/null
+++ b/remote/modules/systemd/systemd-openslx.patch
@@ -0,0 +1,26 @@
+--- core/main.c 2013-05-09 15:45:50.000000000 +0200
++++ core/main.c 2013-12-19 14:46:03.020362993 +0100
+@@ -1477,9 +1477,9 @@
+ /* Set up PATH unless it is already set */
+ setenv("PATH",
+ #ifdef HAVE_SPLIT_USR
+- "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin",
+ #else
+- "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin",
++ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin",
+ #endif
+ arg_running_as == SYSTEMD_SYSTEM);
+
+@@ -1513,6 +1513,11 @@
+ unsetenv("LISTEN_FDS");
+ unsetenv("LISTEN_PID");
+
++ /* OpenSLX: "Fix" libc/nss/nss_ldap deadlock
++ * when not using nscd */
++ setenv("HOME", "/", 1);
++ setenv("USER", "root", 1);
++
+ /* All other variables are left as is, so that clients
+ * can still read them via /proc/1/environ */
+ }
diff --git a/remote/modules/systemd/systemd.build b/remote/modules/systemd/systemd.build
index c9d23794..2c15eccf 100644
--- a/remote/modules/systemd/systemd.build
+++ b/remote/modules/systemd/systemd.build
@@ -1,12 +1,13 @@
#tool/distro specific functions for fetching, building and installing dependencies
fetch_source () {
+ # systemd
download_untar "$REQUIRED_URL" "src/"
- download_untar "$REQUIRED_LIBKMOD_URL" "src/"
+ # Patch PATH, HOME, USER environment
+ patch -p0 src/systemd-*/src/core/main.c < systemd-openslx.patch || perror "Failed to apply openslx systemd patch."
- # Patch PATH environment
- sed -s -i -r 's#"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin(:/sbin:/bin)?"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/core/main.c
- sed -s -i -r 's#"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"#& ":/opt/openslx/usr/sbin:/opt/openslx/usr/bin:/opt/openslx/sbin:/opt/openslx/bin"#g' src/systemd-*/src/nspawn/nspawn.c
+ # libkmod
+ download_untar "$REQUIRED_LIBKMOD_URL" "src/"
}
build () {