public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ 0/2] fix build error with --enable-hid and --enable-hog options
@ 2025-04-30 14:36 Thomas Perale
  2025-04-30 14:36 ` [PATCH BlueZ 1/2] input: fix HID compilation w/o HoG Thomas Perale
  2025-04-30 14:36 ` [PATCH BlueZ 2/2] input: fix HoG compilation w/o HID Thomas Perale
  0 siblings, 2 replies; 7+ messages in thread
From: Thomas Perale @ 2025-04-30 14:36 UTC (permalink / raw)
  To: linux-bluetooth

This patch series fixes build failures when --enable-hid and --enable-hog
are not enabled together. The issue is documented in the following ticket:

https://github.com/bluez/bluez/issues/1228.

Compiling with the --enable-hid --disable-hog option would give an
error because the HID plugin relied on functions defined in the HoG
plugin:

```
> ./configure --enable-hid --disable-hog
...
> make
...
  CCLD     src/bluetoothd
/usr/bin/ld: profiles/input/bluetoothd-manager.o: in function `input_init':
/home/../bluez/profiles/input/manager.c:122:(.text.input_init+0x1c8): undefined reference to `input_set_auto_sec'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:6376: src/bluetoothd] Error 1
```

Compiling with the --disable-hid --enable-hog option would give an
error because the HID plugin relied on functions defined in the HoG
plugin:

```
> ./configure --disable-hid --enable-hog
> make
...
/usr/bin/ld: profiles/input/bluetoothd-hog.o: in function `hog_disconnect':
/home/../bluez-5.79/profiles/input/hog.c:211:(.text.hog_disconnect+0x12): undefined reference to `input_get_userspace_hid'
collect2: error: ld returned 1 exit status
```

This patch series follows the indication gave by Vudentz to make both
plugins independents of each other.

Thomas Perale (2):
  input: fix HID compilation w/o HoG
  input: fix HoG compilation w/o HID

 configure.ac            |  3 +++
 profiles/input/device.c | 11 +++++++++++
 profiles/input/device.h |  1 +
 profiles/input/hog.c    | 19 +++++++++++--------
 4 files changed, 26 insertions(+), 8 deletions(-)

-- 
2.49.0


^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH BlueZ v2 1/2] input: fix HID compilation w/o HoG
@ 2025-05-01 16:35 Thomas Perale
  2025-05-01 17:56 ` fix build error with --enable-hid and --enable-hog options bluez.test.bot
  0 siblings, 1 reply; 7+ messages in thread
From: Thomas Perale @ 2025-05-01 16:35 UTC (permalink / raw)
  To: linux-bluetooth

Commit [1] introduced a dependency with the HID plugin in the HoG code
As a result, building with --enable-hid --disable-hog caused linker
errors due to undefined references to HoG-related functions:

```
> ./configure --enable-hid --disable-hog
...
> make
...
  CCLD     src/bluetoothd
