Compare commits

3 Commits
main ... 1.1

14 changed files with 560 additions and 735 deletions

View File

@@ -1,4 +1,3 @@
<multibuild>
<package>doc</package>
<package>stage1</package>
</multibuild>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/glib.git</param>
<param name="revision">2.82.4</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
<!-- <param name="changesgenerate">enable</param> -->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">zst</param>
</service>
<service name="set_version" mode="manual" />
</services>

View File

@@ -1,175 +0,0 @@
%files tools
%license LICENSES/LGPL-2.1-or-later.txt
%doc README.md
%{_bindir}/gapplication
%{_bindir}/gdbus
%{_bindir}/gio
%{_bindir}/gio-querymodules*
%{_bindir}/glib-compile-schemas
%{_bindir}/gresource
%{_bindir}/gsettings
%{_libexecdir}/gio-launch-desktop
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gapplication
%{_datadir}/bash-completion/completions/gdbus
%{_datadir}/bash-completion/completions/gio
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/bash-completion/completions/gsettings
%dir %{_datadir}/zsh
%dir %{_datadir}/zsh/site-functions
%{_datadir}/zsh/site-functions/_gsettings
%{_mandir}/man1/gapplication.1%{?ext_man}
%{_mandir}/man1/gdbus.1%{?ext_man}
%{_mandir}/man1/gio.1%{?ext_man}
%{_mandir}/man1/gio-querymodules.1%{?ext_man}
%{_mandir}/man1/glib-compile-schemas.1%{?ext_man}
%{_mandir}/man1/gresource.1%{?ext_man}
%{_mandir}/man1/gsettings.1%{?ext_man}
# We put those files here, but they don't really belong here. They just don't
# have a better home... The zzz-glib2 scripts could arguably be in
# libglib-2_0-0 but that would break the shared library policy.
%{_sysconfdir}/profile.d/zzz-glib2.*
%files -n gio-branding-upstream
%license LICENSES/LGPL-2.1-or-later.txt
%doc README.Gsettings-overrides
%config (noreplace) %{_sysconfdir}/gnome_defaults.conf
%files -n %{libglib}
%license LICENSES/LGPL-2.1-or-later.txt
%doc NEWS
%{_libdir}/libglib*.so.*
%files -n %{libgmodule}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgmodule*.so.*
%files -n %{libgobject}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgobject*.so.*
%files -n %{libgthread}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgthread*.so.*
%files -n %{libgio}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgio*.so.*
%dir %{_libdir}/gio
%dir %{_libdir}/gio/modules
%ghost %{_libdir}/gio/modules/giomodule.cache
%dir %{_datadir}/glib-2.0/
%dir %{_datadir}/glib-2.0/schemas/
%ghost %{_datadir}/glib-2.0/schemas/gschemas.compiled
%{_datadir}/applications/gnome-mimeapps.list
%dir %{_localstatedir}/cache/gio-2.0
%ghost %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/pantheon-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/budgie-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/mate-mimeapps.list
%files devel
%license LICENSES/LGPL-2.1-or-later.txt
%{_bindir}/gdbus-codegen
%{_bindir}/gi-compile-repository
%{_bindir}/gi-decompile-typelib
%{_bindir}/gi-inspect-typelib
%{_bindir}/glib-compile-resources
%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gobject-query
%{_bindir}/gtester
%{_bindir}/gtester-report
%{_mandir}/man1/gdbus-codegen*%{ext_man}
%{_mandir}/man1/gi-compile-repository.1%{?ext_man}
%{_mandir}/man1/gi-decompile-typelib.1%{?ext_man}
%{_mandir}/man1/gi-inspect-typelib.1%{?ext_man}
%{_mandir}/man1/glib-compile-resources.1%{ext_man}
%{_mandir}/man1/glib-genmarshal.1%{ext_man}
%{_mandir}/man1/glib-gettextize.1%{ext_man}
%{_mandir}/man1/glib-mkenums.1%{ext_man}
%{_mandir}/man1/gobject-query.1%{ext_man}
%{_mandir}/man1/gtester-report.1%{?ext_man}
%{_mandir}/man1/gtester.1%{ext_man}
%dir %{_datadir}/aclocal
%{_datadir}/aclocal/glib-2.0.m4
%{_datadir}/aclocal/glib-gettext.m4
%{_datadir}/aclocal/gsettings.m4
%dir %{_datadir}/gettext/its/
%{_datadir}/gettext/its/gschema*
%dir %{_datadir}/glib-2.0/
%{_datadir}/glib-2.0/dtds/
%{_datadir}/glib-2.0/gdb/
%{_datadir}/glib-2.0/gettext/
%{_datadir}/glib-2.0/codegen/
%{_datadir}/glib-2.0/schemas/gschema.dtd
%{_datadir}/glib-2.0/valgrind/
%{_includedir}/glib-2.0
%{_includedir}/gio-unix-2.0
%{_libdir}/lib*.so
%dir %{_libdir}/glib-2.0/
%{_libdir}/glib-2.0/include/
%{_libdir}/pkgconfig/*.pc
%{_datadir}/gdb/auto-load/%{_libdir}/*-gdb.py
%if %{with systemtap}
%dir %{_datadir}/systemtap
%dir %{_datadir}/systemtap/tapset
%dir %{_datadir}/systemtap/tapset/*
%{_datadir}/systemtap/tapset/*/libgio-*.so.*.stp
%{_datadir}/systemtap/tapset/*/libglib-*.so.*.stp
%{_datadir}/systemtap/tapset/*/libgobject-*.so.*.stp
%endif
%{_rpmmacrodir}/macros.glib2
# Own these directories to avoid build requirement on gdb
# only for directories ownership
%dir %{_datadir}/gdb
%dir %{_datadir}/gdb/auto-load
%dir %{_datadir}/gdb/auto-load%{_prefix}
%dir %{_datadir}/gdb/auto-load%{_libdir}
%{_datadir}/gir-1.0/GIRepository-3.0.gir
%{_datadir}/gir-1.0/GLib-2.0.gir
%{_datadir}/gir-1.0/GModule-2.0.gir
%{_datadir}/gir-1.0/GObject-2.0.gir
%{_datadir}/gir-1.0/Gio-2.0.gir
%{_datadir}/gir-1.0/GLibUnix-2.0.gir
%{_datadir}/gir-1.0/GioUnix-2.0.gir
%files -n typelib-1_0-GLibUnix-2_0
%{_libdir}/girepository-1.0/GLibUnix-2.0.typelib
%files -n typelib-1_0-GIRepository-3_0
%{_libdir}/girepository-1.0/GIRepository-3.0.typelib
%files -n typelib-1_0-GLib-2_0
%{_libdir}/girepository-1.0/GLib-2.0.typelib
%files -n typelib-1_0-GModule-2_0
%{_libdir}/girepository-1.0/GModule-2.0.typelib
%files -n typelib-1_0-GObject-2_0
%{_libdir}/girepository-1.0/GObject-2.0.typelib
%files -n typelib-1_0-Gio-2_0
%{_libdir}/girepository-1.0/Gio-2.0.typelib
%{_libdir}/girepository-1.0/GioUnix-2.0.typelib
%files -n %{libgirepository}
%{_libdir}/libgirepository-2.0.so.0*
%files devel-static
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/lib*.a
%files lang -f glib20.lang
%license LICENSES/LGPL-2.1-or-later.txt
%files tests-devel
%license LICENSES/LGPL-2.1-or-later.txt
%{_libexecdir}/installed-tests
%attr(0755 - -) %{_libexecdir}/installed-tests/glib/taptestrunner.py
%attr(0755 - -) %{_libexecdir}/installed-tests/glib/x-content/unix-software/autorun.sh
%{_datadir}/installed-tests

