aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-09-13 10:47:58 +0200
committerLudovic Courtès <ludo@gnu.org>2014-09-13 10:47:58 +0200
commitc19ce3a711fea24c173d615a4a7b162dbc86ce68 (patch)
tree7f3c511f3aaf6355056840f9f04f1a1f059f6559 /gnu
parentdc2d59afa946eb7540ca6fb6233026780f99104e (diff)
downloadguix-c19ce3a711fea24c173d615a4a7b162dbc86ce68.tar.gz
guix-c19ce3a711fea24c173d615a4a7b162dbc86ce68.zip
gnu: eudev: Honor $EUDEV_RULES_DIRECTORY.
* gnu/packages/patches/eudev-rules-directory.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/linux.scm (eudev): Use it.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/linux.scm3
-rw-r--r--gnu/packages/patches/eudev-rules-directory.patch36
2 files changed, 38 insertions, 1 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8550dc0d33..ff6de2b077 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1377,7 +1377,8 @@ time.")
version ".tar.gz"))
(sha256
(base32
- "1w6f8h7fhjz3prs630f8gawv7jx74zi600z0pm997kkp24pyj5wg"))))
+ "1w6f8h7fhjz3prs630f8gawv7jx74zi600z0pm997kkp24pyj5wg"))
+ (patches (list (search-patch "eudev-rules-directory.patch")))))
(arguments
(substitute-keyword-arguments (package-arguments udev)
((#:configure-flags flags)
diff --git a/gnu/packages/patches/eudev-rules-directory.patch b/gnu/packages/patches/eudev-rules-directory.patch
new file mode 100644
index 0000000000..9173e22f76
--- /dev/null
+++ b/gnu/packages/patches/eudev-rules-directory.patch
@@ -0,0 +1,36 @@
+Add $EUDEV_RULES_DIRECTORY to the list of rules directories.
+
+The old udev 182 supported $UDEV_CONFIG_FILE, which in turn allowed
+the search path to be customized, but eudev no longer has this, hence
+this hack.
+
+--- eudev-1.9/src/udev/udev-rules.c 2014-09-13 10:21:59.615980259 +0200
++++ eudev-1.9/src/udev/udev-rules.c 2014-09-13 10:24:13.839976335 +0200
+@@ -46,15 +46,11 @@
+ };
+ };
+
+-static const char* const rules_dirs[] = {
++static const char* rules_dirs[] = {
+ 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, /* placeholder for $EUDEV_RULES_DIRECTORY */
+ NULL};
+
+ struct udev_rules {
+@@ -1637,6 +1633,9 @@
+
+ udev_rules_check_timestamp(rules);
+
++ /* Allow the user to specify an additional rules directory. */
++ rules_dirs[3] = getenv("EUDEV_RULES_DIRECTORY");
++
+ r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs);
+ if (r < 0) {
+ log_error("failed to enumerate rules files: %s", strerror(-r));