linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service
@ 2024-01-16 13:51 Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL Emil Velikov via B4 Relay
                   ` (10 more replies)
  0 siblings, 11 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

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 <emil.l.velikov@gmail.com>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
@ 2024-01-16 13:51 ` Emil Velikov via B4 Relay
  2024-01-16 15:41   ` Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service bluez.test.bot
  2024-01-16 13:51 ` [PATCH BlueZ 02/10] build: tweak PKG_CHECK_MODULES calls Emil Velikov via B4 Relay
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

---
 configure.ac | 1 -
 1 file changed, 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 3e10ec970..307a2f30c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -238,7 +238,6 @@ if (test "${enable_tools}" != "no" && test "${enable_udev}" != "no"); then
 		AC_DEFINE(HAVE_UDEV_HWDB_NEW, 1,
 			[Define to 1 if you have the udev_hwdb_new() function.]))
 fi
-AM_CONDITIONAL(UDEV, test "${enable_udev}" != "no")
 
 AC_ARG_WITH([udevdir], AS_HELP_STRING([--with-udevdir=DIR],
 			[path to udev directory]), [path_udevdir=${withval}])

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 02/10] build: tweak PKG_CHECK_MODULES calls
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL Emil Velikov via B4 Relay
@ 2024-01-16 13:51 ` Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 03/10] build: require libudev 196, circa 2012 Emil Velikov via B4 Relay
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

There's no need to call AC_SUBST after a PKG_CHECK_MODULES call, since
the variables are always set. As an example: the produced Makefile.in
and Makefile are identical before/after this change.

Similarly, we don't need the "dummy=yes" and manual AC_MSG_ERROR() call
- pkg-config (or pkgconf) will produce the same and in some cases better
  error messages.
---
 configure.ac | 59 ++++++++++++-----------------------------------------------
 1 file changed, 12 insertions(+), 47 deletions(-)

diff --git a/configure.ac b/configure.ac
index 307a2f30c..7cbfa8846 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,23 +72,16 @@ AC_CHECK_LIB(dl, dlopen, dummy=yes,
 
 AC_CHECK_HEADERS(linux/types.h linux/if_alg.h linux/uinput.h linux/uhid.h sys/random.h)
 
-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28, dummy=yes,
-				AC_MSG_ERROR(GLib >= 2.28 is required))
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28)
 
 if (test "${enable_threads}" = "yes"); then
 	AC_DEFINE(NEED_THREADS, 1, [Define if threading support is required])
-	PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
-				AC_MSG_ERROR(GThread >= 2.16 is required))
+	PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16)
 	GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
 	GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
 fi
 
-PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.10, dummy=yes,
-				AC_MSG_ERROR(D-Bus >= 1.10 is required))
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
+PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.10)
 
 AC_ARG_WITH([dbusconfdir], AS_HELP_STRING([--with-dbusconfdir=DIR],
 				[path to D-Bus configuration directory]),
@@ -230,10 +223,7 @@ 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, dummy=yes,
-				AC_MSG_ERROR(libudev >= 172 is required))
-	AC_SUBST(UDEV_CFLAGS)
-	AC_SUBST(UDEV_LIBS)
+	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.]))
@@ -260,10 +250,7 @@ AC_ARG_ENABLE(mesh, AS_HELP_STRING([--enable-mesh],
 AM_CONDITIONAL(MESH, test "${enable_mesh}" = "yes")
 
 if (test "${enable_mesh}" = "yes"); then
-	PKG_CHECK_MODULES(JSONC, json-c >= 0.13, dummy=yes,
-				AC_MSG_ERROR(json-c >= 0.13 is required))
-	AC_SUBST(JSON_CFLAGS)
-	AC_SUBST(JSON_LIBS)
+	PKG_CHECK_MODULES(JSONC, json-c >= 0.13)
 fi
 
 AC_ARG_ENABLE(midi, AS_HELP_STRING([--enable-midi],
@@ -271,19 +258,13 @@ AC_ARG_ENABLE(midi, AS_HELP_STRING([--enable-midi],
 AM_CONDITIONAL(MIDI, test "${enable_midi}" = "yes")
 
 if (test "${enable_midi}" = "yes"); then
-	PKG_CHECK_MODULES(ALSA, alsa, dummy=yes,
-			AC_MSG_ERROR(ALSA lib is required for MIDI support))
-	AC_SUBST(ALSA_CFLAGS)
-	AC_SUBST(ALSA_LIBS)
+	PKG_CHECK_MODULES(ALSA, alsa)
 fi
 
 AC_ARG_ENABLE(obex, AS_HELP_STRING([--disable-obex],
 		[disable OBEX profile support]), [enable_obex=${enableval}])
 if (test "${enable_obex}" != "no"); then
-	PKG_CHECK_MODULES(ICAL, libical, dummy=yes,
-					AC_MSG_ERROR(libical is required))
-	AC_SUBST(ICAL_CFLAGS)
-	AC_SUBST(ICAL_LIBS)
+	PKG_CHECK_MODULES(ICAL, libical)
 fi
 AM_CONDITIONAL(OBEX, test "${enable_obex}" != "no")
 
@@ -295,10 +276,7 @@ AC_ARG_ENABLE([external_ell], AS_HELP_STRING([--enable-external-ell],
 				[enable external Embedded Linux library]),
 					[enable_external_ell=${enableval}])
 if (test "${enable_external_ell}" = "yes"); then
-	PKG_CHECK_MODULES(ELL, ell >= 0.39, dummy=yes,
-		AC_MSG_ERROR(Embedded Linux library >= 0.39 is required))
-	AC_SUBST(ELL_CFLAGS)
-	AC_SUBST(ELL_LIBS)
+	PKG_CHECK_MODULES(ELL, ell >= 0.39)
 fi
 if (test "${enable_external_ell}" != "yes" &&
 		(test "${enable_btpclient}" = "yes" || test "${enable_mesh}" = "yes")); then
@@ -442,17 +420,11 @@ AC_ARG_ENABLE(android, AS_HELP_STRING([--enable-android],
 AM_CONDITIONAL(ANDROID, test "${enable_android}" = "yes")
 
 if (test "${enable_android}" = "yes"); then
-	PKG_CHECK_MODULES(SBC, sbc >= 1.2, dummy=yes,
-			AC_MSG_ERROR(SBC library >= 1.2 is required))
-	AC_SUBST(SBC_CFLAGS)
-	AC_SUBST(SBC_LIBS)
+	PKG_CHECK_MODULES(SBC, sbc >= 1.2)
 fi
 
 if (test "${enable_android}" = "yes"); then
-	PKG_CHECK_MODULES(SPEEXDSP, speexdsp >= 1.2, dummy=yes,
-			AC_MSG_ERROR(SPEEXDSP library >= 1.2 is required))
-	AC_SUBST(SPEEXDSP_CFLAGS)
-	AC_SUBST(SPEEXDSP_LIBS)
+	PKG_CHECK_MODULES(SPEEXDSP, speexdsp >= 1.2)
 fi
 
 AC_DEFINE_UNQUOTED(ANDROID_STORAGEDIR, "${storagedir}/android",
@@ -466,15 +438,8 @@ if (test -z "${plugin_phonebook}"); then
 fi
 
 if (test "${plugin_phonebook}" = "ebook"); then
-	PKG_CHECK_MODULES(LIBEBOOK, [libebook-1.2 >= 3.3], dummy=yes,
-			AC_MSG_ERROR(libebook >= 3.3 is required))
-	AC_SUBST(LIBEBOOK_CFLAGS)
-	AC_SUBST(LIBEBOOK_LIBS)
-	PKG_CHECK_MODULES(LIBEDATESERVER, [libedataserver-1.2 >= 3.3],
-			dummy=yes,
-			AC_MSG_ERROR(libedataserver >= 3.3 is required))
-	AC_SUBST(LIBEDATESERVER_CFLAGS)
-	AC_SUBST(LIBEDATESERVER_LIBS)
+	PKG_CHECK_MODULES(LIBEBOOK, libebook-1.2 >= 3.3)
+	PKG_CHECK_MODULES(LIBEDATESERVER, libedataserver-1.2 >= 3.3)
 fi
 AC_SUBST(PLUGIN_PHONEBOOK, [${plugin_phonebook}])
 

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 03/10] build: require libudev 196, circa 2012
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 02/10] build: tweak PKG_CHECK_MODULES calls Emil Velikov via B4 Relay
@ 2024-01-16 13:51 ` Emil Velikov via B4 Relay
  2024-01-16 13:51 ` [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA} Emil Velikov via B4 Relay
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (2 preceding siblings ...)
  2024-01-16 13:51 ` [PATCH BlueZ 03/10] build: require libudev 196, circa 2012 Emil Velikov via B4 Relay
