gnu: bluez: Install 'org.bluez.obex.service' and fix '97-hid2hci.rules'.

Message ID 1466167141-8173-1-git-send-email-iyzsong@gmail.com
State New
Headers

Commit Message

宋文武 June 17, 2016, 12:39 p.m. UTC
  * gnu/packages/linux.scm (bluez)[arguments]: Add 'post-install' phase.
---
 gnu/packages/linux.scm | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)
  

Comments

Ludovic Courtès June 17, 2016, 3:19 p.m. UTC | #1
宋文武 <iyzsong@gmail.com> skribis:

> * gnu/packages/linux.scm (bluez)[arguments]: Add 'post-install' phase.

[...]

> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let* ((out        (assoc-ref outputs "out"))
> +                    (servicedir (string-append out "/share/dbus-1/services"))
> +                    (service    "obexd/src/org.bluez.obex.service")
> +                    (rule       (string-append
> +                                 out "/lib/udev/rules.d/97-hid2hci.rules")))
> +               ;; Install the obex dbus service file.
> +               (substitute* service
> +                 (("/bin/false")
> +                  (string-append out "/libexec/bluetooth/obexd")))

Why is it /bin/false by default?

Otherwise LGTM, thanks!

Ludo’.
  
=?utf-8?B?5a6L5paH5q2m?= June 18, 2016, 1:53 a.m. UTC | #2
ludo@gnu.org (Ludovic Courtès) writes:

> 宋文武 <iyzsong@gmail.com> skribis:
>
>> * gnu/packages/linux.scm (bluez)[arguments]: Add 'post-install' phase.
>
> [...]
>
>> +           (lambda* (#:key inputs outputs #:allow-other-keys)
>> +             (let* ((out        (assoc-ref outputs "out"))
>> +                    (servicedir (string-append out "/share/dbus-1/services"))
>> +                    (service    "obexd/src/org.bluez.obex.service")
>> +                    (rule       (string-append
>> +                                 out "/lib/udev/rules.d/97-hid2hci.rules")))
>> +               ;; Install the obex dbus service file.
>> +               (substitute* service
>> +                 (("/bin/false")
>> +                  (string-append out "/libexec/bluetooth/obexd")))
>
> Why is it /bin/false by default?
It has a 'SystemdService' field, and supposed to be bus-activatable by
the systemd user unit file.


Pushed, thanks!
  

Patch

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e71ecbe..16fd5d0 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -2429,7 +2429,28 @@  Bluetooth audio output devices like headphones or loudspeakers.")
                "--disable-systemd"
                ;; Install dbus/udev files to the correct location.
                (string-append "--with-dbusconfdir=" out "/etc")
-               (string-append "--with-udevdir=" out "/lib/udev")))))
+               (string-append "--with-udevdir=" out "/lib/udev")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'post-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out        (assoc-ref outputs "out"))
+                    (servicedir (string-append out "/share/dbus-1/services"))
+                    (service    "obexd/src/org.bluez.obex.service")
+                    (rule       (string-append
+                                 out "/lib/udev/rules.d/97-hid2hci.rules")))
+               ;; Install the obex dbus service file.
+               (substitute* service
+                 (("/bin/false")
+                  (string-append out "/libexec/bluetooth/obexd")))
+               (install-file service servicedir)
+               ;; Fix paths in the udev rule.
+               (substitute* rule
+                 (("hid2hci --method")
+                  (string-append out "/lib/udev/hid2hci --method"))
+                 (("/sbin/udevadm")
+                  (string-append (assoc-ref inputs "eudev") "/bin/udevadm")))
+               #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gnu-gettext)))