From 69f13c492280442dbd52b0e74c77700f522ab4af Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 18 Aug 2011 13:04:55 +0000 Subject: [PATCH 1/4] udev-173, patch svn path=/nixpkgs/branches/udev-173/; revision=28660 --- .../linux/multipath-tools/default.nix | 4 +- .../linux/udev/{172.nix => 173.nix} | 23 +++-- .../os-specific/linux/udev/custom-rules.patch | 91 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +- 4 files changed, 108 insertions(+), 14 deletions(-) rename pkgs/os-specific/linux/udev/{172.nix => 173.nix} (69%) 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/173.nix similarity index 69% rename from pkgs/os-specific/linux/udev/172.nix rename to pkgs/os-specific/linux/udev/173.nix index f8d7e1288f4..ba96717e494 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 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 { }; From 8e35598f6bfbba10180c4996edc81c36926c7ea6 Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Thu, 18 Aug 2011 13:05:03 +0000 Subject: [PATCH 2/4] lvm-2.02.87, patch udev rules svn path=/nixpkgs/branches/udev-173/; revision=28661 --- pkgs/os-specific/linux/lvm2/default.nix | 13 +++--- pkgs/os-specific/linux/lvm2/purity.patch | 55 ++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 pkgs/os-specific/linux/lvm2/purity.patch diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix index ae4b962715c..037a3d227c4 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 00000000000..8446e8e9ee9 --- /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)/$( Date: Wed, 24 Aug 2011 17:00:17 +0000 Subject: [PATCH 3/4] GNU dbm 1.9.1. svn path=/nixpkgs/trunk/; revision=28791 --- pkgs/development/libraries/gdbm/default.nix | 40 ++++++++++++++----- pkgs/development/libraries/gdbm/install.patch | 29 -------------- 2 files changed, 29 insertions(+), 40 deletions(-) delete mode 100644 pkgs/development/libraries/gdbm/install.patch diff --git a/pkgs/development/libraries/gdbm/default.nix b/pkgs/development/libraries/gdbm/default.nix index 448fd04edd8..807e6a6a2a8 100644 --- a/pkgs/development/libraries/gdbm/default.nix +++ b/pkgs/development/libraries/gdbm/default.nix @@ -1,22 +1,40 @@ -{ stdenv, fetchurl, automake }: +{ stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "gdbm-1.8.3"; + name = "gdbm-1.9.1"; + src = fetchurl { url = "mirror://gnu/gdbm/${name}.tar.gz"; - sha256 = "1j8x51xc71di1fx23sl22n5ghlqxl9a57sxri82l12z2l8w06d6c"; + sha256 = "1vcs39nhvwyicjfx4qc17k54n22azla5yjr9yachcavp6wk8a9b0"; }; - patches = [ ./install.patch ]; - - # The fuloong2f is not supported by gdbm 1.8.3 still - preConfigure = '' - cp ${automake}/share/automake*/config.{sub,guess} . - ''; + doCheck = true; meta = { - description = "GNU DBM key/value database library"; + description = "GNU dbm key/value database library"; + + longDescription = + '' GNU dbm (or GDBM, for short) is a library of database functions that + use extensible hashing and work similar to the standard UNIX dbm. + These routines are provided to a programmer needing to create and + manipulate a hashed database. + + The basic use of GDBM is to store key/data pairs in a data file. + Each key must be unique and each key is paired with only one data + item. + + The library provides primitives for storing key/data pairs, + searching and retrieving the data by its key and deleting a key + along with its data. It also support sequential iteration over all + key/data pairs in a database. + + For compatibility with programs using old UNIX dbm function, the + package also provides traditional dbm and ndbm interfaces. + ''; + homepage = http://www.gnu.org/software/gdbm/; - license = "GPLv2+"; + license = "GPLv3+"; + platforms = stdenv.lib.platforms.all; + maintainers = [ stdenv.lib.maintainers.ludo ]; }; } diff --git a/pkgs/development/libraries/gdbm/install.patch b/pkgs/development/libraries/gdbm/install.patch deleted file mode 100644 index 81afe020b7b..00000000000 --- a/pkgs/development/libraries/gdbm/install.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- gdbm-1.8.3/Makefile.in 2002-10-08 18:09:12.000000000 +0200 -+++ gdbm-1.8.3/Makefile.in 2008-04-07 01:15:58.000000000 +0200 -@@ -131,11 +131,11 @@ install: libgdbm.la gdbm.h gdbm.info - $(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \ - $(INSTALL_ROOT)$(infodir) - $(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \ -+ $(INSTALL_DATA) gdbm.h \ - $(INSTALL_ROOT)$(includedir)/gdbm.h -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \ -+ $(INSTALL_DATA) $(srcdir)/gdbm.3 \ - $(INSTALL_ROOT)$(man3dir)/gdbm.3 -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \ -+ $(INSTALL_DATA) $(srcdir)/gdbm.info \ - $(INSTALL_ROOT)$(infodir)/gdbm.info - - install-compat: -@@ -143,9 +143,9 @@ install-compat: - $(INSTALL_ROOT)$(includedir) - $(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \ - $(INSTALL_ROOT)$(libdir)/libgdbm_compat.la -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \ -+ $(INSTALL_DATA)) $(srcdir)/dbm.h \ - $(INSTALL_ROOT)$(includedir)/dbm.h -- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \ -+ $(INSTALL_DATA)) $(srcdir)/ndbm.h \ - $(INSTALL_ROOT)$(includedir)/ndbm.h - - #libgdbm.a: $(OBJS) gdbm.h From 7101fbff89e1b2b0917a980a164e3c39748f754b Mon Sep 17 00:00:00 2001 From: "Yury G. Kudryashov" Date: Wed, 24 Aug 2011 20:41:02 +0000 Subject: [PATCH 4/4] There is no pkgs.xfce4 svn path=/nixpkgs/trunk/; revision=28798 --- pkgs/top-level/release.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 7c415fa445b..49c2279a649 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -566,7 +566,7 @@ with (import ./release-lib.nix); xwininfo = linux; }; - xfce4 = { + xfce = { gtk_xfce_engine = linux; mousepad = linux; ristretto = linux;