@ 2024-01-16 13:51 ` Emil Velikov via B4 Relay
  2024-01-16 18:40   ` Luiz Augusto von Dentz
  2024-01-16 13:51 ` [PATCH BlueZ 05/10] build: remove unused variable builtin_nodist Emil Velikov via B4 Relay
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 05/10] build: remove unused variable builtin_nodist
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (3 preceding siblings ...)
  2024-01-16 13:51 ` [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA} Emil Velikov via B4 Relay
@ 2024-01-16 13:51 ` Emil Velikov via B4 Relay
  2024-01-16 13:52 ` [PATCH BlueZ 06/10] build: remove .service files from DEPENDENCIES lists Emil Velikov via B4 Relay
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

---
 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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 06/10] build: remove .service files from DEPENDENCIES lists
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (4 preceding siblings ...)
  2024-01-16 13:51 ` [PATCH BlueZ 05/10] build: remove unused variable builtin_nodist Emil Velikov via B4 Relay
@ 2024-01-16 13:52 ` Emil Velikov via B4 Relay
  2024-01-16 13:52 ` [PATCH BlueZ 07/10] build: remove explicit DEPENDENCIES handling Emil Velikov via B4 Relay
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:52 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 07/10] build: remove explicit DEPENDENCIES handling
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (5 preceding siblings ...)
  2024-01-16 13:52 ` [PATCH BlueZ 06/10] build: remove .service files from DEPENDENCIES lists Emil Velikov via B4 Relay
@ 2024-01-16 13:52 ` Emil Velikov via B4 Relay
  2024-01-16 13:52 ` [PATCH BlueZ 08/10] build: manage .service.in files via configure.ac Emil Velikov via B4 Relay
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:52 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 08/10] build: manage .service.in files via configure.ac
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (6 preceding siblings ...)
  2024-01-16 13:52 ` [PATCH BlueZ 07/10] build: remove explicit DEPENDENCIES handling Emil Velikov via B4 Relay
@ 2024-01-16 13:52 ` Emil Velikov via B4 Relay
  2024-01-16 13:52 ` [PATCH BlueZ 09/10] build: enable gc/dead code removal Emil Velikov via B4 Relay
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:52 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 09/10] build: enable gc/dead code removal
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (7 preceding siblings ...)
  2024-01-16 13:52 ` [PATCH BlueZ 08/10] build: manage .service.in files via configure.ac Emil Velikov via B4 Relay
@ 2024-01-16 13:52 ` Emil Velikov via B4 Relay
  2024-01-16 13:52 ` [PATCH BlueZ 10/10] build: install dbus-org.bluez.obex.service symlink Emil Velikov via B4 Relay
  2024-01-16 19:02 ` [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service patchwork-bot+bluetooth
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:52 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH BlueZ 10/10] build: install dbus-org.bluez.obex.service symlink
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (8 preceding siblings ...)
  2024-01-16 13:52 ` [PATCH BlueZ 09/10] build: enable gc/dead code removal Emil Velikov via B4 Relay
