[Buildroot] [PATCH 1/2] modem-manager: fix build with musl

Baruch Siach baruch at tkos.co.il
Fri Jun 15 04:02:13 UTC 2018


modem-manager version 1.8.0 introduced use of canonicalize_file_name(),
which is a GNU extension that musl does not implement. Add a patch
switching to POSIX standard realpath().

Fixes:
http://autobuild.buildroot.net/results/9f6/9f6859f1854d94d3caba7b5c24d9ca6a14622042/

Cc: Aleksander Morgado <aleksander at aleksander.es>
Cc: Carlos Santos <casantos at datacom.com.br>
Cc: Petr Vorel <petr.vorel at gmail.com>
Cc: Yegor Yefremov <yegorslists at googlemail.com>
Signed-off-by: Baruch Siach <baruch at tkos.co.il>
---
 ...erneldevice-fix-build-with-musl-libc.patch | 67 +++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 package/modem-manager/0001-kerneldevice-fix-build-with-musl-libc.patch

diff --git a/package/modem-manager/0001-kerneldevice-fix-build-with-musl-libc.patch b/package/modem-manager/0001-kerneldevice-fix-build-with-musl-libc.patch
new file mode 100644
index 000000000000..68181cb5ed19
--- /dev/null
+++ b/package/modem-manager/0001-kerneldevice-fix-build-with-musl-libc.patch
@@ -0,0 +1,67 @@
+From ed40ac76b125b1c3b2e2f8522d283b073c23bd3b Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch at tkos.co.il>
+Date: Fri, 15 Jun 2018 06:25:46 +0300
+Subject: [PATCH] kerneldevice: fix build with musl libc
+
+musl libc does not implement the canonicalize_file_name() GNU extension.
+Use the POSIX standard realpath() instead.
+
+Signed-off-by: Baruch Siach <baruch at tkos.co.il>
+---
+Upstream status: sent to modemmanager-devel at lists.freedesktop.org
+
+ src/kerneldevice/mm-kernel-device-generic.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
+index 6b0f072402ff..885bef171f5d 100644
+--- a/src/kerneldevice/mm-kernel-device-generic.c
++++ b/src/kerneldevice/mm-kernel-device-generic.c
+@@ -120,7 +120,7 @@ preload_sysfs_path (MMKernelDeviceGeneric *self)
+                            mm_kernel_event_properties_get_subsystem (self->priv->properties),
+                            mm_kernel_event_properties_get_name      (self->priv->properties));
+ 
+-    self->priv->sysfs_path = canonicalize_file_name (tmp);
++    self->priv->sysfs_path = realpath (tmp, NULL);
+     if (!self->priv->sysfs_path || !g_file_test (self->priv->sysfs_path, G_FILE_TEST_EXISTS)) {
+         mm_warn ("Invalid sysfs path read for %s/%s",
+                  mm_kernel_event_properties_get_subsystem (self->priv->properties),
+@@ -163,7 +163,7 @@ preload_interface_sysfs_path (MMKernelDeviceGeneric *self)
+      * The correct parent dir we want to have is the first one with "usb" subsystem.
+      */
+     aux = g_strdup_printf ("%s/device", self->priv->sysfs_path);
+-    dirpath = canonicalize_file_name (aux);
++    dirpath = realpath (aux, NULL);
+     g_free (aux);
+ 
+     while (dirpath) {
+@@ -179,7 +179,7 @@ preload_interface_sysfs_path (MMKernelDeviceGeneric *self)
+             gchar *canonicalized_subsystem;
+             gchar *subsystem_name;
+ 
+-            canonicalized_subsystem = canonicalize_file_name (subsystem_filepath);
++            canonicalized_subsystem = realpath (subsystem_filepath, NULL);
+             g_free (subsystem_filepath);
+ 
+             subsystem_name = g_path_get_basename (canonicalized_subsystem);
+@@ -239,7 +239,7 @@ preload_driver (MMKernelDeviceGeneric *self)
+         gchar *tmp2;
+ 
+         tmp = g_strdup_printf ("%s/driver", self->priv->interface_sysfs_path);
+-        tmp2 = canonicalize_file_name (tmp);
++        tmp2 = realpath (tmp, NULL);
+         if (tmp2 && g_file_test (tmp2, G_FILE_TEST_EXISTS))
+             self->priv->driver = g_path_get_basename (tmp2);
+         g_free (tmp2);
+@@ -308,7 +308,7 @@ preload_physdev_subsystem (MMKernelDeviceGeneric *self)
+         gchar *subsyspath;
+ 
+         aux = g_strdup_printf ("%s/subsystem", self->priv->physdev_sysfs_path);
+-        subsyspath = canonicalize_file_name (aux);
++        subsyspath = realpath (aux, NULL);
+         self->priv->physdev_subsystem = g_path_get_dirname (subsyspath);
+         g_free (subsyspath);
+         g_free (aux);
+-- 
+2.17.1
+
-- 
2.17.1



More information about the buildroot mailing list