ee9c068b0c
Note that systemd no longer depends on dbus, so we're rid of the cyclic dependency problem between systemd and dbus. This commit incorporates from wkennington's systemd branch (203dcff45002a63f6be75c65f1017021318cc839, 1f842558a95947261ece66f707bfa24faf5a9d88).
106 lines
3.2 KiB
Nix
106 lines
3.2 KiB
Nix
{ stdenv, fetchurl, pkgconfig, autoconf, automake, libtool
|
|
, expat, systemd, glib, dbus_glib, python
|
|
, libX11, libICE, libSM, useX11 ? (stdenv.isLinux || stdenv.isDarwin) }:
|
|
|
|
let
|
|
version = "1.8.0";
|
|
sha256 = "04qbsyw92279hfkwic5h6jc5999p87qsaqqgc6zcqddmh9r8r7vn";
|
|
|
|
inherit (stdenv) lib;
|
|
|
|
buildInputsX = lib.optionals useX11 [ libX11 libICE libSM ];
|
|
|
|
# also other parts than "libs" need this statically linked lib
|
|
makeInternalLib = "(cd dbus && make libdbus-internal.la)";
|
|
|
|
systemdOrEmpty = lib.optional stdenv.isLinux systemd;
|
|
|
|
# A generic builder for individual parts (subdirs) of D-Bus
|
|
dbus_drv = name: subdirs: merge: stdenv.mkDerivation (lib.mergeAttrsByFuncDefaultsClean [{
|
|
|
|
name = "dbus-${name}-${version}";
|
|
|
|
src = fetchurl {
|
|
url = "http://dbus.freedesktop.org/releases/dbus/dbus-${version}.tar.gz";
|
|
inherit sha256;
|
|
};
|
|
|
|
patches = [
|
|
./ignore-missing-includedirs.patch
|
|
./ucred-dirty-hack.patch
|
|
./no-create-dirs.patch
|
|
]
|
|
++ lib.optional (stdenv.isSunOS || stdenv.isLinux) ./implement-getgrouplist.patch
|
|
;
|
|
|
|
# build only the specified subdirs
|
|
postPatch = "sed '/SUBDIRS/s/=.*/=" + subdirs + "/' -i Makefile.am\n"
|
|
# use already packaged libdbus instead of trying to build it again
|
|
+ lib.optionalString (name != "libs") ''
|
|
for mfile in */Makefile.am; do
|
|
sed 's,\$(top_builddir)/dbus/\(libdbus-[0-9]\),${libs}/lib/\1,g' -i "$mfile"
|
|
done
|
|
'';
|
|
|
|
nativeBuildInputs = [ pkgconfig ];
|
|
propagatedBuildInputs = [ expat ];
|
|
buildInputs = [ autoconf automake libtool ]; # ToDo: optional selinux?
|
|
|
|
preConfigure = ''
|
|
patchShebangs .
|
|
substituteInPlace tools/Makefile.am --replace 'install-localstatelibDATA:' 'disabled:'
|
|
autoreconf -fi
|
|
'';
|
|
|
|
configureFlags = [
|
|
"--localstatedir=/var"
|
|
"--sysconfdir=/etc"
|
|
"--with-session-socket-dir=/tmp"
|
|
"--with-systemdsystemunitdir=$(out)/etc/systemd/system"
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
doCheck = true;
|
|
|
|
installFlags = "sysconfdir=$(out)/etc";
|
|
|
|
} merge ]);
|
|
|
|
libs = dbus_drv "libs" "dbus" {
|
|
# Enable X11 autolaunch support in libdbus. This doesn't actually depend on X11
|
|
# (it just execs dbus-launch in dbus.tools), contrary to what the configure script demands.
|
|
NIX_CFLAGS_COMPILE = "-DDBUS_ENABLE_X11_AUTOLAUNCH=1";
|
|
buildInputs = [ systemdOrEmpty ];
|
|
};
|
|
|
|
|
|
attrs = rec {
|
|
# If you change much fix indentation
|
|
|
|
# This package has been split because most applications only need dbus.lib
|
|
# which serves as an interface to a *system-wide* daemon,
|
|
# see e.g. http://en.wikipedia.org/wiki/D-Bus#Architecture .
|
|
|
|
inherit libs;
|
|
|
|
tools = dbus_drv "tools" "tools" {
|
|
configureFlags = [ "--with-dbus-daemondir=${daemon}/bin" ];
|
|
buildInputs = buildInputsX ++ systemdOrEmpty ++ [ libs daemon ];
|
|
NIX_CFLAGS_LINK =
|
|
stdenv.lib.optionalString (!stdenv.isDarwin) "-Wl,--as-needed "
|
|
+ "-ldbus-1";
|
|
|
|
meta.platforms = stdenv.lib.platforms.all;
|
|
};
|
|
|
|
daemon = dbus_drv "daemon" "bus" {
|
|
preBuild = makeInternalLib;
|
|
buildInputs = systemdOrEmpty;
|
|
};
|
|
|
|
docs = dbus_drv "docs" "doc" {
|
|
postInstall = ''rm -r "$out/lib"'';
|
|
};
|
|
};
|
|
in attrs.libs // attrs
|