@ 2024-01-16 13:52 ` Emil Velikov via B4 Relay
  2024-01-16 19:02 ` [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service patchwork-bot+bluetooth
  10 siblings, 0 replies; 20+ messages in thread
From: Emil Velikov via B4 Relay @ 2024-01-16 13:52 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Emil Velikov

From: Emil Velikov <emil.velikov@collabora.com>

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


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* RE: Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service
  2024-01-16 13:51 ` [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL Emil Velikov via B4 Relay
@ 2024-01-16 15:41   ` bluez.test.bot
  0 siblings, 0 replies; 20+ messages in thread
From: bluez.test.bot @ 2024-01-16 15:41 UTC (permalink / raw)
  To: linux-bluetooth, devnull+emil.l.velikov.gmail.com

[-- Attachment #1: Type: text/plain, Size: 46187 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=817218

---Test result---

Test Summary:
CheckPatch                    PASS      2.49 seconds
GitLint                       PASS      2.02 seconds
BuildEll                      PASS      23.95 seconds
BluezMake                     PASS      718.10 seconds
MakeCheck                     PASS      11.95 seconds
MakeDistcheck                 PASS      162.53 seconds
CheckValgrind                 PASS      227.07 seconds
CheckSmatch                   PASS      331.34 seconds
bluezmakeextell               PASS      108.66 seconds
IncrementalBuild              FAIL      2729.87 seconds
ScanBuild                     FAIL      933.47 seconds

Details
##############################
Test: IncrementalBuild - FAIL
Desc: Incremental build with the patches in the series
Output:
[BlueZ,04/10] build: remove dummy {conf,state}{dir,_DATA}

tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12763:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12763 | int main(int argc, char *argv[])
      |     ^~~~
unit/test-avdtp.c: In function ‘main’:
unit/test-avdtp.c:766:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  766 | int main(int argc, char *argv[])
      |     ^~~~
unit/test-avrcp.c: In function ‘main’:
unit/test-avrcp.c:989:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  989 | int main(int argc, char *argv[])
      |     ^~~~
/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
##############################
Test: ScanBuild - FAIL
Desc: Run Scan Build
Output:

src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed
        gatt_db_unregister(op->client->db, op->db_id);
                           ^~~~~~~~~~
src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed
        discovery_op_complete(op, false, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed
        discover_all(op);
        ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed
                                                        discovery_op_ref(op),
                                                        ^~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed
        complete_write_long_op(req, success, 0, false);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed
        request_unref(req);
        ^~~~~~~~~~~~~~~~~~
12 warnings generated.
src/shared/bap.c:4768:23: warning: Access to field 'type' results in a dereference of a null pointer (loaded from variable 'lpac')
                if (!match.rpac && (lpac->type != BT_BAP_BCAST_SOURCE))
                                    ^~~~~~~~~~
1 warning generated.
src/shared/shell.c:1228:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt')
                        if (c != opt->options[index - offset].val) {
                                 ^~~~~~~~~~~~
1 warning generated.
src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed
        gatt_db_unregister(op->client->db, op->db_id);
                           ^~~~~~~~~~
src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed
        discovery_op_complete(op, false, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed
        discover_all(op);
        ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed
                                                        discovery_op_ref(op),
                                                        ^~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed
        complete_write_long_op(req, success, 0, false);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed
        request_unref(req);
        ^~~~~~~~~~~~~~~~~~
12 warnings generated.
src/shared/bap.c:4768:23: warning: Access to field 'type' results in a dereference of a null pointer (loaded from variable 'lpac')
                if (!match.rpac && (lpac->type != BT_BAP_BCAST_SOURCE))
                                    ^~~~~~~~~~
1 warning generated.
src/shared/shell.c:1228:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt')
                        if (c != opt->options[index - offset].val) {
                                 ^~~~~~~~~~~~
1 warning generated.
tools/hciattach.c:816:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
        if ((n = read_hci_event(fd, resp, 10)) < 0) {
             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/hciattach.c:864:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
        if ((n = read_hci_event(fd, resp, 4)) < 0) {
             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/hciattach.c:886:8: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
                if ((n = read_hci_event(fd, resp, 10)) < 0) {
                     ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/hciattach.c:908:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
        if ((n = read_hci_event(fd, resp, 4)) < 0) {
             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/hciattach.c:929:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
        if ((n = read_hci_event(fd, resp, 4)) < 0) {
             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/hciattach.c:973:7: warning: Although the value stored to 'n' is used in the enclosing expression, the value is never actually read from 'n'
        if ((n = read_hci_event(fd, resp, 6)) < 0) {
             ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 warnings generated.
src/oui.c:50:2: warning: Value stored to 'hwdb' is never read
        hwdb = udev_hwdb_unref(hwdb);
        ^      ~~~~~~~~~~~~~~~~~~~~~
src/oui.c:53:2: warning: Value stored to 'udev' is never read
        udev = udev_unref(udev);
        ^      ~~~~~~~~~~~~~~~~
2 warnings generated.
tools/hcidump.c:180:9: warning: Potential leak of memory pointed to by 'dp'
                                if (fds[i].fd == sock)
                                    ^~~
tools/hcidump.c:248:17: warning: Assigned value is garbage or undefined
                                dh->ts_sec  = htobl(frm.ts.tv_sec);
                                            ^ ~~~~~~~~~~~~~~~~~~~~
tools/hcidump.c:326:9: warning: 1st function call argument is an uninitialized value
                                if (be32toh(dp.flags) & 0x02) {
                                    ^~~~~~~~~~~~~~~~~
/usr/include/endian.h:46:22: note: expanded from macro 'be32toh'
#  define be32toh(x) __bswap_32 (x)
                     ^~~~~~~~~~~~~~
tools/hcidump.c:341:20: warning: 1st function call argument is an uninitialized value
                                frm.data_len = be32toh(dp.len);
                                               ^~~~~~~~~~~~~~~
/usr/include/endian.h:46:22: note: expanded from macro 'be32toh'
#  define be32toh(x) __bswap_32 (x)
                     ^~~~~~~~~~~~~~
tools/hcidump.c:346:14: warning: 1st function call argument is an uninitialized value
                                opcode = be32toh(dp.flags) & 0xffff;
                                         ^~~~~~~~~~~~~~~~~
/usr/include/endian.h:46:22: note: expanded from macro 'be32toh'
#  define be32toh(x) __bswap_32 (x)
                     ^~~~~~~~~~~~~~
tools/hcidump.c:384:17: warning: Assigned value is garbage or undefined
                        frm.data_len = btohs(dh.len);
                                     ^ ~~~~~~~~~~~~~
tools/hcidump.c:394:11: warning: Assigned value is garbage or undefined
                frm.len = frm.data_len;
                        ^ ~~~~~~~~~~~~
tools/hcidump.c:398:9: warning: 1st function call argument is an uninitialized value
                        ts = be64toh(ph.ts);
                             ^~~~~~~~~~~~~~
/usr/include/endian.h:51:22: note: expanded from macro 'be64toh'
#  define be64toh(x) __bswap_64 (x)
                     ^~~~~~~~~~~~~~
tools/hcidump.c:403:13: warning: 1st function call argument is an uninitialized value
                        frm.in = be32toh(dp.flags) & 0x01;
                                 ^~~~~~~~~~~~~~~~~
/usr/include/endian.h:46:22: note: expanded from macro 'be32toh'
#  define be32toh(x) __bswap_32 (x)
                     ^~~~~~~~~~~~~~
tools/hcidump.c:408:11: warning: Assigned value is garbage or undefined
                        frm.in = dh.in;
                               ^ ~~~~~
tools/hcidump.c:437:7: warning: Null pointer passed to 1st parameter expecting 'nonnull'
        fd = open(file, open_flags, 0644);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 warnings generated.
tools/rfcomm.c:228:3: warning: Value stored to 'i' is never read
                i = execvp(cmdargv[0], cmdargv);
                ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/rfcomm.c:228:7: warning: Null pointer passed to 1st parameter expecting 'nonnull'
                i = execvp(cmdargv[0], cmdargv);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/rfcomm.c:348:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd'
                if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
                     ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/rfcomm.c:491:14: warning: Assigned value is garbage or undefined
        req.channel = raddr.rc_channel;
                    ^ ~~~~~~~~~~~~~~~~
tools/rfcomm.c:509:8: warning: Although the value stored to 'fd' is used in the enclosing expression, the value is never actually read from 'fd'
                if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
                     ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 warnings generated.
src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined
                buf[1] = data[i + 1];
                       ^ ~~~~~~~~~~~
src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined
                        buf[1] = data[i + 1];
                               ^ ~~~~~~~~~~~
src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined
                        buf[1] = data[i + 1];
                               ^ ~~~~~~~~~~~
3 warnings generated.
tools/ciptool.c:350:7: warning: 5th function call argument is an uninitialized value
        sk = do_connect(ctl, dev_id, &src, &dst, psm, (1 << CMTP_LOOPBACK));
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
tools/sdptool.c:941:26: warning: Result of 'malloc' is converted to a pointer of type 'uint32_t', which is incompatible with sizeof operand type 'int'
                        uint32_t *value_int = malloc(sizeof(int));
                        ~~~~~~~~~~            ^~~~~~ ~~~~~~~~~~~
tools/sdptool.c:980:4: warning: 1st function call argument is an uninitialized value
                        free(allocArray[i]);
                        ^~~~~~~~~~~~~~~~~~~
tools/sdptool.c:3777:2: warning: Potential leak of memory pointed to by 'si.name'
        return add_service(0, &si);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~
tools/sdptool.c:4112:4: warning: Potential leak of memory pointed to by 'context.svc'
                        return -1;
                        ^~~~~~~~~
4 warnings generated.
tools/avtest.c:225:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 3);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:235:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 4);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:244:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 3);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:258:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf,
                                ^     ~~~~~~~~~~~~~~
tools/avtest.c:265:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf,
                                ^     ~~~~~~~~~~~~~~
tools/avtest.c:272:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf,
                                ^     ~~~~~~~~~~~~~~
tools/avtest.c:279:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf,
                                ^     ~~~~~~~~~~~~~~
tools/avtest.c:291:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 4);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:295:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:304:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 3);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:308:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:317:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 3);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:324:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:346:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 4);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:350:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:359:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 3);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:363:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:376:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 4);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:380:5: warning: Value stored to 'len' is never read
                                len = write(sk, buf, 2);
                                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:387:4: warning: Value stored to 'len' is never read
                        len = write(sk, buf, 2);
                        ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:397:4: warning: Value stored to 'len' is never read
                        len = write(sk, buf, 2);
                        ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:562:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 2);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:570:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, invalid ? 2 : 3);
                ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/avtest.c:584:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 4 + sizeof(media_transport));
                ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/avtest.c:597:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:607:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:619:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:634:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:646:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:655:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 3);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:662:3: warning: Value stored to 'len' is never read
                len = write(sk, buf, 2);
                ^     ~~~~~~~~~~~~~~~~~
