#1 Update to 0.9.1; Build against libsoup3
Merged 4 months ago by kalev. Opened 4 months ago by mcrha.
rpms/ mcrha/rest rawhide  into  rawhide

@@ -1,218 +0,0 @@ 

- From a09ea6bd74d6234be8456e7039403bc1c1d078bd Mon Sep 17 00:00:00 2001

- From: Christophe Fergeau <cfergeau@redhat.com>

- Date: Mon, 20 Jun 2016 12:05:48 +0200

- Subject: [PATCH 1/4] xml-node: Use GString in rest_xml_node_print()

- 

- The current code is using xml = g_strconcat (xml, ...) which is causing

- some leaks as g_strconcat returns a newly allocated string. Using

- GString avoids this issue without constantly freeing the intermediate

- strings.

- 

- This fixes multiple leaks like:

- 

- ==16611== 18 bytes in 1 blocks are definitely lost in loss record 124 of 301

- ==16611==    at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)

- ==16611==    by 0x5F5CE58: g_malloc (gmem.c:94)

- ==16611==    by 0x5F75B8E: g_strconcat (gstrfuncs.c:585)

- ==16611==    by 0x4E450CF: rest_xml_node_print (rest-xml-node.c:287)

- ==16611==    by 0x4E451DA: rest_xml_node_print (rest-xml-node.c:305)

- ==16611==    by 0x4E450F8: rest_xml_node_print (rest-xml-node.c:292)

- ==16611==    by 0x4009A0: main (xml.c:40)

- ---

-  rest/rest-xml-node.c | 21 ++++++++++++---------

-  1 file changed, 12 insertions(+), 9 deletions(-)

- 

- diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c

- index 57a942667f06..a8156dbbd432 100644

- --- a/rest/rest-xml-node.c

- +++ b/rest/rest-xml-node.c

- @@ -283,38 +283,41 @@ rest_xml_node_print (RestXmlNode *node)

-  {

-    GHashTableIter iter;

-    gpointer       key, value;

- -  char          *xml = g_strconcat ("<", node->name, NULL);

- +  GString        *xml = g_string_new (NULL);

-    RestXmlNode   *n;

-  

- +  g_string_append (xml, "<");

- +  g_string_append (xml, node->name);

- +

-    g_hash_table_iter_init (&iter, node->attrs);

-    while (g_hash_table_iter_next (&iter, &key, &value))

- -    xml = g_strconcat (xml, " ", key, "=\'", value, "\'", NULL);

- +    g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);

-  

- -  xml = g_strconcat (xml, ">", NULL);

- +  g_string_append (xml, ">");

-  

-    g_hash_table_iter_init (&iter, node->children);

-    while (g_hash_table_iter_next (&iter, &key, &value))

-      {

-        char *child = rest_xml_node_print ((RestXmlNode *) value);

-  

- -      xml = g_strconcat (xml, child, NULL);

- +      g_string_append (xml, child);

-        g_free (child);

-      }

-  

-    if (node->content)

- -    xml = g_strconcat (xml, node->content, "</", node->name, ">", NULL);

- -  else

- -    xml = g_strconcat (xml, "</", node->name, ">", NULL);

- +    g_string_append (xml, node->content);

- +

- +  g_string_append_printf (xml, "</%s>", node->name);

-  

-    for (n = node->next; n; n = n->next)

-      {

-        char *sibling = rest_xml_node_print (n);

-  

- -      xml = g_strconcat (xml, sibling, NULL);

- +      g_string_append (xml, sibling);

-        g_free (sibling);

-      }

-  

- -  return xml;

- +  return g_string_free (xml, FALSE);

-  }

-  

