summary refs log tree commit diff
path: root/pkgs/os-specific/linux/bluez/default.nix
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2017-09-18 20:25:02 +0200
committerFranz Pletz <fpletz@fnordicwalking.de>2017-09-18 21:19:15 +0200
commit94bbe7db22675e67386fe046eaa3d3d9d58e233a (patch)
treee79829547f240cecb6515003e3ad6190e4052680 /pkgs/os-specific/linux/bluez/default.nix
parentdadb16a57f6b13393d5f34d0e009ec0c2e50079b (diff)
downloadnixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar.gz
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar.bz2
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar.lz
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar.xz
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.tar.zst
nixpkgs-94bbe7db22675e67386fe046eaa3d3d9d58e233a.zip
bluez4: remove, unused and probably vulnerable
Diffstat (limited to 'pkgs/os-specific/linux/bluez/default.nix')
-rw-r--r--pkgs/os-specific/linux/bluez/default.nix86
1 files changed, 62 insertions, 24 deletions
diff --git a/pkgs/os-specific/linux/bluez/default.nix b/pkgs/os-specific/linux/bluez/default.nix
index 20b8d01db2d..f0a59f36e43 100644
--- a/pkgs/os-specific/linux/bluez/default.nix
+++ b/pkgs/os-specific/linux/bluez/default.nix
@@ -1,53 +1,91 @@
-{ stdenv, fetchurl, pkgconfig, dbus, glib, libusb, alsaLib, pythonPackages, makeWrapper
-, readline, libsndfile }:
+{ stdenv, fetchurl, pkgconfig, dbus, glib, alsaLib,
+  pythonPackages, readline, libsndfile, udev, libical,
+  systemd, enableWiimote ? false }:
 
 assert stdenv.isLinux;
 
-let
-  inherit (pythonPackages) python;
-  pythonpath = "${pythonPackages.dbus-python}/lib/${python.libPrefix}/site-packages:"
-    + "${pythonPackages.pygobject2}/lib/${python.libPrefix}/site-packages";
-in stdenv.mkDerivation rec {
-  name = "bluez-4.101";
-   
+stdenv.mkDerivation rec {
+  name = "bluez-5.47";
+
   src = fetchurl {
-    url = "mirror://kernel/linux/bluetooth/${name}.tar.gz";
-    sha256 = "11vldy255zkmmpj0g0a1m6dy9bzsmyd7vxy02cdfdw79ml888wsr";
+    url = "mirror://kernel/linux/bluetooth/${name}.tar.xz";
+    sha256 = "1j22hfjz0fp4pgclgz9mfcwjbr4wqgah3gd2qhfg4r6msmybyxfg";
   };
 
+  pythonPath = with pythonPackages;
+    [ dbus pygobject2 pygobject3 recursivePthLoader ];
+
   buildInputs =
-    [ pkgconfig dbus glib libusb alsaLib python makeWrapper
-      readline libsndfile
+    [ pkgconfig dbus glib alsaLib pythonPackages.python pythonPackages.wrapPython
+      readline libsndfile udev libical
       # Disables GStreamer; not clear what it gains us other than a
       # zillion extra dependencies.
-      # gstreamer gst-plugins-base 
+      # gstreamer gst-plugins-base
     ];
 
+  outputs = [ "out" "dev" "test" ];
+
+  patches = [ ./bluez-5.37-obexd_without_systemd-1.patch ];
+
+  preConfigure = ''
+      substituteInPlace tools/hid2hci.rules --replace /sbin/udevadm ${systemd}/bin/udevadm
+      substituteInPlace tools/hid2hci.rules --replace "hid2hci " "$out/lib/udev/hid2hci "
+    '';
+
   configureFlags = [
     "--localstatedir=/var"
+    "--enable-library"
     "--enable-cups"
-    "--with-systemdunitdir=$(out)/etc/systemd/system"
-    ];
+    "--enable-pie"
+    "--with-dbusconfdir=$(out)/etc"
+    "--with-dbussystembusdir=$(out)/share/dbus-1/system-services"
+    "--with-dbussessionbusdir=$(out)/share/dbus-1/services"
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+    "--with-systemduserunitdir=$(out)/etc/systemd/user"
+    "--with-udevdir=$(out)/lib/udev"
+    ] ++
+    stdenv.lib.optional enableWiimote [ "--enable-wiimote" ];
 
   # Work around `make install' trying to create /var/lib/bluetooth.
   installFlags = "statedir=$(TMPDIR)/var/lib/bluetooth";
 
   makeFlags = "rulesdir=$(out)/lib/udev/rules.d";
 
-  /* !!! Move these into a separate package to prevent Bluez from
-    depending on Python etc. */
+  # FIXME: Move these into a separate package to prevent Bluez from
+  # depending on Python etc.
   postInstall = ''
-    pushd test
-    for a in simple-agent test-adapter test-device test-input; do
-      cp $a $out/bin/bluez-$a
-      wrapProgram $out/bin/bluez-$a --prefix PYTHONPATH : ${pythonpath}
+    mkdir -p $test/test
+    cp -a test $test
+    pushd $test/test
+    for a in \
+            simple-agent \
+            test-adapter \
+            test-device \
+            test-thermometer \
+            list-devices \
+            monitor-bluetooth \
+            ; do
+      ln -s ../test/$a $out/bin/bluez-$a
     done
     popd
+    wrapPythonProgramsIn $test/test "$test/test $pythonPath"
+
+    # for bluez4 compatibility for NixOS
+    mkdir $out/sbin
+    ln -s ../libexec/bluetooth/bluetoothd $out/sbin/bluetoothd
+    ln -s ../libexec/bluetooth/obexd $out/sbin/obexd
+
+    # Add extra configuration
+    mkdir $out/etc/bluetooth
+    ln -s /etc/bluetooth/main.conf $out/etc/bluetooth/main.conf
   '';
 
-  meta = {
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
     homepage = http://www.bluez.org/;
+    repositories.git = https://git.kernel.org/pub/scm/bluetooth/bluez.git;
     description = "Bluetooth support for Linux";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = platforms.linux;
   };
 }