From 5484802fdbe30bbc3075c4d4861f97007a5177ed Mon Sep 17 00:00:00 2001
From: dimstar <>
Date: Apr 25 2024 19:01:32 +0000
Subject: Update geany to version 2.0 / rev 43 via SR 1170052


https://build.opensuse.org/request/show/1170052
by user dimstar + anag+factory

---

diff --git a/.files b/.files
index af83a6c..29ad7ec 100644
Binary files a/.files and b/.files differ
diff --git a/.rev b/.rev
index 8710436..bd0f39d 100644
--- a/.rev
+++ b/.rev
@@ -513,4 +513,12 @@
 - Rebased geany-appstream.patch. (forwarded request 1119159 from polslinux)</comment>
     <requestid>1119569</requestid>
   </revision>
+  <revision rev="43" vrev="2">
+    <srcmd5>99d2e238e6976e74e56319b25a04c47a</srcmd5>
+    <version>2.0</version>
+    <time>1714070864</time>
+    <user>anag+factory</user>
+    <comment></comment>
+    <requestid>1170052</requestid>
+  </revision>
 </revisionlist>
diff --git a/geany.changes b/geany.changes
index cffe9ac..755234d 100644
--- a/geany.changes
+++ b/geany.changes
@@ -1,4 +1,9 @@
 -------------------------------------------------------------------
+Wed Apr 24 06:08:56 UTC 2024 - Bernhard Wiedemann <bwiedemann@suse.com>
+
+- Add reproducible.patch to make glfw build deterministic
+
+-------------------------------------------------------------------
 Fri Oct 20 05:48:50 UTC 2023 - Paolo Stivanin <info@paolostivanin.com>
 
 - Update to 2.0:
diff --git a/geany.spec b/geany.spec
index 25bd678..e9690bb 100644
--- a/geany.spec
+++ b/geany.spec
@@ -27,6 +27,7 @@ Source0:        https://download.geany.org/%{name}-%{version}.tar.bz2
 Source1:        %{name}-rpmlintrc
 # PATCH-FIX-UPSTREAM geany-appstream.patch gh#geany/geany#1142 badshah400@gmail.com -- Downstream created appstream file, submitted upstream
 Patch1:         geany-appstream.patch
+Patch2:         reproducible.patch
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  docutils
diff --git a/reproducible.patch b/reproducible.patch
new file mode 100644
index 0000000..6b90730
--- /dev/null
+++ b/reproducible.patch
@@ -0,0 +1,159 @@
+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?= <techet@gmail.com>
+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