aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2015-03-03 11:36:59 +0100
committerKarel Zak <kzak@redhat.com>2015-03-03 11:43:01 +0100
commitf71d1104df68e9ab7f06878c1c324566721acd66 (patch)
treee5dbce365fc74af2a663e3f016f657b746319a93
parentb7c67e6414a68caaef133e978b3110d599f3d147 (diff)
downloadutil-linux-playground-f71d1104df68e9ab7f06878c1c324566721acd66.tar.gz
build-sys: add --enable-usrdir-path
The directories /{sbin,bin} are symliks to /usr/{sbin,bin} on many systems. This patch add new ./configure option to remove the non-usr paths from the default $PATH environment variable. The default $PATH is hardcoded in login(1) and can be overwritten by /etc/login.defs. default: ./test_pathnames | grep DEFPATH _PATH_DEFPATH /usr/local/bin:/bin:/usr/bin _PATH_DEFPATH_ROOT /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin --enable-usrdir-path: ./test_pathnames | grep DEFPATH _PATH_DEFPATH /usr/local/bin:/usr/bin _PATH_DEFPATH_ROOT /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin This patch does not modify install paths, you still have to care about --{bin,lib}dir configure options. Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--configure.ac10
-rw-r--r--include/pathnames.h14
2 files changed, 22 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index f7c3f8e57a..5d2b685035 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1846,6 +1846,16 @@ AS_IF([test "x$enable_sulogin_emergency_mount" = xyes], [
])
+AC_ARG_ENABLE([usrdir-path],
+ AS_HELP_STRING([--enable-usrdir-path], [use only /usr paths in PATH env. variable (recommended on systems with /bin -> /usr/bin symlinks)]),
+ [], [enable_usrdir_path=no]
+)
+
+AS_IF([test "x$enable_usrdir_path" == xyes], [
+ AC_DEFINE([USE_USRDIR_PATHS_ONLY], [1], [Define to 1 to remove /bin and /sbin from PATH env.variable])
+])
+
+
AC_ARG_ENABLE([makeinstall-chown],
AS_HELP_STRING([--disable-makeinstall-chown], [do not do chown-like operations during "make install"]),
[], [enable_makeinstall_chown=yes]
diff --git a/include/pathnames.h b/include/pathnames.h
index cc01589cda..37f010997b 100644
--- a/include/pathnames.h
+++ b/include/pathnames.h
@@ -20,10 +20,20 @@
/* DEFPATHs from <paths.h> don't include /usr/local */
#undef _PATH_DEFPATH
-#define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
+
+#ifdef USE_USRDIR_PATHS_ONLY
+# define _PATH_DEFPATH "/usr/local/bin:/usr/bin"
+#else
+# define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
+#endif
#undef _PATH_DEFPATH_ROOT
-#define _PATH_DEFPATH_ROOT "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
+
+#ifdef USE_USRDIR_PATHS_ONLY
+# define _PATH_DEFPATH_ROOT "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
+#else
+# define _PATH_DEFPATH_ROOT "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
+#endif
#define _PATH_SECURETTY "/etc/securetty"
#define _PATH_WTMPLOCK "/etc/wtmplock"