From 69f13c492280442dbd52b0e74c77700f522ab4af Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 18 Aug 2011 13:04:55 +0000 Subject: udev-173, patch svn path=/nixpkgs/branches/udev-173/; revision=28660 --- pkgs/os-specific/linux/multipath-tools/default.nix | 4 +- pkgs/os-specific/linux/udev/172.nix | 50 ------------ pkgs/os-specific/linux/udev/173.nix | 53 +++++++++++++ pkgs/os-specific/linux/udev/custom-rules.patch | 91 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +- 5 files changed, 148 insertions(+), 54 deletions(-) delete mode 100644 pkgs/os-specific/linux/udev/172.nix create mode 100644 pkgs/os-specific/linux/udev/173.nix create mode 100644 pkgs/os-specific/linux/udev/custom-rules.patch diff --git a/pkgs/os-specific/linux/multipath-tools/default.nix b/pkgs/os-specific/linux/multipath-tools/default.nix index b25321ca779..90722d74ace 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/172.nix deleted file mode 100644 index f8d7e1288f4..00000000000 --- a/pkgs/os-specific/linux/udev/172.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ stdenv, fetchurl, gperf, pkgconfig, glib, acl -, libusb, usbutils, pciutils }: - -assert stdenv ? glibc; - -stdenv.mkDerivation rec { - name = "udev-172"; - - src = fetchurl { - url = "mirror://kernel/linux/utils/kernel/hotplug/${name}.tar.bz2"; - sha256 = "0smxggvhhilcqcsi98fmk0nngzy1x8v6ibas609zysgza74rr5dq"; - }; - - buildInputs = [ gperf pkgconfig glib acl libusb usbutils ]; - - configureFlags = - '' - --with-pci-ids-path=${pciutils}/share/pci.ids - --disable-introspection - --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 - substituteInPlace $i \ - --replace /lib/udev $out/libexec \ - --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 - - ln -s $out/lib/ConsoleKit $out/etc/ConsoleKit - - rm -rf $out/share/gtk-doc - ''; - - 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/173.nix b/pkgs/os-specific/linux/udev/173.nix new file mode 100644 index 00000000000..ba96717e494 --- /dev/null +++ b/pkgs/os-specific/linux/udev/173.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, gperf, pkgconfig, glib, acl +, libusb, usbutils, pciutils }: + +assert stdenv ? glibc; + +stdenv.mkDerivation rec { + name = "udev-173"; + + src = fetchurl { + url = "mirror://kernel/linux/utils/kernel/hotplug/${name}.tar.bz2"; + sha256 = "1bxadi4bi11v8ipzj22wknv8hsb0wgdb99bx3w9w33rgl4aq78bh"; + }; + + buildInputs = [ gperf pkgconfig glib acl libusb usbutils ]; + + configureFlags = + '' + --with-pci-ids-path=${pciutils}/share/pci.ids + --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/lib/udev/write_cd_rules $out/lib/udev/write_net_rules; do + substituteInPlace $i \ + --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/lib/udev/rule_generator.functions + + ln -sv $out/lib/ConsoleKit $out/etc/ConsoleKit + + 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 00000000000..647691acfb1 --- /dev/null +++ b/pkgs/os-specific/linux/udev/custom-rules.patch @@ -0,0 +1,91 @@ +commit c49ec33ba0f1a7f11b188913bb4895360ced67f8 +Author: Yury G. Kudryashov +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 */ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3e7ad08989b..4fa4bad46cd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5848,8 +5848,8 @@ let }; udev145 = callPackage ../os-specific/linux/udev/145.nix { }; - udev172 = callPackage ../os-specific/linux/udev/172.nix { }; - udev = udev172; + udev173 = callPackage ../os-specific/linux/udev/173.nix { }; + udev = pkgs.udev173; udisks = callPackage ../os-specific/linux/udisks { }; -- cgit 1.4.1