Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package geany for openSUSE:Factory checked 
in at 2024-04-25 20:47:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/geany (Old)
 and      /work/SRC/openSUSE:Factory/.geany.new.1880 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "geany"

Thu Apr 25 20:47:44 2024 rev:43 rq:1170052 version:2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/geany/geany.changes      2023-10-24 
20:06:54.933379782 +0200
+++ /work/SRC/openSUSE:Factory/.geany.new.1880/geany.changes    2024-04-25 
20:47:53.215226174 +0200
@@ -1,0 +2,5 @@
+Wed Apr 24 06:08:56 UTC 2024 - Bernhard Wiedemann <[email protected]>
+
+- Add reproducible.patch to make glfw build deterministic
+
+-------------------------------------------------------------------

New:
----
  reproducible.patch

BETA DEBUG BEGIN:
  New:
- Add reproducible.patch to make glfw build deterministic
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ geany.spec ++++++
--- /var/tmp/diff_new_pack.AXYwmo/_old  2024-04-25 20:47:53.767246443 +0200
+++ /var/tmp/diff_new_pack.AXYwmo/_new  2024-04-25 20:47:53.771246590 +0200
@@ -27,6 +27,7 @@
 Source1:        %{name}-rpmlintrc
 # PATCH-FIX-UPSTREAM geany-appstream.patch gh#geany/geany#1142 
[email protected] -- Downstream created appstream file, submitted upstream
 Patch1:         geany-appstream.patch
+Patch2:         reproducible.patch
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  docutils

++++++ reproducible.patch ++++++
https://github.com/geany/geany/pull/3785.patch
to make build of glfw deterministic

>From aa4e901807e8f0294f25d9f4ef3516b775ce0b8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Techet?= <[email protected]>
Date: Wed, 6 Mar 2024 23:11:36 +0100
Subject: [PATCH] Rename both scope and var_type of anonymous types

In addition to scope, anonymous type can appear also inside var_type
which should be renamed as well.

Thanks to Colomban Wendling for improving the original version of this
patch.

Fixes #3717.
---
 src/tagmanager/tm_ctags.c      | 59 ++++++++++++++++++++--------------
 tests/ctags/Makefile.am        |  1 +
 tests/ctags/nested_anon.c      |  5 +++
 tests/ctags/nested_anon.c.tags |  6 ++++
 tests/meson.build              |  1 +
 5 files changed, 47 insertions(+), 25 deletions(-)
 create mode 100644 tests/ctags/nested_anon.c
 create mode 100644 tests/ctags/nested_anon.c.tags

diff --git a/src/tagmanager/tm_ctags.c b/src/tagmanager/tm_ctags.c
index 9a971b14fd..9cde83f317 100644
--- a/src/tagmanager/tm_ctags.c
+++ b/src/tagmanager/tm_ctags.c
@@ -241,6 +241,33 @@ void tm_ctags_clear_ignore_symbols(void)
 }
 
 
+static gboolean replace_str(gchar **where, const gchar *what, guint what_len,
+       const gchar *replacement, guint replacement_len)
+{
+       if (where && *where)
+       {
+               gchar *pos = strstr(*where, what);
+
+               if (pos)
+               {
+                       gsize where_len = strlen(*where);
+                       gchar *str = g_malloc(where_len + replacement_len - 
what_len + 1);
+                       gsize prefix_len = (gsize) (pos - *where);
+
+                       strncpy(str, *where, prefix_len);
+                       strcpy(str + prefix_len, replacement);
+                       strcpy(str + prefix_len + replacement_len, pos + 
what_len);
+                       g_free(*where);
+                       *where = str;
+
+                       return TRUE;
+               }
+       }
+
+       return FALSE;
+}
+
+
 /* call after all tags have been collected so we don't have to handle reparses
  * with the counter (which gets complicated when also subparsers are involved) 
*/
 static void rename_anon_tags(TMSourceFile *source_file)
