diff options
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/udev/Makefile.am | 1 | ||||
-rw-r--r-- | src/udev/udev-event.c | 3 | ||||
-rw-r--r-- | src/udev/udev-rules.c | 19 |
4 files changed, 24 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index a994a5c1c9..1106b33016 100644 --- a/configure.ac +++ b/configure.ac @@ -127,7 +127,7 @@ AC_ARG_ENABLE( [split-usr], [AS_HELP_STRING( [--enable-split-usr], - [Assume that /bin, /sbin are not symlinks into /usr])], + [Include hard-coded default search paths in / and /usr])], [], [AS_IF( [test "x${ac_default_prefix}" != "x${with_rootprefix}"], @@ -137,7 +137,7 @@ AC_ARG_ENABLE( AS_IF( [test "x${enable_split_usr}" = "xyes"], - [AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin are not symlinks into /usr])] + [AC_DEFINE(HAVE_SPLIT_USR, 1, [Define to include hard-coded default search paths in / and /usr])] ) # Configured paths diff --git a/src/udev/Makefile.am b/src/udev/Makefile.am index b65048bf91..ea3b15f5b1 100644 --- a/src/udev/Makefile.am +++ b/src/udev/Makefile.am @@ -6,6 +6,7 @@ AM_CPPFLAGS = \ -DROOTPREFIX=\"$(rootprefix)\" \ -DUDEV_HWDB_DIR=\"$(udevhwdbdir)\" \ -DUDEV_HWDB_BIN=\"$(udevhwdbbin)\" \ + -DUDEV_CONF_DIR=\"$(udevconfdir)\" \ -DUDEV_RULES_DIR=\"$(udevrulesdir)\" \ -DUDEV_LIBEXEC_DIR=\"$(udevlibexecdir)\" \ -I $(top_srcdir)/src/libudev diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 46e7578d0d..cbcb3f5ab2 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -687,10 +687,13 @@ int udev_event_spawn(struct udev_event *event, } /* allow programs in /usr/lib/udev/ to be called without the path */ + /* NOTE - paths need reworking, see note in udev-rules.c */ if (argv[0][0] != '/') { util_strscpyl(program, sizeof(program), UDEV_LIBEXEC_DIR "/", argv[0], NULL); #ifdef HAVE_SPLIT_USR if(access(program, X_OK)) + util_strscpyl(program, sizeof(program), "/usr/lib/udev/", argv[0], NULL); + if(access(program, X_OK)) util_strscpyl(program, sizeof(program), "/lib/udev/", argv[0], NULL); #endif argv[0] = program; diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 0611c1d6fa..55d9ba9a8a 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1600,11 +1600,28 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) if (!rules->strbuf) return udev_rules_unref(rules); - rules->dirs = strv_new(UDEV_RULES_DIR, + /* Note - need a better way to manage these paths: + * ie, should have a list of paths we always support, and + * do not include the #define vars if they are duplicates + * + * original - UDEV_RULES_DIR should be /etc/udev/rules.d + * ..but we have it set to UDEV_LIBEXEC_DIR "/rules.d" so that + * ..the default rules are installed there instead of in /etc + * + * original2 - UDEV_LIBEXEC_DIR used to be forced to /usr/lib/udev + * ..by default, we have it as /lib/udev (or whatever rootlibdir is) + * ..therefore we did not include /usr/lib/udev/rules.d. + * + * Reworked code; there are duplicate paths here but at least + * everyting is listed. + */ + rules->dirs = strv_new(UDEV_CONF_DIR "/rules.d", + UDEV_RULES_DIR, "/run/udev/rules.d", UDEV_LIBEXEC_DIR "/rules.d", #ifdef HAVE_SPLIT_USR "/lib/udev/rules.d", + "/usr/lib/udev/rules.d", #endif NULL); if (!rules->dirs) { |