View File

@@ -1,63 +0,0 @@
%ldconfig_scriptlets
%files
%dir %{_libdir}/glib-2.0
%dir %{_libdir}/glib-2.0/include
%dir %{_datadir}/gdb/auto-load/usr
%dir %{_datadir}/gdb/auto-load%{_libdir}
%dir %{_datadir}/gettext/its
%dir %{_datadir}/gdb
%dir %{_datadir}/gdb/auto-load
%{_bindir}/gapplication
%{_bindir}/gdbus
%{_bindir}/gdbus-codegen
%{_bindir}/gi-compile-repository
%{_bindir}/gi-decompile-typelib
%{_bindir}/gi-inspect-typelib
%{_bindir}/gio
%{_bindir}/gio-querymodules
%{_bindir}/glib-compile-resources
%{_bindir}/glib-compile-schemas
%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gobject-query
%{_bindir}/gresource
%{_bindir}/gsettings
%{_bindir}/gtester
%{_bindir}/gtester-report
%{_datadir}/aclocal/glib-2.0.m4
%{_datadir}/aclocal/glib-gettext.m4
%{_datadir}/aclocal/gsettings.m4
%{_datadir}/bash-completion/completions/gapplication
%{_datadir}/bash-completion/completions/gdbus
%{_datadir}/bash-completion/completions/gio
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/bash-completion/completions/gsettings
%{_datadir}/gdb/auto-load%{_libdir}/libglib-2.0.so.*gdb.py
%{_datadir}/gdb/auto-load%{_libdir}/libgobject-2.0.so.*gdb.py
%{_datadir}/gettext/its/gschema.its
%{_datadir}/gettext/its/gschema.loc
%{_datadir}/glib-2.0/
%{_includedir}/gio-unix-2.0
%{_includedir}/glib-2.0
%{_libdir}/glib-2.0/include/glibconfig.h
%{_libdir}/libgio-2.0.so*
%{_libdir}/libgirepository-2.0.so*
%{_libdir}/libglib-2.0.so*
%{_libdir}/libgmodule-2.0.so*
%{_libdir}/libgobject-2.0.so*
%{_libdir}/libgthread-2.0.so*
%{_libdir}/pkgconfig/gio-2.0.pc
%{_libdir}/pkgconfig/gio-unix-2.0.pc
%{_libdir}/pkgconfig/girepository-2.0.pc
%{_libdir}/pkgconfig/glib-2.0.pc
%{_libdir}/pkgconfig/gmodule-2.0.pc
%{_libdir}/pkgconfig/gmodule-export-2.0.pc
%{_libdir}/pkgconfig/gmodule-no-export-2.0.pc
%{_libdir}/pkgconfig/gobject-2.0.pc
%{_libdir}/pkgconfig/gthread-2.0.pc
%{_libexecdir}/gio-launch-desktop

BIN
glib-2.78.6.tar.xz Normal file

Binary file not shown.

