Subject: [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service

Hello everyone,

While looking at our bluez package for the SteamDeck a handful of
paper cuts stood out. Here we tackle the build related ones - a couple
more series will be incoming shortly.

In a gist we have the following:
- remove manual tracking of .services.in, DEPENDENCIES
- remove unused variables
- polish PKG_CHECK_MODULES handling
- enable linker garbage collection
- create a symlink to dbus-org.bluez.obex.service

The last change is slightly out of topic here, although since there's
a high chance of merge conflicts, I've added it here. Let me know if
you'd like it send out as separate series.

This is my first time diving into bluez, so any comments and input is
greatly appreciated.

Thanks
Emil

---
Emil Velikov (10):
build: remove unused AM_CONDITIONAL
build: tweak PKG_CHECK_MODULES calls
build: require libudev 196, circa 2012
build: remove dummy {conf,state}{dir,_DATA}
build: remove unused variable builtin_nodist
build: remove .service files from DEPENDENCIES lists
build: remove explicit DEPENDENCIES handling
build: manage .service.in files via configure.ac
build: enable gc/dead code removal
build: install dbus-org.bluez.obex.service symlink

Makefile.am | 31 ++--------------
Makefile.mesh | 7 +---
Makefile.obexd | 10 ++++--
Makefile.tools | 6 ----
acinclude.m4 | 2 ++
configure.ac | 75 ++++++++++++---------------------------
mesh/bluetooth-mesh.service.in | 2 +-
monitor/hwdb.c | 2 +-
obexd/src/obex.service.in | 2 +-
src/bluetooth.service.in | 2 +-
src/oui.c | 2 +-
tools/bluetooth-logger.service.in | 2 +-
12 files changed, 43 insertions(+), 100 deletions(-)
---
base-commit: 770ad5614e7e8074133e6f563495ce4822f63fe4
change-id: 20240116-autofoo-db2fe2c70951

Best regards,
--
Emil Velikov <[email protected]>



Subject: [PATCH BlueZ 03/10] build: require libudev 196, circa 2012

From: Emil Velikov <[email protected]>

libudev 196 (systemd really) was released back in 2012, which introduces
the hwdb API. Bump the requirement, since even long retired
distributions like Debian oldold stable (aka Buster) include newer
versions.
---
configure.ac | 6 ++----
monitor/hwdb.c | 2 +-
src/oui.c | 2 +-
3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index 7cbfa8846..cab5da581 100644
--- a/configure.ac
+++ b/configure.ac
@@ -223,10 +223,8 @@ AM_CONDITIONAL(MONITOR, test "${enable_monitor}" != "no")
AC_ARG_ENABLE(udev, AS_HELP_STRING([--disable-udev],
[disable udev device support]), [enable_udev=${enableval}])
if (test "${enable_tools}" != "no" && test "${enable_udev}" != "no"); then
- PKG_CHECK_MODULES(UDEV, libudev >= 172)
- AC_CHECK_LIB(udev, udev_hwdb_new,
- AC_DEFINE(HAVE_UDEV_HWDB_NEW, 1,
- [Define to 1 if you have the udev_hwdb_new() function.]))
+ PKG_CHECK_MODULES(UDEV, libudev >= 196)
+ AC_DEFINE(HAVE_UDEV, 1, [Define to 1 if udev is required])
fi

AC_ARG_WITH([udevdir], AS_HELP_STRING([--with-udevdir=DIR],
diff --git a/monitor/hwdb.c b/monitor/hwdb.c
index 22de9edfb..6c0d052bb 100644
--- a/monitor/hwdb.c
+++ b/monitor/hwdb.c
@@ -19,7 +19,7 @@

#include "hwdb.h"

-#ifdef HAVE_UDEV_HWDB_NEW
+#ifdef HAVE_UDEV
#include <libudev.h>

bool hwdb_get_vendor_model(const char *modalias, char **vendor, char **model)
diff --git a/src/oui.c b/src/oui.c
index c434f416f..7b3040fb0 100644
--- a/src/oui.c
+++ b/src/oui.c
@@ -16,7 +16,7 @@
#include "lib/bluetooth.h"
#include "oui.h"

-#ifdef HAVE_UDEV_HWDB_NEW
+#ifdef HAVE_UDEV
#include <libudev.h>

char *batocomp(const bdaddr_t *ba)

--
2.43.0


Subject: [PATCH BlueZ 08/10] build: manage .service.in files via configure.ac

From: Emil Velikov <[email protected]>

Considering we do basic substitution, we don't need to manually sed,
track dependencies, dist nor clean. Just add the files to
AC_CONFIG_FILES() call it a day - it does everything for us.
---
Makefile.am | 12 ++----------
Makefile.mesh | 5 +----
Makefile.obexd | 4 ++--
Makefile.tools | 3 ---
configure.ac | 11 ++++++++++-
mesh/bluetooth-mesh.service.in | 2 +-
obexd/src/obex.service.in | 2 +-
src/bluetooth.service.in | 2 +-
tools/bluetooth-logger.service.in | 2 +-
9 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 6007f9eb7..9bb27c911 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,7 +41,7 @@ dbussystembusdir = $(DBUS_SYSTEMBUSDIR)
dbussystembus_DATA = src/org.bluez.service
endif

-EXTRA_DIST += src/bluetooth.service.in src/org.bluez.service
+EXTRA_DIST += src/org.bluez.service

plugindir = $(libdir)/bluetooth/plugins

@@ -339,7 +339,7 @@ builtin_files = src/builtin.h

nodist_src_bluetoothd_SOURCES = $(builtin_files)

-CLEANFILES += $(builtin_files) src/bluetooth.service
+CLEANFILES += $(builtin_files)

if MANPAGES
man_MANS += src/bluetoothd.8
@@ -730,11 +730,6 @@ MAINTAINERCLEANFILES = Makefile.in \
aclocal.m4 configure config.h.in config.sub config.guess \
ltmain.sh depcomp compile missing install-sh mkinstalldirs test-driver

-SED_PROCESS = $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
- $(SED) -e 's,@pkglibexecdir\@,$(pkglibexecdir),g' \
- -e 's,@libexecdir\@,$(libexecdir),g'
- < $< > $@
-
if RUN_RST2MAN
RST2MAN_PROCESS = $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(RST2MAN) --strict --no-raw \
@@ -744,9 +739,6 @@ RST2MAN_PROCESS = $(AM_V_GEN)test -f $@ || \
{ echo "Generated manual page $@ does not exist"; false; }
endif

-%.service: %.service.in Makefile
- $(SED_PROCESS)
-
%.1: %.rst Makefile
$(RST2MAN_PROCESS)

diff --git a/Makefile.mesh b/Makefile.mesh
index 45fa90339..ea50383d2 100644
--- a/Makefile.mesh
+++ b/Makefile.mesh
@@ -51,9 +51,6 @@ man_MANS += mesh/bluetooth-meshd.8
endif
manual_pages += mesh/bluetooth-meshd.8

-CLEANFILES += mesh/bluetooth-mesh.service
-
endif

-EXTRA_DIST += mesh/bluetooth-mesh.conf mesh/bluetooth-mesh.service.in \
- mesh/org.bluez.mesh.service mesh/mesh-main.conf
+EXTRA_DIST += mesh/bluetooth-mesh.conf mesh/org.bluez.mesh.service mesh/mesh-main.conf
diff --git a/Makefile.obexd b/Makefile.obexd
index 5d1a4ff65..c2b5c6d7a 100644
--- a/Makefile.obexd
+++ b/Makefile.obexd
@@ -7,7 +7,7 @@ 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/org.bluez.obex.service

if OBEX

@@ -112,6 +112,6 @@ obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources)
$(AM_V_at)$(MKDIR_P) $(dir $@)
$(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@

-CLEANFILES += obexd/src/builtin.h $(builtin_files) obexd/src/obex.service
+CLEANFILES += obexd/src/builtin.h

EXTRA_DIST += obexd/src/genbuiltin
diff --git a/Makefile.tools b/Makefile.tools
index 1cde39f94..044342e29 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -77,9 +77,6 @@ systemdsystemunit_DATA += tools/bluetooth-logger.service
endif
endif

-CLEANFILES += tools/bluetooth-logger.service
-EXTRA_DIST += tools/bluetooth-logger.service.in
-
if TESTING
noinst_PROGRAMS += emulator/btvirt emulator/b1ee emulator/hfp \
peripheral/btsensor tools/3dsp \
diff --git a/configure.ac b/configure.ac
index cab5da581..b4d362494 100644
--- a/configure.ac
+++ b/configure.ac
@@ -441,5 +441,14 @@ if (test "${plugin_phonebook}" = "ebook"); then
fi
AC_SUBST(PLUGIN_PHONEBOOK, [${plugin_phonebook}])

-AC_CONFIG_FILES(Makefile src/bluetoothd.rst lib/bluez.pc mesh/bluetooth-meshd.rst)
+AC_CONFIG_FILES(
+ lib/bluez.pc
+ Makefile
+ mesh/bluetooth-meshd.rst
+ mesh/bluetooth-mesh.service
+ obexd/src/obex.service
+ src/bluetoothd.rst
+ src/bluetooth.service
+ tools/bluetooth-logger.service
+)
AC_OUTPUT
diff --git a/mesh/bluetooth-mesh.service.in b/mesh/bluetooth-mesh.service.in
index c8afbf53e..9c3ff01a3 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=@pkglibexecdir@/bluetooth-meshd
+ExecStart=@exec_prefix@/bluetooth/bluetooth-meshd
NotifyAccess=main
LimitNPROC=1
ProtectHome=true
diff --git a/obexd/src/obex.service.in b/obexd/src/obex.service.in
index fc0dce993..03d09a679 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=@pkglibexecdir@/obexd
+ExecStart=@exec_prefix@/bluetooth/obexd

[Install]
Alias=dbus-org.bluez.obex.service
diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in
index beb98ce0c..63e157587 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=@pkglibexecdir@/bluetoothd
+ExecStart=@exec_prefix@/bluetooth/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
diff --git a/tools/bluetooth-logger.service.in b/tools/bluetooth-logger.service.in
index 009002731..5657c8d84 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=@pkglibexecdir@/btmon-logger -p -b /var/log/bluetooth/hci.log
+ExecStart=@exec_prefix@/bluetooth/btmon-logger -p -b /var/log/bluetooth/hci.log
NotifyAccess=main
CapabilityBoundingSet=CAP_NET_RAW
LimitNPROC=1

--
2.43.0


Subject: [PATCH BlueZ 06/10] build: remove .service files from DEPENDENCIES lists

From: Emil Velikov <[email protected]>

The DEPENDENCES lists are for binary objects, while the service files
are required by systemd (et al) after the install stage. The services
files are referenced by _DATA, so the service.in -> service conversion
can happen then.
---
Makefile.am | 3 +--
Makefile.mesh | 3 +--
Makefile.tools | 3 +--
3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 564f1b935..2be214631 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -335,8 +335,7 @@ src_bluetoothd_LDFLAGS = $(AM_LDFLAGS) -Wl,--export-dynamic \

src_bluetoothd_DEPENDENCIES = lib/libbluetooth-internal.la \
gdbus/libgdbus-internal.la \
- src/libshared-glib.la \
- src/bluetooth.service
+ src/libshared-glib.la

src_bluetoothd_CPPFLAGS = $(AM_CPPFLAGS) -DBLUETOOTH_PLUGIN_BUILTIN \
-DPLUGINDIR=\""$(build_plugindir)"\" \
diff --git a/Makefile.mesh b/Makefile.mesh
index 63f085de1..a66e47442 100644
--- a/Makefile.mesh
+++ b/Makefile.mesh
@@ -45,8 +45,7 @@ mesh/main.$(OBJEXT): src/builtin.h lib/bluetooth/bluetooth.h

mesh_bluetooth_meshd_SOURCES = $(mesh_sources) mesh/main.c
mesh_bluetooth_meshd_LDADD = src/libshared-ell.la $(ell_ldadd) -ljson-c
-mesh_bluetooth_meshd_DEPENDENCIES = $(ell_dependencies) src/libshared-ell.la \
- mesh/bluetooth-mesh.service
+mesh_bluetooth_meshd_DEPENDENCIES = $(ell_dependencies) src/libshared-ell.la

if MANPAGES
man_MANS += mesh/bluetooth-meshd.8
diff --git a/Makefile.tools b/Makefile.tools
index e541084e9..6fda3f51d 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -71,8 +71,7 @@ pkglibexec_PROGRAMS += tools/btmon-logger

tools_btmon_logger_SOURCES = tools/btmon-logger.c
tools_btmon_logger_LDADD = src/libshared-mainloop.la
-tools_btmon_logger_DEPENDENCIES = src/libshared-mainloop.la \
- tools/bluetooth-logger.service
+tools_btmon_logger_DEPENDENCIES = src/libshared-mainloop.la

if SYSTEMD
systemdsystemunit_DATA += tools/bluetooth-logger.service

--
2.43.0


Subject: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

From: Emil Velikov <[email protected]>

The project does not install anything in the respective confdir and
statedir(s). Since no files are installed, the respective folders are
not created either - systemd will create them prior to starting the
service(s).

The *dir variables themselves are no longer used in *service.in, so
remove everything.
---
Makefile.am | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index e738eb3a5..16d6bf160 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,15 +28,9 @@ AM_CFLAGS = $(MISC_CFLAGS) $(WARNING_CFLAGS) $(UDEV_CFLAGS) $(LIBEBOOK_CFLAGS) \
$(LIBEDATASERVER_CFLAGS) $(ell_cflags)
AM_LDFLAGS = $(MISC_LDFLAGS)

-confdir = $(sysconfdir)/bluetooth
-statedir = $(localstatedir)/lib/bluetooth
-
if DATAFILES
dbusdir = $(DBUS_CONFDIR)/dbus-1/system.d
dbus_DATA = src/bluetooth.conf
-
-conf_DATA =
-state_DATA =
endif

if SYSTEMD
@@ -747,9 +741,7 @@ MAINTAINERCLEANFILES = Makefile.in \

SED_PROCESS = $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(SED) -e 's,@pkglibexecdir\@,$(pkglibexecdir),g' \
- -e 's,@libexecdir\@,$(libexecdir),g' \
- -e 's,@statedir\@,$(statedir),g' \
- -e 's,@confdir\@,$(confdir),g' \
+ -e 's,@libexecdir\@,$(libexecdir),g'
< $< > $@

if RUN_RST2MAN

--
2.43.0


Subject: [PATCH BlueZ 09/10] build: enable gc/dead code removal

From: Emil Velikov <[email protected]>

Currently, there's plenty of unused code in most binaries. Enable
-fdata/function-sections, which allows the linker garbage collection to
do its job.

On a maintainer build, this reduces the (unstriped) binaries from 117 to
114MiB.
---
acinclude.m4 | 2 ++
1 file changed, 2 insertions(+)

diff --git a/acinclude.m4 b/acinclude.m4
index c5d6de7b3..4b73a5bfc 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -134,6 +134,8 @@ AC_DEFUN([MISC_FLAGS], [
misc_cflags="$misc_cflags --coverage"
misc_ldflags="$misc_ldflags --coverage"
fi
+ misc_cflags="$misc_cflags -ffunction-sections -fdata-sections"
+ misc_ldflags="$misc_ldflags -Wl,--gc-sections"
AC_SUBST([MISC_CFLAGS], $misc_cflags)
AC_SUBST([MISC_LDFLAGS], $misc_ldflags)
])

--
2.43.0


Subject: [PATCH BlueZ 05/10] build: remove unused variable builtin_nodist

From: Emil Velikov <[email protected]>

---
Makefile.am | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 16d6bf160..564f1b935 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -282,7 +282,6 @@ gobex_sources = gobex/gobex.h gobex/gobex.c \
builtin_modules =
builtin_sources =
builtin_cppflags =
-builtin_nodist =
builtin_ldadd =

include Makefile.plugins
@@ -344,7 +343,7 @@ src_bluetoothd_CPPFLAGS = $(AM_CPPFLAGS) -DBLUETOOTH_PLUGIN_BUILTIN \
$(BACKTRACE_CFLAGS) $(builtin_cppflags)
src_bluetoothd_SHORTNAME = bluetoothd

-builtin_files = src/builtin.h $(builtin_nodist)
+builtin_files = src/builtin.h

nodist_src_bluetoothd_SOURCES = $(builtin_files)


--
2.43.0


Subject: [PATCH BlueZ 07/10] build: remove explicit DEPENDENCIES handling

From: Emil Velikov <[email protected]>

We currently duplicate the DEPENDENCIES handling that autotools does for
us. We have two types of objects - libraries or generated headers.

Former are part of the LDADD, the latter in BUILT_SOURCES.
---
Makefile.am | 7 -------
Makefile.mesh | 1 -
Makefile.tools | 2 --
3 files changed, 10 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 2be214631..6007f9eb7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -77,7 +77,6 @@ lib_LTLIBRARIES += lib/libbluetooth.la

lib_libbluetooth_la_SOURCES = $(lib_headers) $(lib_sources)
lib_libbluetooth_la_LDFLAGS = $(AM_LDFLAGS) -version-info 22:12:19
-lib_libbluetooth_la_DEPENDENCIES = $(local_headers)
endif

noinst_LTLIBRARIES += lib/libbluetooth-internal.la
@@ -94,12 +93,10 @@ gdbus_libgdbus_internal_la_SOURCES = gdbus/gdbus.h \
if EXTERNAL_ELL
ell_cflags = @ELL_CFLAGS@
ell_ldadd = @ELL_LIBS@
-ell_dependencies =
ell_built_sources = ell/shared
else
ell_cflags =
ell_ldadd = ell/libell-internal.la
-ell_dependencies = $(ell_ldadd)
ell_built_sources = ell/shared ell/internal ell/ell.h

noinst_LTLIBRARIES += ell/libell-internal.la
@@ -333,10 +330,6 @@ src_bluetoothd_LDADD = lib/libbluetooth-internal.la \
src_bluetoothd_LDFLAGS = $(AM_LDFLAGS) -Wl,--export-dynamic \
-Wl,--version-script=$(srcdir)/src/bluetooth.ver

-src_bluetoothd_DEPENDENCIES = lib/libbluetooth-internal.la \
- gdbus/libgdbus-internal.la \
- src/libshared-glib.la
-
src_bluetoothd_CPPFLAGS = $(AM_CPPFLAGS) -DBLUETOOTH_PLUGIN_BUILTIN \
-DPLUGINDIR=\""$(build_plugindir)"\" \
$(BACKTRACE_CFLAGS) $(builtin_cppflags)
diff --git a/Makefile.mesh b/Makefile.mesh
index a66e47442..45fa90339 100644
--- a/Makefile.mesh
+++ b/Makefile.mesh
@@ -45,7 +45,6 @@ mesh/main.$(OBJEXT): src/builtin.h lib/bluetooth/bluetooth.h

mesh_bluetooth_meshd_SOURCES = $(mesh_sources) mesh/main.c
mesh_bluetooth_meshd_LDADD = src/libshared-ell.la $(ell_ldadd) -ljson-c
-mesh_bluetooth_meshd_DEPENDENCIES = $(ell_dependencies) src/libshared-ell.la

if MANPAGES
man_MANS += mesh/bluetooth-meshd.8
diff --git a/Makefile.tools b/Makefile.tools
index 6fda3f51d..1cde39f94 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -71,7 +71,6 @@ pkglibexec_PROGRAMS += tools/btmon-logger

tools_btmon_logger_SOURCES = tools/btmon-logger.c
tools_btmon_logger_LDADD = src/libshared-mainloop.la
-tools_btmon_logger_DEPENDENCIES = src/libshared-mainloop.la

if SYSTEMD
systemdsystemunit_DATA += tools/bluetooth-logger.service
@@ -577,7 +576,6 @@ noinst_PROGRAMS += tools/btpclient tools/btpclientctl
tools_btpclient_SOURCES = tools/btpclient.c src/shared/btp.c src/shared/btp.h
tools_btpclient_LDADD = lib/libbluetooth-internal.la \
src/libshared-ell.la $(ell_ldadd)
-tools_btpclient_DEPENDENCIES = lib/libbluetooth-internal.la $(ell_dependencies)
tools/btpclient.$(OBJEXT): src/libshared-ell.la ell/internal

tools_btpclientctl_SOURCES = tools/btpclientctl.c client/display.c

--
2.43.0


Subject: [PATCH BlueZ 10/10] build: install dbus-org.bluez.obex.service symlink

From: Emil Velikov <[email protected]>

obex.service has an alias(dbus-org.bluez.obex.service) which is created
as it's enabled. At the same time, the dbus service references the alias
itself.

Thus the dbus socket activation can happen, only when the service is
already enabled/running... Which defeats the whole purpose.

Create/install the respective symlink/alias, so that any user looking
for the dbus will start it.

Note: we need a hook here instead of LN_S to create the in-tree file,
since `install' aggressively dereferences it.
---
Makefile.obexd | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/Makefile.obexd b/Makefile.obexd
index c2b5c6d7a..363295d0e 100644
--- a/Makefile.obexd
+++ b/Makefile.obexd
@@ -3,6 +3,12 @@ if SYSTEMD
systemduserunitdir = $(SYSTEMD_USERUNITDIR)
systemduserunit_DATA = obexd/src/obex.service

+install-data-hook:
+ $(LN_S) -f obex.service $(DESTDIR)$(SYSTEMD_USERUNITDIR)/dbus-org.bluez.obex.service
+
+uninstall-hook:
+ rm -f $(DESTDIR)$(SYSTEMD_USERUNITDIR)/dbus-org.bluez.obex.service
+
dbussessionbusdir = $(DBUS_SESSIONBUSDIR)
dbussessionbus_DATA = obexd/src/org.bluez.obex.service
endif

--
2.43.0


2024-01-16 18:40:46

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

Hi Emil,

On Tue, Jan 16, 2024 at 8:52 AM Emil Velikov via B4 Relay
<[email protected]> wrote:
>
> From: Emil Velikov <[email protected]>
>
> The project does not install anything in the respective confdir and
> statedir(s). Since no files are installed, the respective folders are
> not created either - systemd will create them prior to starting the
> service(s).
>
> The *dir variables themselves are no longer used in *service.in, so
> remove everything.
> ---
> Makefile.am | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index e738eb3a5..16d6bf160 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -28,15 +28,9 @@ AM_CFLAGS = $(MISC_CFLAGS) $(WARNING_CFLAGS) $(UDEV_CFLAGS) $(LIBEBOOK_CFLAGS) \
> $(LIBEDATASERVER_CFLAGS) $(ell_cflags)
> AM_LDFLAGS = $(MISC_LDFLAGS)
>
> -confdir = $(sysconfdir)/bluetooth
> -statedir = $(localstatedir)/lib/bluetooth
> -
> if DATAFILES
> dbusdir = $(DBUS_CONFDIR)/dbus-1/system.d
> dbus_DATA = src/bluetooth.conf
> -
> -conf_DATA =
> -state_DATA =
> endif
>
> if SYSTEMD
> @@ -747,9 +741,7 @@ MAINTAINERCLEANFILES = Makefile.in \
>
> SED_PROCESS = $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
> $(SED) -e 's,@pkglibexecdir\@,$(pkglibexecdir),g' \
> - -e 's,@libexecdir\@,$(libexecdir),g' \
> - -e 's,@statedir\@,$(statedir),g' \
> - -e 's,@confdir\@,$(confdir),g' \
> + -e 's,@libexecdir\@,$(libexecdir),g'
> < $< > $@
>
> if RUN_RST2MAN
>
> --
> 2.43.0

This one seems to be causing some build regression, when trying to
apply it breaks the builds.

--
Luiz Augusto von Dentz

2024-01-16 19:11:18

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Tue, 16 Jan 2024 13:51:54 +0000 you wrote:
> Hello everyone,
>
> While looking at our bluez package for the SteamDeck a handful of
> paper cuts stood out. Here we tackle the build related ones - a couple
> more series will be incoming shortly.
>
> In a gist we have the following:
> - remove manual tracking of .services.in, DEPENDENCIES
> - remove unused variables
> - polish PKG_CHECK_MODULES handling
> - enable linker garbage collection
> - create a symlink to dbus-org.bluez.obex.service
>
> [...]

Here is the summary with links:
- [BlueZ,01/10] build: remove unused AM_CONDITIONAL
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=6d6294036c39
- [BlueZ,02/10] build: tweak PKG_CHECK_MODULES calls
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=c07fb1fcddad
- [BlueZ,03/10] build: require libudev 196, circa 2012
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=3f490a69cb55
- [BlueZ,04/10] build: remove dummy {conf,state}{dir,_DATA}
(no matching commit)
- [BlueZ,05/10] build: remove unused variable builtin_nodist
(no matching commit)
- [BlueZ,06/10] build: remove .service files from DEPENDENCIES lists
(no matching commit)
- [BlueZ,07/10] build: remove explicit DEPENDENCIES handling
(no matching commit)
- [BlueZ,08/10] build: manage .service.in files via configure.ac
(no matching commit)
- [BlueZ,09/10] build: enable gc/dead code removal
(no matching commit)
- [BlueZ,10/10] build: install dbus-org.bluez.obex.service symlink
(no matching commit)

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



2024-01-17 08:39:48

by Emil Velikov

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
<[email protected]> wrote:

>
> This one seems to be causing some build regression, when trying to
> apply it breaks the builds.
>

Thanks for the quick feedback Luiz.

Would be happy to help but need some details:
- configure options used
- autoconf, make, gcc(?) version
- the error log

I did run all my patches through `git rebase -x "./bootstrap-config &&
make -j8 distcheck" origin/master` so any regressions are alarming.

OOC: Where is the code for the test bot that reports on the ML? I've
noticed that it flagged some unrelated issues [1], while not honouring
the "Reply-to:" header.

Thanks
Emil

[1] https://lore.kernel.org/linux-bluetooth/[email protected]/T/#m21808760ae29dae03e415e67c47b045daa461a6a

2024-01-18 16:12:42

by Emil Velikov

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

On Wed, 17 Jan 2024 at 08:39, Emil Velikov <[email protected]> wrote:
>
> On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> <[email protected]> wrote:
>
> >
> > This one seems to be causing some build regression, when trying to
> > apply it breaks the builds.
> >
>
> Thanks for the quick feedback Luiz.
>
> Would be happy to help but need some details:
> - configure options used
> - autoconf, make, gcc(?) version
> - the error log
>

Just went through all the patches and they apply and build just fine.
Both in terms of "./bootstrap-configure && make distcheck" as well as
the Arch specific configure options as seen here [1].

Any pointers about the issue you're seeing and the platform in
question would be appreciated.

Thanks again,
Emil

[1] https://gitlab.archlinux.org/archlinux/packaging/packages/bluez/-/blob/main/PKGBUILD?ref_type=heads

2024-01-18 17:11:10

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

Hi Emil,

On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <[email protected]> wrote:
>
> On Wed, 17 Jan 2024 at 08:39, Emil Velikov <[email protected]> wrote:
> >
> > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > <[email protected]> wrote:
> >
> > >
> > > This one seems to be causing some build regression, when trying to
> > > apply it breaks the builds.
> > >
> >
> > Thanks for the quick feedback Luiz.
> >
> > Would be happy to help but need some details:
> > - configure options used
> > - autoconf, make, gcc(?) version
> > - the error log
> >
>
> Just went through all the patches and they apply and build just fine.
> Both in terms of "./bootstrap-configure && make distcheck" as well as
> the Arch specific configure options as seen here [1].
>
> Any pointers about the issue you're seeing and the platform in
> question would be appreciated.
>
> Thanks again,
> Emil
>
> [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bluez/-/blob/main/PKGBUILD?ref_type=heads

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/
9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:5864: mesh/bluetooth-meshd] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4674: all] Error 2

This might be due to using scan-build, anyway CI also run into the same problem:

https://github.com/BluezTestBot/bluez/pull/2010#issuecomment-1893971347

--
Luiz Augusto von Dentz

2024-01-19 11:10:13

by Emil Velikov

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

On Thu, 18 Jan 2024 at 17:05, Luiz Augusto von Dentz
<[email protected]> wrote:
>
> Hi Emil,
>
> On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <[email protected]> wrote:
> >
> > On Wed, 17 Jan 2024 at 08:39, Emil Velikov <[email protected]> wrote:
> > >
> > > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > > <[email protected]> wrote:
> > >
> > > >
> > > > This one seems to be causing some build regression, when trying to
> > > > apply it breaks the builds.
> > > >
> > >
> > > Thanks for the quick feedback Luiz.
> > >
> > > Would be happy to help but need some details:
> > > - configure options used
> > > - autoconf, make, gcc(?) version
> > > - the error log
> > >
> >
> > Just went through all the patches and they apply and build just fine.
> > Both in terms of "./bootstrap-configure && make distcheck" as well as
> > the Arch specific configure options as seen here [1].
> >
> > Any pointers about the issue you're seeing and the platform in
> > question would be appreciated.
> >
> > Thanks again,
> > Emil
> >
> > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bluez/-/blob/main/PKGBUILD?ref_type=heads
>
> /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/
> 9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
> (.text+0x24): undefined reference to `main'
> collect2: error: ld returned 1 exit status
> make[1]: *** [Makefile:5864: mesh/bluetooth-meshd] Error 1
> make[1]: *** Waiting for unfinished jobs....
> make: *** [Makefile:4674: all] Error 2
>
> This might be due to using scan-build, anyway CI also run into the same problem:
>

Might be version/platform specific - `scan-build make -j2` works just
fine here. What are you using - distro, autoconf, clang/scan-build
version?

> https://github.com/BluezTestBot/bluez/pull/2010#issuecomment-1893971347
>

Hmm, I was wondering where the bot lives. Will take a closer look.

Thanks
Emil

2024-01-19 15:09:48

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}

Hi Emil, Tedd,

On Fri, Jan 19, 2024 at 6:09 AM Emil Velikov <[email protected]> wrote:
>
> On Thu, 18 Jan 2024 at 17:05, Luiz Augusto von Dentz
> <[email protected]> wrote:
> >
> > Hi Emil,
> >
> > On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <[email protected]> wrote:
> > >
> > > On Wed, 17 Jan 2024 at 08:39, Emil Velikov <[email protected]> wrote:
> > > >
> > > > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > > > <[email protected]> wrote:
> > > >
> > > > >
> > > > > This one seems to be causing some build regression, when trying to
> > > > > apply it breaks the builds.
> > > > >
> > > >
> > > > Thanks for the quick feedback Luiz.
> > > >
> > > > Would be happy to help but need some details:
> > > > - configure options used
> > > > - autoconf, make, gcc(?) version
> > > > - the error log
> > > >
> > >
> > > Just went through all the patches and they apply and build just fine.
> > > Both in terms of "./bootstrap-configure && make distcheck" as well as
> > > the Arch specific configure options as seen here [1].
> > >
> > > Any pointers about the issue you're seeing and the platform in
> > > question would be appreciated.
> > >
> > > Thanks again,
> > > Emil
> > >
> > > [1] https://gitlab.archlinux.org/archlinux/packaging/packages/bluez/-/blob/main/PKGBUILD?ref_type=heads
> >
> > /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/
> > 9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
> > (.text+0x24): undefined reference to `main'
> > collect2: error: ld returned 1 exit status
> > make[1]: *** [Makefile:5864: mesh/bluetooth-meshd] Error 1
> > make[1]: *** Waiting for unfinished jobs....
> > make: *** [Makefile:4674: all] Error 2
> >
> > This might be due to using scan-build, anyway CI also run into the same problem:
> >
>
> Might be version/platform specific - `scan-build make -j2` works just
> fine here. What are you using - distro, autoconf, clang/scan-build
> version?
>
> > https://github.com/BluezTestBot/bluez/pull/2010#issuecomment-1893971347
> >
>
> Hmm, I was wondering where the bot lives. Will take a closer look.

If I'm not mistaken it runs under a ubuntu VM under a github action,
@Tedd Ho-Jeong An can probably explain it better since he wrote the CI
integration, which btw we intend to move to BlueZ organization at some
point.

> Thanks
> Emil



--
Luiz Augusto von Dentz