diff --git a/.bluez.metadata b/.bluez.metadata index 71ea444..a6e8e36 100644 --- a/.bluez.metadata +++ b/.bluez.metadata @@ -1 +1 @@ -2ba46754eb2d79c4d491eb24c9883355324cd08a SOURCES/bluez-4.101.tar.gz +0e378976175b08a19b1232f2af2e83cebee572bd SOURCES/bluez-5.23.tar.xz diff --git a/.gitignore b/.gitignore index a5d6495..08624cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/bluez-4.101.tar.gz +SOURCES/bluez-5.23.tar.xz diff --git a/SOURCES/0001-Activate-the-Socket-Mobile-CF-kit.patch b/SOURCES/0001-Activate-the-Socket-Mobile-CF-kit.patch deleted file mode 100644 index d2f9aef..0000000 --- a/SOURCES/0001-Activate-the-Socket-Mobile-CF-kit.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9c6f914530c3873e88b55e3f7c18ce2b8b533e20 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Thu, 10 Jan 2013 09:14:33 +0100 -Subject: [PATCH] Activate the Socket Mobile CF kit - -https://bugzilla.redhat.com/show_bug.cgi?id=498756 ---- - scripts/bluetooth-serial.rules | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/scripts/bluetooth-serial.rules b/scripts/bluetooth-serial.rules -index 072335f..f6284ff 100644 ---- a/scripts/bluetooth-serial.rules -+++ b/scripts/bluetooth-serial.rules -@@ -33,3 +33,7 @@ SUBSYSTEM=="tty", SUBSYSTEMS=="pcmcia", ATTRS{prod_id1}=="PCMCIA", ATTRS{prod_id - - # CC&C BT0100M - SUBSYSTEM=="tty", SUBSYSTEMS=="pcmcia", ATTRS{prod_id1}=="Bluetooth BT0100M", ENV{HCIOPTS}="bcsp 115200", RUN+="bluetooth_serial" -+ -+# SocketMobile CF Connection Kit -+SUBSYSTEM=="tty", SUBSYSTEMS=="pcmcia", ATTRS{prod_id1}=="Socket", ATTRS{prod_id2}=="CF+ Personal Network Card Rev 2.5", ENV{HCIOPTS}="socket", RUN+="bluetooth_serial" -+ --- -1.8.0.1 - diff --git a/SOURCES/0001-Add-sixaxis-cable-pairing-plugin.patch b/SOURCES/0001-Add-sixaxis-cable-pairing-plugin.patch deleted file mode 100644 index b20c9c8..0000000 --- a/SOURCES/0001-Add-sixaxis-cable-pairing-plugin.patch +++ /dev/null @@ -1,554 +0,0 @@ -From 64f9449656dbbb718d53a54ed8e7904e289280ec Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Fri, 30 Dec 2011 12:34:29 +0100 -Subject: [PATCH] Add sixaxis cable-pairing plugin - -Implement the old "sixpair" using libudev and libusb-1.0. - -When a Sixaxis device is plugged in, events are filtered, and -the device is selected, poked around to set the default Bluetooth -address, and added to the database of the current default adapter. ---- - Makefile.am | 9 +- - acinclude.m4 | 16 +++ - configure.ac | 1 + - plugins/cable.c | 382 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/adapter.c | 19 +++ - src/adapter.h | 3 + - 6 files changed, 428 insertions(+), 2 deletions(-) - create mode 100644 plugins/cable.c - -diff --git a/Makefile.am b/Makefile.am -index 53fcbe9..f831a72 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -238,6 +238,11 @@ builtin_sources += thermometer/main.c \ - endif - - -+if CABLE -+builtin_modules += cable -+builtin_sources += plugins/cable.c -+endif -+ - builtin_modules += hciops mgmtops - builtin_sources += plugins/hciops.c plugins/mgmtops.c - -@@ -306,7 +311,7 @@ src_bluetoothd_SOURCES = $(gdbus_sources) $(builtin_sources) \ - src/event.h src/event.c \ - src/oob.h src/oob.c src/eir.h src/eir.c - src_bluetoothd_LDADD = lib/libbluetooth-private.la @GLIB_LIBS@ @DBUS_LIBS@ \ -- -ldl -lrt -+ @CABLE_LIBS@ -ldl -lrt - src_bluetoothd_LDFLAGS = $(AM_LDFLAGS) -Wl,--export-dynamic \ - -Wl,--version-script=$(srcdir)/src/bluetooth.ver - -@@ -428,7 +433,7 @@ EXTRA_DIST += doc/manager-api.txt \ - - AM_YFLAGS = -d - --AM_CFLAGS += @DBUS_CFLAGS@ @GLIB_CFLAGS@ -+AM_CFLAGS += @DBUS_CFLAGS@ @GLIB_CFLAGS@ @CABLE_CFLAGS@ - - INCLUDES = -I$(builddir)/lib -I$(builddir)/src -I$(srcdir)/src \ - -I$(srcdir)/audio -I$(srcdir)/sbc -I$(srcdir)/gdbus \ -diff --git a/acinclude.m4 b/acinclude.m4 -index 6505ad3..3f59989 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -139,6 +139,12 @@ AC_DEFUN([AC_PATH_UDEV], [ - AC_SUBST(UDEV_LIBS) - ]) - -+AC_DEFUN([AC_PATH_CABLE], [ -+ PKG_CHECK_MODULES(CABLE, libudev libusb-1.0, cable_found=yes, cable_found=no) -+ AC_SUBST(CABLE_CFLAGS) -+ AC_SUBST(CABLE_LIBS) -+]) -+ - AC_DEFUN([AC_PATH_SNDFILE], [ - PKG_CHECK_MODULES(SNDFILE, sndfile, sndfile_found=yes, sndfile_found=no) - AC_SUBST(SNDFILE_CFLAGS) -@@ -176,6 +182,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [ - sndfile_enable=${sndfile_found} - hal_enable=no - usb_enable=${usb_found} -+ cable_enable=${cable_found} - alsa_enable=${alsa_found} - gstreamer_enable=${gstreamer_found} - audio_enable=yes -@@ -265,6 +272,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [ - usb_enable=${enableval} - ]) - -+ AC_ARG_ENABLE(cable, AC_HELP_STRING([--enable-cable], [enable DeviceKit support]), [ -+ cable_enable=${enableval} -+ ]) -+ - AC_ARG_ENABLE(tools, AC_HELP_STRING([--enable-tools], [install Bluetooth utilities]), [ - tools_enable=${enableval} - ]) -@@ -366,6 +377,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [ - AC_DEFINE(HAVE_LIBUSB, 1, [Define to 1 if you have USB library.]) - fi - -+ if (test "${cable_enable}" = "yes" && test "${cable_found}" = "yes"); then -+ AC_DEFINE(HAVE_CABLE, 1, [Define to 1 if you have libcable.]) -+ fi -+ - AM_CONDITIONAL(SNDFILE, test "${sndfile_enable}" = "yes" && test "${sndfile_found}" = "yes") - AM_CONDITIONAL(USB, test "${usb_enable}" = "yes" && test "${usb_found}" = "yes") - AM_CONDITIONAL(SBC, test "${alsa_enable}" = "yes" || test "${gstreamer_enable}" = "yes" || -@@ -398,4 +413,5 @@ AC_DEFUN([AC_ARG_BLUEZ], [ - AM_CONDITIONAL(DBUSOOBPLUGIN, test "${dbusoob_enable}" = "yes") - AM_CONDITIONAL(WIIMOTEPLUGIN, test "${wiimote_enable}" = "yes") - AM_CONDITIONAL(GATTMODULES, test "${gatt_enable}" = "yes") -+ AM_CONDITIONAL(CABLE, test "${cable_enable}" = "yes" && test "${cable_found}" = "yes") - ]) -diff --git a/configure.ac b/configure.ac -index 48b181e..45a4b15 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -46,6 +46,7 @@ AC_PATH_GSTREAMER - AC_PATH_USB - AC_PATH_UDEV - AC_PATH_SNDFILE -+AC_PATH_CABLE - AC_PATH_OUI - AC_PATH_READLINE - AC_PATH_CHECK -diff --git a/plugins/cable.c b/plugins/cable.c -new file mode 100644 -index 0000000..fe758db ---- /dev/null -+++ b/plugins/cable.c -@@ -0,0 +1,382 @@ -+/* -+ * -+ * BlueZ - Bluetooth protocol stack for Linux -+ * -+ * Copyright (C) 2009 Bastien Nocera -+ * -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE 1 -+#include -+#include -+#include -+#include -+#include -+ -+#include "plugin.h" -+#include "log.h" -+ -+#include "adapter.h" -+#include "manager.h" -+#include "device.h" -+ -+#include "storage.h" -+#include "sdp_lib.h" -+ -+/* Vendor and product ID for the Sixaxis PS3 controller */ -+#define VENDOR 0x054c -+#define PRODUCT 0x0268 -+#define SIXAXIS_PNP_RECORD "3601920900000A000100000900013503191124090004350D35061901000900113503190011090006350909656E09006A0901000900093508350619112409010009000D350F350D350619010009001335031900110901002513576972656C65737320436F6E74726F6C6C65720901012513576972656C65737320436F6E74726F6C6C6572090102251B536F6E7920436F6D707574657220456E7465727461696E6D656E740902000901000902010901000902020800090203082109020428010902052801090206359A35980822259405010904A101A102850175089501150026FF00810375019513150025013500450105091901291381027501950D0600FF8103150026FF0005010901A10075089504350046FF0009300931093209358102C0050175089527090181027508953009019102750895300901B102C0A1028502750895300901B102C0A10285EE750895300901B102C0A10285EF750895300901B102C0C0090207350835060904090901000902082800090209280109020A280109020B09010009020C093E8009020D280009020E2800" -+#define HID_UUID "00001124-0000-1000-8000-00805f9b34fb" -+ -+static struct btd_device *create_cable_association(DBusConnection *conn, -+ struct btd_adapter *adapter, -+ const char *name, -+ const char *address, -+ guint32 vendor_id, -+ guint32 product_id, -+ const char *pnp_record) -+{ -+ sdp_record_t *rec; -+ struct btd_device *device; -+ bdaddr_t src, dst; -+ char srcaddr[18]; -+ -+ device = adapter_find_device(adapter, address); -+ if (device == NULL) { -+ device = device_create(conn, adapter, address, BDADDR_BREDR); -+ if (device != NULL) -+ adapter_create_device_for_device(conn, adapter, device); -+ } -+ if (device != NULL) { -+ device_set_temporary(device, FALSE); -+ device_set_name(device, name); -+ } -+ -+ str2ba(address, &dst); -+ adapter_get_address(adapter, &src); -+ ba2str(&src, srcaddr); -+ -+ write_device_name(&dst, &src, (char *) name); -+ -+ /* Store the device's SDP record */ -+ rec = record_from_string(pnp_record); -+ store_record(srcaddr, address, rec); -+ sdp_record_free(rec); -+ /* Set the device id */ -+ store_device_id(srcaddr, address, 0xffff, vendor_id, product_id, 0); -+ /* Don't write a profile, it will be updated when the device connects */ -+ -+ write_trust(srcaddr, address, "[all]", TRUE); -+ -+ return device; -+} -+ -+static char *get_bdaddr(libusb_device_handle *devh, int itfnum) -+{ -+ unsigned char msg[17]; -+ char *address; -+ int res; -+ -+ res = libusb_control_transfer(devh, -+ LIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE, -+ 0x01, 0x03f2, itfnum, -+ (void*) msg, sizeof(msg), -+ 5000); -+ -+ if (res < 0) { -+ DBG("Getting the device Bluetooth address failed"); -+ return NULL; -+ } -+ -+ address = g_strdup_printf("%02X:%02X:%02X:%02X:%02X:%02X", -+ msg[4], msg[5], msg[6], msg[7], msg[8], msg[9]); -+ -+ DBG("Device Bluetooth address: %s\n", address); -+ -+ return address; -+} -+ -+static gboolean set_master_bdaddr(libusb_device_handle *devh, int itfnum, char *host) -+{ -+ unsigned char msg[8]; -+ int mac[6]; -+ int res; -+ -+ if (sscanf(host, "%X:%X:%X:%X:%X:%X", -+ &mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]) != 6) { -+ return FALSE; -+ } -+ -+ msg[0] = 0x01; -+ msg[1] = 0x00; -+ msg[2] = mac[0]; -+ msg[3] = mac[1]; -+ msg[4] = mac[2]; -+ msg[5] = mac[3]; -+ msg[6] = mac[4]; -+ msg[7] = mac[5]; -+ -+ res = libusb_control_transfer(devh, -+ LIBUSB_ENDPOINT_OUT | LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE, -+ 0x09, 0x03f5, itfnum, -+ (void*) msg, sizeof(msg), -+ 5000); -+ -+ if (res < 0) { -+ DBG("Setting the master Bluetooth address failed"); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+static void handle_usb_device(struct btd_adapter *adapter, -+ libusb_device *dev, -+ struct libusb_config_descriptor *cfg, -+ int itfnum, -+ const struct libusb_interface_descriptor *alt) -+{ -+ DBusConnection *conn; -+ libusb_device_handle *devh; -+ char *device_bdaddr; -+ char adapter_bdaddr[18]; -+ struct btd_device *device; -+ bdaddr_t dst; -+ -+ device_bdaddr = NULL; -+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); -+ if (conn == NULL) { -+ DBG("Failed to get on the bus"); -+ return; -+ } -+ -+ if (libusb_open(dev, &devh) < 0) { -+ DBG("Can't open device"); -+ goto bail; -+ } -+ libusb_detach_kernel_driver(devh, itfnum); -+ -+ if (libusb_claim_interface(devh, itfnum) < 0) { -+ DBG("Can't claim interface %d", itfnum); -+ goto bail; -+ } -+ -+ device_bdaddr = get_bdaddr(devh, itfnum); -+ if (device_bdaddr == NULL) { -+ DBG("Failed to get the Bluetooth address from the device"); -+ goto bail; -+ } -+ -+ device = create_cable_association(conn, -+ adapter, -+ "PLAYSTATION(R)3 Controller", -+ device_bdaddr, -+ VENDOR, PRODUCT, SIXAXIS_PNP_RECORD); -+ btd_device_add_uuid(device, HID_UUID); -+ -+ adapter_get_address(adapter, &dst); -+ ba2str(&dst, adapter_bdaddr); -+ DBG("Adapter bdaddr %s", adapter_bdaddr); -+ -+ if (set_master_bdaddr(devh, itfnum, adapter_bdaddr) == FALSE) { -+ DBG("Failed to set the master Bluetooth address"); -+ goto bail; -+ } -+ -+bail: -+ dbus_connection_unref(conn); -+ g_free(device_bdaddr); -+ libusb_release_interface(devh, itfnum); -+ /* We ignore errors from the reattach, as there's nothing we -+ * can do about it */ -+ libusb_attach_kernel_driver(devh, itfnum); -+ if (devh != NULL) -+ libusb_close(devh); -+} -+ -+static void handle_device_plug(struct udev_device *udevice) -+{ -+ struct btd_adapter *adapter; -+ guint i; -+ -+ libusb_device **list, *usbdev; -+ ssize_t num_devices; -+ struct libusb_device_descriptor desc; -+ guint8 j; -+ -+ if (g_strcmp0(udev_device_get_property_value(udevice, "ID_SERIAL"), -+ "Sony_PLAYSTATION_R_3_Controller") != 0) -+ return; -+ /* Don't look at events with an associated driver */ -+ if (udev_device_get_property_value(udevice, "ID_USB_DRIVER") != NULL) -+ return; -+ -+ DBG("Found Sixaxis device"); -+ -+ /* Look for the default adapter */ -+ adapter = manager_get_default_adapter(); -+ if (adapter == NULL) -+ return; -+ -+ /* Look for the USB device */ -+ libusb_init(NULL); -+ -+ num_devices = libusb_get_device_list(NULL, &list); -+ if (num_devices < 0) { -+ DBG("libusb_get_device_list failed"); -+ return; -+ } -+ -+ usbdev = NULL; -+ for (i = 0; i < num_devices; i++) { -+ char *path; -+ -+ path = g_strdup_printf("%s/%03d/%03d", "/dev/bus/usb", -+ libusb_get_bus_number(list[i]), -+ libusb_get_device_address(list[i])); -+ if (g_strcmp0(path, udev_device_get_devnode(udevice)) == 0) { -+ g_free(path); -+ usbdev = libusb_ref_device(list[i]); -+ break; -+ } -+ g_free(path); -+ } -+ -+ libusb_free_device_list(list, TRUE); -+ if (usbdev == NULL) { -+ DBG("Found a Sixaxis, but couldn't find it via libusb"); -+ goto out; -+ } -+ -+ if (libusb_get_device_descriptor(usbdev, &desc) < 0) { -+ DBG("libusb_get_device_descriptor() failed"); -+ goto out; -+ } -+ -+ /* Look for the interface number that interests us */ -+ for (j = 0; j < desc.bNumConfigurations; j++) { -+ struct libusb_config_descriptor *config; -+ guint8 k; -+ -+ if (libusb_get_config_descriptor(usbdev, j, &config) < 0) { -+ DBG("Failed to get config descriptor %d", j); -+ continue; -+ } -+ -+ for (k = 0; k < config->bNumInterfaces; k++) { -+ const struct libusb_interface *itf = &config->interface[k]; -+ int l; -+ -+ for (l = 0; l < itf->num_altsetting ; l++) { -+ struct libusb_interface_descriptor alt; -+ -+ alt = itf->altsetting[l]; -+ if (alt.bInterfaceClass == 3) { -+ handle_usb_device(adapter, usbdev, config, l, &alt); -+ } -+ } -+ } -+ } -+ -+out: -+ if (usbdev != NULL) -+ libusb_unref_device(usbdev); -+ libusb_exit(NULL); -+} -+ -+static gboolean device_event_idle(struct udev_device *udevice) -+{ -+ handle_device_plug(udevice); -+ udev_device_unref(udevice); -+ return FALSE; -+} -+ -+static struct udev *ctx = NULL; -+static struct udev_monitor *monitor = NULL; -+static guint watch_id = 0; -+ -+static gboolean -+monitor_event(GIOChannel *source, -+ GIOCondition condition, -+ gpointer data) -+{ -+ struct udev_device *udevice; -+ -+ udevice = udev_monitor_receive_device(monitor); -+ if (udevice == NULL) -+ goto out; -+ if (g_strcmp0(udev_device_get_action(udevice), "add") != 0) -+ goto out; -+ -+ g_timeout_add_seconds(1, (GSourceFunc) device_event_idle, udevice); -+ -+out: -+ return TRUE; -+} -+ -+ -+static int cable_init(void) -+{ -+ GIOChannel *channel; -+ -+ DBG("Setup cable plugin"); -+ -+ ctx = udev_new(); -+ monitor = udev_monitor_new_from_netlink(ctx, "udev"); -+ if (monitor == NULL) { -+ error ("Could not get udev monitor"); -+ return -1; -+ } -+ -+ /* Listen for newly connected usb device */ -+ udev_monitor_filter_add_match_subsystem_devtype(monitor, -+ "usb", NULL); -+ udev_monitor_enable_receiving(monitor); -+ -+ channel = g_io_channel_unix_new(udev_monitor_get_fd(monitor)); -+ watch_id = g_io_add_watch(channel, G_IO_IN, monitor_event, NULL); -+ g_io_channel_unref(channel); -+ -+ return 0; -+} -+ -+static void cable_exit(void) -+{ -+ DBG("Cleanup cable plugin"); -+ -+ if (watch_id != 0) { -+ g_source_remove(watch_id); -+ watch_id = 0; -+ } -+ if (monitor != NULL) { -+ udev_monitor_unref(monitor); -+ monitor = NULL; -+ } -+ if (ctx != NULL) { -+ udev_unref(ctx); -+ ctx = NULL; -+ } -+} -+ -+BLUETOOTH_PLUGIN_DEFINE(cable, VERSION, -+ BLUETOOTH_PLUGIN_PRIORITY_DEFAULT, cable_init, cable_exit) -diff --git a/src/adapter.c b/src/adapter.c -index 6e04faf..0488891 100644 ---- a/src/adapter.c -+++ b/src/adapter.c -@@ -952,6 +952,25 @@ static struct btd_device *adapter_create_device(DBusConnection *conn, - return device; - } - -+void adapter_create_device_for_device(DBusConnection *conn, -+ struct btd_adapter *adapter, -+ struct btd_device *device) -+{ -+ const char *path; -+ -+ device_set_temporary(device, TRUE); -+ -+ adapter->devices = g_slist_append(adapter->devices, device); -+ -+ path = device_get_path(device); -+ g_dbus_emit_signal(conn, adapter->path, -+ ADAPTER_INTERFACE, "DeviceCreated", -+ DBUS_TYPE_OBJECT_PATH, &path, -+ DBUS_TYPE_INVALID); -+ -+ adapter_update_devices(adapter); -+} -+ - void adapter_remove_device(DBusConnection *conn, struct btd_adapter *adapter, - struct btd_device *device, - gboolean remove_storage) -diff --git a/src/adapter.h b/src/adapter.h -index b7ea62b..ac0aa2e 100644 ---- a/src/adapter.h -+++ b/src/adapter.h -@@ -114,6 +114,9 @@ void adapter_update_found_devices(struct btd_adapter *adapter, - uint8_t *data, uint8_t data_len); - void adapter_emit_device_found(struct btd_adapter *adapter, - struct remote_dev_info *dev); -+void adapter_create_device_for_device(DBusConnection *conn, -+ struct btd_adapter *adapter, -+ struct btd_device *device); - void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode); - int adapter_set_name(struct btd_adapter *adapter, const char *name); - void adapter_name_changed(struct btd_adapter *adapter, const char *name); --- -1.7.10.2 - diff --git a/SOURCES/0001-Allow-PulseAudio-to-connect-by-default.patch b/SOURCES/0001-Allow-PulseAudio-to-connect-by-default.patch deleted file mode 100644 index bec6b77..0000000 --- a/SOURCES/0001-Allow-PulseAudio-to-connect-by-default.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 93c876a85b650c3e05d6042cd1bf4e5008fdebc5 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Thu, 10 Jan 2013 09:13:19 +0100 -Subject: [PATCH] Allow PulseAudio to connect by default - -Disable the socket by default, it is enabled by default. - -https://bugzilla.redhat.com/show_bug.cgi?id=969385#c4 ---- - audio/audio.conf | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/audio/audio.conf b/audio/audio.conf -index fd6092a..a78f609 100644 ---- a/audio/audio.conf -+++ b/audio/audio.conf -@@ -4,6 +4,10 @@ - # particular interface - [General] - -+# Allow PulseAudio to connect by default -+# https://bugzilla.redhat.com/show_bug.cgi?id=969385#c4 -+Disable=Socket -+ - # Switch to master role for incoming connections (defaults to true) - #Master=true - --- -1.8.4.2 - diff --git a/SOURCES/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch b/SOURCES/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch new file mode 100644 index 0000000..1ea3e6f --- /dev/null +++ b/SOURCES/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch @@ -0,0 +1,58 @@ +From 3027cb7141fb65cf3eeda69c688db8c4045e2d3f Mon Sep 17 00:00:00 2001 +From: Giovanni Campagna +Date: Sat, 12 Oct 2013 17:45:25 +0200 +Subject: [PATCH] Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + diff --git a/SOURCES/0001-Enable-the-Gateway-and-Source-audio-profiles-by-defa.patch b/SOURCES/0001-Enable-the-Gateway-and-Source-audio-profiles-by-defa.patch deleted file mode 100644 index 817f5ac..0000000 --- a/SOURCES/0001-Enable-the-Gateway-and-Source-audio-profiles-by-defa.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 0b5f5d0be6a1c9aa2d63e72e6a979f46cfbcc866 Mon Sep 17 00:00:00 2001 -From: Mathieu Trudel-Lapierre -Date: Thu, 10 Jan 2013 09:20:22 +0100 -Subject: [PATCH] Enable the Gateway and Source audio profiles by default. - -Those can be disabled by the user in /etc/bluetooth/audio.conf if -necessary. - -https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/948613 ---- - audio/a2dp.c | 2 +- - audio/manager.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/audio/a2dp.c b/audio/a2dp.c -index 404be53..6c0ab26 100644 ---- a/audio/a2dp.c -+++ b/audio/a2dp.c -@@ -1444,7 +1444,7 @@ int a2dp_register(DBusConnection *conn, const bdaddr_t *src, GKeyFile *config) - { - int sbc_srcs = 0, sbc_sinks = 0; - int mpeg12_srcs = 0, mpeg12_sinks = 0; -- gboolean source = TRUE, sink = FALSE, socket = FALSE; -+ gboolean source = TRUE, sink = TRUE, socket = TRUE; - gboolean delay_reporting = FALSE; - char *str; - GError *err = NULL; -diff --git a/audio/manager.c b/audio/manager.c -index d442d1d..99e03bb 100644 ---- a/audio/manager.c -+++ b/audio/manager.c -@@ -110,9 +110,9 @@ static GSList *devices = NULL; - static struct enabled_interfaces enabled = { - .hfp = TRUE, - .headset = TRUE, -- .gateway = FALSE, -+ .gateway = TRUE, - .sink = TRUE, -- .source = FALSE, -+ .source = TRUE, - .control = TRUE, - .socket = FALSE, - .media = TRUE, --- -1.8.0.1 - diff --git a/SOURCES/0001-Fix-GDBus-flags-after-conversion-to-macros.patch b/SOURCES/0001-Fix-GDBus-flags-after-conversion-to-macros.patch deleted file mode 100644 index 44bcd45..0000000 --- a/SOURCES/0001-Fix-GDBus-flags-after-conversion-to-macros.patch +++ /dev/null @@ -1,84 +0,0 @@ -From a66a557038c0e3d21bc4f14090efb497558a12be Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi -Date: Tue, 26 Jun 2012 18:11:25 -0300 -Subject: [PATCH] Fix GDBus flags after conversion to macros - -Commit "aa3b9016bf444b60e1b7e1804dfc323a23a93c5a Convert GDBus methods -to use macro helpers" converted the previous tables to use the new -macros but some flags were lost. ---- - attrib/client.c | 2 +- - audio/control.c | 2 +- - audio/headset.c | 2 +- - audio/transport.c | 2 +- - src/manager.c | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/attrib/client.c b/attrib/client.c -index 8d119df..b3e3abe 100644 ---- a/attrib/client.c -+++ b/attrib/client.c -@@ -519,7 +519,7 @@ static const GDBusMethodTable char_methods[] = { - { GDBUS_METHOD("GetProperties", - NULL, GDBUS_ARGS({ "properties", "a{sv}" }), - get_properties) }, -- { GDBUS_METHOD("SetProperty", -+ { GDBUS_ASYNC_METHOD("SetProperty", - GDBUS_ARGS({ "name", "s" }, { "value", "v" }), NULL, - set_property) }, - { } -diff --git a/audio/control.c b/audio/control.c -index c5a6a58..187f838 100644 ---- a/audio/control.c -+++ b/audio/control.c -@@ -198,7 +198,7 @@ static DBusMessage *control_get_properties(DBusConnection *conn, - } - - static const GDBusMethodTable control_methods[] = { -- { GDBUS_ASYNC_METHOD("IsConnected", -+ { GDBUS_DEPRECATED_METHOD("IsConnected", - NULL, GDBUS_ARGS({ "connected", "b" }), - control_is_connected) }, - { GDBUS_METHOD("GetProperties", -diff --git a/audio/headset.c b/audio/headset.c -index 729e4dc..b9c6265 100644 ---- a/audio/headset.c -+++ b/audio/headset.c -@@ -2094,7 +2094,7 @@ static const GDBusMethodTable headset_methods[] = { - static const GDBusSignalTable headset_signals[] = { - { GDBUS_DEPRECATED_SIGNAL("Connected", NULL) }, - { GDBUS_DEPRECATED_SIGNAL("Disconnected", NULL) }, -- { GDBUS_DEPRECATED_SIGNAL("AnswerRequested", NULL) }, -+ { GDBUS_SIGNAL("AnswerRequested", NULL) }, - { GDBUS_DEPRECATED_SIGNAL("Stopped", NULL) }, - { GDBUS_DEPRECATED_SIGNAL("Playing", NULL) }, - { GDBUS_DEPRECATED_SIGNAL("SpeakerGainChanged", -diff --git a/audio/transport.c b/audio/transport.c -index b015625..832ad2a 100644 ---- a/audio/transport.c -+++ b/audio/transport.c -@@ -959,7 +959,7 @@ static const GDBusMethodTable transport_methods[] = { - { GDBUS_ASYNC_METHOD("Release", - GDBUS_ARGS({ "access_type", "s" }), NULL, - release ) }, -- { GDBUS_ASYNC_METHOD("SetProperty", -+ { GDBUS_METHOD("SetProperty", - GDBUS_ARGS({ "name", "s" }, { "value", "v" }), - NULL, set_property) }, - { }, -diff --git a/src/manager.c b/src/manager.c -index 385354d..7061f64 100644 ---- a/src/manager.c -+++ b/src/manager.c -@@ -207,7 +207,7 @@ static const GDBusMethodTable manager_methods[] = { - GDBUS_ARGS({ "pattern", "s" }), - GDBUS_ARGS({ "adapter", "o" }), - find_adapter) }, -- { GDBUS_ASYNC_METHOD("ListAdapters", -+ { GDBUS_DEPRECATED_METHOD("ListAdapters", - NULL, GDBUS_ARGS({ "adapters", "ao" }), - list_adapters) }, - { } --- -1.8.0.1 - diff --git a/SOURCES/0001-audio-Permit-concurrent-use-of-AG-and-HF-roles.patch b/SOURCES/0001-audio-Permit-concurrent-use-of-AG-and-HF-roles.patch deleted file mode 100644 index c1a5828..0000000 --- a/SOURCES/0001-audio-Permit-concurrent-use-of-AG-and-HF-roles.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 2f92669697152848f2fae584d45fde5d80ea6eb8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Dalleau?= - -Date: Fri, 22 Jun 2012 16:11:25 +0200 -Subject: [PATCH] audio: Permit concurrent use of AG and HF roles - -If a device supports both HF and AG roles, then if a SCO connection -related to AG profile happens, the connection is rejected because HF is -not connected. One consequence is pulseaudio failing to load bluetooth -module. ---- - audio/main.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/audio/main.c b/audio/main.c -index 5c751af..a48c8b8 100644 ---- a/audio/main.c -+++ b/audio/main.c -@@ -102,7 +102,7 @@ static void sco_server_cb(GIOChannel *chan, GError *err, gpointer data) - if (device->headset) { - if (headset_get_state(device) < HEADSET_STATE_CONNECTED) { - DBG("Refusing SCO from non-connected headset"); -- goto drop; -+ goto gateway; - } - - if (!headset_get_hfp_active(device)) { -@@ -115,7 +115,11 @@ static void sco_server_cb(GIOChannel *chan, GError *err, gpointer data) - goto drop; - - headset_set_state(device, HEADSET_STATE_PLAYING); -- } else if (device->gateway) { -+ goto connect; -+ } -+ -+gateway: -+ if (device->gateway) { - if (!gateway_is_connected(device)) { - DBG("Refusing SCO from non-connected AG"); - goto drop; -@@ -126,6 +130,7 @@ static void sco_server_cb(GIOChannel *chan, GError *err, gpointer data) - } else - goto drop; - -+connect: - sk = g_io_channel_unix_get_fd(chan); - fcntl(sk, F_SETFL, 0); - --- -1.8.0.1 - diff --git a/SOURCES/0001-build-Enable-BIND_NOW.patch b/SOURCES/0001-build-Enable-BIND_NOW.patch deleted file mode 100644 index 280dbd1..0000000 --- a/SOURCES/0001-build-Enable-BIND_NOW.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 6c01076f556922a63c73f0fcc4d62b97f9e1aca8 Mon Sep 17 00:00:00 2001 -From: Fedora Bluez maintainers -Date: Thu, 7 Nov 2013 09:23:35 +0100 -Subject: [PATCH] build: Enable BIND_NOW - -Partial RELRO means that the object is GNU_RELRO but not BIND_NOW. This -reduces the effectiveness of RELRO. bluez triggers this because it -enables PIE during the build, and rpmdiff takes this as an indicator -that the best possible hardening is desired. - -https://bugzilla.redhat.com/show_bug.cgi?id=983161 ---- - acinclude.m4 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index ae58bbd..f0f8902 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -359,7 +359,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [ - - if (test "${pie_enable}" = "yes" && test "${ac_cv_prog_cc_pie}" = "yes"); then - misc_cflags="$misc_cflags -fPIC" -- misc_ldflags="$misc_ldflags -pie" -+ misc_ldflags="$misc_ldflags -pie -Wl,-z,now" - fi - - if (test "${debug_enable}" = "yes" && test "${ac_cv_prog_cc_g}" = "yes"); then --- -1.8.3.1 - diff --git a/SOURCES/0001-hid2hci-change-subsystem-in-udev-rule-from-usb-to-us.patch b/SOURCES/0001-hid2hci-change-subsystem-in-udev-rule-from-usb-to-us.patch deleted file mode 100644 index f8fcada..0000000 --- a/SOURCES/0001-hid2hci-change-subsystem-in-udev-rule-from-usb-to-us.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d557e0d956d69318664ed5d1c3e4a765da24bc2a Mon Sep 17 00:00:00 2001 -From: Alexander Holler -Date: Tue, 20 Nov 2012 12:47:08 +0100 -Subject: [PATCH] hid2hci: change subsystem in udev rule from usb to usb* - -With kernel 3.6 (commit 7e97243c2080ecae7129e83635227fdebd4feef6) the -class for some devices (e.g. dongles from Logitech) were changed from -usb to usbmisc. As consequence the udev rule for hid2hci didn't work -anymore with kernels >= 3.6. - -Changing the subsystem from "usb" to "usb*" matches both "usb" and -"usbmisc" and works with all kernels. ---- - scripts/bluetooth-hid2hci.rules | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/scripts/bluetooth-hid2hci.rules b/scripts/bluetooth-hid2hci.rules -index 0687c8a..db6bb03 100644 ---- a/scripts/bluetooth-hid2hci.rules -+++ b/scripts/bluetooth-hid2hci.rules -@@ -1,7 +1,7 @@ - # do not edit this file, it will be overwritten on update - - ACTION=="remove", GOTO="hid2hci_end" --SUBSYSTEM!="usb", GOTO="hid2hci_end" -+SUBSYSTEM!="usb*", GOTO="hid2hci_end" - - # Variety of Dell Bluetooth devices - match on a mouse device that is - # self powered and where a HID report needs to be sent to switch modes --- -1.8.0 - diff --git a/SOURCES/0001-input-Add-helper-function-to-request-disconnect.patch b/SOURCES/0001-input-Add-helper-function-to-request-disconnect.patch deleted file mode 100644 index 481b72c..0000000 --- a/SOURCES/0001-input-Add-helper-function-to-request-disconnect.patch +++ /dev/null @@ -1,37 +0,0 @@ -From c70bf65af6e301f18063491b22112300c0fb9b89 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Sun, 17 Jun 2012 01:25:46 +0200 -Subject: [PATCH 1/3] input: Add helper function to request disconnect - ---- - input/device.c | 7 +++++++ - input/device.h | 1 + - 2 files changed, 8 insertions(+) - -diff --git a/input/device.c b/input/device.c -index 0e3f4a9..8fdd4e0 100644 ---- a/input/device.c -+++ b/input/device.c -@@ -1306,3 +1306,10 @@ int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst) - - return 0; - } -+ -+void input_device_request_disconnect(struct fake_input *fake) -+{ -+ if (fake == NULL || fake->idev == NULL) -+ return; -+ device_request_disconnect(fake->idev->device, NULL); -+} -diff --git a/input/device.h b/input/device.h -index 509a353..ff52967 100644 ---- a/input/device.h -+++ b/input/device.h -@@ -49,3 +49,4 @@ int input_device_unregister(const char *path, const char *uuid); - int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm, - GIOChannel *io); - int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst); -+void input_device_request_disconnect(struct fake_input *fake); --- -1.7.10 - diff --git a/SOURCES/0001-input-Fix-not-adding-watches-when-io-channel-is-conn.patch b/SOURCES/0001-input-Fix-not-adding-watches-when-io-channel-is-conn.patch deleted file mode 100644 index 0b984d5..0000000 --- a/SOURCES/0001-input-Fix-not-adding-watches-when-io-channel-is-conn.patch +++ /dev/null @@ -1,101 +0,0 @@ -From ea793cb9f744cd2942b66385118161b880de958a Mon Sep 17 00:00:00 2001 -From: Luiz Augusto von Dentz -Date: Tue, 19 Jun 2012 12:44:43 +0300 -Subject: [PATCH] input: Fix not adding watches when io channel is connected - -This can leave dangling pointers in case one of the channel is never -connected which cause -EALREADY to be returned by -input_device_set_channel next time the device attempts to connect. - -For the same reason the code path when acting as client now add the -watch as soon as the connection completes instead when both channels -are connected. ---- - input/device.c | 31 ++++++++++++++++++++++++------- - 1 file changed, 24 insertions(+), 7 deletions(-) - -diff --git a/input/device.c b/input/device.c -index 0e3f4a9..09a9a39 100644 ---- a/input/device.c -+++ b/input/device.c -@@ -387,6 +387,11 @@ static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond, gpointer data - struct input_conn *iconn = data; - struct input_device *idev = iconn->idev; - gboolean connected = FALSE; -+ char address[18]; -+ -+ ba2str(&iconn->idev->dst, address); -+ -+ DBG("Device %s disconnected", address); - - /* Checking for ctrl_watch avoids a double g_io_channel_shutdown since - * it's likely that ctrl_watch_cb has been queued for dispatching in -@@ -415,6 +420,11 @@ static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond, gpointer data - static gboolean ctrl_watch_cb(GIOChannel *chan, GIOCondition cond, gpointer data) - { - struct input_conn *iconn = data; -+ char address[18]; -+ -+ ba2str(&iconn->idev->dst, address); -+ -+ DBG("Device %s disconnected", address); - - /* Checking for intr_watch avoids a double g_io_channel_shutdown since - * it's likely that intr_watch_cb has been queued for dispatching in -@@ -811,13 +821,6 @@ static int input_device_connected(struct input_device *idev, - if (err < 0) - return err; - -- iconn->intr_watch = g_io_add_watch(iconn->intr_io, -- G_IO_HUP | G_IO_ERR | G_IO_NVAL, -- intr_watch_cb, iconn); -- iconn->ctrl_watch = g_io_add_watch(iconn->ctrl_io, -- G_IO_HUP | G_IO_ERR | G_IO_NVAL, -- ctrl_watch_cb, iconn); -- - connected = TRUE; - emit_property_changed(idev->conn, idev->path, INPUT_DEVICE_INTERFACE, - "Connected", DBUS_TYPE_BOOLEAN, &connected); -@@ -854,6 +857,10 @@ static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err, - dbus_message_unref(iconn->pending_connect); - iconn->pending_connect = NULL; - -+ iconn->intr_watch = g_io_add_watch(iconn->intr_io, -+ G_IO_HUP | G_IO_ERR | G_IO_NVAL, -+ intr_watch_cb, iconn); -+ - return; - - failed: -@@ -913,6 +920,10 @@ static void control_connect_cb(GIOChannel *chan, GError *conn_err, - - iconn->intr_io = io; - -+ iconn->ctrl_watch = g_io_add_watch(iconn->ctrl_io, -+ G_IO_HUP | G_IO_ERR | G_IO_NVAL, -+ ctrl_watch_cb, iconn); -+ - return; - - failed: -@@ -1272,11 +1283,17 @@ int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm, - if (iconn->ctrl_io) - return -EALREADY; - iconn->ctrl_io = g_io_channel_ref(io); -+ iconn->ctrl_watch = g_io_add_watch(iconn->ctrl_io, -+ G_IO_HUP | G_IO_ERR | G_IO_NVAL, -+ ctrl_watch_cb, iconn); - break; - case L2CAP_PSM_HIDP_INTR: - if (iconn->intr_io) - return -EALREADY; - iconn->intr_io = g_io_channel_ref(io); -+ iconn->intr_watch = g_io_add_watch(iconn->intr_io, -+ G_IO_HUP | G_IO_ERR | G_IO_NVAL, -+ intr_watch_cb, iconn); - break; - } - --- -1.8.0.1 - diff --git a/SOURCES/0001-network-NULL-dereference-fix.patch b/SOURCES/0001-network-NULL-dereference-fix.patch deleted file mode 100644 index 5b6e750..0000000 --- a/SOURCES/0001-network-NULL-dereference-fix.patch +++ /dev/null @@ -1,34 +0,0 @@ -From b57c64f1aa5c51dd785f2572636b8c41ada06d72 Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup -Date: Tue, 30 Aug 2011 15:10:46 +0200 -Subject: [PATCH] network: NULL dereference fix - -Variable ifindex dereferenced on line 242 before null check on line 249. ---- - network/common.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/network/common.c b/network/common.c -index 4704072..a223685 100644 ---- a/network/common.c -+++ b/network/common.c -@@ -240,13 +240,15 @@ int bnep_if_down(const char *devname) - - int bnep_add_to_bridge(const char *devname, const char *bridge) - { -- int ifindex = if_nametoindex(devname); -+ int ifindex; - struct ifreq ifr; - int sk, err; - - if (!devname || !bridge) - return -EINVAL; - -+ ifindex = if_nametoindex(devname); -+ - sk = socket(AF_INET, SOCK_STREAM, 0); - if (sk < 0) - return -1; --- -1.8.0.1 - diff --git a/SOURCES/0001-network-fix-network-Connect-method-parameters.patch b/SOURCES/0001-network-fix-network-Connect-method-parameters.patch deleted file mode 100644 index 05edb01..0000000 --- a/SOURCES/0001-network-fix-network-Connect-method-parameters.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 57170b311f1468330f4a9961dc0b3ac45f97bc13 Mon Sep 17 00:00:00 2001 -From: Gustavo Padovan -Date: Sat, 30 Jun 2012 00:39:05 -0300 -Subject: [PATCH] network: fix network Connect() method parameters - ---- - network/connection.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/network/connection.c b/network/connection.c -index 544ec3a..59423a9 100644 ---- a/network/connection.c -+++ b/network/connection.c -@@ -554,7 +554,9 @@ static void path_unregister(void *data) - - static const GDBusMethodTable connection_methods[] = { - { GDBUS_ASYNC_METHOD("Connect", -- NULL, NULL, connection_connect) }, -+ GDBUS_ARGS({"uuid", "s"}), -+ GDBUS_ARGS({"interface", "s"}), -+ connection_connect) }, - { GDBUS_METHOD("Disconnect", - NULL, NULL, connection_disconnect) }, - { GDBUS_METHOD("GetProperties", --- -1.8.0.1 - diff --git a/SOURCES/0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch b/SOURCES/0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch new file mode 100644 index 0000000..004a389 --- /dev/null +++ b/SOURCES/0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch @@ -0,0 +1,38 @@ +From f7861d27fbcbc519f57d8496aa9486f487908821 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Sat, 9 Nov 2013 18:13:43 +0100 +Subject: [PATCH 1/5] obex: Use GLib helper function to manipulate paths + +Instead of trying to do it by hand. This also makes sure that +relative paths aren't used by the agent. +--- + obexd/src/manager.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/obexd/src/manager.c b/obexd/src/manager.c +index cec8a39..f18896e 100644 +--- a/obexd/src/manager.c ++++ b/obexd/src/manager.c +@@ -651,14 +651,14 @@ static void agent_reply(DBusPendingCall *call, void *user_data) + DBUS_TYPE_STRING, &name, + DBUS_TYPE_INVALID)) { + /* Splits folder and name */ +- const char *slash = strrchr(name, '/'); ++ gboolean is_relative = !g_path_is_absolute(name); + DBG("Agent replied with %s", name); +- if (!slash) { +- agent->new_name = g_strdup(name); ++ if (is_relative) { ++ agent->new_name = g_path_get_basename(name); + agent->new_folder = NULL; + } else { +- agent->new_name = g_strdup(slash + 1); +- agent->new_folder = g_strndup(name, slash - name); ++ agent->new_name = g_path_get_basename(name); ++ agent->new_folder = g_path_get_dirname(name); + } + } + +-- +1.8.4.2 + diff --git a/SOURCES/0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch b/SOURCES/0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch index 447e951..e583320 100644 --- a/SOURCES/0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch +++ b/SOURCES/0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch @@ -1,17 +1,17 @@ -From 3aca31788655582f3029b3c88ad6f468c4de07a2 Mon Sep 17 00:00:00 2001 +From aa73bf5039dfd2cf0a52dd6fd22501d955cc1a00 Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 10 Jan 2013 09:18:43 +0100 Subject: [PATCH] work around Logitech diNovo Edge keyboard firmware issue https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/269851 --- - scripts/bluetooth-hid2hci.rules | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + tools/hid2hci.rules | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) -diff --git a/scripts/bluetooth-hid2hci.rules b/scripts/bluetooth-hid2hci.rules -index 0687c8a..2a571e5 100644 ---- a/scripts/bluetooth-hid2hci.rules -+++ b/scripts/bluetooth-hid2hci.rules +diff --git a/tools/hid2hci.rules b/tools/hid2hci.rules +index db6bb03..7db4572 100644 +--- a/tools/hid2hci.rules ++++ b/tools/hid2hci.rules @@ -11,7 +11,10 @@ ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProt RUN+="hid2hci --method=dell --devpath=%p", ENV{HID2HCI_SWITCH}="1" diff --git a/SOURCES/0002-autopair-Don-t-handle-the-iCade.patch b/SOURCES/0002-autopair-Don-t-handle-the-iCade.patch new file mode 100644 index 0000000..68751ae --- /dev/null +++ b/SOURCES/0002-autopair-Don-t-handle-the-iCade.patch @@ -0,0 +1,47 @@ +From c16ae7041c7511d8d1ed8441f696716fa6a9117e Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 19 Nov 2013 14:11:39 +0100 +Subject: [PATCH 2/5] autopair: Don't handle the iCade + +We can't easily enter digits other than 1 through 4 (inclusive) +so leave it up to the agent to figure out a good passcode +for the iCade. + +Note that we can not use the VID/PID of the device, as it is not +yet known at that point. +--- + plugins/autopair.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/plugins/autopair.c b/plugins/autopair.c +index 8c98c12..5d2f6f7 100644 +--- a/plugins/autopair.c ++++ b/plugins/autopair.c +@@ -57,13 +57,23 @@ static ssize_t autopair_pincb(struct btd_adapter *adapter, + { + char addr[18]; + char pinstr[7]; ++ char name[25]; + uint32_t class; + + ba2str(device_get_address(device), addr); + + class = btd_device_get_class(device); + +- DBG("device %s 0x%x", addr, class); ++ device_get_name(device, name, sizeof(name)); ++ name[sizeof(name) - 1] = 0; ++ ++ DBG("device %s (%s) 0x%x", addr, name, class); ++ ++ g_message ("vendor 0x%X product: 0x%X", btd_device_get_vendor (device), btd_device_get_product (device)); ++ ++ /* The iCade shouldn't use random PINs like normal keyboards */ ++ if (name != NULL && strstr(name, "iCade") != NULL) ++ return 0; + + /* This is a class-based pincode guesser. Ignore devices with an + * unknown class. +-- +1.8.4.2 + diff --git a/SOURCES/0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch b/SOURCES/0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch deleted file mode 100644 index 8941126..0000000 --- a/SOURCES/0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch +++ /dev/null @@ -1,118 +0,0 @@ -From cca11542bcd4d1748c850806c1599ed1b76ea19a Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Sun, 17 Jun 2012 01:26:18 +0200 -Subject: [PATCH 2/3] fakehid: Disconnect from PS3 remote after 10 mins - -After 10 minutes, disconnect the PS3 BD Remote to avoid draining its -battery. This is consistent with its behaviour on the PS3. - -Original patch by Ruslan N. Marchenko ---- - input/device.h | 1 + - input/fakehid.c | 36 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 37 insertions(+) - -diff --git a/input/device.h b/input/device.h -index ff52967..d8baa2c 100644 ---- a/input/device.h -+++ b/input/device.h -@@ -33,6 +33,7 @@ struct fake_input { - int uinput; /* uinput socket */ - int rfcomm; /* RFCOMM socket */ - uint8_t ch; /* RFCOMM channel number */ -+ guint timeout_id; /* Disconnect timeout ID */ - gboolean (*connect) (struct input_conn *iconn, GError **err); - int (*disconnect) (struct input_conn *iconn); - void *priv; -diff --git a/input/fakehid.c b/input/fakehid.c -index 3181538..a125356 100644 ---- a/input/fakehid.c -+++ b/input/fakehid.c -@@ -44,6 +44,9 @@ - #include "fakehid.h" - #include "uinput.h" - -+/* Timeout to get the PS3 remote disconnected, in seconds */ -+#define PS3_REMOTE_TIMEOUT 10 * 60 -+ - enum ps3remote_special_keys { - PS3R_BIT_PS = 0, - PS3R_BIT_ENTER = 3, -@@ -141,6 +144,20 @@ static unsigned int ps3remote_keymap[] = { - [0xff] = KEY_MAX, - }; - -+static gboolean ps3_remote_timeout_cb(gpointer user_data); -+ -+static void ps3remote_set_timeout(struct fake_input *fake, gboolean enable) -+{ -+ if (enable) { -+ fake->timeout_id = g_timeout_add_seconds(PS3_REMOTE_TIMEOUT, ps3_remote_timeout_cb, fake); -+ } else { -+ if (fake->timeout_id > 0) { -+ g_source_remove(fake->timeout_id); -+ fake->timeout_id = 0; -+ } -+ } -+} -+ - static int ps3remote_decode(char *buff, int size, unsigned int *value) - { - static unsigned int lastkey = 0; -@@ -203,6 +220,16 @@ error: - return -1; - } - -+static gboolean -+ps3_remote_timeout_cb(gpointer user_data) -+{ -+ struct fake_input *fake = (struct fake_input *) user_data; -+ input_device_request_disconnect(fake); -+ DBG("Disconnected PS3 BD Remote after timeout"); -+ fake->timeout_id = 0; -+ return FALSE; -+} -+ - static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond, - gpointer data) - { -@@ -221,6 +248,9 @@ static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond, - goto failed; - } - -+ /* Remove the old timeout */ -+ ps3remote_set_timeout(fake, FALSE); -+ - fd = g_io_channel_unix_get_fd(chan); - - memset(buff, 0, sizeof(buff)); -@@ -256,6 +286,8 @@ static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond, - goto failed; - } - -+ ps3remote_set_timeout(fake, TRUE); -+ - return TRUE; - - failed: -@@ -318,6 +350,8 @@ static int ps3remote_setup_uinput(struct fake_input *fake, - goto err; - } - -+ ps3remote_set_timeout(fake, TRUE); -+ - return 0; - - err: -@@ -378,6 +412,8 @@ struct fake_input *fake_hid_connadd(struct fake_input *fake, - for (l = fake_hid->devices; l != NULL; l = l->next) { - old = l->data; - if (old->idev == fake->idev) { -+ if (fake->timeout_id > 0) -+ g_source_remove(fake->timeout_id); - g_free(fake); - fake = old; - fake_hid->connect(fake, NULL); --- -1.7.10 - diff --git a/SOURCES/0003-fakehid-Use-the-same-constant-as-declared.patch b/SOURCES/0003-fakehid-Use-the-same-constant-as-declared.patch deleted file mode 100644 index b6adf77..0000000 --- a/SOURCES/0003-fakehid-Use-the-same-constant-as-declared.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a354165e58f937ee12c16ab48ce334b664c8f163 Mon Sep 17 00:00:00 2001 -From: Bastien Nocera -Date: Sun, 17 Jun 2012 01:29:01 +0200 -Subject: [PATCH 3/3] fakehid: Use the same constant as declared - -ps3remote_keymap[] uses 0xff as the max value, so should we. ---- - input/fakehid.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/input/fakehid.c b/input/fakehid.c -index a125356..a758413 100644 ---- a/input/fakehid.c -+++ b/input/fakehid.c -@@ -335,7 +335,7 @@ static int ps3remote_setup_uinput(struct fake_input *fake, - } - - /* enabling keys */ -- for (i = 0; i < 256; i++) -+ for (i = 0; i < 0xff; i++) - if (ps3remote_keymap[i] != KEY_RESERVED) - if (ioctl(fake->uinput, UI_SET_KEYBIT, - ps3remote_keymap[i]) < 0) { --- -1.7.10 - diff --git a/SOURCES/0004-agent-Assert-possible-infinite-loop.patch b/SOURCES/0004-agent-Assert-possible-infinite-loop.patch new file mode 100644 index 0000000..2746e0c --- /dev/null +++ b/SOURCES/0004-agent-Assert-possible-infinite-loop.patch @@ -0,0 +1,25 @@ +From 67e5477687a2753d3f7b300bcfdc74464d8ad41f Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 9 Dec 2013 18:04:56 +0100 +Subject: [PATCH 4/5] agent: Assert possible infinite loop + +--- + src/agent.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/agent.c b/src/agent.c +index bcba969..b292881 100644 +--- a/src/agent.c ++++ b/src/agent.c +@@ -203,6 +203,8 @@ void agent_unref(struct agent *agent) + if (agent->ref > 0) + return; + ++ g_assert (agent->ref == 0); ++ + if (agent->request) { + DBusError err; + agent_pincode_cb pincode_cb; +-- +1.8.4.2 + diff --git a/SOURCES/bluez-uinput.modules b/SOURCES/bluez-uinput.modules deleted file mode 100644 index 9f721d9..0000000 --- a/SOURCES/bluez-uinput.modules +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -if [ ! -c /dev/input/uinput ] ; then - exec /sbin/modprobe uinput >/dev/null 2>&1 -fi - diff --git a/SOURCES/dund.conf b/SOURCES/dund.conf deleted file mode 100644 index dec4a84..0000000 --- a/SOURCES/dund.conf +++ /dev/null @@ -1 +0,0 @@ -#DUNDARGS='--search --persist' diff --git a/SOURCES/dund.init b/SOURCES/dund.init deleted file mode 100755 index 6b2e563..0000000 --- a/SOURCES/dund.init +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -# chkconfig: - 26 89 - -### BEGIN INIT INFO -# Required-Start: bluetooth -# Default-Start: -# Short-Description: Bluetooth Dial-Up-Networking Daemon. -# Description: Bluetooth Dial-Up-Networking Daemon. Provides PPP over RFCOMM -# services. -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network - -[ "${NETWORKING}" = "yes" ] || exit 0 - -[ -r /etc/sysconfig/dund ] && . /etc/sysconfig/dund - -start() -{ - [ -z "$DUNDARGS" ] && exit 6 - - echo -n $"Starting dund: " - daemon /usr/bin/dund $DUNDARGS - RETVAL=$? - echo - [ $RETVAL = 0 ] && touch /var/lock/subsys/dund - return $RETVAL -} - -stop() -{ - echo -n $"Shutting down dund: " - /usr/bin/dund -K - killproc dund - RETVAL=$? - - rm -f /var/lock/subsys/dund - echo - return $RETVAL -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - force-reload|restart|reload) - stop - start - ;; - try-restart|condrestart) - [ -e /var/lock/subsys/dund ] && (stop; start) - ;; - status) - status dund - RETVAL=$? - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" - exit 3 -esac - -exit $RETVAL diff --git a/SOURCES/pand.conf b/SOURCES/pand.conf deleted file mode 100644 index ee1003a..0000000 --- a/SOURCES/pand.conf +++ /dev/null @@ -1,2 +0,0 @@ -#PANDARGS='--listen --role NAP' -#PANDARGS='--search --cache --persist' diff --git a/SOURCES/pand.init b/SOURCES/pand.init deleted file mode 100755 index 5877e72..0000000 --- a/SOURCES/pand.init +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh - -# chkconfig: - 26 89 - -### BEGIN INIT INFO -# Required-Start: bluetooth -# Default-Start: -# Short-Description: Bluetooth Personal Area Networking Daemon. -# Description: Bluetooth Personal Area Networking Daemon. Provides network -# services over Bluetooth. -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network - -[ "${NETWORKING}" = "yes" ] || exit 0 - -[ -r /etc/sysconfig/pand ] && . /etc/sysconfig/pand - -start() -{ - [ -z "$PANDARGS" ] && exit 6 - [ -x /etc/bluetooth/pan/system-up ] && /etc/bluetooth/pan/system-up - - echo -n $"Starting pand: " - daemon /usr/bin/pand $PANDARGS - RETVAL=$? - echo - [ $RETVAL = 0 ] && touch /var/lock/subsys/pand - return $RETVAL -} - -stop() -{ - echo -n $"Shutting down pand: " - /usr/bin/pand -K - killproc pand - RETVAL=$? - [ -x /etc/bluetooth/pan/system-down ] && /etc/bluetooth/pan/system-down - rm -f /var/lock/subsys/pand - echo - return $RETVAL -} - -[ -f /usr/bin/pand ] || exit 0 - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - force-reload|restart|reload) - stop - start - ;; - try-restart|condrestart) - [ -e /var/lock/subsys/pand ] && (stop; start) - ;; - status) - status pand - RETVAL=$? - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" - exit 3 -esac - -exit $RETVAL diff --git a/SOURCES/rfcomm.init b/SOURCES/rfcomm.init deleted file mode 100755 index b1e53da..0000000 --- a/SOURCES/rfcomm.init +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh - -# chkconfig: - 27 88 - -### BEGIN INIT INFO -# Required-Start: bluetooth -# Default-Start: -# Short-Description: Bluetooth RFCOMM setup. -# Description: Bluetooth RFCOMM setup. Sets up serial devices -# over Bluetooth. -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network - -[ "${NETWORKING}" = "yes" ] || exit 0 - -start() -{ - echo -n $"Starting rfcomm: " - rfcomm bind all - RETVAL=$? - echo - [ $RETVAL = 0 ] && touch /var/lock/subsys/rfcomm - return $RETVAL -} - -stop() -{ - echo -n $"Shutting down rfcomm: " - rfcomm release all - RETVAL=$? - - rm -f /var/lock/subsys/rfcomm - echo - return $RETVAL -} - -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - force-reload|restart|reload) - stop - start - ;; - try-restart|condrestart) - [ -e /var/lock/subsys/rfcomm ] && (stop; start) - ;; - status) - RETVAL=1 - [ -e /var/lock/subsys/rfcomm ] && RETVAL=0 - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" - exit 3 -esac - -exit $RETVAL diff --git a/SPECS/bluez.spec b/SPECS/bluez.spec index b9106ff..cb2a1f7 100644 --- a/SPECS/bluez.spec +++ b/SPECS/bluez.spec @@ -1,71 +1,52 @@ Summary: Bluetooth utilities Name: bluez -Version: 4.101 -Release: 13%{?dist} +Version: 5.23 +Release: 4%{?dist} License: GPLv2+ Group: Applications/System URL: http://www.bluez.org/ -Source: http://www.kernel.org/pub/linux/bluetooth/%{name}-%{version}.tar.gz +Source0: http://www.kernel.org/pub/linux/bluetooth/bluez-%{version}.tar.xz Source1: bluez.gitignore -Source3: dund.init -Source4: dund.conf -Source5: pand.init -Source6: pand.conf -Source7: rfcomm.init -Source8: bluez-uinput.modules - -# https://bugzilla.redhat.com/show_bug.cgi?id=877998 -Patch1: 0001-hid2hci-change-subsystem-in-udev-rule-from-usb-to-us.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=983161 -Patch2: 0001-build-Enable-BIND_NOW.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=969385 -Patch3: 0001-Allow-PulseAudio-to-connect-by-default.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=498756 -Patch4: 0001-Activate-the-Socket-Mobile-CF-kit.patch -# http://thread.gmane.org/gmane.linux.bluez.kernel/2396 -Patch5: 0001-Add-sixaxis-cable-pairing-plugin.patch -# PS3 BD Remote patches -Patch6: 0001-input-Add-helper-function-to-request-disconnect.patch -Patch7: 0002-fakehid-Disconnect-from-PS3-remote-after-10-mins.patch -Patch8: 0003-fakehid-Use-the-same-constant-as-declared.patch -# Upstream patches -Patch9: 0001-audio-Permit-concurrent-use-of-AG-and-HF-roles.patch -Patch10: 0001-Fix-GDBus-flags-after-conversion-to-macros.patch -Patch11: 0001-input-Fix-not-adding-watches-when-io-channel-is-conn.patch -Patch12: 0001-network-fix-network-Connect-method-parameters.patch -Patch13: 0001-network-NULL-dereference-fix.patch -# Ubuntu patches -Patch14: 0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch -Patch15: 0001-Enable-the-Gateway-and-Source-audio-profiles-by-defa.patch + +## Ubuntu patches +Patch2: 0001-work-around-Logitech-diNovo-Edge-keyboard-firmware-i.patch +# Non-upstream +Patch3: 0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch +Patch4: 0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch +Patch5: 0002-autopair-Don-t-handle-the-iCade.patch +Patch7: 0004-agent-Assert-possible-infinite-loop.patch + +%global _hardened_build 1 BuildRequires: git -BuildRequires: flex BuildRequires: dbus-devel >= 0.90 -BuildRequires: libusb-devel, glib2-devel, alsa-lib-devel -BuildRequires: libsndfile-devel -BuildRequires: libcap-ng-devel +BuildRequires: glib2-devel +BuildRequires: libical-devel >= 1.0.1 BuildRequires: readline-devel # For cable pairing BuildRequires: systemd-devel # For cups BuildRequires: cups-devel -%ifnarch s390 s390x -BuildRequires: libusbx-devel -%endif # For rebuild BuildRequires: libtool autoconf automake -Requires: bluez-libs = %{version}-%{release} -Requires: systemd Requires: dbus >= 0.60 -Requires: hwdata >= 0.215 -%ifnarch s390 s390x -Requires: dbus-bluez-pin-helper -%endif -Requires(preun): /bin/systemctl -Requires(post): /bin/systemctl + +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +# Dropped in Fedora 20: +Obsoletes: bluez-alsa < 5.0 +Obsoletes: bluez-compat < 5.0 +Obsoletes: bluez-gstreamer < 5.0 + +# Other bluetooth-releated packages that haven't gotten ported to BlueZ 5 +Obsoletes: blueman < 1.23-9 +Obsoletes: blueman-nautilus < 1.23-9 +Obsoletes: obex-data-server < 1:0.4.6-8 %description Utilities for use in Bluetooth applications: @@ -74,6 +55,14 @@ Utilities for use in Bluetooth applications: - hciconfig - bluetoothd - l2ping + - rfcomm + - sdptool + - bccmd + - bluetoothctl + - btmon + - hcidump + - l2test + - rctest - start scripts (Red Hat) - pcmcia configuration files @@ -86,40 +75,22 @@ Group: System Environment/Libraries %package libs-devel Summary: Development libraries for Bluetooth applications Group: Development/Libraries -Requires: bluez-libs = %{version}-%{release} -Requires: pkgconfig +Requires: bluez-libs%{?_isa} = %{version}-%{release} %package cups Summary: CUPS printer backend for Bluetooth printers Group: System Environment/Daemons -Requires: bluez-libs = %{version}-%{release} +Requires: bluez%{?_isa} = %{version}-%{release} Requires: cups -%package alsa -Summary: ALSA support for Bluetooth audio devices -Group: System Environment/Daemons -Requires: bluez-libs = %{version}-%{release} - -%package compat -Summary: Compatibility utilities for Bluetooth devices -Group: System Environment/Daemons -Requires: bluez-libs = %{version}-%{release} -Requires: bluez = %{version}-%{release} -Requires(preun): /sbin/chkconfig, /sbin/service -Requires(post): /sbin/chkconfig, /sbin/service - %package hid2hci Summary: Put HID proxying bluetooth HCI's into HCI mode Group: System Environment/Daemons -Requires: bluez-libs = %{version}-%{release} -Requires: bluez = %{version}-%{release} +Requires: bluez%{?_isa} = %{version}-%{release} %description cups This package contains the CUPS backend -%description alsa -This package contains ALSA support for Bluetooth audio devices - %description libs Libraries for use in Bluetooth applications. @@ -127,10 +98,6 @@ Libraries for use in Bluetooth applications. bluez-libs-devel contains development libraries and headers for use in Bluetooth applications. -%description compat -This package contains compatibility utilities for Bluetooth devices. -This includes hidd, dund and pand. - %description hid2hci Most allinone PC's and bluetooth keyboard / mouse sets which include a bluetooth dongle, ship with a so called HID proxying bluetooth HCI. @@ -151,7 +118,6 @@ they are paired, this will require the use of a regular (wired) USB keyboard and mouse. %prep - %setup -q git init if [ -z "$GIT_COMMITTER_NAME" ]; then @@ -166,24 +132,18 @@ git am -p1 %{patches} < /dev/null %build libtoolize -f -c -autoreconf -vif -%configure --enable-cups --enable-dfutool --enable-tools --enable-bccmd --enable-hidd --enable-pand --enable-dund --enable-hid2hci --with-ouifile=/usr/share/hwdata/oui.txt --with-systemdsystemunitdir=/lib/systemd/system --enable-wiimote --disable-gstreamer -make V=1 +autoreconf -f -i +%configure --enable-cups --enable-tools --enable-library \ + --enable-sixaxis --enable-pie \ + --with-systemdsystemunitdir=%{_unitdir} \ + --with-systemduserunitdir=%{_userunitdir} +make %{?_smp_mflags} V=1 %install make install DESTDIR=$RPM_BUILD_ROOT -/sbin/ldconfig -n $RPM_BUILD_ROOT/%{_libdir} -# Remove autocrap and libtool droppings -rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la \ - $RPM_BUILD_ROOT/%{_libdir}/alsa-lib/*.la \ - $RPM_BUILD_ROOT/%{_libdir}/bluetooth/plugins/*.la -for a in dund pand rfcomm ; do - install -D -m0755 $RPM_SOURCE_DIR/$a.init $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/$a - if [ -e $RPM_SOURCE_DIR/$a.conf ] ; then - install -D -m0644 $RPM_SOURCE_DIR/$a.conf $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/$a - fi -done +# Remove autocrap and libtool droppings +find $RPM_BUILD_ROOT -name '*.la' -delete # Remove the cups backend from libdir, and install it in /usr/lib whatever the install if test -d ${RPM_BUILD_ROOT}/usr/lib64/cups ; then @@ -191,140 +151,103 @@ if test -d ${RPM_BUILD_ROOT}/usr/lib64/cups ; then rm -rf ${RPM_BUILD_ROOT}%{_libdir}/cups fi -rm -f ${RPM_BUILD_ROOT}/%{_sysconfdir}/udev/*.rules ${RPM_BUILD_ROOT}/lib/udev/rules.d/*.rules -install -D -p -m0644 scripts/bluetooth-serial.rules ${RPM_BUILD_ROOT}/lib/udev/rules.d/97-bluetooth-serial.rules -install -D -p -m0644 scripts/bluetooth-hid2hci.rules ${RPM_BUILD_ROOT}/lib/udev/rules.d/97-bluetooth-hid2hci.rules -install -D -m0755 scripts/bluetooth_serial ${RPM_BUILD_ROOT}/lib/udev/bluetooth_serial - -install -D -m0755 %{SOURCE8} $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/modules/bluez-uinput.modules +rm -f ${RPM_BUILD_ROOT}/%{_sysconfdir}/udev/*.rules ${RPM_BUILD_ROOT}/usr/lib/udev/rules.d/*.rules +install -D -p -m0644 tools/hid2hci.rules ${RPM_BUILD_ROOT}/lib/udev/rules.d/97-hid2hci.rules install -d -m0755 $RPM_BUILD_ROOT/%{_localstatedir}/lib/bluetooth mkdir -p $RPM_BUILD_ROOT/%{_libdir}/bluetooth/ -install -D -p -m0644 audio/audio.conf ${RPM_BUILD_ROOT}/etc/bluetooth/ - %post libs -p /sbin/ldconfig -%post -if [ $1 -eq 1 ]; then - /bin/systemctl enable bluetooth.service >/dev/null 2>&1 || : -fi - %postun libs -p /sbin/ldconfig +%post +%systemd_post bluetooth.service + %preun -if [ $1 -eq 0 ]; then - /bin/systemctl --no-reload disable bluetooth.service >/dev/null 2>&1 || : - /bin/systemctl stop bluetooth.service >/dev/null 2>&1 || : -fi +%systemd_preun bluetooth.service %postun -/bin/systemctl daemon-reload >/dev/null 2>&1 || : -if [ $1 -ge 1 ] ; then - /bin/systemctl try-restart bluetooth.service >/dev/null 2>&1 || : -fi - -%triggerun -- bluez < 4.94-4 -/bin/systemctl --no-reload enable bluetooth.service >/dev/null 2>&1 || : - -%post compat -/sbin/chkconfig --add dund -/sbin/chkconfig --add pand -/sbin/chkconfig --add rfcomm -if [ "$1" -ge "1" ]; then - /sbin/service dund condrestart >/dev/null 2>&1 || : - /sbin/service pand condrestart >/dev/null 2>&1 || : - /sbin/service rfcomm condrestart >/dev/null 2>&1 || : -fi -exit 0 - -%preun compat -if [ "$1" = "0" ]; then - /sbin/service dund stop >/dev/null 2>&1 || : - /sbin/service pand stop >/dev/null 2>&1 || : - /sbin/service rfcomm stop >/dev/null 2>&1 || : - /sbin/chkconfig --del dund - /sbin/chkconfig --del pand - /sbin/chkconfig --del rfcomm -fi +%systemd_postun_with_restart bluetooth.service %post hid2hci /sbin/udevadm trigger --subsystem-match=usb %files -%defattr(-,root,root,-) +%doc AUTHORS COPYING ChangeLog README %{_bindir}/ciptool -%{_bindir}/dfutool %{_bindir}/hcitool %{_bindir}/l2ping %{_bindir}/rfcomm %{_bindir}/sdptool -%{_bindir}/gatttool -%{_sbindir}/* +%{_bindir}/bccmd +%{_bindir}/bluetoothctl +%{_bindir}/bluemoon +%{_bindir}/btmon +%{_bindir}/hciattach +%{_bindir}/hciconfig +%{_bindir}/hcidump +%{_bindir}/l2test +%{_bindir}/mpris-proxy +%{_bindir}/rctest %{_mandir}/man1/ciptool.1.gz -%{_mandir}/man1/dfutool.1.gz %{_mandir}/man1/hcitool.1.gz %{_mandir}/man1/rfcomm.1.gz %{_mandir}/man1/sdptool.1.gz +%{_mandir}/man1/bccmd.1.* +%{_mandir}/man1/hciattach.1.* +%{_mandir}/man1/hciconfig.1.* +%{_mandir}/man1/hcidump.1.* +%{_mandir}/man1/l2ping.1.* +%{_mandir}/man1/rctest.1.* %{_mandir}/man8/* -%exclude %{_mandir}/man8/hid2hci.8* -%dir %{_sysconfdir}/bluetooth/ -%config(noreplace) %{_sysconfdir}/bluetooth/main.conf -%config(noreplace) %{_sysconfdir}/bluetooth/audio.conf -%config(noreplace) %{_sysconfdir}/sysconfig/modules/bluez-uinput.modules +%{_libexecdir}/bluetooth/bluetoothd +%{_libexecdir}/bluetooth/obexd +%exclude %{_mandir}/man1/hid2hci.1* %config %{_sysconfdir}/dbus-1/system.d/bluetooth.conf %{_libdir}/bluetooth/ -/lib/udev/bluetooth_serial -/lib/udev/rules.d/97-bluetooth-serial.rules %{_localstatedir}/lib/bluetooth %{_datadir}/dbus-1/system-services/org.bluez.service -/usr/lib/systemd/system/bluetooth.service +%{_datadir}/dbus-1/services/org.bluez.obex.service +%{_unitdir}/bluetooth.service +%{_userunitdir}/obex.service %files libs -%defattr(-,root,root,-) +%doc COPYING %{_libdir}/libbluetooth.so.* -%doc AUTHORS COPYING INSTALL ChangeLog README %files libs-devel -%defattr(-,root,root,-) %{_libdir}/libbluetooth.so %dir %{_includedir}/bluetooth %{_includedir}/bluetooth/* %{_libdir}/pkgconfig/bluez.pc %files cups -%defattr(-,root,root,-) %_cups_serverbin/backend/bluetooth -%files alsa -%defattr(-,root,root,-) -%{_libdir}/alsa-lib/*.so -%{_datadir}/alsa/bluetooth.conf - -%files compat -%defattr(-,root,root,-) -%{_bindir}/dund -%{_bindir}/pand -%{_bindir}/hidd -%config(noreplace) %{_sysconfdir}/bluetooth/rfcomm.conf -%{_sysconfdir}/rc.d/init.d/dund -%{_sysconfdir}/rc.d/init.d/rfcomm -%{_sysconfdir}/rc.d/init.d/pand -%config(noreplace) %{_sysconfdir}/sysconfig/dund -%config(noreplace) %{_sysconfdir}/sysconfig/pand -%{_mandir}/man1/dund.1.gz -%{_mandir}/man1/hidd.1.gz -%{_mandir}/man1/pand.1.gz - %files hid2hci -%defattr(-,root,root,-) /usr/lib/udev/hid2hci -%{_mandir}/man8/hid2hci.8* -/lib/udev/rules.d/97-bluetooth-hid2hci.rules -%exclude /usr/lib/udev/rules.d/97-bluetooth-hid2hci.rules +%{_mandir}/man1/hid2hci.1* +/lib/udev/rules.d/97-hid2hci.rules %changelog +* Fri Jul 10 2015 Bastien Nocera 5.23-4 +- Build with --enable-fpie as well +Resolves: #1174545 + +* Wed Jul 08 2015 Bastien Nocera 5.23-3 +- Enable hardened build +Resolves: #1174545 + +* Wed Jul 08 2015 Milan Crha 5.23-2 +- Rebuild against updated libical +- Related: #1209787 + +* Thu Mar 19 2015 Richard Hughes 5.23-1 +- Update to 5.23 +- Resolves: #1174545 + * Fri Jan 24 2014 Daniel Mach - 4.101-13 - Mass rebuild 2014-01-24