summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-10-03 20:52:03 +0200
committerVladimír Čunát <vcunat@gmail.com>2015-10-04 10:03:53 +0200
commitb44d846990d779f7201f114076a2f2bcacdc91c5 (patch)
tree9a6f766bfb04765e1095be811aab38b94f88bd5d /pkgs/os-specific
parentec7a4ddd92e19e0084a07448671cd79d974cd818 (diff)
downloadnixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar.gz
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar.bz2
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar.lz
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar.xz
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.tar.zst
nixpkgs-b44d846990d779f7201f114076a2f2bcacdc91c5.zip
udev: complete rework
- systemd puts all into one output now (except for man),
  because I wasn't able to fix all systemd/udev refernces
  for NixOS to work well
- libudev is now by default *copied* into another path,
  which is what most packages will use as build input :-)
- pkgs.udev = [ libudev.out libudev.dev ]; because there are too many
  references that just put `udev` into build inputs (to rewrite them all),
  also this made "${udev}/foo" fail at *evaluation* time
  so it's easier to catch and change to something more specific
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/drbd/default.nix4
-rw-r--r--pkgs/os-specific/linux/lvm2/default.nix6
-rw-r--r--pkgs/os-specific/linux/multipath-tools/default.nix6
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix24
-rw-r--r--pkgs/os-specific/linux/systemd/hwdb-location.diff19
-rw-r--r--pkgs/os-specific/linux/systemd/libudev.nix19
6 files changed, 62 insertions, 16 deletions
diff --git a/pkgs/os-specific/linux/drbd/default.nix b/pkgs/os-specific/linux/drbd/default.nix
index 3491cf71391..95c851da30f 100644
--- a/pkgs/os-specific/linux/drbd/default.nix
+++ b/pkgs/os-specific/linux/drbd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, flex, udev, perl }:
+{ stdenv, fetchurl, flex, systemd, perl }:
 
 assert stdenv.isLinux;
 
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   preConfigure =
     ''
-      export PATH=${udev.out}/sbin:$PATH
+      export PATH=${systemd.udev.bin}/sbin:$PATH
       substituteInPlace user/Makefile.in --replace /sbin/ $out/sbin/
       substituteInPlace user/legacy/Makefile.in \
         --replace /sbin/ $out/sbin/ \
diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix
index 2ec7ff5189d..32a8ba4ad46 100644
--- a/pkgs/os-specific/linux/lvm2/default.nix
+++ b/pkgs/os-specific/linux/lvm2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, udev, utillinux, coreutils, enable_dmeventd ? false }:
+{ stdenv, fetchurl, pkgconfig, systemd, libudev, utillinux, coreutils, enable_dmeventd ? false }:
 
 let
   version = "2.02.132";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
   ] ++ stdenv.lib.optional enable_dmeventd " --enable-dmeventd";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ udev ];
+  buildInputs = [ libudev ];
 
   preConfigure =
     ''
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
         --replace /usr/bin/tr ${coreutils}/bin/tr
       substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
         --replace /usr/sbin/lvm $out/sbin/lvm \
-        --replace /usr/bin/udevadm ${udev.out}/bin/udevadm
+        --replace /usr/bin/udevadm ${systemd.udev.bin}/bin/udevadm
 
       sed -i /DEFAULT_SYS_DIR/d Makefile.in
       sed -i /DEFAULT_PROFILE_DIR/d conf/Makefile.in
