aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2024-02-16 23:11:07 +0000
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2024-02-20 08:51:26 -0500
commit71d8fda25b2176a5e6b288c868195bc57aaaf9f8 (patch)
tree36368425b340ae154203e5733f0258aa497eaa82
parentc2b9f357d52207ef22c9a4880cc0b5c7e8f11c5b (diff)
build: handle relative libexecdir instances
With earlier commit, we've used exec_dir to reference the path of obexd and bluetoothd within the service files. At the same time, in my testing I was providing the complete path on the configure command line. As result, things just worked. In the default case, the variable contains relative references to ${} variables, which as result end up literal in the services. Ultimately the service files were broken. Document are reuse the existing pattern of manually expanding the variables. Fixes: https://github.com/bluez/bluez/issues/736
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac18
-rw-r--r--mesh/bluetooth-mesh.service.in2
-rw-r--r--obexd/src/obex.service.in2
-rw-r--r--obexd/src/org.bluez.obex.service.in2
-rw-r--r--src/bluetooth.service.in2
-rw-r--r--tools/bluetooth-logger.service.in2
7 files changed, 24 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index 450e931c6e..5717c3dacb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,7 @@ CLEANFILES =
EXTRA_DIST =
-pkglibexecdir = $(libexecdir)/bluetooth
+pkglibexecdir = @PKGLIBEXECDIR@
pkglibexec_PROGRAMS =
diff --git a/configure.ac b/configure.ac
index 70e9d4be81..bb6380f2f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -401,6 +401,24 @@ if (test "${prefix}" = "NONE"); then
prefix="${ac_default_prefix}"
fi
+if (test "${exec_prefix}" = "NONE"); then
+ # exec_prefix defaults to prefix, although our manual handling of the
+ # latter (above) confuses autoconf. Manually set the exec_prefix.
+ exec_prefix="${prefix}"
+fi
+
+# Expand any variables containing relative references like ${prefix} and co.
+#
+# Otherwise we'll end up with literal references in the final binaries or
+# manuals, which is not something we really want.
+
+if (test "$libexecdir" = '${exec_prefix}/libexec'); then
+ pkglibexecdir="${exec_prefix}/libexec/bluetooth"
+else
+ pkglibexecdir="${libexecdir}/bluetooth"
+fi
+AC_SUBST(PKGLIBEXECDIR, "${pkglibexecdir}")
+
if (test "$localstatedir" = '${prefix}/var'); then
storagedir="${prefix}/var/lib/bluetooth"
else
diff --git a/mesh/bluetooth-mesh.service.in b/mesh/bluetooth-mesh.service.in
index 9c3ff01a3e..899ef107b8 100644
--- a/mesh/bluetooth-mesh.service.in
+++ b/mesh/bluetooth-mesh.service.in
@@ -5,7 +5,7 @@ ConditionPathIsDirectory=/sys/class/bluetooth
[Service]
Type=dbus
BusName=org.bluez.mesh
-ExecStart=@exec_prefix@/bluetooth/bluetooth-meshd
+ExecStart=@PKGLIBEXECDIR@/bluetooth-meshd
NotifyAccess=main
LimitNPROC=1
ProtectHome=true
diff --git a/obexd/src/obex.service.in b/obexd/src/obex.service.in
index 03d09a679d..cf4d8c9850 100644
--- a/obexd/src/obex.service.in
+++ b/obexd/src/obex.service.in
@@ -4,7 +4,7 @@ Description=Bluetooth OBEX service
[Service]
Type=dbus
BusName=org.bluez.obex
-ExecStart=@exec_prefix@/bluetooth/obexd
+ExecStart=@PKGLIBEXECDIR@/obexd
[Install]
Alias=dbus-org.bluez.obex.service
diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
index 14c16d3e3c..873b9d1fd9 100644
--- a/obexd/src/org.bluez.obex.service.in
+++ b/obexd/src/org.bluez.obex.service.in
@@ -1,4 +1,4 @@
[D-BUS Service]
Name=org.bluez.obex
-Exec=@exec_prefix@/bluetooth/obexd
+Exec=@PKGLIBEXECDIR@/obexd
SystemdService=dbus-org.bluez.obex.service
diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in
index 63e1575875..8ebe89bec6 100644
--- a/src/bluetooth.service.in
+++ b/src/bluetooth.service.in
@@ -6,7 +6,7 @@ ConditionPathIsDirectory=/sys/class/bluetooth
[Service]
Type=dbus
BusName=org.bluez
-ExecStart=@exec_prefix@/bluetooth/bluetoothd
+ExecStart=@PKGLIBEXECDIR@/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
diff --git a/tools/bluetooth-logger.service.in b/tools/bluetooth-logger.service.in
index 5657c8d84b..d6df676b86 100644
--- a/tools/bluetooth-logger.service.in
+++ b/tools/bluetooth-logger.service.in
@@ -4,7 +4,7 @@ ConditionPathIsDirectory=/sys/class/bluetooth
[Service]
Type=simple
-ExecStart=@exec_prefix@/bluetooth/btmon-logger -p -b /var/log/bluetooth/hci.log
+ExecStart=@PKGLIBEXECDIR@/btmon-logger -p -b /var/log/bluetooth/hci.log
NotifyAccess=main
CapabilityBoundingSet=CAP_NET_RAW
LimitNPROC=1