summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2016-12-08 11:08:05 +0100
committerPacho Ramos <pacho@gentoo.org>2016-12-08 11:09:11 +0100
commitc0f246a255a609281d3e330ab9a7e1cc899b018e (patch)
treefd4a135702bb6c4c2f7a955f77dbfd00c44c393c
parentkde-base/kdebase-pam -> kde-plasma/kdebase-pam (diff)
downloadgentoo-c0f246a255a609281d3e330ab9a7e1cc899b018e.tar.gz
gentoo-c0f246a255a609281d3e330ab9a7e1cc899b018e.tar.bz2
gentoo-c0f246a255a609281d3e330ab9a7e1cc899b018e.zip
net-wireless/bluez: We need to ensure obexd can be spawned automatically by systemd when user-session is enabled in dbus (#577842)
Package-Manager: portage-2.3.2
-rw-r--r--net-wireless/bluez/bluez-5.43-r1.ebuild255
-rw-r--r--net-wireless/bluez/metadata.xml36
2 files changed, 273 insertions, 18 deletions
diff --git a/net-wireless/bluez/bluez-5.43-r1.ebuild b/net-wireless/bluez/bluez-5.43-r1.ebuild
new file mode 100644
index 000000000000..86d2a686981a
--- /dev/null
+++ b/net-wireless/bluez/bluez-5.43-r1.ebuild
@@ -0,0 +1,255 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools eutils multilib python-single-r1 readme.gentoo-r1 systemd udev user multilib-minimal
+
+DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
+HOMEPAGE="http://www.bluez.org"
+SRC_URI="mirror://kernel/linux/bluetooth/${P}.tar.xz"
+
+LICENSE="GPL-2+ LGPL-2.1+"
+SLOT="0/3"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~x86"
+
+IUSE="cups doc debug deprecated extra-tools experimental +obex +readline selinux systemd test test-programs +udev user-session"
+# Since this release all remaining extra-tools need readline support, but this could
+# change in the future, hence, this REQUIRED_USE constraint could be dropped
+# again in the future.
+REQUIRED_USE="
+ extra-tools? ( readline )
+ test? ( ${PYTHON_REQUIRED_USE} )
+ test-programs? ( ${PYTHON_REQUIRED_USE} )
+ user-session? ( systemd )
+"
+
+CDEPEND="
+ >=dev-libs/glib-2.28:2[${MULTILIB_USEDEP}]
+ >=sys-apps/dbus-1.6:=[user-session=]
+ >=sys-apps/hwids-20121202.2
+ cups? ( net-print/cups:= )
+ obex? ( dev-libs/libical:= )
+ readline? ( sys-libs/readline:= )
+ systemd? ( sys-apps/systemd )
+ udev? ( >=virtual/udev-172 )
+"
+TEST_DEPS="${PYTHON_DEPS}
+ >=dev-python/dbus-python-1[${PYTHON_USEDEP}]
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+"
+
+DEPEND="${CDEPEND}
+ virtual/pkgconfig
+ test? ( ${TEST_DEPS} )
+"
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-bluetooth )
+ test-programs? ( ${TEST_DEPS} )
+"
+DOC_CONTENTS="
+ If you want to use rfcomm as a normal user, you need to add the user
+ to the uucp group.
+"
+
+PATCHES=(
+ # Use static group "plugdev" if there is no ConsoleKit (or systemd logind)
+ "${FILESDIR}"/bluez-plugdev.patch
+
+ # Try both udevadm paths to cover udev/systemd vs. eudev locations (#539844)
+ # http://www.spinics.net/lists/linux-bluetooth/msg58739.html
+ "${FILESDIR}"/bluez-udevadm-path.patch
+
+ # build: Quote systemd variable names, bug #527432
+ # http://article.gmane.org/gmane.linux.bluez.kernel/67230
+ "${FILESDIR}"/bluez-5.39-systemd-quote.patch
+
+ # Fedora patches
+ # http://www.spinics.net/lists/linux-bluetooth/msg40136.html
+ "${FILESDIR}"/0001-obex-Use-GLib-helper-function-to-manipulate-paths.patch
+
+ # http://www.spinics.net/lists/linux-bluetooth/msg41264.html
+ "${FILESDIR}"/0002-autopair-Don-t-handle-the-iCade.patch
+
+ # ???
+ "${FILESDIR}"/0004-agent-Assert-possible-infinite-loop.patch
+)
+
+pkg_setup() {
+ enewgroup plugdev
+
+ if use test || use test-programs; then
+ python-single-r1_pkg_setup
+ fi
+
+ if ! use udev; then
+ ewarn
+ ewarn "You are installing ${PN} with USE=-udev. This means various bluetooth"
+ ewarn "devices and adapters from Apple, Dell, Logitech etc. will not work,"
+ ewarn "and hid2hci will not be available."
+ ewarn
+ fi
+}
+
+src_prepare() {
+ default
+
+ # http://www.spinics.net/lists/linux-bluetooth/msg38490.html
+ ! use user-session && eapply "${FILESDIR}"/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
+
+ if use cups; then
+ sed -i \
+ -e "s:cupsdir = \$(libdir)/cups:cupsdir = $(cups-config --serverbin):" \
+ Makefile.{in,tools} || die
+ fi
+
+ eautoreconf
+
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ local myconf=(
+ # readline is automagic when client is enabled
+ # --enable-client always needs readline, bug #504038
+ ac_cv_header_readline_readline_h=$(multilib_native_usex readline)
+ )
+
+ if ! multilib_is_native_abi; then
+ myconf+=(
+ # deps not used for the library
+ {DBUS,GLIB}_{CFLAGS,LIBS}=' '
+ )
+ fi
+
+ econf \
+ --localstatedir=/var \
+ --disable-android \
+ --enable-datafiles \
+ --enable-experimental \
+ --enable-optimization \
+ $(use_enable debug) \
+ --enable-pie \
+ --enable-threads \
+ --enable-library \
+ --enable-tools \
+ --enable-manpages \
+ --enable-monitor \
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" \
+ $(multilib_native_use_enable cups) \
+ $(multilib_native_use_enable deprecated) \
+ $(multilib_native_use_enable experimental) \
+ $(multilib_native_use_enable obex) \
+ $(multilib_native_use_enable readline client) \
+ $(multilib_native_use_enable systemd) \
+ $(multilib_native_use_enable test-programs test) \
+ $(multilib_native_use_enable udev) \
+ $(multilib_native_use_enable udev sixaxis)
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ emake -f Makefile -f - libs \
+ <<<'libs: $(lib_LTLIBRARIES)'
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && default
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ emake DESTDIR="${D}" install
+
+ # Only install extra-tools when relevant USE flag is enabled
+ if use extra-tools; then
+ ewarn "Upstream doesn't support using this tools and their bugs are"
+ ewarn "likely to be ignored forever, also that tools can break"
+ ewarn "without previous announcement."
+ ewarn "Upstream also states all this tools are not really needed,"
+ ewarn "then, if you still need to rely on them, you must ask them"
+ ewarn "to either install that tool by default or add the needed"
+ ewarn "functionality to the existing 'official' tools."
+ ewarn "Please report this issues to:"
+ ewarn "http://www.bluez.org/development/lists/"
+
+ # Upstream doesn't install this, bug #524640
+ # http://permalink.gmane.org/gmane.linux.bluez.kernel/53115
+ # http://comments.gmane.org/gmane.linux.bluez.kernel/54564
+ # gatttool is only built with readline, bug #530776
+ if use readline; then
+ dobin attrib/gatttool
+ dobin tools/btmgmt
+ fi
+ fi
+
+ # Unittests are not that useful once installed, so make them optional
+ if use test-programs; then
+ # example-gatt-client is the only one needing
+ # python3, the others are python2 only. Remove
+ # until we see how to pull in python2 and python3
+ # for runtime
+ rm "${ED}"/usr/$(get_libdir)/bluez/test/example-gatt-server || die
+ rm "${ED}"/usr/$(get_libdir)/bluez/test/example-gatt-client || die
+ python_fix_shebang "${ED}"/usr/$(get_libdir)/bluez/test
+ for i in $(find "${ED}"/usr/$(get_libdir)/bluez/test -maxdepth 1 -type f ! -name "*.*"); do
+ dosym "${i}" /usr/bin/bluez-"${i##*/}"
+ done
+ fi
+ else
+ emake DESTDIR="${D}" \
+ install-includeHEADERS \
+ install-libLTLIBRARIES \
+ install-pkgconfigDATA
+ fi
+}
+
+multilib_src_install_all() {
+ # We need to ensure obexd can be spawned automatically by systemd
+ # when user-session is enabled:
+ # http://marc.info/?l=linux-bluetooth&m=148096094716386&w=2
+ # https://bugs.gentoo.org/show_bug.cgi?id=577842
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804908
+ # https://bugs.archlinux.org/task/45816
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1318441
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1389347
+ use user-session && ln -s "${ED}"/usr/lib/systemd/user/obex.service "${ED}"/usr/lib/systemd/user/dbus-org.bluez.obex.service
+
+ prune_libtool_files --modules
+
+ keepdir /var/lib/bluetooth
+
+ # Upstream don't want people to play with them
+ # But we keep installing them due to 'historical' reasons
+ insinto /etc/bluetooth
+ local d
+ for d in input network proximity; do
+ doins profiles/${d}/${d}.conf
+ done
+ doins src/main.conf
+
+ newinitd "${FILESDIR}"/bluetooth-init.d-r3 bluetooth
+ newinitd "${FILESDIR}"/rfcomm-init.d-r2 rfcomm
+
+ einstalldocs
+ use doc && dodoc doc/*.txt
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+
+ use udev && udev_reload
+
+ has_version net-dialup/ppp || elog "To use dial up networking you must install net-dialup/ppp."
+
+ if ! has_version sys-auth/consolekit && ! has_version sys-apps/systemd; then
+ elog "Since you don't have sys-auth/consolekit neither sys-apps/systemd, you will"
+ elog "need to add the user to the plugdev group."
+ fi
+}
diff --git a/net-wireless/bluez/metadata.xml b/net-wireless/bluez/metadata.xml
index 7d7038ee2d0e..111da8cd9eea 100644
--- a/net-wireless/bluez/metadata.xml
+++ b/net-wireless/bluez/metadata.xml
@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
- <email>pacho@gentoo.org</email>
+<maintainer type="person">
+ <email>pacho@gentoo.org</email>
<name>Pacho Ramos</name>
</maintainer>
- <use>
- <flag name="deprecated">Build deprecated plugins</flag>
- <flag name="experimental">Build experimental plugins</flag>
- <flag name="extra-tools">Install tools that upstream doesn't install on
+<use>
+ <flag name="deprecated">Build deprecated plugins</flag>
+ <flag name="experimental">Build experimental plugins</flag>
+ <flag name="extra-tools">Install tools that upstream doesn't install on
purpose by default. All this tools shouldn't be used. Then, please
notify upstream about you still need them to let them know the
situation.</flag>
- <flag name="test-programs">Install tools for testing of
- various Bluetooth functions</flag>
- <flag name="hid2hci">The HID proxying makes the keyboard / mouse show up
- as regular USB HID devices, but needs them to be
- paired before enabling this, otherwise they won't be
- detected</flag>
- <flag name="obex">Enable OBEX transfer support.</flag>
- </use>
- <upstream>
- <remote-id type="cpe">cpe:/a:bluez:bluez</remote-id>
- <remote-id type="cpe">cpe:/a:bluez:bluez-libs</remote-id>
- </upstream>
+ <flag name="test-programs">Install tools for testing of
+ various Bluetooth functions</flag>
+ <flag name="hid2hci">The HID proxying makes the keyboard / mouse show up
+ as regular USB HID devices, but needs them to be paired before enabling
+ this, otherwise they won't be detected</flag>
+ <flag name="obex">Enable OBEX transfer support.</flag>
+ <flag name="user-session">Allow compatibility with user-session semantics for session bus under systemd</flag>
+</use>
+<upstream>
+ <remote-id type="cpe">cpe:/a:bluez:bluez</remote-id>
+ <remote-id type="cpe">cpe:/a:bluez:bluez-libs</remote-id>
+</upstream>
</pkgmetadata>