[Buildroot] [git commit branch/next] gupnp-av: fix static library linking with gupnp

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Mon Nov 27 21:10:37 UTC 2017


commit: https://git.buildroot.net/buildroot/commit/?id=d682569f5dca884a23d5810a89388e6174687bfd
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/next

gupnp and gupnp-av defines two internal functions with the same name:
xml_util_get_element and xml_util_get_child_element_content, as a result
an application such as rygel can't be build statically.
To fix this issue, rename both functions as
xml_util_get_element2 and xml_util_get_child_element_content2

Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
 ...001-Fix-static-library-linking-with-gupnp.patch | 354 +++++++++++++++++++++
 1 file changed, 354 insertions(+)

diff --git a/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch b/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch
new file mode 100644
index 0000000..eba99da
--- /dev/null
+++ b/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch
@@ -0,0 +1,354 @@
+From 268ec01e448ed7cedf90b37fbc27f01806637825 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice at gmail.com>
+Date: Mon, 30 Oct 2017 22:10:23 +0100
+Subject: [PATCH 1/1] Fix static library linking with gupnp
+
+gupnp and gupnp-av defines two internal functions with the same name:
+xml_util_get_element and xml_util_get_child_element_content, as a result
+an application such as rygel can't be build statically.
+To fix this issue, rename both functions as
+xml_util_get_element2 and xml_util_get_child_element_content2
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
+---
+ libgupnp-av/gupnp-cds-last-change-parser.c |  2 +-
+ libgupnp-av/gupnp-didl-lite-container.c    |  4 ++--
+ libgupnp-av/gupnp-didl-lite-item.c         |  2 +-
+ libgupnp-av/gupnp-didl-lite-object.c       | 26 +++++++++++++-------------
+ libgupnp-av/gupnp-didl-lite-parser.c       |  4 ++--
+ libgupnp-av/gupnp-didl-lite-writer.c       |  2 +-
+ libgupnp-av/gupnp-feature-list-parser.c    |  2 +-
+ libgupnp-av/gupnp-last-change-parser.c     |  2 +-
+ libgupnp-av/xml-util.c                     | 16 ++++++++--------
+ libgupnp-av/xml-util.h                     |  4 ++--
+ 10 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/libgupnp-av/gupnp-cds-last-change-parser.c b/libgupnp-av/gupnp-cds-last-change-parser.c
+index cff5f0b..36f6b0a 100644
+--- a/libgupnp-av/gupnp-cds-last-change-parser.c
++++ b/libgupnp-av/gupnp-cds-last-change-parser.c
+@@ -119,7 +119,7 @@ gupnp_cds_last_change_parser_parse (GUPnPCDSLastChangeParser *parser,
+                 goto out;
+         }
+ 
+-        state_event = xml_util_get_element ((xmlNode *) doc,
++        state_event = xml_util_get_element2 ((xmlNode *) doc,
+                                             "StateEvent",
+                                             NULL);
+         if (state_event == NULL) {
+diff --git a/libgupnp-av/gupnp-didl-lite-container.c b/libgupnp-av/gupnp-didl-lite-container.c
+index d7ac578..c0e7395 100644
+--- a/libgupnp-av/gupnp-didl-lite-container.c
++++ b/libgupnp-av/gupnp-didl-lite-container.c
+@@ -340,7 +340,7 @@ gupnp_didl_lite_container_container_update_id_is_set
+ 
+         xml_node = gupnp_didl_lite_object_get_xml_node
+                                         (GUPNP_DIDL_LITE_OBJECT (container));
+-        content = xml_util_get_child_element_content (xml_node,
++        content = xml_util_get_child_element_content2 (xml_node,
+                                                       "containerUpdateID");
+         return content != NULL;
+ }
+@@ -390,7 +390,7 @@ gupnp_didl_lite_container_total_deleted_child_count_is_set
+ 
+         xml_node = gupnp_didl_lite_object_get_xml_node
+                                         (GUPNP_DIDL_LITE_OBJECT (container));
+-        content = xml_util_get_child_element_content (xml_node,
++        content = xml_util_get_child_element_content2 (xml_node,
+                                                       "totalDeletedChildCount");
+         return content != NULL;
+ }
+diff --git a/libgupnp-av/gupnp-didl-lite-item.c b/libgupnp-av/gupnp-didl-lite-item.c
+index 3588052..3d6d4d0 100644
+--- a/libgupnp-av/gupnp-didl-lite-item.c
++++ b/libgupnp-av/gupnp-didl-lite-item.c
+@@ -254,7 +254,7 @@ gupnp_didl_lite_item_get_lifetime (GUPnPDIDLLiteItem *item)
+         object = GUPNP_DIDL_LITE_OBJECT (item);
+         node = gupnp_didl_lite_object_get_xml_node (object);
+ 
+-        lifetime_str = xml_util_get_child_element_content (node, "lifetime");
++        lifetime_str = xml_util_get_child_element_content2 (node, "lifetime");
+         lifetime = seconds_from_time (lifetime_str);
+ 
+         return lifetime;
+diff --git a/libgupnp-av/gupnp-didl-lite-object.c b/libgupnp-av/gupnp-didl-lite-object.c
+index 68156dc..cab2359 100644
+--- a/libgupnp-av/gupnp-didl-lite-object.c
++++ b/libgupnp-av/gupnp-didl-lite-object.c
+@@ -1065,7 +1065,7 @@ gupnp_didl_lite_object_get_upnp_class (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "class");
+ }
+ 
+@@ -1211,7 +1211,7 @@ gupnp_didl_lite_object_get_title (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "title");
+ }
+ 
+@@ -1228,7 +1228,7 @@ gupnp_didl_lite_object_get_creator (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "creator");
+ }
+ 
+@@ -1266,7 +1266,7 @@ gupnp_didl_lite_object_get_artist (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "artist");
+ }
+ 
+@@ -1303,7 +1303,7 @@ gupnp_didl_lite_object_get_author (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "author");
+ }
+ 
+@@ -1377,7 +1377,7 @@ gupnp_didl_lite_object_get_genre (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "genre");
+ }
+ 
+@@ -1394,7 +1394,7 @@ gupnp_didl_lite_object_get_write_status (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "writeStatus");
+ }
+ 
+@@ -1411,7 +1411,7 @@ gupnp_didl_lite_object_get_album (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "album");
+ }
+ 
+@@ -1428,7 +1428,7 @@ gupnp_didl_lite_object_get_album_art (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "albumArtURI");
+ }
+ 
+@@ -1445,7 +1445,7 @@ gupnp_didl_lite_object_get_description (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "description");
+ }
+ 
+@@ -1462,7 +1462,7 @@ gupnp_didl_lite_object_get_date (GUPnPDIDLLiteObject *object)
+ {
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
+ 
+-        return xml_util_get_child_element_content (object->priv->xml_node,
++        return xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                    "date");
+ }
+ 
+@@ -1481,7 +1481,7 @@ gupnp_didl_lite_object_get_track_number (GUPnPDIDLLiteObject *object)
+ 
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), -1);
+ 
+-        str = xml_util_get_child_element_content (object->priv->xml_node,
++        str = xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                   "originalTrackNumber");
+         if (str == NULL)
+                 return -1;
+@@ -1552,7 +1552,7 @@ gupnp_didl_lite_object_update_id_is_set (GUPnPDIDLLiteObject *object)
+         g_return_val_if_fail (object != NULL, FALSE);
+         g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE);
+ 
+-        content = xml_util_get_child_element_content (object->priv->xml_node,
++        content = xml_util_get_child_element_content2 (object->priv->xml_node,
+                                                       "objectUpdateID");
+         return content != NULL;
+ }
+diff --git a/libgupnp-av/gupnp-didl-lite-parser.c b/libgupnp-av/gupnp-didl-lite-parser.c
+index 59255ef..93d03c0 100644
+--- a/libgupnp-av/gupnp-didl-lite-parser.c
++++ b/libgupnp-av/gupnp-didl-lite-parser.c
+@@ -52,7 +52,7 @@ verify_didl_attributes (xmlNode *node)
+ {
+         const char *content;
+ 
+-        content = xml_util_get_child_element_content (node, "date");
++        content = xml_util_get_child_element_content2 (node, "date");
+         if (content) {
+                 /* try to roughly verify the passed date with ^\d{4}-\d{2}-\d{2} */
+                 char *ptr = (char *) content;
+@@ -251,7 +251,7 @@ gupnp_didl_lite_parser_parse_didl_recursive (GUPnPDIDLLiteParser *parser,
+         }
+ 
+         /* Get a pointer to root element */
+-        element = xml_util_get_element ((xmlNode *) doc,
++        element = xml_util_get_element2 ((xmlNode *) doc,
+                                         "DIDL-Lite",
+                                         NULL);
+         if (element == NULL) {
+diff --git a/libgupnp-av/gupnp-didl-lite-writer.c b/libgupnp-av/gupnp-didl-lite-writer.c
+index fb37c0b..e61739a 100644
+--- a/libgupnp-av/gupnp-didl-lite-writer.c
++++ b/libgupnp-av/gupnp-didl-lite-writer.c
+@@ -223,7 +223,7 @@ filter_node (xmlNode             *node,
+ 
+         if (strcmp ((const char *) node->name, "container") == 0) {
+                 is_container = TRUE;
+-                container_class = xml_util_get_child_element_content (node,
++                container_class = xml_util_get_child_element_content2 (node,
+                                                                       "class");
+         }
+ 
+diff --git a/libgupnp-av/gupnp-feature-list-parser.c b/libgupnp-av/gupnp-feature-list-parser.c
+index 85fb232..dcaad6b 100644
+--- a/libgupnp-av/gupnp-feature-list-parser.c
++++ b/libgupnp-av/gupnp-feature-list-parser.c
+@@ -138,7 +138,7 @@ gupnp_feature_list_parser_parse_text
+         }
+ 
+         /* Get a pointer to root element */
+-        element = xml_util_get_element ((xmlNode *) doc, "Features", NULL);
++        element = xml_util_get_element2 ((xmlNode *) doc, "Features", NULL);
+         if (element == NULL) {
+                 g_set_error (error,
+                              G_MARKUP_ERROR,
+diff --git a/libgupnp-av/gupnp-last-change-parser.c b/libgupnp-av/gupnp-last-change-parser.c
+index a98aecf..7078713 100644
+--- a/libgupnp-av/gupnp-last-change-parser.c
++++ b/libgupnp-av/gupnp-last-change-parser.c
+@@ -75,7 +75,7 @@ read_state_variable (const char *variable_name,
+         xmlNode    *variable_node;
+         const char *val_str;
+ 
+-        variable_node = xml_util_get_element (instance_node,
++        variable_node = xml_util_get_element2 (instance_node,
+                                               variable_name,
+                                               NULL);
+         if (!variable_node)
+diff --git a/libgupnp-av/xml-util.c b/libgupnp-av/xml-util.c
+index da718b2..8c937e0 100644
+--- a/libgupnp-av/xml-util.c
++++ b/libgupnp-av/xml-util.c
+@@ -81,7 +81,7 @@ xml_doc_unref (GUPnPAVXMLDoc *doc)
+ }
+ 
+ xmlNode *
+-xml_util_get_element (xmlNode *node,
++xml_util_get_element2 (xmlNode *node,
+                       ...)
+ {
+         va_list var_args;
+@@ -130,13 +130,13 @@ xml_util_get_child_elements_by_name (xmlNode *node, const char *name)
+ }
+ 
+ const char *
+-xml_util_get_child_element_content (xmlNode    *node,
++xml_util_get_child_element_content2 (xmlNode    *node,
+                                     const char *child_name)
+ {
+         xmlNode *child_node;
+         const char *content;
+ 
+-        child_node = xml_util_get_element (node, child_name, NULL);
++        child_node = xml_util_get_element2 (node, child_name, NULL);
+         if (!child_node || !(child_node->children))
+                 return NULL;
+ 
+@@ -154,7 +154,7 @@ xml_util_get_uint_child_element (xmlNode    *node,
+ {
+         const char *content;
+ 
+-        content = xml_util_get_child_element_content (node, child_name);
++        content = xml_util_get_child_element_content2 (node, child_name);
+         if (!content)
+                 return default_value;
+ 
+@@ -168,7 +168,7 @@ xml_util_get_uint64_child_element (xmlNode    *node,
+ {
+         const char *content;
+ 
+-        content = xml_util_get_child_element_content (node, child_name);
++        content = xml_util_get_child_element_content2 (node, child_name);
+         if (!content)
+                 return default_value;
+ 
+@@ -281,7 +281,7 @@ xml_util_set_child (xmlNode    *parent_node,
+         xmlNode *node;
+         xmlChar *escaped;
+ 
+-        node = xml_util_get_element (parent_node, name, NULL);
++        node = xml_util_get_element2 (parent_node, name, NULL);
+         if (node == NULL) {
+                 xmlNsPtr ns_ptr = NULL;
+ 
+@@ -305,7 +305,7 @@ xml_util_unset_child (xmlNode    *parent_node,
+ {
+         xmlNode *node;
+ 
+-        node = xml_util_get_element (parent_node, name, NULL);
++        node = xml_util_get_element2 (parent_node, name, NULL);
+         if (node != NULL) {
+                 xmlUnlinkNode (node);
+                 xmlFreeNode (node);
+@@ -342,7 +342,7 @@ xml_util_get_child_string (xmlNode    *parent_node,
+         char      *ret;
+         xmlNode   *node;
+ 
+-        node = xml_util_get_element (parent_node, name, NULL);
++        node = xml_util_get_element2 (parent_node, name, NULL);
+         if (!node)
+                 return NULL;
+ 
+diff --git a/libgupnp-av/xml-util.h b/libgupnp-av/xml-util.h
+index 9ae5b19..5ff2020 100644
+--- a/libgupnp-av/xml-util.h
++++ b/libgupnp-av/xml-util.h
+@@ -63,7 +63,7 @@ xml_doc_get_type                        (void) G_GNUC_CONST;
+ 
+ /* Misc utilities for inspecting xmlNodes */
+ G_GNUC_INTERNAL xmlNode *
+-xml_util_get_element                    (xmlNode    *node,
++xml_util_get_element2                   (xmlNode    *node,
+                                          ...) G_GNUC_NULL_TERMINATED;
+ 
+ G_GNUC_INTERNAL GList *
+@@ -71,7 +71,7 @@ xml_util_get_child_elements_by_name     (xmlNode *node,
+                                          const char *name);
+ 
+ G_GNUC_INTERNAL const char *
+-xml_util_get_child_element_content      (xmlNode    *node,
++xml_util_get_child_element_content2     (xmlNode    *node,
+                                          const char *child_name);
+ 
+ G_GNUC_INTERNAL guint
+-- 
+2.14.1
+


More information about the buildroot mailing list