tools/avtest.c:698:2: warning: Value stored to 'len' is never read
        len = write(sk, buf, AVCTP_HEADER_LENGTH + sizeof(play_pressed));
        ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 warnings generated.
tools/btproxy.c:836:15: warning: Null pointer passed to 1st parameter expecting 'nonnull'
                        tcp_port = atoi(optarg);
                                   ^~~~~~~~~~~~
tools/btproxy.c:839:8: warning: Null pointer passed to 1st parameter expecting 'nonnull'
                        if (strlen(optarg) > 3 && !strncmp(optarg, "hci", 3))
                            ^~~~~~~~~~~~~~
2 warnings generated.
tools/create-image.c:76:3: warning: Value stored to 'fd' is never read
                fd = -1;
                ^    ~~
tools/create-image.c:84:3: warning: Value stored to 'fd' is never read
                fd = -1;
                ^    ~~
tools/create-image.c:92:3: warning: Value stored to 'fd' is never read
                fd = -1;
                ^    ~~
tools/create-image.c:105:2: warning: Value stored to 'fd' is never read
        fd = -1;
        ^    ~~
4 warnings generated.
tools/btgatt-client.c:1597:2: warning: Value stored to 'argv' is never read
        argv += optind;
        ^       ~~~~~~
1 warning generated.
tools/btgatt-server.c:1212:2: warning: Value stored to 'argv' is never read
        argv -= optind;
        ^       ~~~~~~
1 warning generated.
tools/check-selftest.c:42:3: warning: Value stored to 'ptr' is never read
                ptr = fgets(result, sizeof(result), fp);
                ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
tools/gatt-service.c:294:2: warning: 2nd function call argument is an uninitialized value
        chr_write(chr, value, len);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
tools/obex-server-tool.c:133:13: warning: Null pointer passed to 1st parameter expecting 'nonnull'
        data->fd = open(name, O_WRONLY | O_CREAT | O_NOCTTY, 0600);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/obex-server-tool.c:192:13: warning: Null pointer passed to 1st parameter expecting 'nonnull'
        data->fd = open(name, O_RDONLY | O_NOCTTY, 0);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
tools/test-runner.c:945:2: warning: 2nd function call argument is an uninitialized value
        printf("Running command %s\n", cmdname ? cmdname : argv[0]);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
tools/btpclientctl.c:402:3: warning: Value stored to 'bit' is never read
                bit = 0;
                ^     ~
tools/btpclientctl.c:1655:2: warning: Null pointer passed to 2nd parameter expecting 'nonnull'
        memcpy(cp->data, ad_data, ad_len);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
src/sdpd-request.c:211:13: warning: Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'uint16_t'
                                pElem = malloc(sizeof(uint16_t));
                                        ^~~~~~ ~~~~~~~~~~~~~~~~
src/sdpd-request.c:239:13: warning: Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'uint32_t'
                                pElem = malloc(sizeof(uint32_t));
                                        ^~~~~~ ~~~~~~~~~~~~~~~~
2 warnings generated.
android/avrcp-lib.c:1968:3: warning: 1st function call argument is an uninitialized value
                g_free(text[i]);
                ^~~~~~~~~~~~~~~
1 warning generated.
profiles/health/hdp.c:644:3: warning: Use of memory after it is freed
                hdp_tmp_dc_data_unref(dc_data);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
profiles/health/hdp.c:800:19: warning: Use of memory after it is freed
                path = g_strdup(chan->path);
                                ^~~~~~~~~~
profiles/health/hdp.c:1779:6: warning: Use of memory after it is freed
                                        hdp_tmp_dc_data_ref(hdp_conn),
                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