BIN
glib-2.82.4.obscpio (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,4 +0,0 @@
name: glib
version: 2.82.4
mtime: 1733955682
commit: ca20e4ac71864f08e980dc044ac96c06d5482b37

View File

@@ -0,0 +1,45 @@
From 25833cefda24c60af913d6f2d532b5afd608b821 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Thu, 19 Sep 2024 18:35:53 +0100
Subject: [PATCH] gsocks4aproxy: Fix a single byte buffer overflow in connect
messages
`SOCKS4_CONN_MSG_LEN` failed to account for the length of the final nul
byte in the connect message, which is an addition in SOCKSv4a vs
SOCKSv4.
This means that the buffer for building and transmitting the connect
message could be overflowed if the username and hostname are both
`SOCKS4_MAX_LEN` (255) bytes long.
Proxy configurations are normally statically configured, so the username
is very unlikely to be near its maximum length, and hence this overflow
is unlikely to be triggered in practice.
(Commit message by Philip Withnall, diagnosis and fix by Michael
Catanzaro.)
Fixes: #3461
---
gio/gsocks4aproxy.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gio/gsocks4aproxy.c b/gio/gsocks4aproxy.c
index 3dad118eb..b3146d08f 100644
--- a/gio/gsocks4aproxy.c
+++ b/gio/gsocks4aproxy.c
@@ -79,9 +79,9 @@ g_socks4a_proxy_init (GSocks4aProxy *proxy)
* +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
* | VN | CD | DSTPORT | DSTIP | USERID |NULL| HOST | | NULL |
* +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
- * 1 1 2 4 variable 1 variable
+ * 1 1 2 4 variable 1 variable 1
*/
-#define SOCKS4_CONN_MSG_LEN (9 + SOCKS4_MAX_LEN * 2)
+#define SOCKS4_CONN_MSG_LEN (10 + SOCKS4_MAX_LEN * 2)
static gint
set_connect_msg (guint8 *msg,
const gchar *hostname,
--
2.47.0

55
glib2-CVE-2025-3360.patch Normal file
View File

@@ -0,0 +1,55 @@
From 8d60d7dc168aee73a15eb5edeb2deaf196d96114 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Tue, 18 Feb 2025 16:44:58 +0000
Subject: [PATCH] gdatetime: Fix integer overflow when parsing very long
ISO8601 inputs
This will only happen with invalid (or maliciously invalid) potential
ISO8601 strings, but `g_date_time_new_from_iso8601()` needs to be robust
against that.
Prevent `length` overflowing by correctly defining it as a `size_t`.
Similarly for `date_length`, but additionally track its validity in a
boolean rather than as its sign.
Spotted by chamalsl as #YWH-PGM9867-43.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
---
glib/gdatetime.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/glib/gdatetime.c b/glib/gdatetime.c
index 5c5638234..efa072982 100644
--- a/glib/gdatetime.c
+++ b/glib/gdatetime.c
@@ -1540,7 +1540,8 @@ parse_iso8601_time (const gchar *text, gsize length,
GDateTime *
g_date_time_new_from_iso8601 (const gchar *text, GTimeZone *default_tz)
{
- gint length, date_length = -1;
+ size_t length, date_length = 0;
+ gboolean date_length_set = FALSE;
gint hour = 0, minute = 0;
gdouble seconds = 0.0;
GTimeZone *tz = NULL;
@@ -1551,11 +1552,14 @@ g_date_time_new_from_iso8601 (const gchar *text, GTimeZone *default_tz)
/* Count length of string and find date / time separator ('T', 't', or ' ') */
for (length = 0; text[length] != '\0'; length++)
{
- if (date_length < 0 && (text[length] == 'T' || text[length] == 't' || text[length] == ' '))
- date_length = length;
+ if (!date_length_set && (text[length] == 'T' || text[length] == 't' || text[length] == ' '))
+ {
+ date_length = length;
+ date_length_set = TRUE;
+ }
}
- if (date_length < 0)
+ if (!date_length_set)
return NULL;
if (!parse_iso8601_time (text + date_length + 1, length - (date_length + 1),
--
2.41.0

117
glib2-CVE-2025-4373.patch Normal file
View File

@@ -0,0 +1,117 @@
From a47dc889463d73dd47ad428ac217e3d84f28e242 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Mon, 28 Apr 2025 16:03:08 +0000
Subject: [PATCH 1/2] gstring: carefully handle gssize parameters
Wherever we use gssize to allow passing -1, we need to ensure we don't
overflow the value by assigning a gsize to it without checking if the
size exceeds the maximum gssize. The safest way to do this is to just
use normal gsize everywhere instead and use gssize only for the
parameter.
Our computers don't have enough RAM to write tests for this. I tried
forcing string->len to high values for test purposes, but this isn't
valid and will just cause out of bounds reads/writes due to
string->allocated_len being unexpectedly small, so I don't think we can
test this easily.
(cherry picked from commit cc647f9e46d55509a93498af19659baf9c80f2e3)
Co-authored-by: Michael Catanzaro <mcatanzaro@redhat.com>
---
glib/gstring.c | 36 +++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
Index: glib-2.78.6/glib/gstring.c
===================================================================
--- glib-2.78.6.orig/glib/gstring.c
+++ glib-2.78.6/glib/gstring.c
@@ -490,8 +490,9 @@ g_string_insert_len (GString *string
return string;
if (len < 0)
- len = strlen (val);
- len_unsigned = len;
+ len_unsigned = strlen (val);
+ else
+ len_unsigned = len;
if (pos < 0)
pos_unsigned = string->len;
@@ -788,10 +789,12 @@ g_string_insert_c (GString *string,
g_string_maybe_expand (string, 1);
if (pos < 0)
- pos = string->len;
+ pos_unsigned = string->len;
else
- g_return_val_if_fail ((gsize) pos <= string->len, string);
- pos_unsigned = pos;
+ {
+ pos_unsigned = pos;
+ g_return_val_if_fail (pos_unsigned <= string->len, string);
+ }
/* If not just an append, move the old stuff */
if (pos_unsigned < string->len)
@@ -824,6 +827,7 @@ g_string_insert_unichar (GString *strin
gssize pos,
gunichar wc)
{
+ gsize pos_unsigned;
gint charlen, first, i;
gchar *dest;
@@ -865,15 +869,18 @@ g_string_insert_unichar (GString *strin
g_string_maybe_expand (string, charlen);
if (pos < 0)
- pos = string->len;
+ pos_unsigned = string->len;
else
- g_return_val_if_fail ((gsize) pos <= string->len, string);
+ {
+ pos_unsigned = pos;
+ g_return_val_if_fail (pos_unsigned <= string->len, string);
+ }
/* If not just an append, move the old stuff */
- if ((gsize) pos < string->len)
- memmove (string->str + pos + charlen, string->str + pos, string->len - pos);
+ if (pos_unsigned < string->len)
+ memmove (string->str + pos_unsigned + charlen, string->str + pos_unsigned, string->len - pos_unsigned);
- dest = string->str + pos;
+ dest = string->str + pos_unsigned;
/* Code copied from g_unichar_to_utf() */
for (i = charlen - 1; i > 0; --i)
{
@@ -931,6 +938,7 @@ g_string_overwrite_len (GString *str
const gchar *val,
gssize len)
{
+ gsize len_unsigned;
gsize end;
g_return_val_if_fail (string != NULL, NULL);
@@ -942,14 +950,16 @@ g_string_overwrite_len (GString *str
g_return_val_if_fail (pos <= string->len, string);
if (len < 0)
- len = strlen (val);
+ len_unsigned = strlen (val);
+ else
+ len_unsigned = len;
- end = pos + len;
+ end = pos + len_unsigned;
if (end > string->len)
g_string_maybe_expand (string, end - string->len);
- memcpy (string->str + pos, val, len);
+ memcpy (string->str + pos, val, len_unsigned);
if (end > string->len)
{

68
glib2-CVE-2025-6052.patch Normal file
View File

@@ -0,0 +1,68 @@
From 33d9ba2fcc907b4f9a6c0540f9976b64b6f59db2 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Tue, 3 Jun 2025 11:31:04 +0100
Subject: [PATCH] gstring: Fix overflow check when expanding the string
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
After commit 34b7992fd6e3894bf6d2229b8aa59cac34bcb1b5 the overflow check
was only done when expanding the string, but we need to do it before
checking whether to expand the string, otherwise that calculation could
overflow and falsely decide that the string is big enough already.
As a concrete example, consider a `GString` which has:
* `.len = G_MAXSIZE / 2 + 1`
* `.allocated_len = G_MAXSIZE / 2 + 1`
and `g_string_append()` is called on it with an input string of length
`G_MAXSIZE / 2`.
This results in a call `g_string_maybe_expand (string, G_MAXSIZE / 2)`,
which calculates `string->len + len` as `(G_MAXSIZE / 2 + 1) +
(G_MAXSIZE / 2)` which evaluates to `1` as it overflows. This is not
greater than `string->allocated_len` (which is `G_MAXSIZE / 2 + 1`), so
`g_string_expand()` is *not* called, and `g_string_maybe_expand()`
returns successfully. The caller then assumes that theres enough space
in the buffer, and happily continues to cause a buffer overflow.
Its unlikely anyone could hit this in practice because it requires
ludicrously big strings and `GString` allocations, which likely would
have been blocked by other code, but if were going to have the overflow
checks in `GString` then they should be effective.
Spotted by code inspection.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
---
glib/gstring.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/glib/gstring.c b/glib/gstring.c
index 645746c9a..010a8e976 100644
--- a/glib/gstring.c
+++ b/glib/gstring.c
@@ -68,10 +68,6 @@ static void
g_string_expand (GString *string,
gsize len)
{
- /* Detect potential overflow */
- if G_UNLIKELY ((G_MAXSIZE - string->len - 1) < len)
- g_error ("adding %" G_GSIZE_FORMAT " to string would overflow", len);
-
string->allocated_len = g_nearest_pow (string->len + len + 1);
/* If the new size is bigger than G_MAXSIZE / 2, only allocate enough
* memory for this string and don't over-allocate.
@@ -86,6 +82,10 @@ static inline void
g_string_maybe_expand (GString *string,
gsize len)
{
+ /* Detect potential overflow */
+ if G_UNLIKELY ((G_MAXSIZE - string->len - 1) < len)
+ g_error ("adding %" G_GSIZE_FORMAT " to string would overflow", len);
+
if (G_UNLIKELY (string->len + len >= string->allocated_len))
g_string_expand (string, len);
}
--
2.49.0

View File

@@ -1,8 +1,8 @@
diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py
index 2e8ef8e2..772dad77 100644
--- a/gio/gdbus-2.0/codegen/codegen.py
+++ b/gio/gdbus-2.0/codegen/codegen.py
@@ -98,8 +98,7 @@ class HeaderCodeGenerator:
Index: glib-2.70.0/gio/gdbus-2.0/codegen/codegen.py
===================================================================
--- glib-2.70.0.orig/gio/gdbus-2.0/codegen/codegen.py
+++ glib-2.70.0/gio/gdbus-2.0/codegen/codegen.py
@@ -95,8 +95,7 @@ class HeaderCodeGenerator:
# ----------------------------------------------------------------------------------------------------
def generate_header_preamble(self):
@@ -12,7 +12,7 @@ index 2e8ef8e2..772dad77 100644
self.outfile.write("\n")
if self.use_pragma:
@@ -1043,8 +1042,7 @@ class InterfaceInfoHeaderCodeGenerator:
@@ -1040,8 +1039,7 @@ class InterfaceInfoHeaderCodeGenerator:
# ----------------------------------------------------------------------------------------------------
def generate_header_preamble(self):
@@ -22,7 +22,7 @@ index 2e8ef8e2..772dad77 100644
self.outfile.write("\n")
if self.use_pragma:
@@ -1115,8 +1113,7 @@ class InterfaceInfoBodyCodeGenerator:
@@ -1112,8 +1110,7 @@ class InterfaceInfoBodyCodeGenerator:
# ----------------------------------------------------------------------------------------------------
def generate_body_preamble(self):
@@ -32,12 +32,13 @@ index 2e8ef8e2..772dad77 100644
if self.symbol_decoration_define is not None:
self.outfile.write("\n")
@@ -1469,7 +1466,7 @@ class CodeGenerator:
@@ -1466,8 +1463,7 @@ class CodeGenerator:
# ----------------------------------------------------------------------------------------------------
def generate_body_preamble(self):
basenames = ", ".join(self.input_files_basenames)
- basenames = ", ".join(self.input_files_basenames)
- self.outfile.write(LICENSE_STR.format(config.VERSION, basenames))
+ self.outfile.write(LICENSE_STR)
if self.symbol_decoration_define is not None:
self.outfile.write("\n")
self.outfile.write("#define %s\n" % self.symbol_decoration_define)

View File

@@ -1,188 +1,62 @@
-------------------------------------------------------------------
Wed Jan 15 18:14:10 UTC 2025 - Bjørn Lie <bjorn.lie@gmail.com>
Fri Jun 13 21:00:33 UTC 2025 - Michael Gorse <mgorse@suse.com>
- Update to version 2.82.4:
+ Fix a double-unref crash which affects many apps which use
pygobject to export objects on D-Bus
+ Bugs fixed:
- Fix regression: lollypop crashes on startup
- Revert "gdbus: Fix leak of method invocation when registering
an object with closures"
- ci: Add release component to automate tarball publishing
- Add glib2-CVE-2025-6052.patch: fix overflow check when expanding
a GString (bsc#1244596 CVE-2025-6052).
-------------------------------------------------------------------
Mon Dec 9 16:41:51 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
Thu Jun 5 06:38:31 UTC 2025 - Xiaoguang Wang <xiaoguang.wang@suse.com>
- Update to version 2.82.3:
+ Fix compatibility with tzdata 2024b
+ Bugs fixed:
- Test regressions with tzdata 2024b
- gdatetime test: Do not assume PST8PDT was always exactly
-8/-7
- glib: Don't require GLIB_DOMAIN to be a NUL-terminated string
- gio: Fix GFileEnumerator leaks in gio tools
- macos: Remove extraous space from type identifier
- refstring: Fix race between releasing and re-acquiring an
interned GRefString
- appmonitor: Fix warning building test
- grefstring: Mark a variable as potentially unused
- gdbus: Fix leak of method invocation when registering an
object with closures
- Add glib2-CVE-2025-4373.patch: carefully handle gssize parameters
(bsc#1242844 CVE-2025-4373 glgo#GNOME/glib#3677).
-------------------------------------------------------------------
Wed Nov 27 17:40:33 UTC 2024 - Michael Gorse <mgorse@suse.com>
Tue Apr 08 05:58:04 UTC 2025 - Cliff Zhao <qzhao@suse.com>
- Add glib2-CVE-2025-3360.patch:
Backport 8d60d7dc from upstream, Fix integer overflow when
parsing very long ISO8601 inputs. This will only happen with
invalid (or maliciously invalid) potential ISO8601 strings,
but `g_date_time_new_from_iso8601()` needs to be robust against
that.
(CVE-2025-3360, bsc#1240897)
-------------------------------------------------------------------
Wed Nov 27 17:22:59 UTC 2024 - Michael Gorse <mgorse@suse.com>
- Have the glib2-tools postun trigger exit normally if
glib2-compile-schemas can't be run. Fixes error when uninstalling
if libgio is uninstalled first (bsc#1231463).
-------------------------------------------------------------------
Thu Oct 17 12:05:15 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
Tue Nov 12 20:27:24 UTC 2024 - Michael Gorse <mgorse@suse.com>
- Update to version 2.82.2:
+ Bugs fixed:
- glib/gvariant: incorrect use of G_ANALYZER_ANALYZING
- Multicast cannot be joined on Mac OS on non-default interface
- glib/gvariant: Fix check for G_ANALYZER_ANALYZING
- macos: Fix URL launcher
- gopenuriportal: Fix two memory leaks
- gio: Fix multicast iface selection on macOS
- gdatainputstream: Fix length return value on UTF-8 validation
failure
+ Updated translations.
- Add glib2-CVE-2024-52533.patch: fix a single byte buffer overflow
(boo#1233282 CVE-2024-52533 glgo#GNOME/glib#3461).
-------------------------------------------------------------------
Fri Sep 20 05:59:19 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
Mon May 20 21:44:26 UTC 2024 - Michael Gorse <mgorse@suse.com>
- Update to version 2.82.1:
+ Fix a potential buffer overflow in `GSocks4aProxy` (boo#1233282
CVE-2024-52533).
+ Bugs fixed:
- Test /unix-mounts/get-mount-entries fails unless libmount is
enabled
- Buffer overflow in set_connect_msg()
- tests: Test against a sample mtab file in unix-mounts for
getmntent()
- tests: Run lint tests with detected bash
- docs(glib): Fix link in string-utils ref
- Move to Apple Silicon based runner
- gsocks4aproxy: Fix a single byte buffer overflow in connect
messages
+ Updated translations.
-------------------------------------------------------------------
Tue Aug 27 12:00:06 UTC 2024 - pgajdos@suse.com
- remove dependency on /usr/bin/python3 using
%python3_fix_shebang{,_path} macros, [bsc#1212476]
-------------------------------------------------------------------
Mon Aug 26 10:49:32 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 2.82.0:
+ Change the default value of -Dglib_debug from `auto` to
`enabled` for developers — distributions will almost certainly
want to override it to `-Dglib_debug=disabled` for package
release builds though.
+ Revert per-instance locking changes in `GCancellable` as they
introduced new races.
+ Bugs fixed:
- Investigate trampoline performance implications in
g_mutex_lock_impl() changes
- Default value for glib_debug meson option
- wrong comment in gmessage.c:escape_string
- Should check for epoll_create1 rather than epoll_create
- Gio.MenuModel docs have an outdated UI example
- gunixmounts: Fix use of uninitialised variable
- tests: Run expected-to-hang cancellable tests in subprocesses
- CI/msys2-mingw32: Set the G_DEBUGGER environment variable
- Revert "GCancellable: Use per-instance mutex logic instead of
global critical sections”
- Various small backports
- Backport “gthread: Move thread _impl functions to static
inlines for speed”
+ Updated translations.
- Pass glib_debug=disabled to meson as recommended by upstream and
pass sysprof=disabled to meson, avoid pulling in extra
dependencies.
- Drop python enviroment fix, no longer needed.
-------------------------------------------------------------------
Mon Aug 26 10:45:18 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 2.80.5:
+ Bugs fixed:
- Fix gsocketclient-slow test on FreeBSD
- glib-private: fix build under Cygwin
- tests: Fix compilation of resolver-parsing test on FreeBSD
- introspection: Correct GIO-Windows pkg-config name
+ Updated translations
-------------------------------------------------------------------
Mon Jul 8 18:19:52 UTC 2024 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 2.80.4:
+ Bugs fixed:
- GLib unit tests fail on macOS runner due to localhost being
out of addresses
- Random failures to build glib 2.80.3
- Backport !4111 “gioerror: Map EADDRNOTAVAIL to
G_IO_ERROR_CONNECTION_REFUSED” to glib-2-80
- Backport !3373 and !4117 “Handle files >4GB in
g_file_load_contents()“ to glib-2-80
- Backport !4020 and !4122: fixes to GIR install locations and
build race fixes
- Backport !4110 “gthreadedresolver: ref-sink returned records
in lookup_records()” to glib-2-80
-------------------------------------------------------------------
Tue Jun 11 07:14:25 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.80.3:
+ Bugs fixed:
- g_socket_client_connect_to_host_async leaks memory when
target host doesn't respond to ARP.
- gi_repository_find_by_gtype is nondeterministic.
- Crash in error path of g_dbus_connection_export_menu_model().
- Backport !4057 “gdbusmessage: Clean the cached arg0 when
setting the message body” to glib-2-80.
- Backport !4058 “Tests: Build fixes when running `meson test`
without previous builds“ to glib-2-80
- Partially backport !4059 “tests: Fix various memory leaks and
valgrind / ASAN errors” to glib-2-80
- Backport !4066 “Fix several GCC 14 warnings to please
msys2-mingw32 CI” to glib-2-80
- Backport !4065 “girepository: Don't assume a bitfield has a
fixed size” to glib-2-80
- Backport !4073 “gmenuexporter: Fix a NULL pointer dereference
on an error handling path” to glib-2-80
- Backport !4078 “tests: Fix clang compilation failure due to
unrecognised option in pragma” to glib-2-80.
- Backport !4033 “girepository: Keep an ordered list of the
loaded typelibs” to glib-2-80
- Backport !4104 “gsocketclient: Fix a leak of the task data on
an error path” to glib-2-80
+ Updated translations.
-------------------------------------------------------------------
Mon May 13 14:07:04 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.80.2:
+ Fix a regression with IBus caused by the fix for
CVE-2024-34397.
+ Fix installation directory of the GVariant specification.
+ Bugs fixed:
- GVariant specification installed in wrong directory.
- Backport "gdbusconnection: Fix test signal subscription
ordering" to glib-2-80.
- Backport “Correct installation directory of GVariant
specification” to glib-2-80.
- Backport “gdbusconnection: Allow name owners to have the
syntax of a well-known name” to glib-2-80.
- Changes from version 2.80.1
- Update to version 2.78.6 (boo#1224044):
+ Fix a regression with IBus caused by the fix for CVE-2024-34397
+ Changes in version 2.78.5:
+ Fix CVE-2024-34397: GDBus signal subscriptions for well-known
names are vulnerable to unicast spoofing (boo#1224044).
+ Updated translations.
names are vulnerable to unicast spoofing.
+ Bugs fixed:
- gvfs-udisks2-volume-monitor SIGSEGV in
g_content_type_guess_for_tree() due to filename with bad
encoding
- gcontenttype: Make filename valid utf-8 string before
processing.
- “gdbusconnection: Don't deliver signals if the sender
doesn't match.
+ Changes in version 2.78.4:
+ Bugs fixed:
- “Fix generated RST anchors for methods, signals and
properties.
- docs/reference: depend on a native gtk-doc.
- “gobject_gdb.py: Do not break bt on optimized build.
- “gregex: clean up usage of _GRegex.jit_status.
-------------------------------------------------------------------
Tue Apr 2 16:17:11 UTC 2024 - Dirk Müller <dmueller@suse.com>
@@ -190,104 +64,6 @@ Tue Apr 2 16:17:11 UTC 2024 - Dirk Müller <dmueller@suse.com>
- require dbus-launch only if dbus-service is wanted. This helps
with stripping down container-only builds (jsc#PED-8153)
-------------------------------------------------------------------
Mon Mar 18 12:25:33 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Fold typelib-1_0-GioUnix-2_0 into typeib-1_0-Gio-2_0: gjs loads
GioUnix as platform-specific overlay to Gio transparently. Any
consumer that wants Gio needs GioUnix on Unix-like systems
(boo#1211604).
-------------------------------------------------------------------
Fri Mar 8 07:28:10 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.80.0:
+ Bugs fixed:
- GLib: string malformed for gettext.
- Add missing argument placeholders to several command-line
tools.
- g_warn_if_fail: Document as always evaluating expr.
- docs:
. Fix a typo in the macros docs page.
. Specify gi-docgen as a native dependency.
. Fix building with docs enabled and introspection disabled.
. Minor improvements to GSignal documentation.
+ Updated translations.
-------------------------------------------------------------------
Wed Mar 6 14:32:51 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Create glib2-stage1: build glib2 without intrsospection. This
intermediate glib2-stage1-devel is used to the build
gobject-introspection, which in turn is needed to build the real
glib2 packages.
-------------------------------------------------------------------
Tue Feb 27 10:43:06 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.79.3:
+ Various consistency improvements to the command line
libgirepository tools
-------------------------------------------------------------------
Tue Feb 13 09:20:25 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.79.2:
+ More work to reduce lock contention and improve performance in
GObject.
+ More API changes to libgirepository, which is now stable as of
this release.
+ Import `g-ir-compiler`, `g-ir-generate` and `g-ir-inspect`
from gobject-introspection.git and update them to work with
girepository-2.0, renaming them to `gi-compile-repository`,
`gi-decompile-typelib` and`gi-inspect-typelib`.
+ Add new `GLibUnix-2.0.gir`, `GLibWin32-2.0.gir`,
`GioUnix-2.0.gir` and `GioWin32-2.0.gir` GIRs which contain
platform specific APIs, and are the preferred way for third
parties to access those APIs in future; although platform
specific APIs which were already exposed in `GLib-2.0.gir` and
`Gio-2.0.gir` continue to be listed there; the underlying `.so`
files have not changed.
-------------------------------------------------------------------
Mon Jan 29 13:38:52 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.79.1:
+ Fix a race condition in `g_object_unref()`,
+ Various API and build changes to libgirepository as it is not
yet API-stable,
+ Build fixes on big-endian 64-bit systems and mips64el,
+ Reduce contention on global locks within GObject,
+ Allow building man pages without the reference documentation,
-------------------------------------------------------------------
Tue Jan 16 07:51:52 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2.79.0+158:
+ Port to gi-docgen and drop gtk-doc support — dependencies have
changed, and Meson needs `-Ddocumentation` now rather than
`-Dgtk_doc.
+ Move libgirepository into glib.git from
gobject-introspection.git — but tools like `g-ir-scanner` are
currently still in gobject-introspection.git. For the moment,
glib.git needs to be built twice, once with
`-Dintrospection=false`, then build gobject-introspection.git,
then re-build glib.git with `-Dintrospection=true`. This
process will evolve throughout the GLib 2.80 cycle. The API and
ABI of libgirepository has changed, and accordingly its version
number has been bumped from 1.0 to 2.0 (note: the version
number of `GIRepository-*.gir` has been bumped from 2.0 to 3.0.
+ Match behaviour for `GAppInfo` searches has changed.
+ Rename `GTK_USE_PORTAL` environment variable to
`GIO_USE_PORTALS`.
+ Bump Meson dependency to 1.2.0 and depend on Python `packaging`
module.
- Add pkgconfig(gobject-introspection-1.0) BuildRequires: new
dependency.
- For doc flavor: replace gtk-doc BuildRequires with
pkgconfig(gi-docgen), following upstreams port to gi-docgen.
- Convert to source service for easier updating.
-------------------------------------------------------------------
Thu Dec 7 10:52:01 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
@@ -1039,7 +815,7 @@ Thu Jul 7 11:59:36 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>
+ Use a numeric space (U+2007) for padding with some
`g_date_time_format()` placeholders.
+ Fix a slow memory leak in `GSocketClient` when using long-lived
`GCancellable`s.
`GCancellable`s.
-------------------------------------------------------------------
Sun Jul 3 23:43:59 UTC 2022 - Emily Gonyer <emilyyrose@gmail.com>

View File

@@ -1,7 +1,7 @@
#
# spec file for package glib2
# spec file
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,16 +18,9 @@
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "doc"
%global psuffix -doc
%bcond_with systemtap
%global psuffix -doc
%else
%if "%{flavor}" == "stage1"
%global psuffix -stage1-devel
%bcond_with systemtap
%else
%global psuffix %{nil}
%bcond_without systemtap
%endif
%global psuffix %{nil}
%endif
%define libver 2_0-0
%define libgio libgio-%{libver}
@@ -35,15 +28,15 @@
%define libgmodule libgmodule-%{libver}
%define libgobject libgobject-%{libver}
%define libgthread libgthread-%{libver}
%define libgirepository libgirepository-%{libver}
%bcond_without systemtap
Name: glib2%{psuffix}
Version: 2.82.4
Version: 2.78.6
Release: 0
Summary: General-Purpose Utility Library
License: LGPL-2.1-or-later
Group: Development/Libraries/C and C++
URL: https://gitlab.gnome.org/GNOME/glib/
Source0: glib-%{version}.tar.zst
Source0: https://download.gnome.org/sources/glib/2.78/glib-%{version}.tar.xz
Source1: glib2.sh
Source2: glib2.csh
# Not upstream file. Only proposes upstream packages:
@@ -55,16 +48,23 @@ Source6: macros.glib2
Source8: gsettings.zsh
Source98: glib2-rpmlintrc
Source99: baselibs.conf
Source200: files.glib2
Source201: files.stage1
# PATCH-FEATURE-UPSTREAM glib2-bgo569829-gettext-gkeyfile.patch fate300461 bgo569829 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that we share with Ubuntu and try to push upstream
Patch0: glib2-bgo569829-gettext-gkeyfile.patch
# PATCH-FEATURE-OPENSUSE glib2-fate300461-gettext-gkeyfile-suse.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that deals with the openSUSE specific infrastructure (with desktop_translations)
Patch1: glib2-fate300461-gettext-gkeyfile-suse.patch
# PATCH-FIX-OPENSUSE glib2-suppress-schema-deprecated-path-warning.patch rh#814053 badshah400@gmail.com -- Suppress the deprecated path warning since it fills up screen unnecessarily during package installations/upgrade.
Patch2: glib2-suppress-schema-deprecated-path-warning.patch
# PATCH-FIX-OPENSUSE glib2-gdbus-codegen-version.patch olaf@aepfle.de -- Remove version string from files generated by gdbus-codegen
# PATCH-FIX-OPENSUSE glib2-gdbus-codegen-version.patch olaf@aepfle.de -- Remove version string from files generated by gdbus-codegen
Patch4: glib2-gdbus-codegen-version.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2024-52533.patch CVE-2024-52533 boo#1233282 mgorse@suse.com -- fix a single byte buffer overflow.
Patch5: glib2-CVE-2024-52533.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2025-3360.patch CVE-2025-3360 bsc#1240897 qzhao@suse.com -- Fix integer overflow when parsing very long.
Patch6: glib2-CVE-2025-3360.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2024-4373.patch bsc#1242844 CVE-2025-4373 glgo#GNOME/glib#3677 xwang@suse.com -- carefully handle gssize parameters
Patch7: glib2-CVE-2025-4373.patch
# PATCH-FIX-UPSTREAM glib2-CVE-2025-6052.patch bsc#1244596 mgorse@suse.com -- fix overflow check when expanding a GString.
Patch8: glib2-CVE-2025-6052.patch
BuildRequires: docbook-xsl-stylesheets
BuildRequires: fdupes
BuildRequires: gcc-c++
@@ -73,7 +73,6 @@ BuildRequires: m4
BuildRequires: meson >= 0.60.0
BuildRequires: pkgconfig
BuildRequires: python3-base >= 3.5
BuildRequires: python3-docutils
# gdbus-codegen is run during the build, so we need python3-xml
BuildRequires: python3-xml
BuildRequires: xsltproc
@@ -83,33 +82,18 @@ BuildRequires: pkgconfig(libffi) >= 3.0.0
BuildRequires: pkgconfig(libpcre2-8) >= 10.32
BuildRequires: pkgconfig(mount) >= 2.28
BuildRequires: pkgconfig(zlib)
%if "%{flavor}" != "stage1"
BuildRequires: pkgconfig(gobject-introspection-1.0)
%endif
%if "%{flavor}" == "doc"
# Split-provides
Provides: glib2-devel:%{_datadir}/gtk-doc/html/gobject/index.html
%endif
%if "%{flavor}" == "doc"
BuildRequires: glib2-devel
BuildRequires: pkgconfig(gi-docgen)
BuildRequires: gtk-doc >= 1.32
%endif
%if %{with systemtap}
BuildRequires: systemtap-dtrace
BuildRequires: systemtap-headers
%endif
%if "%{flavor}" == "stage1"
Requires: this-is-only-for-build-envs
Conflicts: %{libgio}
Conflicts: %{libgirepository}
Conflicts: %{libglib}
Conflicts: %{libgmodule}
Conflicts: %{libgobject}
Conflicts: %{libgthread}
Conflicts: glib2-devel
Conflicts: glib2-tools
Conflicts: glib2-tools-32bit
%endif
%description
GLib is a general-purpose utility library, which provides many useful
@@ -159,12 +143,9 @@ GSettings and applications used by the MIME system.
%package devel
Summary: Development files for glib, a general-purpose utility library
# Now require the subpackages too
Group: Development/Libraries/C and C++
# GDbusTest launches dbus-daemon with a special env to not interfere with
# the real session bus.
Requires: %{_bindir}/dbus-daemon
Requires: %{libgio} = %{version}
Requires: %{libgirepository} = %{version}
Requires: %{libglib} = %{version}
Requires: %{libgmodule} = %{version}
Requires: %{libgobject} = %{version}
@@ -174,12 +155,9 @@ Requires: glibc-devel
Requires: pkgconfig
# Required by gdbus-codegen
Requires: python3-xml
Requires: typelib-1_0-GIRepository-3_0 = %{version}
Requires: typelib-1_0-GLib-2_0 = %{version}
Requires: typelib-1_0-GLibUnix-2_0 = %{version}
Requires: typelib-1_0-GModule-2_0 = %{version}
Requires: typelib-1_0-GObject-2_0 = %{version}
Requires: typelib-1_0-Gio-2_0 = %{version}
# GDbusTest launches dbus-daemon with a special env to not interfere with
# the real session bus.
Requires: %{_bindir}/dbus-daemon
#
%description devel
@@ -231,9 +209,9 @@ Group: System/Libraries
# The tools are useful for people having libgio
# bnc#555605: shared-mime-info is required by libgio to properly detect mime types, but not during build
#!BuildIgnore: shared-mime-info
Requires: %{name}-tools
# bnc#678518: libgio interacts with others by means of dbus-launch
Requires: (%{_bindir}/dbus-launch if dbus-service)
Requires: %{name}-tools
Requires: gio-branding = %{version}
Requires: shared-mime-info
# Needed for branding packages
@@ -271,17 +249,6 @@ a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n %{libgirepository}
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n %{libgirepository}
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package tests-devel
Summary: Tests for the glib2 package
Group: Development/Libraries/C and C++
@@ -294,76 +261,6 @@ Obsoletes: %{name}-tests < %{version}-%{release}
The glib2-tests-devel package contains tests that can be used to verify
the functionality of the installed glib2 package.
%package -n typelib-1_0-GIRepository-3_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n typelib-1_0-GIRepository-3_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n typelib-1_0-GLib-2_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n typelib-1_0-GLib-2_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n typelib-1_0-GLibUnix-2_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n typelib-1_0-GLibUnix-2_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n typelib-1_0-GModule-2_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n typelib-1_0-GModule-2_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n typelib-1_0-GObject-2_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
%description -n typelib-1_0-GObject-2_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%package -n typelib-1_0-Gio-2_0
Summary: Object-Oriented Framework for C
Group: System/Libraries
# GioUnix has been folded into Gio package, as this is transparently loaded
# when including Gio (Platform specific loader in gjs - we know we are on unix)
Provides: typelib-1_0-GioUnix-2_0 = %{version}
Obsoletes: typelib-1_0-GioUnix-2_0 <= %{version}
%description -n typelib-1_0-Gio-2_0
GLib is a general-purpose utility library, which provides many useful
data types, macros, type conversions, string utilities, file utilities,
a main loop abstraction, and so on.
The GObject library provides an object-oriented framework for C.
%lang_package
%prep
@@ -371,6 +268,9 @@ The GObject library provides an object-oriented framework for C.
cp -a %{SOURCE1} %{SOURCE2} %{SOURCE5} .
cp -a %{SOURCE4} gnome_defaults.conf
# replace /usr/bin/env shebangs
# /usr/bin/env @PYTHON@ -> /usr/bin/python3
grep "%{_bindir}/env @PYTHON@" . -rl | xargs sed -i "s|%{_bindir}/env @PYTHON@|%{_bindir}/python3|g"
sed -i "s/1.32.1/1.32/" docs/reference/meson.build
%build
@@ -380,15 +280,11 @@ sed -i "s/1.32.1/1.32/" docs/reference/meson.build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%endif
%meson \
--default-library=%[ "%{flavor}" == "" ? "both" : "shared" ]\
-Dselinux=%[ "%{flavor}" != "stage1" ? "enabled" : "disabled" ] \
-Dman-pages=%[ "%{flavor}" != "stage1" ? "true" : "false" ] \
--default-library=both \
-Dselinux=enabled \
-Dman=true \
%if "%{flavor}" == "doc"
-Ddocumentation=true \
%else
-Ddocumentation=false \
-Dinstalled_tests=%[ "%{flavor}" != "stage1" ? "true" : "false" ] \
-Dnls=%[ "%{flavor}" != "stage1" ? "enabled" : "disabled" ] \
-Dgtk_doc=true \
%endif
%if %{with systemtap}
-Dsystemtap=true \
@@ -397,59 +293,50 @@ sed -i "s/1.32.1/1.32/" docs/reference/meson.build
-Dsystemtap=false \
-Ddtrace=false \
%endif
-Dintrospection=%[ "%{flavor}" != "stage1" ? "enabled" : "disabled" ] \
-Dglib_debug=disabled \
-Dsysprof=disabled \
-Dinstalled_tests=true \
%{nil}
%meson_build
%install
%meson_install
%if "%{flavor}" == "doc"
find %{buildroot}/%{_prefix} -not -path "*%{_datadir}/doc/*" -delete || :
find %{buildroot}/%{_prefix} -not -path "*%{_datadir}/gtk-doc/*" -delete || :
%else
%find_lang glib20 %{?no_lang_C}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
install -D -m0644 glib2.sh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.sh
install -D -m0644 glib2.csh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.csh
install -D -m0644 gnome_defaults.conf %{buildroot}%{_sysconfdir}/gnome_defaults.conf
# default apps magic
mkdir -p %{buildroot}%{_localstatedir}/cache/gio-2.0 %{buildroot}%{_datadir}/applications
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/pantheon-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/budgie-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/mate-mimeapps.list
ln -s %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list %{buildroot}%{_datadir}/applications/gnome-mimeapps.list
# gio-querymodules magic
%if "%{_lib}" == "lib64"
mv -T %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-64
sed -i -e "/^gio_querymodules=/s/gio-querymodules/gio-querymodules-64/" %{buildroot}%{_libdir}/pkgconfig/gio-2.0.pc
%endif
mkdir -p %{buildroot}%{_libdir}/gio/modules
>> %{buildroot}%{_libdir}/gio/modules/giomodule.cache
# gsettings magic
>> %{buildroot}%{_datadir}/glib-2.0/schemas/gschemas.compiled
# Install rpm macros
mkdir -p %{buildroot}%{_rpmmacrodir}
cp -t%{buildroot}%{_rpmmacrodir} %{SOURCE6}
# Install zsh completion for gsettings
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions/
cp -T %{SOURCE8} %{buildroot}%{_datadir}/zsh/site-functions/_gsettings
mkdir -p %{buildroot}%{_datadir}/gtk-doc/html
%fdupes %{buildroot}/%{_prefix}
%if "%{flavor}" == ""
%find_lang glib20 %{?no_lang_C}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
install -D -m0644 glib2.sh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.sh
install -D -m0644 glib2.csh %{buildroot}%{_sysconfdir}/profile.d/zzz-glib2.csh
install -D -m0644 gnome_defaults.conf %{buildroot}%{_sysconfdir}/gnome_defaults.conf
# default apps magic
mkdir -p %{buildroot}%{_localstatedir}/cache/gio-2.0 %{buildroot}%{_datadir}/applications
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/pantheon-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/budgie-mimeapps.list
>> %{buildroot}%{_localstatedir}/cache/gio-2.0/mate-mimeapps.list
ln -s %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list %{buildroot}%{_datadir}/applications/gnome-mimeapps.list
# gio-querymodules magic
%if "%{_lib}" == "lib64"
mv -T %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-64
sed -i -e "/^gio_querymodules=/s/gio-querymodules/gio-querymodules-64/" %{buildroot}%{_libdir}/pkgconfig/gio-2.0.pc
%endif
mkdir -p %{buildroot}%{_libdir}/gio/modules
>> %{buildroot}%{_libdir}/gio/modules/giomodule.cache
# gsettings magic
>> %{buildroot}%{_datadir}/glib-2.0/schemas/gschemas.compiled
# Install rpm macros
mkdir -p %{buildroot}%{_rpmmacrodir}
cp -t%{buildroot}%{_rpmmacrodir} %{SOURCE6}
# Install zsh completion for gsettings
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions/
cp -T %{SOURCE8} %{buildroot}%{_datadir}/zsh/site-functions/_gsettings
%fdupes %{buildroot}/%{_prefix}
%python3_fix_shebang
%if %{suse_version} >= 1600
%python3_fix_shebang_path %{buildroot}%{_libexecdir}/installed-tests/glib/*
%endif
# Too many users complain about schemas compiled with wrong permissions
# when in fact the system just honours their umask setting
# subshell restores umask for paranoia mode
# Too many users complain about schemas compiled with wrong permissions
# when in fact the system just honours their umask setting
# subshell restores umask for paranoia mode
%define compile_schemas \
(umask 022 && %{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas)
@@ -459,6 +346,10 @@ sed -i "s/1.32.1/1.32/" docs/reference/meson.build
%filetriggerpostun -n glib2-tools -- %{_datadir}/glib-2.0/schemas
%{compile_schemas} &> /dev/null || :
%post -n %{libglib} -p /sbin/ldconfig
%post -n %{libgobject} -p /sbin/ldconfig
%post -n %{libgthread} -p /sbin/ldconfig
%post -n %{libgio}
%{ldconfig}
for ENV in gnome xfce lxde pantheon mate
@@ -468,31 +359,168 @@ do mimeapps="%{_localstatedir}/cache/gio-2.0/$ENV-mimeapps.list" &&
[Default Applications]
EOF
done
%postun -n %{libgio} -p %{ldconfig}
%ldconfig_scriptlets -n %{libglib}
%ldconfig_scriptlets -n %{libgobject}
%ldconfig_scriptlets -n %{libgthread}
%ldconfig_scriptlets -n %{libgmodule}
%ldconfig_scriptlets -n %{libgirepository}
%endif
%check
### FIXME ### Figure out how to run the "stable tests" only ref info from upstream.
#%%meson_test
%post -n libgmodule-2_0-0 -p /sbin/ldconfig
%postun -n %{libglib} -p %{ldconfig}
%postun -n %{libgobject} -p %{ldconfig}
%postun -n %{libgthread} -p %{ldconfig}
%postun -n %{libgio} -p %{ldconfig}
%postun -n %{libgmodule} -p %{ldconfig}
%if "%{flavor}" == "doc"
%files
%{_datadir}/doc/g*-2.0/
%endif
%{_datadir}/gtk-doc/html/gio
%{_datadir}/gtk-doc/html/glib
%{_datadir}/gtk-doc/html/gobject
%else
%if "%{flavor}" == ""
%include %{SOURCE200}
%endif
%files tools
%license LICENSES/LGPL-2.1-or-later.txt
%doc README.md
%{_bindir}/gapplication
%{_bindir}/gdbus
%{_bindir}/gio
%{_bindir}/gio-querymodules*
%{_bindir}/glib-compile-schemas
%{_bindir}/gresource
%{_bindir}/gsettings
%{_libexecdir}/gio-launch-desktop
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/gapplication
%{_datadir}/bash-completion/completions/gdbus
%{_datadir}/bash-completion/completions/gio
%{_datadir}/bash-completion/completions/gresource
%{_datadir}/bash-completion/completions/gsettings
%dir %{_datadir}/zsh
%dir %{_datadir}/zsh/site-functions
%{_datadir}/zsh/site-functions/_gsettings
%{_mandir}/man1/gapplication.1%{?ext_man}
%{_mandir}/man1/gdbus.1%{?ext_man}
%{_mandir}/man1/gio.1%{?ext_man}
%{_mandir}/man1/gio-querymodules.1%{?ext_man}
%{_mandir}/man1/glib-compile-schemas.1%{?ext_man}
%{_mandir}/man1/gresource.1%{?ext_man}
%{_mandir}/man1/gsettings.1%{?ext_man}
# We put those files here, but they don't really belong here. They just don't
# have a better home... The zzz-glib2 scripts could arguably be in
# libglib-2_0-0 but that would break the shared library policy.
%{_sysconfdir}/profile.d/zzz-glib2.*
%if "%{flavor}" == "stage1"
%include %{SOURCE201}
%files -n gio-branding-upstream
%license LICENSES/LGPL-2.1-or-later.txt
%doc README.Gsettings-overrides
%config (noreplace) %{_sysconfdir}/gnome_defaults.conf
%files -n %{libglib}
%license LICENSES/LGPL-2.1-or-later.txt
%doc NEWS
%{_libdir}/libglib*.so.*
%files -n %{libgmodule}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgmodule*.so.*
%files -n %{libgobject}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgobject*.so.*
%files -n %{libgthread}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgthread*.so.*
%files -n %{libgio}
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/libgio*.so.*
%dir %{_libdir}/gio
%dir %{_libdir}/gio/modules
%ghost %{_libdir}/gio/modules/giomodule.cache
%dir %{_datadir}/glib-2.0/
%dir %{_datadir}/glib-2.0/schemas/
%ghost %{_datadir}/glib-2.0/schemas/gschemas.compiled
%{_datadir}/applications/gnome-mimeapps.list
%dir %{_localstatedir}/cache/gio-2.0
%ghost %{_localstatedir}/cache/gio-2.0/gnome-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/xfce-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/lxde-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/pantheon-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/budgie-mimeapps.list
%ghost %{_localstatedir}/cache/gio-2.0/mate-mimeapps.list
%files devel
%license LICENSES/LGPL-2.1-or-later.txt
%{_bindir}/gdbus-codegen
%{_bindir}/glib-compile-resources
%{_bindir}/glib-genmarshal
%{_bindir}/glib-gettextize
%{_bindir}/glib-mkenums
%{_bindir}/gobject-query
%{_bindir}/gtester
%{_bindir}/gtester-report
%{_mandir}/man?/gdbus-codegen*%{ext_man}
%{_mandir}/man?/glib-compile-resources*%{ext_man}
%{_mandir}/man?/glib-genmarshal*%{ext_man}
%{_mandir}/man?/glib-gettextize*%{ext_man}
%{_mandir}/man?/glib-mkenums*%{ext_man}
%{_mandir}/man?/gobject-query*%{ext_man}
%{_mandir}/man?/gtester*%{ext_man}
%dir %{_datadir}/aclocal
%{_datadir}/aclocal/glib-2.0.m4
%{_datadir}/aclocal/glib-gettext.m4
%{_datadir}/aclocal/gsettings.m4
%dir %{_datadir}/gettext/its/
%{_datadir}/gettext/its/gschema*
%dir %{_datadir}/glib-2.0/
%{_datadir}/glib-2.0/dtds/
%{_datadir}/glib-2.0/gdb/
%{_datadir}/glib-2.0/gettext/
%{_datadir}/glib-2.0/codegen/
%{_datadir}/glib-2.0/schemas/gschema.dtd
%{_datadir}/glib-2.0/valgrind/
%{_includedir}/glib-2.0
%{_includedir}/gio-unix-2.0
%{_libdir}/lib*.so
%dir %{_libdir}/glib-2.0/
%{_libdir}/glib-2.0/include/
%{_libdir}/pkgconfig/*.pc
%{_datadir}/gdb/auto-load/%{_libdir}/*-gdb.py
%if %{with systemtap}
%dir %{_datadir}/systemtap
%dir %{_datadir}/systemtap/tapset
%dir %{_datadir}/systemtap/tapset/*
%{_datadir}/systemtap/tapset/*/libgio-*.so.*.stp
%{_datadir}/systemtap/tapset/*/libglib-*.so.*.stp
%{_datadir}/systemtap/tapset/*/libgobject-*.so.*.stp
%endif
%{_rpmmacrodir}/macros.glib2
# Own these directories to avoid build requirement on gdb
# only for directories ownership
%dir %{_datadir}/gdb
%dir %{_datadir}/gdb/auto-load
%dir %{_datadir}/gdb/auto-load%{_prefix}
%dir %{_datadir}/gdb/auto-load%{_libdir}
# Own these directories to not avoid breakages throughout the project
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%files devel-static
%license LICENSES/LGPL-2.1-or-later.txt
%{_libdir}/lib*.a
%files lang -f glib20.lang
%license LICENSES/LGPL-2.1-or-later.txt
%files tests-devel
%license LICENSES/LGPL-2.1-or-later.txt
%{_libexecdir}/installed-tests
%attr(0755 - -) %{_libexecdir}/installed-tests/glib/taptestrunner.py
%attr(0755 - -) %{_libexecdir}/installed-tests/glib/x-content/unix-software/autorun.sh
%{_datadir}/installed-tests
%endif
%changelog