diff --git a/pkgs/os-specific/linux/multipath-tools/default.nix b/pkgs/os-specific/linux/multipath-tools/default.nix
index 03c86dec4a0..e2daa9199a9 100644
--- a/pkgs/os-specific/linux/multipath-tools/default.nix
+++ b/pkgs/os-specific/linux/multipath-tools/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lvm2, libaio, gzip, readline, udev }:
+{ stdenv, fetchurl, lvm2, libaio, gzip, readline, systemd }:
 
 stdenv.mkDerivation rec {
   name = "multipath-tools-0.4.9";
@@ -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.libudev}/lib/udev/scsi_id
-      substituteInPlace libmultipath/hwtable.c --replace /lib/udev/scsi_id ${udev.libudev}/lib/udev/scsi_id
+      substituteInPlace libmultipath/defaults.h --replace /lib/udev/scsi_id ${systemd.udev.lib}/lib/udev/scsi_id
+      substituteInPlace libmultipath/hwtable.c --replace /lib/udev/scsi_id ${systemd.udev.lib}/lib/udev/scsi_id
     '';
 
   meta = {
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index ca0a4ba23b4..d6827c81b28 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -22,10 +22,15 @@ stdenv.mkDerivation rec {
     sha256 = "07sc1x43j60d5jnps0d7bfka10fihnpgkdrfrh9iskgmc9qangjb";
   };
 
+  patches = [ ./hwdb-location.diff ];
+
+  /* gave up for now!
   outputs = [ "out" "libudev" "doc" ]; # TODO: "dev"
   # note: there are many references to ${systemd}/...
   outputDev = "out";
   propagatedOutputs = "libudev";
+  */
+  outputs = [ "out" "man" ];
 
   buildInputs =
     [ linuxHeaders pkgconfig intltool gperf libcap kmod xz pam acl
@@ -88,24 +93,26 @@ stdenv.mkDerivation rec {
           --replace /sbin/fsck ${utillinux.bin}/sbin/fsck \
           --replace /bin/echo ${coreutils}/bin/echo \
           --replace /bin/cat ${coreutils}/bin/cat \
-          --replace /sbin/sulogin ${utillinux}/sbin/sulogin \
+          --replace /sbin/sulogin ${utillinux.bin}/sbin/sulogin \
           --replace /usr/lib/systemd/systemd-fsck $out/lib/systemd/systemd-fsck
       done
 
       substituteInPlace src/journal/catalog.c \
         --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/
 
-      export NIX_CFLAGS_LINK+=" -Wl,-rpath,$libudev/lib"
-
       configureFlagsArray+=("--with-ntp-servers=0.nixos.pool.ntp.org 1.nixos.pool.ntp.org 2.nixos.pool.ntp.org 3.nixos.pool.ntp.org")
+
+      #export NIX_CFLAGS_LINK+=" -Wl,-rpath,$libudev/lib"
     '';
 
+  /*
   makeFlags = [
     "udevlibexecdir=$(libudev)/lib/udev"
     # udev rules refer to $out, and anything but libs should probably go to $out
     "udevrulesdir=$(out)/lib/udev/rules.d"
     "udevhwdbdir=$(out)/lib/udev/hwdb.d"
   ];
+  */
 
 
   PYTHON_BINARY = "${coreutils}/bin/env python"; # don't want a build time dependency on Python
@@ -124,8 +131,6 @@ stdenv.mkDerivation rec {
       "-USYSTEMD_BINARY_PATH" "-DSYSTEMD_BINARY_PATH=\"/run/current-system/systemd/lib/systemd/systemd\""
     ];
 
-  enableParallelBuilding = true;
-
   installFlags =
     [ "localstatedir=$(TMPDIR)/var"
       "sysconfdir=$(out)/etc"
@@ -167,7 +172,8 @@ stdenv.mkDerivation rec {
 
       # "kernel-install" shouldn't be used on NixOS.
       find $out -name "*kernel-install*" -exec rm {} \;
-
+    ''; # */
+  /*
       # Move lib(g)udev to a separate output. TODO: maybe split them up
       #   to avoid libudev pulling glib
       mkdir -p "$libudev/lib"
@@ -179,8 +185,10 @@ stdenv.mkDerivation rec {
       for i in "$out"/lib/pkgconfig/{libudev,gudev-1.0}.pc; do
         substituteInPlace $i --replace "libdir=$out" "libdir=$libudev"
       done
-    ''; # */
+  */
 
+  enableParallelBuilding = true;
+  /*
   # some libs fail to link to liblzma and/or libffi
   postFixup = let extraLibs = stdenv.lib.makeLibraryPath [ xz.out libffi.out zlib.out ];
     in ''
@@ -188,6 +196,7 @@ stdenv.mkDerivation rec {
         patchelf --set-rpath `patchelf --print-rpath "$f"`':${extraLibs}' "$f"
       done
     '';
+  */
 
   # The interface version prevents NixOS from switching to an
   # incompatible systemd at runtime.  (Switching across reboots is
@@ -205,4 +214,3 @@ stdenv.mkDerivation rec {
   };
 }
 
-
diff --git a/pkgs/os-specific/linux/systemd/hwdb-location.diff b/pkgs/os-specific/linux/systemd/hwdb-location.diff
new file mode 100644
index 00000000000..31e7a027f50
--- /dev/null
+++ b/pkgs/os-specific/linux/systemd/hwdb-location.diff
@@ -0,0 +1,19 @@
+diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c
+index 06c9831..e74825c 100644
+--- a/src/libsystemd/sd-hwdb/sd-hwdb.c
++++ b/src/libsystemd/sd-hwdb/sd-hwdb.c
+@@ -268,13 +268,8 @@ static int trie_search_f(sd_hwdb *hwdb, const char *search) {
+ }
+ 
+ static const char hwdb_bin_paths[] =
+-        "/etc/systemd/hwdb/hwdb.bin\0"
+         "/etc/udev/hwdb.bin\0"
+-        "/usr/lib/systemd/hwdb/hwdb.bin\0"
+-#ifdef HAVE_SPLIT_USR
+-        "/lib/systemd/hwdb/hwdb.bin\0"
+-#endif
+-        UDEVLIBEXECDIR "/hwdb.bin\0";
++        ;
+ 
+ _public_ int sd_hwdb_new(sd_hwdb **ret) {
+         _cleanup_hwdb_unref_ sd_hwdb *hwdb = NULL;
diff --git a/pkgs/os-specific/linux/systemd/libudev.nix b/pkgs/os-specific/linux/systemd/libudev.nix
new file mode 100644
index 00000000000..0fe45aee916
--- /dev/null
+++ b/pkgs/os-specific/linux/systemd/libudev.nix
@@ -0,0 +1,19 @@
+{ stdenv, systemd }:
+
+stdenv.mkDerivation {
+  name = "libudev-${systemd.version}";
+
+  unpackPhase = ":";
+  outputs = [ "dev" "out" ];
+  installPhase = ''
+    mkdir -p "$out/lib" "$dev/lib/pkgconfig" "$dev/include"
+    cp -P "${systemd}"/lib/libudev.* "$out/lib/"
+    cp -P "${systemd}"/lib/pkgconfig/libudev.pc "$dev/lib/pkgconfig/"
+    cp -P "${systemd}"/include/libudev.h "$dev/include/"
+
+    substituteInPlace "$dev"/lib/pkgconfig/*.pc \
+      --replace "${systemd}" "$out"
+    sed "/^includedir=/cincludedir=$dev/include" -i "$dev"/lib/pkgconfig/*.pc
+  '';
+}
+