profiles/health/hdp.c:1836:30: warning: Use of memory after it is freed
        reply = g_dbus_create_error(data->msg, ERROR_INTERFACE ".HealthError",
                                    ^~~~~~~~~
4 warnings generated.
profiles/health/hdp_util.c:1053:2: warning: Use of memory after it is freed
        conn_data->func(conn_data->data, gerr);
        ^~~~~~~~~~~~~~~
1 warning generated.
attrib/gatt.c:970:2: warning: Potential leak of memory pointed to by 'long_write'
        return prepare_write(long_write);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/sdpd-request.c:211:13: warning: Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'uint16_t'
                                pElem = malloc(sizeof(uint16_t));
                                        ^~~~~~ ~~~~~~~~~~~~~~~~
src/sdpd-request.c:239:13: warning: Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'uint32_t'
                                pElem = malloc(sizeof(uint32_t));
                                        ^~~~~~ ~~~~~~~~~~~~~~~~
2 warnings generated.
src/sdp-xml.c:126:10: warning: Assigned value is garbage or undefined
                buf[1] = data[i + 1];
                       ^ ~~~~~~~~~~~
src/sdp-xml.c:300:11: warning: Assigned value is garbage or undefined
                        buf[1] = data[i + 1];
                               ^ ~~~~~~~~~~~
src/sdp-xml.c:338:11: warning: Assigned value is garbage or undefined
                        buf[1] = data[i + 1];
                               ^ ~~~~~~~~~~~
3 warnings generated.
src/sdp-client.c:353:14: warning: Access to field 'cb' results in a dereference of a null pointer
        (*ctxt)->cb = cb;
        ~~~~~~~~~~~~^~~~
1 warning generated.
src/gatt-database.c:1154:10: warning: Value stored to 'bits' during its initialization is never read
        uint8_t bits[] = { BT_GATT_CHRC_CLI_FEAT_ROBUST_CACHING,
                ^~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
gobex/gobex-header.c:67:2: warning: Null pointer passed to 2nd parameter expecting 'nonnull'
        memcpy(to, from, count);
        ^~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
gobex/gobex-transfer.c:423:7: warning: Use of memory after it is freed
        if (!g_slist_find(transfers, transfer))
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
lib/hci.c:97:4: warning: Value stored to 'ptr' is never read
                        ptr += sprintf(ptr, "%s", m->str);
                        ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
gdbus/watch.c:204:3: warning: Attempt to free released memory
                g_free(l->data);
                ^~~~~~~~~~~~~~~
1 warning generated.
lib/sdp.c:507:16: warning: Dereference of undefined pointer value
                int8_t dtd = *(uint8_t *) dtds[i];
                             ^~~~~~~~~~~~~~~~~~~~
lib/sdp.c:535:17: warning: Dereference of undefined pointer value
                uint8_t dtd = *(uint8_t *) dtds[i];
                              ^~~~~~~~~~~~~~~~~~~~
lib/sdp.c:580:12: warning: Access to field 'attrId' results in a dereference of a null pointer (loaded from variable 'd')
        d->attrId = attr;
        ~         ^
lib/sdp.c:1870:26: warning: Potential leak of memory pointed to by 'ap'
        for (; pdlist; pdlist = pdlist->next) {
                                ^~~~~~
lib/sdp.c:1884:6: warning: Potential leak of memory pointed to by 'pds'
                ap = sdp_list_append(ap, pds);
                ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
lib/sdp.c:1929:10: warning: Potential leak of memory pointed to by 'u'
                        *seqp = sdp_list_append(*seqp, u);
                        ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/sdp.c:2034:4: warning: Potential leak of memory pointed to by 'lang'
                        sdp_list_free(*langSeq, free);
                        ^~~~~~~~~~~~~
lib/sdp.c:2123:9: warning: Potential leak of memory pointed to by 'profDesc'
        return 0;
               ^
lib/sdp.c:3255:8: warning: Potential leak of memory pointed to by 'pSvcRec'
                pSeq = sdp_list_append(pSeq, pSvcRec);
                ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/sdp.c:3256:9: warning: Potential leak of memory pointed to by 'pSeq'
                pdata += sizeof(uint32_t);
                ~~~~~~^~~~~~~~~~~~~~~~~~~
lib/sdp.c:4592:13: warning: Potential leak of memory pointed to by 'rec_list'
                        } while (scanned < attr_list_len && pdata_len > 0);
                                 ^~~~~~~
lib/sdp.c:4888:40: warning: Potential leak of memory pointed to by 'tseq'
        for (d = sdpdata->val.dataseq; d; d = d->next) {
                                              ^
lib/sdp.c:4924:8: warning: Potential leak of memory pointed to by 'subseq'
                tseq = sdp_list_append(tseq, subseq);
                ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 warnings generated.
src/shared/gatt-client.c:451:21: warning: Use of memory after it is freed
        gatt_db_unregister(op->client->db, op->db_id);
                           ^~~~~~~~~~
src/shared/gatt-client.c:696:2: warning: Use of memory after it is freed
        discovery_op_complete(op, false, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:993:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1099:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1291:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1356:2: warning: Use of memory after it is freed
        discovery_op_complete(op, success, att_ecode);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1631:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:1636:2: warning: Use of memory after it is freed
        discover_all(op);
        ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2140:6: warning: Use of memory after it is freed
        if (read_db_hash(op)) {
            ^~~~~~~~~~~~~~~~
src/shared/gatt-client.c:2148:8: warning: Use of memory after it is freed
                                                        discovery_op_ref(op),
                                                        ^~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3237:2: warning: Use of memory after it is freed
        complete_write_long_op(req, success, 0, false);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/gatt-client.c:3259:2: warning: Use of memory after it is freed
        request_unref(req);
        ^~~~~~~~~~~~~~~~~~
12 warnings generated.
src/shared/bap.c:4768:23: warning: Access to field 'type' results in a dereference of a null pointer (loaded from variable 'lpac')
                if (!match.rpac && (lpac->type != BT_BAP_BCAST_SOURCE))
                                    ^~~~~~~~~~
1 warning generated.
src/shared/shell.c:1228:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt')
                        if (c != opt->options[index - offset].val) {
                                 ^~~~~~~~~~~~
1 warning generated.
monitor/l2cap.c:1638:4: warning: Value stored to 'data' is never read
                        data += len;
                        ^       ~~~
monitor/l2cap.c:1639:4: warning: Value stored to 'size' is never read
                        size -= len;
                        ^       ~~~
2 warnings generated.
monitor/hwdb.c:59:2: warning: Value stored to 'hwdb' is never read
        hwdb = udev_hwdb_unref(hwdb);
        ^      ~~~~~~~~~~~~~~~~~~~~~
monitor/hwdb.c:64:2: warning: Value stored to 'udev' is never read
        udev = udev_unref(udev);
        ^      ~~~~~~~~~~~~~~~~
monitor/hwdb.c:106:2: warning: Value stored to 'hwdb' is never read
        hwdb = udev_hwdb_unref(hwdb);
        ^      ~~~~~~~~~~~~~~~~~~~~~
monitor/hwdb.c:111:2: warning: Value stored to 'udev' is never read
        udev = udev_unref(udev);
        ^      ~~~~~~~~~~~~~~~~
4 warnings generated.
tools/bluemoon.c:1101:8: warning: Null pointer passed to 1st parameter expecting 'nonnull'
                        if (strlen(optarg) > 3 && !strncmp(optarg, "hci", 3))
                            ^~~~~~~~~~~~~~
1 warning generated.
tools/meshctl.c:326:19: warning: Access to field 'mesh_devices' results in a dereference of a null pointer (loaded from variable 'default_ctrl')
        g_list_free_full(default_ctrl->mesh_devices, g_free);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
tools/meshctl.c:762:2: warning: 2nd function call argument is an uninitialized value
        bt_shell_printf("Attempting to disconnect from %s\n", addr);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/meshctl.c:1957:2: warning: Value stored to 'len' is never read
        len = len + extra + strlen("local_node.json");
        ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 warnings generated.
In file included from tools/mesh-gatt/crypto.c:32:
./src/shared/util.h:228:9: warning: 1st function call argument is an uninitialized value
        return be32_to_cpu(get_unaligned((const uint32_t *) ptr));
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/shared/util.h:33:26: note: expanded from macro 'be32_to_cpu'
#define be32_to_cpu(val) bswap_32(val)
                         ^~~~~~~~~~~~~
/usr/include/byteswap.h:34:21: note: expanded from macro 'bswap_32'
#define bswap_32(x) __bswap_32 (x)
                    ^~~~~~~~~~~~~~
In file included from tools/mesh-gatt/crypto.c:32:
./src/shared/util.h:238:9: warning: 1st function call argument is an uninitialized value
        return be64_to_cpu(get_unaligned((const uint64_t *) ptr));
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/shared/util.h:34:26: note: expanded from macro 'be64_to_cpu'
#define be64_to_cpu(val) bswap_64(val)
                         ^~~~~~~~~~~~~
/usr/include/byteswap.h:37:21: note: expanded from macro 'bswap_64'
#define bswap_64(x) __bswap_64 (x)
                    ^~~~~~~~~~~~~~
2 warnings generated.
ell/util.c:781:8: warning: The left operand of '>' is a garbage value
        if (x > UINT8_MAX)
            ~ ^
ell/util.c:799:8: warning: The left operand of '>' is a garbage value
        if (x > UINT16_MAX)
            ~ ^
2 warnings generated.
ell/queue.c:514:4: warning: Value stored to 'entry' is never read
                        entry = entry->next;
                        ^       ~~~~~~~~~~~
1 warning generated.
ell/pem.c:131:8: warning: Dereference of null pointer (loaded from variable 'eol')
                        if (*eol == '\r' || *eol == '\n')
                            ^~~~
ell/pem.c:166:18: warning: Dereference of null pointer (loaded from variable 'eol')
                if (buf_len && *eol == '\r' && *buf_ptr == '\n') {
                               ^~~~
ell/pem.c:166:34: warning: Dereference of null pointer (loaded from variable 'buf_ptr')
                if (buf_len && *eol == '\r' && *buf_ptr == '\n') {
                                               ^~~~~~~~
ell/pem.c:304:11: warning: 1st function call argument is an uninitialized value
        result = pem_load_buffer(file.data, file.st.st_size,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ell/pem.c:469:9: warning: 1st function call argument is an uninitialized value
        list = l_pem_load_certificate_list_from_data(file.data,
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 warnings generated.
ell/cert.c:644:41: warning: Access to field 'asn1_len' results in a dereference of a null pointer (loaded from variable 'cert')
        key = l_key_new(L_KEY_RSA, cert->asn1, cert->asn1_len);
                                               ^~~~~~~~~~~~~~
ell/cert.c:1677:8: warning: Although the value stored to 'elem_data' is used in the enclosing expression, the value is never actually read from 'elem_data'
        if (!(elem_data = asn1_der_find_elem(seq, seq_len,
              ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
ell/dbus.c:1692:10: warning: Although the value stored to 'type' is used in the enclosing expression, the value is never actually read from 'type'
        while ((type = va_arg(args, enum l_dbus_match_type)) !=
                ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
ell/gvariant-util.c:143:18: warning: The left operand of '>' is a garbage value
                        if (alignment > max_alignment)
                            ~~~~~~~~~ ^
ell/gvariant-util.c:456:5: warning: Dereference of null pointer
                        !children[0].fixed_size) {
                         ^~~~~~~~~~~~~~~~~~~~~~
ell/gvariant-util.c:846:2: warning: Value stored to 'i' is never read
        i = container->offset_index - 1;
        ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 warnings generated.
ell/ecc-external.c:68:24: warning: The left operand of '&' is a garbage value
        return (vli[bit / 64] & ((uint64_t) 1 << (bit % 64)));
                ~~~~~~~~~~~~~ ^
ell/ecc-external.c:160:18: warning: The right operand of '-' is a garbage value
                diff = left[i] - right[i] - borrow;
                               ^ ~~~~~~~~
2 warnings generated.
In file included from tools/parser/amp.c:15:
tools/parser/parser.h:121:16: warning: Dereference of null pointer
                                time_t t = f->ts.tv_sec;
                                           ^~~~~~~~~~~~
tools/parser/parser.h:127:27: warning: Dereference of null pointer
                                printf("%8lu.%06lu ", f->ts.tv_sec, f->ts.tv_usec);
                                                      ^~~~~~~~~~~~
tools/parser/parser.h:129:18: warning: Access to field 'in' results in a dereference of a null pointer (loaded from variable 'f')
                printf("%c ", (f->in ? '>' : '<'));
                               ^~~~~
3 warnings generated.
In file included from tools/parser/sdp.c:24:
tools/parser/parser.h:121:16: warning: Dereference of null pointer
                                time_t t = f->ts.tv_sec;
                                           ^~~~~~~~~~~~
tools/parser/parser.h:127:27: warning: Dereference of null pointer
                                printf("%8lu.%06lu ", f->ts.tv_sec, f->ts.tv_usec);
                                                      ^~~~~~~~~~~~
tools/parser/parser.h:129:18: warning: Access to field 'in' results in a dereference of a null pointer (loaded from variable 'f')
                printf("%c ", (f->in ? '>' : '<'));
                               ^~~~~
3 warnings generated.
In file included from tools/parser/ppp.c:22:
tools/parser/parser.h:156:2: warning: Undefined or garbage value returned to caller
        return *u8_ptr;
        ^~~~~~~~~~~~~~
tools/parser/ppp.c:108:30: warning: The left operand of '&' is a garbage value
        if (*((uint8_t *) frm->ptr) & 0x80)
            ~~~~~~~~~~~~~~~~~~~~~~~ ^
2 warnings generated.
emulator/serial.c:150:2: warning: Assigned value is garbage or undefined
        enum btdev_type uninitialized_var(type);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emulator/serial.c:150:36: warning: Value stored to 'type' during its initialization is never read
        enum btdev_type uninitialized_var(type);
                                          ^~~~
emulator/serial.c:35:30: note: expanded from macro 'uninitialized_var'
#define uninitialized_var(x) x = x
                             ^   ~
emulator/serial.c:213:2: warning: Assigned value is garbage or undefined
        enum btdev_type uninitialized_var(dev_type);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emulator/serial.c:213:36: warning: Value stored to 'dev_type' during its initialization is never read
        enum btdev_type uninitialized_var(dev_type);
                                          ^~~~~~~~
emulator/serial.c:35:30: note: expanded from macro 'uninitialized_var'
#define uninitialized_var(x) x = x
                             ^   ~
4 warnings generated.
emulator/server.c:200:2: warning: Assigned value is garbage or undefined
        enum btdev_type uninitialized_var(type);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emulator/server.c:200:36: warning: Value stored to 'type' during its initialization is never read
        enum btdev_type uninitialized_var(type);
                                          ^~~~
emulator/server.c:36:30: note: expanded from macro 'uninitialized_var'
#define uninitialized_var(x) x = x
                             ^   ~
2 warnings generated.
emulator/b1ee.c:258:3: warning: Potential leak of memory pointed to by 'server_port'
                int opt;
                ^~~~~~~
emulator/b1ee.c:258:3: warning: Potential leak of memory pointed to by 'sniffer_port'
                int opt;
                ^~~~~~~
emulator/b1ee.c:289:2: warning: Value stored to 'argc' is never read
        argc = argc - optind;
        ^      ~~~~~~~~~~~~~
3 warnings generated.
emulator/btdev.c:1083:10: warning: Although the value stored to 'conn' is used in the enclosing expression, the value is never actually read from 'conn'
        while ((conn = queue_find(dev->conns, match_handle,
                ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
emulator/btdev.c:1334:24: warning: Access to field 'link' results in a dereference of a null pointer (loaded from variable 'conn')
        pending_conn_del(dev, conn->link->dev);
                              ^~~~~~~~~~
emulator/btdev.c:1456:13: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from variable 'conn')
        send_event(conn->dev, BT_HCI_EVT_AUTH_COMPLETE, &ev, sizeof(ev));
                   ^~~~~~~~~
3 warnings generated.
gobex/gobex-header.c:67:2: warning: Null pointer passed to 2nd parameter expecting 'nonnull'
        memcpy(to, from, count);
        ^~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
gobex/gobex-transfer.c:423:7: warning: Use of memory after it is freed
        if (!g_slist_find(transfers, transfer))
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
attrib/gatt.c:970:2: warning: Potential leak of memory pointed to by 'long_write'
        return prepare_write(long_write);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
tools/btpclient.c:2494:3: warning: Value stored to 'reply' is never read
                reply = l_dbus_message_new_error(ag.pending_req,
                ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
android/avdtp.c:756:25: warning: Use of memory after it is freed
                session->prio_queue = g_slist_remove(session->prio_queue, req);
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
android/avdtp.c:763:24: warning: Use of memory after it is freed
                session->req_queue = g_slist_remove(session->req_queue, req);
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
profiles/audio/avdtp.c:895:25: warning: Use of memory after it is freed
                session->prio_queue = g_slist_remove(session->prio_queue, req);
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
profiles/audio/avdtp.c:902:24: warning: Use of memory after it is freed
                session->req_queue = g_slist_remove(session->req_queue, req);
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
profiles/audio/a2dp.c:352:8: warning: Use of memory after it is freed
                if (!cb->resume_cb)
                     ^~~~~~~~~~~~~
1 warning generated.
obexd/plugins/vcard.c:701:6: warning: 2nd function call argument is an uninitialized value
        if (select_qp_encoding(format, address_fields[0], address_fields[1],
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
obexd/plugins/vcard.c:701:6: warning: 3rd function call argument is an uninitialized value
        if (select_qp_encoding(format, address_fields[0], address_fields[1],
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
obexd/plugins/vcard.c:701:6: warning: 4th function call argument is an uninitialized value
        if (select_qp_encoding(format, address_fields[0], address_fields[1],
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
obexd/plugins/vcard.c:701:6: warning: 5th function call argument is an uninitialized value
        if (select_qp_encoding(format, address_fields[0], address_fields[1],
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 warnings generated.
profiles/audio/avrcp.c:1924:2: warning: Value stored to 'operands' is never read
        operands += sizeof(*pdu);
        ^           ~~~~~~~~~~~~
1 warning generated.
obexd/plugins/messages-dummy.c:163:9: warning: Access to field 'next' results in a dereference of a null pointer (loaded from variable 'cur')
                cur = cur->next;
                      ^~~~~~~~~
1 warning generated.
obexd/src/main.c:278:6: warning: Array access (from variable 'option_root') results in a null pointer dereference
        if (option_root[0] != '/') {
            ^~~~~~~~~~~~~~
1 warning generated.
obexd/src/obex.c:122:3: warning: Access to field 'set_io_watch' results in a dereference of a null pointer (loaded from field 'driver')
                os->driver->set_io_watch(os->object, NULL, NULL);
                ^~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
/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


---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-16 13:51 ` [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA} Emil Velikov via B4 Relay
@ 2024-01-16 18:40   ` Luiz Augusto von Dentz
  2024-01-17  8:39     ` Emil Velikov
  0 siblings, 1 reply; 20+ messages in thread
From: Luiz Augusto von Dentz @ 2024-01-16 18:40 UTC (permalink / raw)
  To: emil.l.velikov; +Cc: linux-bluetooth, Emil Velikov

Hi Emil,

On Tue, Jan 16, 2024 at 8:52 AM Emil Velikov via B4 Relay
<devnull+emil.l.velikov.gmail.com@kernel.org> wrote:
>
> From: Emil Velikov <emil.velikov@collabora.com>
>
> 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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service
  2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
                   ` (9 preceding siblings ...)
  2024-01-16 13:52 ` [PATCH BlueZ 10/10] build: install dbus-org.bluez.obex.service symlink Emil Velikov via B4 Relay
@ 2024-01-16 19:02 ` patchwork-bot+bluetooth
  10 siblings, 0 replies; 20+ messages in thread
From: patchwork-bot+bluetooth @ 2024-01-16 19:02 UTC (permalink / raw)
  To: Emil Velikov via B4 Relay; +Cc: linux-bluetooth, emil.velikov

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

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



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-16 18:40   ` Luiz Augusto von Dentz
@ 2024-01-17  8:39     ` Emil Velikov
  2024-01-18 16:12       ` Emil Velikov
  0 siblings, 1 reply; 20+ messages in thread
From: Emil Velikov @ 2024-01-17  8:39 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth, Emil Velikov

On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
<luiz.dentz@gmail.com> 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/65a6a3a4.170a0220.86c5e.e719@mx.google.com/T/#m21808760ae29dae03e415e67c47b045daa461a6a

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-17  8:39     ` Emil Velikov
@ 2024-01-18 16:12       ` Emil Velikov
  2024-01-18 17:05         ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 20+ messages in thread
From: Emil Velikov @ 2024-01-18 16:12 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth, Emil Velikov

On Wed, 17 Jan 2024 at 08:39, Emil Velikov <emil.l.velikov@gmail.com> wrote:
>
> On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> <luiz.dentz@gmail.com> 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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-18 16:12       ` Emil Velikov
@ 2024-01-18 17:05         ` Luiz Augusto von Dentz
  2024-01-19 11:09           ` Emil Velikov
  0 siblings, 1 reply; 20+ messages in thread
From: Luiz Augusto von Dentz @ 2024-01-18 17:05 UTC (permalink / raw)
  To: Emil Velikov; +Cc: linux-bluetooth, Emil Velikov

Hi Emil,

On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <emil.l.velikov@gmail.com> wrote:
>
> On Wed, 17 Jan 2024 at 08:39, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> >
> > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > <luiz.dentz@gmail.com> 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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-18 17:05         ` Luiz Augusto von Dentz
@ 2024-01-19 11:09           ` Emil Velikov
  2024-01-19 15:09             ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 20+ messages in thread
From: Emil Velikov @ 2024-01-19 11:09 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth, Emil Velikov

On Thu, 18 Jan 2024 at 17:05, Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
>
> Hi Emil,
>
> On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <emil.l.velikov@gmail.com> wrote:
> >
> > On Wed, 17 Jan 2024 at 08:39, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> > >
> > > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > > <luiz.dentz@gmail.com> 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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA}
  2024-01-19 11:09           ` Emil Velikov
@ 2024-01-19 15:09             ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 20+ messages in thread
From: Luiz Augusto von Dentz @ 2024-01-19 15:09 UTC (permalink / raw)
  To: Emil Velikov, Tedd Ho-Jeong An; +Cc: linux-bluetooth, Emil Velikov

Hi Emil, Tedd,

On Fri, Jan 19, 2024 at 6:09 AM Emil Velikov <emil.l.velikov@gmail.com> wrote:
>
> On Thu, 18 Jan 2024 at 17:05, Luiz Augusto von Dentz
> <luiz.dentz@gmail.com> wrote:
> >
> > Hi Emil,
> >
> > On Thu, Jan 18, 2024 at 11:12 AM Emil Velikov <emil.l.velikov@gmail.com> wrote:
> > >
> > > On Wed, 17 Jan 2024 at 08:39, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> > > >
> > > > On Tue, 16 Jan 2024 at 18:40, Luiz Augusto von Dentz
> > > > <luiz.dentz@gmail.com> 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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* RE: Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service
  2024-01-24 16:20 [PATCH BlueZ v2 1/6] build: remove unused variable builtin_nodist Emil Velikov via B4 Relay
@ 2024-01-24 18:33 ` bluez.test.bot
  0 siblings, 0 replies; 20+ messages in thread
From: bluez.test.bot @ 2024-01-24 18:33 UTC (permalink / raw)
  To: linux-bluetooth, devnull+emil.l.velikov.gmail.com

[-- Attachment #1: Type: text/plain, Size: 947 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=819560

---Test result---

Test Summary:
CheckPatch                    PASS      2.17 seconds
GitLint                       PASS      1.67 seconds
BuildEll                      PASS      24.22 seconds
BluezMake                     PASS      734.57 seconds
MakeCheck                     PASS      12.13 seconds
MakeDistcheck                 PASS      166.26 seconds
CheckValgrind                 PASS      228.88 seconds
CheckSmatch                   PASS      332.09 seconds
bluezmakeextell               PASS      108.61 seconds
IncrementalBuild              PASS      4118.59 seconds
ScanBuild                     PASS      966.75 seconds



---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-01-24 18:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-16 13:51 [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service Emil Velikov via B4 Relay
2024-01-16 13:51 ` [PATCH BlueZ 01/10] build: remove unused AM_CONDITIONAL Emil Velikov via B4 Relay
2024-01-16 15:41   ` Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service bluez.test.bot
2024-01-16 13:51 ` [PATCH BlueZ 02/10] build: tweak PKG_CHECK_MODULES calls Emil Velikov via B4 Relay
2024-01-16 13:51 ` [PATCH BlueZ 03/10] build: require libudev 196, circa 2012 Emil Velikov via B4 Relay
2024-01-16 13:51 ` [PATCH BlueZ 04/10] build: remove dummy {conf,state}{dir,_DATA} Emil Velikov via B4 Relay
2024-01-16 18:40   ` Luiz Augusto von Dentz
2024-01-17  8:39     ` Emil Velikov
2024-01-18 16:12       ` Emil Velikov
2024-01-18 17:05         ` Luiz Augusto von Dentz
2024-01-19 11:09           ` Emil Velikov
2024-01-19 15:09             ` Luiz Augusto von Dentz
2024-01-16 13:51 ` [PATCH BlueZ 05/10] build: remove unused variable builtin_nodist Emil Velikov via B4 Relay
2024-01-16 13:52 ` [PATCH BlueZ 06/10] build: remove .service files from DEPENDENCIES lists Emil Velikov via B4 Relay
2024-01-16 13:52 ` [PATCH BlueZ 07/10] build: remove explicit DEPENDENCIES handling Emil Velikov via B4 Relay
2024-01-16 13:52 ` [PATCH BlueZ 08/10] build: manage .service.in files via configure.ac Emil Velikov via B4 Relay
2024-01-16 13:52 ` [PATCH BlueZ 09/10] build: enable gc/dead code removal Emil Velikov via B4 Relay
2024-01-16 13:52 ` [PATCH BlueZ 10/10] build: install dbus-org.bluez.obex.service symlink Emil Velikov via B4 Relay
2024-01-16 19:02 ` [PATCH BlueZ 00/10] Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service patchwork-bot+bluetooth
2024-01-24 16:20 [PATCH BlueZ v2 1/6] build: remove unused variable builtin_nodist Emil Velikov via B4 Relay
2024-01-24 18:33 ` Autotools papercuts, linker GC, symlink dbus-org.bluez.obex.service bluez.test.bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).