blob: 0374d23f0c861acd25c9e8fcccedaf59a36c4785 [file] [log] [blame]
Andrew Geissler517393d2023-01-13 08:55:19 -06001DESCRIPTION = "Blueman is a GTK+ Bluetooth Manager"
2LICENSE = "GPL-3.0-only"
3LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
4
5DEPENDS = "gtk+3 glib-2.0 bluez5 python3-pygobject python3-cython-native"
6
Patrick Williamse760df82023-05-26 11:10:49 -05007inherit meson gettext systemd gsettings pkgconfig python3native gtk-icon-cache useradd features_check
8
Patrick Williamsb542dec2023-06-09 01:26:37 -05009REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
Andrew Geissler517393d2023-01-13 08:55:19 -060010
11SRC_URI = " \
12 git://github.com/blueman-project/blueman.git;protocol=https;branch=2-3-stable \
13 file://0001-Search-for-cython3.patch \
14 file://0002-fix-fail-to-enable-bluetooth.patch \
15 file://0001-meson-add-pythoninstalldir-option.patch \
16"
17S = "${WORKDIR}/git"
18SRCREV = "c85e7afb8d6547d4c35b7b639124de8e999c3650"
19
20EXTRA_OEMESON = "-Druntime_deps_check=false -Dpythoninstalldir=${@noprefix('PYTHON_SITEPACKAGES_DIR', d)}"
21
22SYSTEMD_SERVICE:${PN} = "${BPN}-mechanism.service"
23SYSTEMD_AUTO_ENABLE:${PN} = "disable"
24
25RRECOMMENDS:${PN} += "adwaita-icon-theme"
26RDEPENDS:${PN} += " \
27 python3-core \
Patrick Williams864cc432023-02-09 14:54:44 -060028 python3-ctypes \
Andrew Geissler517393d2023-01-13 08:55:19 -060029 python3-dbus \
30 python3-pygobject \
31 python3-terminal \
32 python3-fcntl \
33 packagegroup-tools-bluetooth \
34"
35
36PACKAGECONFIG ??= " \
37 ${@bb.utils.filter('DISTRO_FEATURES', 'polkit pulseaudio ', d)} \
38 thunar \
39"
40PACKAGECONFIG[thunar] = "-Dthunar-sendto=true,-Dthunar-sendto=false"
41PACKAGECONFIG[pulseaudio] = "-Dpulseaudio=true,-Dpulseaudio=false"
42PACKAGECONFIG[polkit] = "-Dpolicykit=true,-Dpolicykit=false"
43
44FILES:${PN} += " \
45 ${datadir} \
46 ${systemd_user_unitdir} \
47 ${PYTHON_SITEPACKAGES_DIR} \
48"
49
50# In code, path to python is a variable that is replaced with path to native version of it
51# during the configure stage, e.g ../recipe-sysroot-native/usr/bin/python3-native/python3.
52# Replace it with #!/usr/bin/env python3
53do_install:append() {
54 sed -i "1s/.*/#!\/usr\/bin\/env python3/" ${D}${prefix}/libexec/blueman-rfcomm-watcher \
55 ${D}${prefix}/libexec/blueman-mechanism \
56 ${D}${bindir}/blueman-adapters \
57 ${D}${bindir}/blueman-applet \
58 ${D}${bindir}/blueman-manager \
59 ${D}${bindir}/blueman-sendto \
60 ${D}${bindir}/blueman-services \
61 ${D}${bindir}/blueman-tray
62}
63
Patrick Williams864cc432023-02-09 14:54:44 -060064do_install:append() {
65 install -d ${D}${datadir}/polkit-1/rules.d
66 cat >${D}${datadir}/polkit-1/rules.d/51-blueman.rules <<EOF
67/* Allow users in wheel group to use blueman feature requiring root without authentication */
68polkit.addRule(function(action, subject) {
69 if ((action.id == "org.blueman.network.setup" ||
70 action.id == "org.blueman.dhcp.client" ||
71 action.id == "org.blueman.rfkill.setstate" ||
72 action.id == "org.blueman.pppd.pppconnect") &&
73 subject.isInGroup("wheel")) {
74
75 return polkit.Result.YES;
76 }
77});
78EOF
79}
80
81USERADD_PACKAGES = "${PN}"
82USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 --shell /bin/nologin polkitd"
83
84do_install:append() {
85 # Fix up permissions on polkit rules.d to work with rpm4 constraints
86 chmod 700 ${D}/${datadir}/polkit-1/rules.d
87 chown polkitd:root ${D}/${datadir}/polkit-1/rules.d
88}