summaryrefslogtreecommitdiffstats
path: root/source/n/bluez
diff options
context:
space:
mode:
Diffstat (limited to 'source/n/bluez')
-rwxr-xr-xsource/n/bluez/bluez.SlackBuild50
-rw-r--r--source/n/bluez/doinst.sh1
-rw-r--r--source/n/bluez/gatt_fix_crash.diff43
-rw-r--r--source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff52
-rw-r--r--source/n/bluez/slack-desc10
5 files changed, 143 insertions, 13 deletions
diff --git a/source/n/bluez/bluez.SlackBuild b/source/n/bluez/bluez.SlackBuild
index 3dbd00f7e..8fc07365c 100755
--- a/source/n/bluez/bluez.SlackBuild
+++ b/source/n/bluez/bluez.SlackBuild
@@ -1,6 +1,6 @@
-#!/bin/sh
+#!/bin/bash
-# Copyright 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2009, 2010, 2011, 2012, 2013, 2016, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,11 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PKGNAM=bluez
-VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-3}
NUMJOBS=${NUMJOBS:--j7}
@@ -36,6 +38,14 @@ if [ -z "$ARCH" ]; then
esac
fi
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -50,7 +60,6 @@ else
LIBDIRSUFFIX=""
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
@@ -58,7 +67,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf $PKGNAM-$VERSION
-tar xvf $CWD/${PKGNAM}-${VERSION}.tar.xz || exit 1
+tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z || exit 1
cd $PKGNAM-$VERSION || exit 1
chown -R root:root .
find . \
@@ -69,10 +78,27 @@ find . \
zcat $CWD/bluez-5.30-obexd_without_systemd-1.patch.gz | patch -p1 --verbose || exit 1
+# Fix bluetoothd crashes:
+zcat $CWD/gatt_fix_crash.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/refresh_adv_manager_for_non-LE_devices.diff.gz | patch -p1 --verbose || exit 1
+
autoreconf -vif
sed -i -e 's|-lreadline|\0 -lncursesw|g' Makefile.{in,tools}
+# We're adding --enable-deprecated due to this commit:
+#
+# commit b1eb2c4cd057624312e0412f6c4be000f7fc3617
+#Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+#Date: Wed Jan 4 14:23:58 2017 +0200
+#
+# build: Hide deprecated tools under --enable-deprecated
+#
+# This marks the following tools as deprecated as they are not longer
+# maintained or have been replaced by other tools:
+#
+# hciattach hciconfig hcitool hcidump rfcomm sdptool ciptool gatttool
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \
@@ -85,11 +111,15 @@ LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \
--docdir=/usr/doc/${PKGNAM}-${VERSION} \
--enable-library \
--disable-systemd \
+ --enable-deprecated \
--build=$ARCH-slackware-linux || exit 1
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
# Use reset=1 for the btusb module, which supposedly fixes reconnect problems:
mkdir -p $PKG/lib/modprobe.d
cp -a $CWD/btusb.conf $PKG/lib/modprobe.d
@@ -105,7 +135,6 @@ mkdir -p $PKG/etc/bluetooth $PKG/etc/default
cat src/main.conf > $PKG/etc/bluetooth/main.conf.new
cat profiles/input/input.conf > $PKG/etc/bluetooth/input.conf.new
cat profiles/network/network.conf > $PKG/etc/bluetooth/network.conf.new
-cat profiles/proximity/proximity.conf > $PKG/etc/bluetooth/proximity.conf.new
cat $CWD/config/uart.conf > $PKG/etc/bluetooth/uart.conf.new
cat $CWD/config/defaultconfig > $PKG/etc/default/bluetooth.new
@@ -117,6 +146,13 @@ cat $CWD/config/rc.bluetooth > $PKG/etc/rc.d/rc.bluetooth.new
# script is not executable:
chmod 755 $PKG/etc/rc.d/rc.bluetooth.new
+# If the deprecated utility gatttool was built, go ahead and install it:
+if [ -x attrib/gatttool ]; then
+ cp attrib/gatttool $PKG/usr/bin
+ chown root:root $PKG/usr/bin/gatttool
+ chmod 755 $PKG/usr/bin/gatttool
+fi
+
# Compress and if needed symlink the man pages:
if [ -d $PKG/usr/man ]; then
( cd $PKG/usr/man
diff --git a/source/n/bluez/doinst.sh b/source/n/bluez/doinst.sh
index 7fc213834..796630fd2 100644
--- a/source/n/bluez/doinst.sh
+++ b/source/n/bluez/doinst.sh
@@ -21,7 +21,6 @@ config etc/rc.d/rc.bluetooth.new
config etc/bluetooth/input.conf.new
config etc/bluetooth/main.conf.new
config etc/bluetooth/network.conf.new
-config etc/bluetooth/proximity.conf.new
config etc/bluetooth/uart.conf.new
config etc/default/bluetooth.new
diff --git a/source/n/bluez/gatt_fix_crash.diff b/source/n/bluez/gatt_fix_crash.diff
new file mode 100644
index 000000000..d05785252
--- /dev/null
+++ b/source/n/bluez/gatt_fix_crash.diff
@@ -0,0 +1,43 @@
+From e10c204e1226e94a1eaaeaee076e7e2e5b13c504 Mon Sep 17 00:00:00 2001
+From: Szymon Janc <szymon.janc@codecoup.pl>
+Date: Wed, 4 Apr 2018 09:28:56 +0200
+Subject: gatt: Fix crash with BR/EDR only adapter
+
+adapter->database can be NULL if controller is BR/EDR only or LE was
+disabled. Make btd_gatt_database_restore_svc_chng_ccc accept NULL
+pointer and silently ignore it similiar to rest of btd_gatt_database
+API.
+
+Invalid read of size 8
+ at 0x164DCB: btd_gatt_database_restore_svc_chng_ccc (src/bluez-git/src/bluetoothd)
+ by 0x17B70F: read_info_complete (src/bluez-git/src/bluetoothd)
+ by 0x1A7E58: request_complete (src/bluez-git/src/bluetoothd)
+ by 0x1A89AD: can_read_data (src/bluez-git/src/bluetoothd)
+ by 0x1B5752: watch_callback (src/bluez-git/src/bluetoothd)
+ by 0x4E852C5: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5600.0)
+ by 0x4E856A0: ??? (in /usr/lib/libglib-2.0.so.0.5600.0)
+ by 0x4E859D1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5600.0)
+ by 0x125058: main (src/bluez-git/src/bluetoothd)
+ Address 0x40 is not stack'd, malloc'd or (recently) free'd
+---
+ src/gatt-database.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/gatt-database.c b/src/gatt-database.c
+index 1cdc72e..0ac5b75 100644
+--- a/src/gatt-database.c
++++ b/src/gatt-database.c
+@@ -3330,6 +3330,9 @@ void btd_gatt_database_restore_svc_chng_ccc(struct btd_gatt_database *database)
+ uint8_t value[4];
+ uint16_t handle, ccc_handle;
+
++ if (!database)
++ return;
++
+ handle = gatt_db_attribute_get_handle(database->svc_chngd);
+ ccc_handle = gatt_db_attribute_get_handle(database->svc_chngd_ccc);
+
+--
+cgit v1.1
+
+
diff --git a/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff b/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff
new file mode 100644
index 000000000..922d9d383
--- /dev/null
+++ b/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff
@@ -0,0 +1,52 @@
+From 2c3bba7b38be03834162e34069156f1fd49f0528 Mon Sep 17 00:00:00 2001
+From: "antoine.belvire@laposte.net" <antoine.belvire@laposte.net>
+Date: Tue, 27 Mar 2018 20:30:26 +0200
+Subject: adapter: Don't refresh adv_manager for non-LE devices
+
+btd_adv_manager_refresh is called upon MGMT_SETTING_DISCOVERABLE setting change
+but as only LE adapters have an adv_manager, this leads to segmentation fault
+for non-LE devices:
+
+0 btd_adv_manager_refresh (manager=0x0) at src/advertising.c:1176
+1 0x0000556fe45fcb02 in settings_changed (settings=<optimized out>,
+ adapter=0x556fe53f7c70) at src/adapter.c:543
+2 new_settings_callback (index=<optimized out>, length=<optimized out>,
+ param=<optimized out>, user_data=0x556fe53f7c70) at src/adapter.c:573
+3 0x0000556fe462c278 in request_complete (mgmt=mgmt@entry=0x556fe53f20c0,
+ status=<optimized out>, opcode=opcode@entry=7, index=index@entry=0,
+ length=length@entry=4, param=0x556fe53eb5f9) at src/shared/mgmt.c:261
+4 0x0000556fe462cd9d in can_read_data (io=<optimized out>,
+ user_data=0x556fe53f20c0) at src/shared/mgmt.c:353
+5 0x0000556fe46396e3 in watch_callback (channel=<optimized out>,
+ cond=<optimized out>, user_data=<optimized out>)
+ at src/shared/io-glib.c:170
+6 0x00007fe351c980e5 in g_main_context_dispatch ()
+ from /usr/lib64/libglib-2.0.so.0
+7 0x00007fe351c984b0 in ?? () from /usr/lib64/libglib-2.0.so.0
+8 0x00007fe351c987c2 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
+9 0x0000556fe45abc75 in main (argc=<optimized out>, argv=<optimized out>)
+ at src/main.c:770
+
+This commit prevents the call to btd_adv_manager_refresh for non-LE devices.
+---
+ src/adapter.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/adapter.c b/src/adapter.c
+index 6b9222b..daccfdc 100644
+--- a/src/adapter.c
++++ b/src/adapter.c
+@@ -540,7 +540,8 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
+ g_dbus_emit_property_changed(dbus_conn, adapter->path,
+ ADAPTER_INTERFACE, "Discoverable");
+ store_adapter_info(adapter);
+- btd_adv_manager_refresh(adapter->adv_manager);
++ if (adapter->supported_settings & MGMT_SETTING_LE)
++ btd_adv_manager_refresh(adapter->adv_manager);
+ }
+
+ if (changed_mask & MGMT_SETTING_BONDABLE) {
+--
+cgit v1.1
+
+
diff --git a/source/n/bluez/slack-desc b/source/n/bluez/slack-desc
index 607fa4d96..701f77c52 100644
--- a/source/n/bluez/slack-desc
+++ b/source/n/bluez/slack-desc
@@ -1,18 +1,18 @@
# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
+# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
bluez: bluez (Bluetooth libraries and utilities)
bluez:
bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors
-bluez: and devices to be used with Linux. This package contains the Bluez
+bluez: and devices to be used with Linux. This package contains the Bluez
bluez: libraries, utilities, and other support files.
bluez:
-bluez: For more info, visit: http://www.bluez.org
+bluez: For more info, visit: http://www.bluez.org
bluez:
bluez:
bluez: