summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2011-08-24 21:23:53 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2011-08-24 21:23:53 +0000
commitc19d8396e4140675cc4d41eaec33db8ecfe3603a (patch)
tree1e5498aade9f7cc6f9b0aae2413b06cc63c635d7 /pkgs/os-specific
parent7101fbff89e1b2b0917a980a164e3c39748f754b (diff)
parent8e35598f6bfbba10180c4996edc81c36926c7ea6 (diff)
downloadnixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar.gz
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar.bz2
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar.lz
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar.xz
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.tar.zst
nixlib-c19d8396e4140675cc4d41eaec33db8ecfe3603a.zip
Merge with udev-173 (trivial)
svn path=/nixpkgs/trunk/; revision=28800
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/lvm2/default.nix13
-rw-r--r--pkgs/os-specific/linux/lvm2/purity.patch55
-rw-r--r--pkgs/os-specific/linux/multipath-tools/default.nix4
-rw-r--r--pkgs/os-specific/linux/udev/173.nix (renamed from pkgs/os-specific/linux/udev/172.nix)23
-rw-r--r--pkgs/os-specific/linux/udev/custom-rules.patch91
5 files changed, 169 insertions, 17 deletions
diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix
index ae4b962715c9..037a3d227c46 100644
--- a/pkgs/os-specific/linux/lvm2/default.nix
+++ b/pkgs/os-specific/linux/lvm2/default.nix
@@ -1,27 +1,30 @@
 { stdenv, fetchurl, pkgconfig, udev }:
 
 let