/usr/bin/ld: profiles/input/bluetoothd-manager.o: in function `input_init':
/home/../bluez/profiles/input/manager.c:122:(.text.input_init+0x1c8): undefined reference to `input_set_auto_sec'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:6376: src/bluetoothd] Error 1
```

This patch moves the reading of the HOG specific configuration of the
'input.conf' file: LEAutoSecurity, to the HoG plugin file.

[1] f2778f587 input: Add LEAutoSecurity setting to input.conf
---
 profiles/input/device.h  |  1 -
 profiles/input/hog.c     | 40 +++++++++++++++++++++++++++++++++++-----
 profiles/input/manager.c | 11 +----------
 3 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/profiles/input/device.h b/profiles/input/device.h
index 7b87ce590..036a88980 100644
--- a/profiles/input/device.h
+++ b/profiles/input/device.h
@@ -25,7 +25,6 @@ void input_set_userspace_hid(char *state);
 uint8_t input_get_userspace_hid(void);
 void input_set_classic_bonded_only(bool state);
 bool input_get_classic_bonded_only(void);
-void input_set_auto_sec(bool state);
 
 int input_device_register(struct btd_service *service);
 void input_device_unregister(struct btd_service *service);
diff --git a/profiles/input/hog.c b/profiles/input/hog.c
index 017e320f0..f82648fec 100644
--- a/profiles/input/hog.c
+++ b/profiles/input/hog.c
@@ -57,11 +57,6 @@ static gboolean suspend_supported = FALSE;
 static bool auto_sec = true;
 static struct queue *devices = NULL;
 
-void input_set_auto_sec(bool state)
-{
-	auto_sec = state;
-}
-
 static void hog_device_accept(struct hog_device *dev, struct gatt_db *db)
 {
 	char name[248];
@@ -228,10 +223,45 @@ static struct btd_profile hog_profile = {
 	.auto_connect	= true,
 };
 
+static void hog_read_config(void)
+{
+	const char filename[] = CONFIGDIR "/input.conf";
+	GKeyFile *config;
+	GError *err = NULL;
+	bool config_auto_sec;
+
+	config = g_key_file_new();
+	if (!config) {
+		error("Failed to allocate memory for config");
+		return;
+	}
+
+	if (!g_key_file_load_from_file(config, filename, 0, &err)) {
+		if (!g_error_matches(err, G_FILE_ERROR, G_FILE_ERROR_NOENT))
+			error("Parsing %s failed: %s", filename, err->message);
+		g_error_free(err);
+		g_key_file_free(config);
+		return;
+	}
+
+	config_auto_sec = g_key_file_get_boolean(config, "General",
+					"LEAutoSecurity", &err);
+	if (!err) {
+		DBG("input.conf: LEAutoSecurity=%s",
+				config_auto_sec ? "true" : "false");
+		auto_sec = config_auto_sec;
+	} else
+		g_clear_error(&err);
+
+	g_key_file_free(config);
+}
+
 static int hog_init(void)
 {
 	int err;
 
+	hog_read_config();
+
 	err = suspend_init(suspend_callback, resume_callback);
 	if (err < 0)
 		error("Loading suspend plugin failed: %s (%d)", strerror(-err),
diff --git a/profiles/input/manager.c b/profiles/input/manager.c
index 95ca0a7ee..1c0b6122a 100644
--- a/profiles/input/manager.c
+++ b/profiles/input/manager.c
@@ -85,7 +85,7 @@ static int input_init(void)
 	config = load_config_file(CONFIGDIR "/input.conf");
 	if (config) {
 		int idle_timeout;
-		gboolean classic_bonded_only, auto_sec;
+		gboolean classic_bonded_only;
 		char *uhid_enabled;
 
 		idle_timeout = g_key_file_get_integer(config, "General",
@@ -115,15 +115,6 @@ static int input_init(void)
 		} else
 			g_clear_error(&err);
 
-		auto_sec = g_key_file_get_boolean(config, "General",
-						"LEAutoSecurity", &err);
-		if (!err) {
-			DBG("input.conf: LEAutoSecurity=%s",
-					auto_sec ? "true" : "false");
-			input_set_auto_sec(auto_sec);
-		} else
-			g_clear_error(&err);
-
 	}
 
 	btd_profile_register(&input_profile);
-- 
2.49.0


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

end of thread, other threads:[~2025-05-01 17:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-30 14:36 [PATCH BlueZ 0/2] fix build error with --enable-hid and --enable-hog options Thomas Perale
2025-04-30 14:36 ` [PATCH BlueZ 1/2] input: fix HID compilation w/o HoG Thomas Perale
2025-04-30 16:04   ` fix build error with --enable-hid and --enable-hog options bluez.test.bot
2025-04-30 14:36 ` [PATCH BlueZ 2/2] input: fix HoG compilation w/o HID Thomas Perale
2025-04-30 15:20   ` Luiz Augusto von Dentz
2025-04-30 20:50     ` Thomas Perale
  -- strict thread matches above, loose matches on Subject: below --
2025-05-01 16:35 [PATCH BlueZ v2 1/2] input: fix HID compilation w/o HoG Thomas Perale
2025-05-01 17:56 ` fix build error with --enable-hid and --enable-hog options 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