@@ -336,7 +363,6 @@ static void rename_anon_tags(TMSourceFile *source_file)
                        {
                                TMTag *nested_tag = 
TM_TAG(source_file->tags_array->pdata[j]);
                                guint nested_scope_len = nested_tag->scope ? 
strlen(nested_tag->scope) : 0;
-                               gchar *pos;
 
                                /* Tags can be interleaved with scopeless 
macros - skip those */
                                if (is_c && nested_tag->type & (tm_tag_macro_t 
| tm_tag_macro_with_arg_t))
@@ -361,22 +387,14 @@ static void rename_anon_tags(TMSourceFile *source_file)
                                if (nested_scope_len <= scope_len)
                                        break;
 
-                               pos = strstr(nested_tag->scope, orig_name);
                                /* We found the parent name in the nested tag 
scope - replace it
                                 * with the new name. Note: anonymous tag names 
generated by
                                 * ctags are unique enough that we don't have 
to check for
                                 * scope separators here. */
-                               if (pos)
-                               {
-                                       gchar *str = g_malloc(nested_scope_len 
+ 50);
-                                       guint prefix_len = pos - 
nested_tag->scope;
-
-                                       strncpy(str, nested_tag->scope, 
prefix_len);
-                                       strcpy(str + prefix_len, new_name);
-                                       strcpy(str + prefix_len + new_name_len, 
pos + orig_name_len);
-                                       g_free(nested_tag->scope);
-                                       nested_tag->scope = str;
-                               }
+                               replace_str(&nested_tag->scope, orig_name, 
orig_name_len, new_name, new_name_len);
+
+                               /* Do the same for var_type as well */
+                               replace_str(&nested_tag->var_type, orig_name, 
orig_name_len, new_name, new_name_len);
                        }
 
                        /* We are out of the nesting - the next tags could be 
variables
@@ -385,22 +403,13 @@ static void rename_anon_tags(TMSourceFile *source_file)
                        {
                                TMTag *var_tag = 
TM_TAG(source_file->tags_array->pdata[j]);
                                guint var_scope_len = var_tag->scope ? 
strlen(var_tag->scope) : 0;
-                               gchar *pos;
 
                                /* Should be at the same scope level as the 
anon tag */
-                               if (var_scope_len == scope_len &&
-                                       var_tag->var_type && (pos = 
strstr(var_tag->var_type, orig_name)))
+                               if (var_scope_len != scope_len || ! 
var_tag->var_type ||
+                                       ! replace_str(&var_tag->var_type, 
orig_name, orig_name_len, new_name, new_name_len))
                                {
-                                       GString *str = 
g_string_new(var_tag->var_type);
-                                       gssize p = pos - var_tag->var_type;
-                                       g_string_erase(str, p, 
strlen(orig_name));
-                                       g_string_insert(str, p, new_name);
-                                       g_free(var_tag->var_type);
-                                       var_tag->var_type = str->str;
-                                       g_string_free(str, FALSE);
-                               }
-                               else
                                        break;
+                               }
 
                                j++;
                        }
diff --git a/tests/ctags/Makefile.am b/tests/ctags/Makefile.am
index a973eadd03..c30ac095fd 100644
--- a/tests/ctags/Makefile.am
+++ b/tests/ctags/Makefile.am
@@ -252,6 +252,7 @@ test_sources = \
        namespace.cpp                                   \
        namespaces2.php                                 \
        namespaces.php                                  \
+       nested_anon.c                                   \
        no_terminator.js                                \
        non-ascii-ident1.php                    \
        numlib.f90                                              \
diff --git a/tests/ctags/nested_anon.c b/tests/ctags/nested_anon.c
new file mode 100644
index 0000000000..0efb63f36a
--- /dev/null
+++ b/tests/ctags/nested_anon.c
@@ -0,0 +1,5 @@
+typedef struct {
+  struct
+  {
+  } __value32;
+} __atomic_wide_counter;
diff --git a/tests/ctags/nested_anon.c.tags b/tests/ctags/nested_anon.c.tags
new file mode 100644
index 0000000000..aef4a45c10
--- /dev/null
+++ b/tests/ctags/nested_anon.c.tags
@@ -0,0 +1,6 @@
+__atomic_wide_counterÌ2048Ö0
+struct:     __atomic_wide_counter
+__value32Ì64Î__atomic_wide_counterÖ0Ï__atomic_wide_counter::anon_struct_1
+member:     __atomic_wide_counter::anon_struct_1 __atomic_wide_counter :: 
__value32
+anon_struct_1Ì2048Î__atomic_wide_counterÖ1
+struct:     __atomic_wide_counter :: anon_struct_1    flags: 1

Reply via email to