-  /**

- -- 

- 2.14.2

- 

- 

- From a34d02947c4f102e6d16b9d328941a4b2946c8e8 Mon Sep 17 00:00:00 2001

- From: Debarshi Ray <debarshir@gnome.org>

- Date: Fri, 13 Oct 2017 18:53:39 +0200

- Subject: [PATCH 2/4] xml-node: Remove stray blank space

- 

- This had broken tests/xml.c.

- 

- Fallout from 61a7b231bd8b9d1b8d02dca120389e79d38b428d

- 

- https://bugzilla.gnome.org/show_bug.cgi?id=788960

- ---

-  rest/rest-xml-node.c | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c

- index a8156dbbd432..d3a7c995affd 100644

- --- a/rest/rest-xml-node.c

- +++ b/rest/rest-xml-node.c

- @@ -291,7 +291,7 @@ rest_xml_node_print (RestXmlNode *node)

-  

-    g_hash_table_iter_init (&iter, node->attrs);

-    while (g_hash_table_iter_next (&iter, &key, &value))

- -    g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);

- +    g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);

-  

-    g_string_append (xml, ">");

-  

- -- 

- 2.14.2

- 

- 

- From f184db2bff0618b99c4de3316082fe80439f124c Mon Sep 17 00:00:00 2001

- From: Debarshi Ray <debarshir@gnome.org>

- Date: Fri, 13 Oct 2017 19:14:16 +0200

- Subject: [PATCH 3/4] xml-node: Define the order in which attributes & children

-  are printed

- 

- The order in which GHashTable returns its key-value pairs is undefined.

- Therefore the output of rest_xml_node_print can change based on the

- GHashTable implementation. While not strictly necessary, it would be

- nice to avoid that. Having a stable order, even if it is not

- documented and depends on the current RestXmlNode code, is handy for

- testing.

- 

- This was the main reason behind the tests/xml.c breakage.

- 

- https://bugzilla.gnome.org/show_bug.cgi?id=788960

- ---

-  rest/rest-xml-node.c | 23 ++++++++++++++++++++++-

-  1 file changed, 22 insertions(+), 1 deletion(-)

- 

- diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c

- index d3a7c995affd..973ebcf6c3fa 100644

- --- a/rest/rest-xml-node.c

- +++ b/rest/rest-xml-node.c

- @@ -283,6 +283,9 @@ rest_xml_node_print (RestXmlNode *node)

-  {

-    GHashTableIter iter;

-    gpointer       key, value;

- +  GList          *attrs = NULL;

- +  GList          *children = NULL;

- +  GList          *l;

-    GString        *xml = g_string_new (NULL);

-    RestXmlNode   *n;

-  

- @@ -291,13 +294,29 @@ rest_xml_node_print (RestXmlNode *node)

-  

-    g_hash_table_iter_init (&iter, node->attrs);

-    while (g_hash_table_iter_next (&iter, &key, &value))

- -    g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);

- +    {

- +      char *attr = g_strdup_printf ("%s=\'%s\'", (char *)key, (char *)value);

- +      attrs = g_list_prepend (attrs, attr);

- +    }

- +

- +  attrs = g_list_sort (attrs, (GCompareFunc) g_strcmp0);

- +  for (l = attrs; l; l = l->next)

- +    {

- +      const char *attr = (const char *) l->data;

- +      g_string_append_printf (xml, " %s", attr);

- +    }

-  

-    g_string_append (xml, ">");

-  

-    g_hash_table_iter_init (&iter, node->children);

-    while (g_hash_table_iter_next (&iter, &key, &value))

- +    children = g_list_prepend (children, key);

- +

- +  children = g_list_sort (children, (GCompareFunc) g_strcmp0);

- +  for (l = children; l; l = l->next)

-      {

- +      const char *name = (const char *) l->data;

- +      RestXmlNode *value = (RestXmlNode *) g_hash_table_lookup (node->children, name);

-        char *child = rest_xml_node_print ((RestXmlNode *) value);

-  

-        g_string_append (xml, child);

- @@ -317,6 +336,8 @@ rest_xml_node_print (RestXmlNode *node)

-        g_free (sibling);

-      }

-  

- +  g_list_free_full (attrs, g_free);

- +  g_list_free (children);

-    return g_string_free (xml, FALSE);

-  }

-  

- -- 

- 2.14.2

- 

- 

- From e5ee6ef751ee5a38d7b9fadcd631cf6ecec7b240 Mon Sep 17 00:00:00 2001

- From: Debarshi Ray <debarshir@gnome.org>

- Date: Fri, 13 Oct 2017 19:16:55 +0200

- Subject: [PATCH 4/4] tests: Re-enable the XML test

- 

- This reverts commit 2d1dbfe7073b1e153ff881426b40a9a517fb796b

- 

- https://bugzilla.gnome.org/show_bug.cgi?id=788960

- ---

-  tests/Makefile.am | 2 --

-  1 file changed, 2 deletions(-)

- 

- diff --git a/tests/Makefile.am b/tests/Makefile.am

- index 5d77f9cf5445..5ffdd4634e9a 100644

- --- a/tests/Makefile.am

- +++ b/tests/Makefile.am

- @@ -1,6 +1,4 @@

-  TESTS = proxy proxy-continuous threaded oauth oauth-async oauth2 flickr lastfm xml custom-serialize

- -# TODO: fix this test case

- -XFAIL_TESTS = xml

-  

-  AM_CPPFLAGS = $(SOUP_CFLAGS) -I$(top_srcdir) $(GCOV_CFLAGS)

-  AM_LDFLAGS = $(SOUP_LIBS) $(GCOV_LDFLAGS) \

- -- 

- 2.14.2

- 

file modified
+37 -36
@@ -1,24 +1,22 @@ 

  Name:          rest

- Version:       0.8.1

- Release:       12%{?dist}

+ Version:       0.9.1

+ Release:       1%{?dist}

  Summary:       A library for access to RESTful web services

  

  License:       LGPLv2

  URL:           http://www.gnome.org

- Source0:       http://download.gnome.org/sources/%{name}/0.8/%{name}-%{version}.tar.xz

- 

- # https://bugzilla.redhat.com/show_bug.cgi?id=1445700

- Patch0:        rest-0.8.0-fix-the-XML-test.patch

- 

- BuildRequires: make

- BuildRequires: glib2-devel

- BuildRequires: gobject-introspection-devel

- BuildRequires: libsoup-devel

- BuildRequires: libxml2-devel

- BuildRequires: gtk-doc

- BuildRequires: autoconf

- BuildRequires: automake

- BuildRequires: libtool

+ Source0:       http://download.gnome.org/sources/%{name}/0.9/%{name}-%{version}.tar.xz

+ 

+ BuildRequires: meson

+ BuildRequires: pkgconfig(glib-2.0)

+ BuildRequires: pkgconfig(gio-2.0)

+ BuildRequires: pkgconfig(gobject-introspection-1.0)

+ BuildRequires: pkgconfig(libsoup-3.0)

+ BuildRequires: pkgconfig(libxml-2.0)

+ BuildRequires: pkgconfig(json-glib-1.0)

+ BuildRequires: pkgconfig(libadwaita-1)

+ BuildRequires: pkgconfig(gtksourceview-5)

+ BuildRequires: pkgconfig(gi-docgen)

  

  %description

  This library was designed to make it easier to access web services that
@@ -37,17 +35,14 @@ 

  Files for development with %{name}.

  

  %prep

- %setup -q

- %patch0 -p1

+ %autosetup -p1 -S gendiff

  

  %build

- autoreconf -vif

- %configure --disable-static --enable-gtk-doc --enable-introspection=yes

- 

- make %{?_smp_mflags} V=1

+ %meson

+ %meson_build

  

  %install

- make install DESTDIR=%{buildroot} INSTALL='install -p'

+ %meson_install

  

  #Remove libtool archives.

  find %{buildroot} -type f -name "*.la" -delete
@@ -56,24 +51,30 @@ 

  

  %files

  %license COPYING

- %doc AUTHORS README

- %{_libdir}/librest-0.7.so.0

- %{_libdir}/librest-0.7.so.0.0.0

- %{_libdir}/librest-extras-0.7.so.0

- %{_libdir}/librest-extras-0.7.so.0.0.0

- %{_libdir}/girepository-1.0/Rest-0.7.typelib

- %{_libdir}/girepository-1.0/RestExtras-0.7.typelib

+ %doc AUTHORS README.md

+ %{_libdir}/librest-1.0.so.0

+ %{_libdir}/librest-1.0.so.0.0.0

+ %{_libdir}/librest-extras-1.0.so.0

+ %{_libdir}/librest-extras-1.0.so.0.0.0

+ %{_libdir}/girepository-1.0/Rest-1.0.typelib

+ %{_libdir}/girepository-1.0/RestExtras-1.0.typelib

  

  %files devel

- %{_includedir}/rest-0.7

+ %{_includedir}/rest-1.0

  %{_libdir}/pkgconfig/rest*

- %{_libdir}/librest-0.7.so

- %{_libdir}/librest-extras-0.7.so

- %{_datadir}/gtk-doc/html/%{name}*0.7

- %{_datadir}/gir-1.0/Rest-0.7.gir

- %{_datadir}/gir-1.0/RestExtras-0.7.gir

+ %{_libdir}/librest-1.0.so

+ %{_libdir}/librest-extras-1.0.so

+ %{_datadir}/doc/lib%{name}*1.0

+ %{_datadir}/gir-1.0/Rest-1.0.gir

+ %{_datadir}/gir-1.0/RestExtras-1.0.gir

+ %{_bindir}/librest-demo

+ %{_datadir}/applications/org.gnome.RestDemo.desktop

  

  %changelog

+ * Mon Jul 18 2022 Milan Crha <mcrha@redhat.com> - 0.9.1-1

+ - Update to 0.9.1

+ - Build against libsoup3

+ 

  * Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-12

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

  

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (rest-0.8.1.tar.xz) = 824a341db3827e4360abe03e33735918c68913c70d797699ef74271080a1985872006ec70fd994dc8fa3fbfef417e6fe979883c11286512d0ce623b8368e40c3

+ SHA512 (rest-0.9.1.tar.xz) = 7fb219f571aec2b8d09d71e257e2b230bfb5c862e7e425fd540c96f6e2a22457df7d3df32838d71beec00ba54c7adbd0301d744bb0497c46b3a1413949304462

no initial comment

Nice, thanks! I think we'll have to create a compat package with the old library so that we don't break all the existing consumers:

cawbird
elementary-photos
gfbgraph
gnome-initial-setup
gnome-maps
gnome-online-accounts
libgovirt
rest
virt-viewer

Let's merge this as is (and build for f37-gnome side tag where the rest of libsoup3 work is happening) and I'll look into creating a compat package which we can then retire once everything else is ported over. I guess it should be called rest0.7 as that's the old API version (librest-0.7.so.0).

Pull-Request has been merged by kalev

4 months ago

Another question: Should we install demos at all? If yes, should they maybe instead go to a -demos subpackage, instead of -devel like they are right now? rest-devel seems to have grown libadwaita and gtksourceview dependencies, which may be a bit too much to have to pull in for all packages that BR rest-devel.

Should we install demos at all?

I'm not the decision maker here. If you think the demos are not useful, then they can be removed/disabled. Your idea of creating a subpackage with it sounds good to me too.

I've added it to the -devel package using a similarity with gtk3. I did not realize it brings in the new heavy dependencies, which are truly useless for the users of the -devel package (and if the users need them, they ask for them on their own).