diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2015-10-03 20:52:03 +0200 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2015-10-04 10:03:53 +0200 |
commit | b44d846990d779f7201f114076a2f2bcacdc91c5 (patch) | |
tree | 9a6f766bfb04765e1095be811aab38b94f88bd5d /pkgs/os-specific | |
parent | ec7a4ddd92e19e0084a07448671cd79d974cd818 (diff) | |
download | nixpkgs-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.nix | 4 | ||||
-rw-r--r-- | pkgs/os-specific/linux/lvm2/default.nix | 6 | ||||
-rw-r--r-- | pkgs/os-specific/linux/multipath-tools/default.nix | 6 | ||||
-rw-r--r-- | pkgs/os-specific/linux/systemd/default.nix | 24 | ||||
-rw-r--r-- | pkgs/os-specific/linux/systemd/hwdb-location.diff | 19 | ||||
-rw-r--r-- | pkgs/os-specific/linux/systemd/libudev.nix | 19 |
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 + ''; +} + |