-  v = "2.02.86";
+  v = "2.02.87";
 in
 
 stdenv.mkDerivation {
   name = "lvm2-${v}";
-  
+
   src = fetchurl {
     url = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${v}.tgz";
-    sha256 = "0bam8ampdqn4xx2agrvh5vn4xdi0gb9lmfsm31fm302y52jsyz2m";
+    sha256 = "04d605dac9r0yz9khx9pq6a8jdsf9arda2rz1a2d1qr3jhlw4kvg";
   };
-  
+
   configureFlags =
     "--disable-readline --enable-udev_rules --enable-udev_sync --enable-pkgconfig --enable-applib";
 
   buildInputs = [ pkgconfig udev ];
-  
+
+  patches = [ ./purity.patch ];
+
   # To prevent make install from failing.
   preInstall = "installFlags=\"OWNER= GROUP= confdir=$out/etc\"";
 
   meta = {
     homepage = http://sourceware.org/lvm2/;
     descriptions = "Tools to support Logical Volume Management (LVM) on Linux";
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/lvm2/purity.patch b/pkgs/os-specific/linux/lvm2/purity.patch
new file mode 100644
index 000000000000..8446e8e9ee9d
--- /dev/null
+++ b/pkgs/os-specific/linux/lvm2/purity.patch
@@ -0,0 +1,55 @@
+TODO: fix path to blkid as well.
+
+Currently we set it to /sbin/blkid because in nixos we fix a lot of references
+to /sbin/blkid anyway.
+
+diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in
+index 605e088..8865d54 100644
+--- a/udev/10-dm.rules.in
++++ b/udev/10-dm.rules.in
+@@ -19,9 +19,8 @@ KERNEL=="device-mapper", NAME="(DM_DIR)/control"
+ SUBSYSTEM!="block", GOTO="dm_end"
+ KERNEL!="dm-[0-9]*", GOTO="dm_end"
+ 
+-# Set proper sbin path, /sbin has higher priority than /usr/sbin.
+-ENV{DM_SBIN_PATH}="/sbin"
+-TEST!="$env{DM_SBIN_PATH}/dmsetup", ENV{DM_SBIN_PATH}="/usr/sbin"
++# Set proper sbin path. Exit if dmsetup is not present.
++ENV{DM_SBIN_PATH}="(sbindir)"
+ TEST!="$env{DM_SBIN_PATH}/dmsetup", GOTO="dm_end"
+ 
+ # Device created, major and minor number assigned - "add" event generated.
+diff --git a/udev/13-dm-disk.rules b/udev/13-dm-disk.rules
+index 271ca22..cdc583f 100644
+--- a/udev/13-dm-disk.rules
++++ b/udev/13-dm-disk.rules
+@@ -19,7 +19,7 @@ ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
+ 
+ ENV{DM_SUSPENDED}=="1", GOTO="dm_end"
+ 
+-IMPORT{program}="$env{DM_SBIN_PATH}/blkid -o udev -p $tempnode"
++IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+ ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100"
+ ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+diff --git a/udev/Makefile.in b/udev/Makefile.in
+index 11635bb..49cf732 100644
+--- a/udev/Makefile.in
++++ b/udev/Makefile.in
+@@ -12,6 +12,7 @@
+ # Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ 
+ srcdir = @srcdir@
++sbindir = @sbindir@
+ top_srcdir = @top_srcdir@
+ top_builddir = @top_builddir@
+ 
+@@ -26,7 +27,7 @@ include $(top_builddir)/make.tmpl
+ vpath %.rules $(srcdir)
+ 
+ %.rules: %.rules.in
+-	$(SED) -e "s/(DM_DIR)/$(DM_DIR)/" $< >$@
++	$(SED) -e "s/(DM_DIR)/$(DM_DIR)/" -e "s|(sbindir)|$(sbindir)|" $< >$@
+ 
+ %_install: %.rules
+ 	$(INSTALL_DATA) -D $< $(udevdir)/$(<F)
diff --git a/pkgs/os-specific/linux/multipath-tools/default.nix b/pkgs/os-specific/linux/multipath-tools/default.nix
index b25321ca779c..90722d74ace1 100644
--- a/pkgs/os-specific/linux/multipath-tools/default.nix
+++ b/pkgs/os-specific/linux/multipath-tools/default.nix
@@ -22,8 +22,8 @@ stdenv.mkDerivation rec {
       substituteInPlace kpartx/kpartx.rules --replace /sbin/kpartx $out/sbin/kpartx
       substituteInPlace kpartx/kpartx_id --replace /sbin/dmsetup ${lvm2}/sbin/dmsetup
 
-      substituteInPlace libmultipath/defaults.h --replace /lib/udev/scsi_id ${udev}/libexec/scsi_id
-      substituteInPlace libmultipath/hwtable.c --replace /lib/udev/scsi_id ${udev}/libexec/scsi_id
+      substituteInPlace libmultipath/defaults.h --replace /lib/udev/scsi_id ${udev}/lib/udev/scsi_id
+      substituteInPlace libmultipath/hwtable.c --replace /lib/udev/scsi_id ${udev}/lib/udev/scsi_id
     '';
 
   meta = {
diff --git a/pkgs/os-specific/linux/udev/172.nix b/pkgs/os-specific/linux/udev/173.nix
index f8d7e1288f4b..ba96717e494a 100644
--- a/pkgs/os-specific/linux/udev/172.nix
+++ b/pkgs/os-specific/linux/udev/173.nix
@@ -4,11 +4,11 @@
 assert stdenv ? glibc;
 
 stdenv.mkDerivation rec {
-  name = "udev-172";
+  name = "udev-173";
 
   src = fetchurl {
     url = "mirror://kernel/linux/utils/kernel/hotplug/${name}.tar.bz2";
-    sha256 = "0smxggvhhilcqcsi98fmk0nngzy1x8v6ibas609zysgza74rr5dq";
+    sha256 = "1bxadi4bi11v8ipzj22wknv8hsb0wgdb99bx3w9w33rgl4aq78bh";
   };
 
   buildInputs = [ gperf pkgconfig glib acl libusb usbutils ];
@@ -16,33 +16,36 @@ stdenv.mkDerivation rec {
   configureFlags =
     ''
       --with-pci-ids-path=${pciutils}/share/pci.ids
-      --disable-introspection
+      --enable-udev_acl --enable-edd
+      --disable-introspection --libexecdir=$(out)/lib/udev
       --with-firmware-path=/root/test-firmware:/var/run/current-system/firmware
     '';
 
   # Workaround for the Linux kernel headers being too old.
   NIX_CFLAGS_COMPILE = "-DBTN_TRIGGER_HAPPY=0x2c0";
-    
+
   postInstall =
     ''
       # The path to rule_generator.functions in write_cd_rules and
       # write_net_rules is broken.  Also, don't store the mutable
       # persistant rules in /etc/udev/rules.d but in
       # /var/lib/udev/rules.d.
-      for i in $out/libexec/write_cd_rules $out/libexec/write_net_rules; do
+      for i in $out/lib/udev/write_cd_rules $out/lib/udev/write_net_rules; do
         substituteInPlace $i \
-          --replace /lib/udev $out/libexec \
+          --replace /lib/udev $out/lib/udev \
           --replace /etc/udev/rules.d /var/lib/udev/rules.d
       done
 
       # Don't set PATH to /bin:/sbin; won't work in NixOS.
-      sed -e '/PATH=/d' -i $out/libexec/rule_generator.functions
+      sed -e '/PATH=/d' -i $out/lib/udev/rule_generator.functions
 
-      ln -s $out/lib/ConsoleKit $out/etc/ConsoleKit
+      ln -sv $out/lib/ConsoleKit $out/etc/ConsoleKit
 
-      rm -rf $out/share/gtk-doc
+      rm -frv $out/share/gtk-doc
     '';
-  
+
+  patches = [ ./custom-rules.patch ];
+
   meta = {
     homepage = http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html;
     description = "Udev manages the /dev filesystem";
diff --git a/pkgs/os-specific/linux/udev/custom-rules.patch b/pkgs/os-specific/linux/udev/custom-rules.patch
new file mode 100644
index 000000000000..647691acfb16
--- /dev/null
+++ b/pkgs/os-specific/linux/udev/custom-rules.patch
@@ -0,0 +1,91 @@
+commit c49ec33ba0f1a7f11b188913bb4895360ced67f8
+Author: Yury G. Kudryashov <urkud.urkud@gmail.com>
+Date:   Tue Aug 16 16:28:56 2011 +0400
+
+    Upstream considers presence of rules_dir=... in udev.conf as a very special case.
+    In particular, they disable /dev/.udev/*. Re-enable it.
+
+diff --git a/udev/udev-rules.c b/udev/udev-rules.c
+index 6bf2726..c1ae1f3 100644
+--- a/udev/udev-rules.c
++++ b/udev/udev-rules.c
+@@ -1812,6 +1812,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
+ 	struct udev_list file_list;
+ 	struct udev_list_entry *file_loop;
+ 	struct token end_token;
++	char runpathrules[UTIL_PATH_SIZE];
+ 
+ 	rules = calloc(1, sizeof(struct udev_rules));
+ 	if (rules == NULL)
+@@ -1854,22 +1855,21 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
+ 	rules->trie_nodes_cur = 1;
+ 
+ 	if (udev_get_rules_path(udev) == NULL) {
+-		char filename[UTIL_PATH_SIZE];
+ 
+ 		/* /lib/udev -- default/package rules */
+ 		add_matching_files(udev, &file_list, LIBEXECDIR "/rules.d", ".rules");
+ 
+ 		/* /etc/udev -- system-specific/user/admin rules */
+ 		add_matching_files(udev, &file_list, SYSCONFDIR "/udev/rules.d", ".rules");
+-
+-		/* /run/udev -- throw-away/temporary rules */
+-		util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
+-		add_matching_files(udev, &file_list, filename, ".rules");
+ 	} else {
+ 		/* custom rules files location for testing */
+ 		add_matching_files(udev, &file_list, udev_get_rules_path(udev), ".rules");
+ 	}
+ 
++	/* /run/udev -- throw-away/temporary rules */
++	util_strscpyl(runpathrules, sizeof(runpathrules), udev_get_run_path(udev), "/rules.d", NULL);
++	add_matching_files(udev, &file_list, runpathrules, ".rules");
++
+ 	/* add all filenames to the string buffer */
+ 	udev_list_entry_foreach(file_loop, udev_list_get_entry(&file_list)) {
+ 		const char *filename = udev_list_entry_get_value(file_loop);
+diff --git a/udev/udevd.c b/udev/udevd.c
+index f1a31e7..45d10b6 100644
+--- a/udev/udevd.c
++++ b/udev/udevd.c
+@@ -1198,6 +1198,8 @@ int main(int argc, char *argv[])
+ 	struct epoll_event ep_ctrl, ep_inotify, ep_signal, ep_netlink, ep_worker;
+ 	struct udev_ctrl_connection *ctrl_conn = NULL;
+ 	int rc = 1;
++	char filename[UTIL_PATH_SIZE];
++	struct stat statbuf;
+ 
+ 	udev = udev_new();
+ 	if (udev == NULL)
+@@ -1480,23 +1482,21 @@ int main(int argc, char *argv[])
+ 		inotify_add_watch(fd_inotify, udev_get_rules_path(udev),
+ 				  IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+ 	} else {
+-		char filename[UTIL_PATH_SIZE];
+-		struct stat statbuf;
+ 
+ 		inotify_add_watch(fd_inotify, LIBEXECDIR "/rules.d",
+ 				  IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+ 		inotify_add_watch(fd_inotify, SYSCONFDIR "/udev/rules.d",
+ 				  IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
++	}
+ 
+-		/* watch dynamic rules directory */
+-		util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
+-		if (stat(filename, &statbuf) != 0) {
+-			util_create_path(udev, filename);
+-			mkdir(filename, 0755);
+-		}
+-		inotify_add_watch(fd_inotify, filename,
+-				  IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
++	/* watch dynamic rules directory */
++	util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/rules.d", NULL);
++	if (stat(filename, &statbuf) != 0) {
++		util_create_path(udev, filename);
++		mkdir(filename, 0755);
+ 	}
++	inotify_add_watch(fd_inotify, filename,
++			  IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+ 	udev_watch_restore(udev);
+ 
+ 	/* block and listen to all signals on signalfd */