Compare commits
93 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
f9fbe5a4c8 | ||
|
a6c366328b | ||
|
f52f413589 | ||
|
78bc3e5c67 | ||
|
8f38a70fd6 | ||
|
74300be378 | ||
|
9b1f9aa2f2 | ||
|
b5748c4edb | ||
|
6c5949a8ca | ||
|
62d0b8f09a | ||
|
ce0559a035 | ||
|
22bd71a65a | ||
|
6248b5a00a | ||
|
e1ea8b2fcf | ||
|
c3df0e5227 | ||
|
683c99b0e4 | ||
|
1d384aa8fb | ||
|
b03aa2af4a | ||
|
7a981e97c7 | ||
|
ea83fb0237 | ||
|
06a3cf31cd | ||
|
ee2a246925 | ||
|
6e6595e611 | ||
|
fbd5247c7a | ||
|
46f4926d2c | ||
|
d43d0ce458 | ||
|
ec78e22b1b | ||
|
ba78ee1988 | ||
|
cf59eebaca | ||
|
1ac207bef9 | ||
|
898c00b2ad | ||
|
a23372a417 | ||
|
fdfddfe804 | ||
|
807f65d4bd | ||
|
ab00509fe1 | ||
|
af14559f8f | ||
|
e992d2d872 | ||
|
540aeada95 | ||
|
cfb57c36bc | ||
|
348b2bb6ec | ||
|
0085371da8 | ||
|
927ce866ba | ||
|
3f77266cf6 | ||
|
80b2df57b6 | ||
|
9558681601 | ||
|
dd3956be01 | ||
|
f45e5da632 | ||
|
aafbdc7a3c | ||
|
e81b0cb6f7 | ||
|
d40813ab05 | ||
|
0f797a67d7 | ||
|
8b0b09cbeb | ||
|
46304cbb85 | ||
|
12007a228d | ||
|
de2e4aad98 | ||
|
789d0acce0 | ||
|
66f00fe02c | ||
|
8594386f06 | ||
|
0660fa0c94 | ||
|
b0612ed4ec | ||
|
f877f72c6a | ||
|
1cc525296d | ||
|
9f7e13d0db | ||
|
cbe7cdc693 | ||
|
118876b458 | ||
|
aedd1304a1 | ||
|
6070ee78fb | ||
|
4acd8adcda | ||
|
03b8b8e2e3 | ||
|
5d7683bd2f | ||
|
e17445b580 | ||
|
8772f8141f | ||
|
9a01b6006b | ||
|
96178709bd | ||
|
61bd4d25e7 | ||
|
38b0fc282d | ||
|
fdc1cc9df5 | ||
|
9c3ca0aa8b | ||
|
6c43ffbb6e | ||
|
dea8a050cc | ||
|
4c1e2ebdaa | ||
|
98d0423b58 | ||
|
cda7784363 | ||
|
9b6973c83d | ||
|
2bf83454cd | ||
|
2cdd991d06 | ||
|
fd6c7196f2 | ||
|
ad56827ff1 | ||
|
14f6fc54a9 | ||
|
087ef3ba0f | ||
|
903f77fb2d | ||
|
acd3cbe4d5 | ||
|
0ce8af8d61 |
@ -1,106 +0,0 @@
|
|||||||
From 94b38beff1347ec4a733199f7a7abdacaa958678 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Philip Withnall <withnall@endlessm.com>
|
|
||||||
Date: Wed, 17 Jan 2018 11:38:50 +0000
|
|
||||||
Subject: [PATCH] gmain: Partial revert of recent wakeup changes to gmain.c
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
This reverts the following commits (but keeps the other recent changes
|
|
||||||
to gmain.c):
|
|
||||||
• e4ee3079c Do not wake up main loop if change is from same thread
|
|
||||||
• 208702404 main: Create a helper function for "owner wakeup" optimization
|
|
||||||
• 0c0469b56 gmain: Signal wakeups if context has never been acquired as well
|
|
||||||
• 9ba95e25b gmain: only signal GWakeup right before or during a blocking poll
|
|
||||||
|
|
||||||
Some combination of them is causing problems with LibreOffice and/or
|
|
||||||
WebKit, and the safest thing to do at the moment is revert them all
|
|
||||||
until we work out what’s going on. The previous revert (4976e8109) was
|
|
||||||
not sufficient (it fixed WebKit, but re-broken LibreOffice).
|
|
||||||
|
|
||||||
By reverting, we gain some spurious wakeups, but avoid dropping
|
|
||||||
necessary wakeups, which is presumably what’s causing problems in the
|
|
||||||
other modules.
|
|
||||||
|
|
||||||
Signed-off-by: Philip Withnall <withnall@endlessm.com>
|
|
||||||
|
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=761102
|
|
||||||
---
|
|
||||||
glib/gmain.c | 33 +++++----------------------------
|
|
||||||
1 file changed, 5 insertions(+), 28 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/glib/gmain.c b/glib/gmain.c
|
|
||||||
index 8ca54de3a45b..67102cdf75d0 100644
|
|
||||||
--- a/glib/gmain.c
|
|
||||||
+++ b/glib/gmain.c
|
|
||||||
@@ -1118,29 +1118,6 @@ source_remove_from_context (GSource *source,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* See https://bugzilla.gnome.org/show_bug.cgi?id=761102 for
|
|
||||||
- * the introduction of this.
|
|
||||||
- *
|
|
||||||
- * The main optimization is to avoid waking up the main
|
|
||||||
- * context if a change is made by the current owner.
|
|
||||||
- */
|
|
||||||
-static void
|
|
||||||
-conditional_wakeup (GMainContext *context)
|
|
||||||
-{
|
|
||||||
- /* We want to signal wakeups in two cases:
|
|
||||||
- * 1 When the context is owned by another thread
|
|
||||||
- * 2 When the context owner is NULL (two subcases)
|
|
||||||
- * 2a Possible if the context has never been acquired
|
|
||||||
- * 2b Or if the context has no current owner
|
|
||||||
- *
|
|
||||||
- * At least case 2a) is necessary to ensure backwards compatibility with
|
|
||||||
- * qemu's use of GMainContext.
|
|
||||||
- * https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14
|
|
||||||
- */
|
|
||||||
- if (context->owner != G_THREAD_SELF)
|
|
||||||
- g_wakeup_signal (context->wakeup);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static guint
|
|
||||||
g_source_attach_unlocked (GSource *source,
|
|
||||||
GMainContext *context,
|
|
||||||
@@ -1187,8 +1164,8 @@ g_source_attach_unlocked (GSource *source,
|
|
||||||
/* If another thread has acquired the context, wake it up since it
|
|
||||||
* might be in poll() right now.
|
|
||||||
*/
|
|
||||||
- if (do_wakeup)
|
|
||||||
- conditional_wakeup (context);
|
|
||||||
+ if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
|
|
||||||
+ g_wakeup_signal (context->wakeup);
|
|
||||||
|
|
||||||
return source->source_id;
|
|
||||||
}
|
|
||||||
@@ -1878,7 +1855,7 @@ g_source_set_ready_time (GSource *source,
|
|
||||||
{
|
|
||||||
/* Quite likely that we need to change the timeout on the poll */
|
|
||||||
if (!SOURCE_BLOCKED (source))
|
|
||||||
- conditional_wakeup (context);
|
|
||||||
+ g_wakeup_signal (context->wakeup);
|
|
||||||
UNLOCK_CONTEXT (context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4318,7 +4295,7 @@ g_main_context_add_poll_unlocked (GMainContext *context,
|
|
||||||
context->poll_changed = TRUE;
|
|
||||||
|
|
||||||
/* Now wake up the main loop if it is waiting in the poll() */
|
|
||||||
- conditional_wakeup (context);
|
|
||||||
+ g_wakeup_signal (context->wakeup);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -4378,7 +4355,7 @@ g_main_context_remove_poll_unlocked (GMainContext *context,
|
|
||||||
context->poll_changed = TRUE;
|
|
||||||
|
|
||||||
/* Now wake up the main loop if it is waiting in the poll() */
|
|
||||||
- conditional_wakeup (context);
|
|
||||||
+ g_wakeup_signal (context->wakeup);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
3417
1719.patch
Normal file
3417
1719.patch
Normal file
File diff suppressed because it is too large
Load Diff
32
1728.patch
Normal file
32
1728.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From c2b8fa8a34765d42be69e7eb9a4c44eeb970f775 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Catanzaro <mcatanzaro@gnome.org>
|
||||||
|
Date: Wed, 28 Oct 2020 10:41:13 -0500
|
||||||
|
Subject: [PATCH] gsocketclient: fix crash when async connection step fails
|
||||||
|
|
||||||
|
This is a regression from !1686. The tmp_error is no longer valid after
|
||||||
|
it is "considered" and cannot be used at this point. We should print the
|
||||||
|
error earlier instead.
|
||||||
|
|
||||||
|
Fixes #2233
|
||||||
|
---
|
||||||
|
gio/gsocketclient.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c
|
||||||
|
index ce3c186fb..373774682 100644
|
||||||
|
--- a/gio/gsocketclient.c
|
||||||
|
+++ b/gio/gsocketclient.c
|
||||||
|
@@ -1837,9 +1837,9 @@ g_socket_client_connected_callback (GObject *source,
|
||||||
|
{
|
||||||
|
if (!g_cancellable_is_cancelled (attempt->cancellable))
|
||||||
|
{
|
||||||
|
+ g_debug ("GSocketClient: Connection attempt failed: %s", data->error_info->tmp_error->message);
|
||||||
|
clarify_connect_error (data->error_info->tmp_error, data->connectable, attempt->address);
|
||||||
|
consider_tmp_error (data->error_info, G_SOCKET_CLIENT_CONNECTING);
|
||||||
|
- g_debug ("GSocketClient: Connection attempt failed: %s", data->error_info->tmp_error->message);
|
||||||
|
connection_attempt_remove (attempt);
|
||||||
|
connection_attempt_unref (attempt);
|
||||||
|
try_next_connection_or_finish (data, FALSE);
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
@ -1,136 +0,0 @@
|
|||||||
From ea795f6a5d898f4f8be2d5bdf896b711155671da Mon Sep 17 00:00:00 2001
|
|
||||||
From: Arnaud Rebillout <elboulangero@gmail.com>
|
|
||||||
Date: Sun, 10 Jun 2018 20:56:12 +0700
|
|
||||||
Subject: [PATCH] gfdonotificationbackend: Fix possible invalid pointer in dbus
|
|
||||||
callback
|
|
||||||
|
|
||||||
The way things were before: a FreedesktopNotification struct is
|
|
||||||
allocated before the dbus call, and this same struct is possibly re-used
|
|
||||||
for other dbus calls. If the server becomes unavailable, the callback
|
|
||||||
will be invoked after the call times out, which leaves a long time where
|
|
||||||
other dbus calls can happen, re-using the same FreedesktopNotification
|
|
||||||
as user data. When the first call times out, the callback is invoked,
|
|
||||||
and the user data is freed. Subsequent calls that used the same user
|
|
||||||
data will time out later on, and try to free a pointer that was already
|
|
||||||
freed, hence segfaults.
|
|
||||||
|
|
||||||
This bug can be reproduced in Cinnamon 3.6.7, as mentioned in:
|
|
||||||
<https://github.com/linuxmint/Cinnamon/issues/7491>
|
|
||||||
|
|
||||||
This commit fixes that by always allocating a new
|
|
||||||
FreedesktopNotification before invoking dbus_call(), ensuring that the
|
|
||||||
callback always have a valid user data.
|
|
||||||
|
|
||||||
Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
|
|
||||||
---
|
|
||||||
gio/gfdonotificationbackend.c | 55 ++++++++++++++++++++++++++-----------------
|
|
||||||
1 file changed, 34 insertions(+), 21 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/gio/gfdonotificationbackend.c b/gio/gfdonotificationbackend.c
|
|
||||||
index a0d4814335be..ab5329497d1e 100644
|
|
||||||
--- a/gio/gfdonotificationbackend.c
|
|
||||||
+++ b/gio/gfdonotificationbackend.c
|
|
||||||
@@ -62,7 +62,6 @@ typedef struct
|
|
||||||
GVariant *default_action_target;
|
|
||||||
} FreedesktopNotification;
|
|
||||||
|
|
||||||
-
|
|
||||||
static void
|
|
||||||
freedesktop_notification_free (gpointer data)
|
|
||||||
{
|
|
||||||
@@ -76,6 +75,24 @@ freedesktop_notification_free (gpointer data)
|
|
||||||
g_slice_free (FreedesktopNotification, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static FreedesktopNotification *
|
|
||||||
+freedesktop_notification_new (GFdoNotificationBackend *backend,
|
|
||||||
+ const gchar *id,
|
|
||||||
+ GNotification *notification)
|
|
||||||
+{
|
|
||||||
+ FreedesktopNotification *n;
|
|
||||||
+
|
|
||||||
+ n = g_slice_new0 (FreedesktopNotification);
|
|
||||||
+ n->backend = backend;
|
|
||||||
+ n->id = g_strdup (id);
|
|
||||||
+ n->notify_id = 0;
|
|
||||||
+ g_notification_get_default_action (notification,
|
|
||||||
+ &n->default_action,
|
|
||||||
+ &n->default_action_target);
|
|
||||||
+
|
|
||||||
+ return n;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static FreedesktopNotification *
|
|
||||||
g_fdo_notification_backend_find_notification (GFdoNotificationBackend *backend,
|
|
||||||
const gchar *id)
|
|
||||||
@@ -319,8 +336,19 @@ notification_sent (GObject *source_object,
|
|
||||||
val = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), result, &error);
|
|
||||||
if (val)
|
|
||||||
{
|
|
||||||
+ GFdoNotificationBackend *backend = n->backend;
|
|
||||||
+ FreedesktopNotification *match;
|
|
||||||
+
|
|
||||||
g_variant_get (val, "(u)", &n->notify_id);
|
|
||||||
g_variant_unref (val);
|
|
||||||
+
|
|
||||||
+ match = g_fdo_notification_backend_find_notification_by_notify_id (backend, n->notify_id);
|
|
||||||
+ if (match != NULL)
|
|
||||||
+ {
|
|
||||||
+ backend->notifications = g_slist_remove (backend->notifications, match);
|
|
||||||
+ freedesktop_notification_free (match);
|
|
||||||
+ }
|
|
||||||
+ backend->notifications = g_slist_prepend (backend->notifications, n);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
@@ -331,9 +359,7 @@ notification_sent (GObject *source_object,
|
|
||||||
warning_printed = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
- n->backend->notifications = g_slist_remove (n->backend->notifications, n);
|
|
||||||
freedesktop_notification_free (n);
|
|
||||||
-
|
|
||||||
g_error_free (error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -378,7 +404,7 @@ g_fdo_notification_backend_send_notification (GNotificationBackend *backend,
|
|
||||||
GNotification *notification)
|
|
||||||
{
|
|
||||||
GFdoNotificationBackend *self = G_FDO_NOTIFICATION_BACKEND (backend);
|
|
||||||
- FreedesktopNotification *n;
|
|
||||||
+ FreedesktopNotification *n, *tmp;
|
|
||||||
|
|
||||||
if (self->notify_subscription == 0)
|
|
||||||
{
|
|
||||||
@@ -391,24 +417,11 @@ g_fdo_notification_backend_send_notification (GNotificationBackend *backend,
|
|
||||||
notify_signal, backend, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
- n = g_fdo_notification_backend_find_notification (self, id);
|
|
||||||
- if (n == NULL)
|
|
||||||
- {
|
|
||||||
- n = g_slice_new0 (FreedesktopNotification);
|
|
||||||
- n->backend = self;
|
|
||||||
- n->id = g_strdup (id);
|
|
||||||
- n->notify_id = 0;
|
|
||||||
-
|
|
||||||
- n->backend->notifications = g_slist_prepend (n->backend->notifications, n);
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- /* Only clear default action. All other fields are still valid */
|
|
||||||
- g_clear_pointer (&n->default_action, g_free);
|
|
||||||
- g_clear_pointer (&n->default_action_target, g_variant_unref);
|
|
||||||
- }
|
|
||||||
+ n = freedesktop_notification_new (self, id, notification);
|
|
||||||
|
|
||||||
- g_notification_get_default_action (notification, &n->default_action, &n->default_action_target);
|
|
||||||
+ tmp = g_fdo_notification_backend_find_notification (self, id);
|
|
||||||
+ if (tmp)
|
|
||||||
+ n->notify_id = tmp->notify_id;
|
|
||||||
|
|
||||||
call_notify (backend->dbus_connection, backend->application, n->notify_id, notification, notification_sent, n);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.14.4
|
|
||||||
|
|
355
glib2.spec
355
glib2.spec
@ -1,33 +1,37 @@
|
|||||||
%global _changelog_trimtime %(date +%s -d "1 year ago")
|
|
||||||
|
|
||||||
# See https://fedoraproject.org/wiki/Packaging:Python_Appendix#Manual_byte_compilation
|
|
||||||
%global __python %{__python3}
|
|
||||||
|
|
||||||
Name: glib2
|
Name: glib2
|
||||||
Version: 2.54.3
|
Version: 2.67.0
|
||||||
Release: 3%{?dist}
|
Release: 5%{?dist}
|
||||||
Summary: A library of handy utility functions
|
Summary: A library of handy utility functions
|
||||||
|
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: http://www.gtk.org
|
URL: http://www.gtk.org
|
||||||
Source0: http://download.gnome.org/sources/glib/2.54/glib-%{version}.tar.xz
|
Source0: http://download.gnome.org/sources/glib/2.67/glib-%{version}.tar.xz
|
||||||
|
|
||||||
# Backported from upstream
|
# Required for RHEL core crypto components policy.
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=761102
|
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/903
|
||||||
Patch0: 0001-gmain-Partial-revert-of-recent-wakeup-changes-to-gma.patch
|
Patch0: gnutls-hmac.patch
|
||||||
|
|
||||||
# https://gitlab.gnome.org/GNOME/glib/merge_requests/90
|
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1728
|
||||||
# https://gitlab.gnome.org/GNOME/glib/merge_requests/102
|
Patch1: 1728.patch
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1584916
|
|
||||||
Patch1: glib2-gfdonotificationbackend-fix-possible-invalid-pointer.patch
|
# gcc 11 support: Fix invalid use of volatile objects
|
||||||
|
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
|
||||||
|
Patch2: 1719.patch
|
||||||
|
|
||||||
|
# For gnutls-hmac.patch
|
||||||
|
BuildRequires: pkgconfig(gnutls)
|
||||||
|
|
||||||
BuildRequires: chrpath
|
BuildRequires: chrpath
|
||||||
|
BuildRequires: gcc
|
||||||
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: gettext
|
BuildRequires: gettext
|
||||||
|
BuildRequires: gtk-doc
|
||||||
BuildRequires: perl-interpreter
|
BuildRequires: perl-interpreter
|
||||||
# for sys/inotify.h
|
# for sys/inotify.h
|
||||||
BuildRequires: glibc-devel
|
BuildRequires: glibc-devel
|
||||||
BuildRequires: libattr-devel
|
BuildRequires: libattr-devel
|
||||||
BuildRequires: libselinux-devel
|
BuildRequires: libselinux-devel
|
||||||
|
BuildRequires: meson
|
||||||
# for sys/sdt.h
|
# for sys/sdt.h
|
||||||
BuildRequires: systemtap-sdt-devel
|
BuildRequires: systemtap-sdt-devel
|
||||||
BuildRequires: pkgconfig(libelf)
|
BuildRequires: pkgconfig(libelf)
|
||||||
@ -35,14 +39,14 @@ BuildRequires: pkgconfig(libffi)
|
|||||||
BuildRequires: pkgconfig(libpcre)
|
BuildRequires: pkgconfig(libpcre)
|
||||||
BuildRequires: pkgconfig(mount)
|
BuildRequires: pkgconfig(mount)
|
||||||
BuildRequires: pkgconfig(zlib)
|
BuildRequires: pkgconfig(zlib)
|
||||||
# Bootstrap build requirements
|
|
||||||
BuildRequires: automake autoconf libtool
|
|
||||||
BuildRequires: gtk-doc
|
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
|
|
||||||
# for GIO content-type support
|
# for GIO content-type support
|
||||||
Recommends: shared-mime-info
|
Recommends: shared-mime-info
|
||||||
|
|
||||||
|
# glib 2.59.0 hash table changes broke older gcr versions / password prompts in gnome-shell
|
||||||
|
Conflicts: gcr < 3.28.1
|
||||||
|
|
||||||
%description
|
%description
|
||||||
GLib is the low-level core library that forms the basis for projects
|
GLib is the low-level core library that forms the basis for projects
|
||||||
such as GTK+ and GNOME. It provides data structure handling for C,
|
such as GTK+ and GNOME. It provides data structure handling for C,
|
||||||
@ -73,12 +77,14 @@ BuildRequires: gamin-devel
|
|||||||
%description fam
|
%description fam
|
||||||
The glib2-fam package contains the FAM (File Alteration Monitor) module for GIO.
|
The glib2-fam package contains the FAM (File Alteration Monitor) module for GIO.
|
||||||
|
|
||||||
|
%if 0%{?fedora}
|
||||||
%package static
|
%package static
|
||||||
Summary: glib static
|
Summary: glib static
|
||||||
Requires: %{name}-devel = %{version}-%{release}
|
Requires: %{name}-devel = %{version}-%{release}
|
||||||
|
|
||||||
%description static
|
%description static
|
||||||
The %{name}-static subpackage contains static libraries for %{name}.
|
The %{name}-static subpackage contains static libraries for %{name}.
|
||||||
|
%endif
|
||||||
|
|
||||||
%package tests
|
%package tests
|
||||||
Summary: Tests for the glib2 package
|
Summary: Tests for the glib2 package
|
||||||
@ -94,55 +100,50 @@ the functionality of the installed glib2 package.
|
|||||||
%build
|
%build
|
||||||
# Bug 1324770: Also explicitly remove PCRE sources since we use --with-pcre=system
|
# Bug 1324770: Also explicitly remove PCRE sources since we use --with-pcre=system
|
||||||
rm glib/pcre/*.[ch]
|
rm glib/pcre/*.[ch]
|
||||||
# Support builds of both git snapshots and tarballs packed with autogoo
|
|
||||||
(if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi;
|
|
||||||
%configure $CONFIGFLAGS \
|
|
||||||
--with-python=%{__python3} \
|
|
||||||
--with-pcre=system \
|
|
||||||
--enable-systemtap \
|
|
||||||
--enable-static \
|
|
||||||
--enable-installed-tests
|
|
||||||
)
|
|
||||||
|
|
||||||
%make_build
|
# We cannot build with GnuTLS in Fedora since there is no gnutls-static
|
||||||
|
# subpackage. (glib2-static is needed by qemu in Fedora, but not in RHEL.)
|
||||||
|
# Accordingly, we can't build a usable glib2-static in RHEL.
|
||||||
|
%meson \
|
||||||
|
-Dman=true \
|
||||||
|
-Ddtrace=true \
|
||||||
|
-Dsystemtap=true \
|
||||||
|
-Dgtk_doc=true \
|
||||||
|
-Dfam=true \
|
||||||
|
-Dinstalled_tests=true \
|
||||||
|
%if 0%{?rhel}
|
||||||
|
-Dgnutls=true \
|
||||||
|
%endif
|
||||||
|
%if 0%{?fedora}
|
||||||
|
--default-library=both \
|
||||||
|
%endif
|
||||||
|
%{nil}
|
||||||
|
|
||||||
|
%meson_build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
# Use -p to preserve timestamps on .py files to ensure
|
%meson_install
|
||||||
# they're not recompiled with different timestamps
|
# Since this is a generated .py file, set it to a known timestamp for
|
||||||
# to help multilib: https://bugzilla.redhat.com/show_bug.cgi?id=718404
|
# better reproducibility.
|
||||||
%make_install INSTALL="install -p"
|
# Also copy the timestamp for other .py files, because meson doesn't
|
||||||
# Also since this is a generated .py file, set it to a known timestamp,
|
# do this, see https://github.com/mesonbuild/meson/issues/5027.
|
||||||
# otherwise it will vary by build time, and thus break multilib -devel
|
touch -r gio/gdbus-2.0/codegen/config.py.in %{buildroot}%{_datadir}/glib-2.0/codegen/*.py
|
||||||
# installs.
|
chrpath --delete %{buildroot}%{_libdir}/*.so
|
||||||
touch -r gio/gdbus-2.0/codegen/config.py.in $RPM_BUILD_ROOT/%{_datadir}/glib-2.0/codegen/config.py
|
|
||||||
chrpath --delete $RPM_BUILD_ROOT%{_libdir}/*.so
|
|
||||||
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
|
# Perform byte compilation manually to avoid issues with
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/gio/modules/*.{a,la}
|
# irreproducibility of the default invalidation mode, see
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/glib-2.0/gdb/*.{pyc,pyo}
|
# https://www.python.org/dev/peps/pep-0552/ and
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/glib-2.0/codegen/*.{pyc,pyo}
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1686078
|
||||||
|
export PYTHONHASHSEED=0
|
||||||
|
%py_byte_compile %{__python3} %{buildroot}%{_datadir}
|
||||||
|
|
||||||
# Multilib fixes for systemtap tapsets; see
|
mv %{buildroot}%{_bindir}/gio-querymodules %{buildroot}%{_bindir}/gio-querymodules-%{__isa_bits}
|
||||||
# https://bugzilla.redhat.com/718404
|
sed -i -e "/^gio_querymodules=/s/gio-querymodules/gio-querymodules-%{__isa_bits}/" %{buildroot}%{_libdir}/pkgconfig/gio-2.0.pc
|
||||||
for f in $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/*.stp; do
|
|
||||||
(dn=$(dirname ${f}); bn=$(basename ${f});
|
|
||||||
mv ${f} ${dn}/%{__isa_bits}-${bn})
|
|
||||||
done
|
|
||||||
|
|
||||||
mv $RPM_BUILD_ROOT%{_bindir}/gio-querymodules $RPM_BUILD_ROOT%{_bindir}/gio-querymodules-%{__isa_bits}
|
touch %{buildroot}%{_libdir}/gio/modules/giomodule.cache
|
||||||
|
|
||||||
touch $RPM_BUILD_ROOT%{_libdir}/gio/modules/giomodule.cache
|
|
||||||
|
|
||||||
# bash-completion scripts need not be executable
|
|
||||||
chmod 644 $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions/*
|
|
||||||
|
|
||||||
%find_lang glib20
|
%find_lang glib20
|
||||||
|
|
||||||
|
|
||||||
%post -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%postun -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%transfiletriggerin -- %{_libdir}/gio/modules
|
%transfiletriggerin -- %{_libdir}/gio/modules
|
||||||
gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules &> /dev/null || :
|
gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules &> /dev/null || :
|
||||||
|
|
||||||
@ -151,11 +152,9 @@ gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules &> /dev/null || :
|
|||||||
|
|
||||||
%transfiletriggerin -- %{_datadir}/glib-2.0/schemas
|
%transfiletriggerin -- %{_datadir}/glib-2.0/schemas
|
||||||
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
||||||
[ -e /app/share/glib-2.0/schemas ] && glib-compile-schemas /app/share/glib-2.0/schemas &> /dev/null || :
|
|
||||||
|
|
||||||
%transfiletriggerpostun -- %{_datadir}/glib-2.0/schemas
|
%transfiletriggerpostun -- %{_datadir}/glib-2.0/schemas
|
||||||
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
||||||
[ -e /app/share/glib-2.0/schemas ] && glib-compile-schemas /app/share/glib-2.0/schemas &> /dev/null || :
|
|
||||||
|
|
||||||
%files -f glib20.lang
|
%files -f glib20.lang
|
||||||
%license COPYING
|
%license COPYING
|
||||||
@ -167,9 +166,10 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
|||||||
%{_libdir}/libgio-2.0.so.*
|
%{_libdir}/libgio-2.0.so.*
|
||||||
%dir %{_datadir}/bash-completion
|
%dir %{_datadir}/bash-completion
|
||||||
%dir %{_datadir}/bash-completion/completions
|
%dir %{_datadir}/bash-completion/completions
|
||||||
%{_datadir}/bash-completion/completions/gdbus
|
|
||||||
%{_datadir}/bash-completion/completions/gsettings
|
|
||||||
%{_datadir}/bash-completion/completions/gapplication
|
%{_datadir}/bash-completion/completions/gapplication
|
||||||
|
%{_datadir}/bash-completion/completions/gdbus
|
||||||
|
%{_datadir}/bash-completion/completions/gio
|
||||||
|
%{_datadir}/bash-completion/completions/gsettings
|
||||||
%dir %{_datadir}/glib-2.0
|
%dir %{_datadir}/glib-2.0
|
||||||
%dir %{_datadir}/glib-2.0/schemas
|
%dir %{_datadir}/glib-2.0/schemas
|
||||||
%dir %{_libdir}/gio
|
%dir %{_libdir}/gio
|
||||||
@ -228,27 +228,250 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
|||||||
%files fam
|
%files fam
|
||||||
%{_libdir}/gio/modules/libgiofam.so
|
%{_libdir}/gio/modules/libgiofam.so
|
||||||
|
|
||||||
|
%if 0%{?fedora}
|
||||||
%files static
|
%files static
|
||||||
%{_libdir}/libgio-2.0.a
|
%{_libdir}/libgio-2.0.a
|
||||||
%{_libdir}/libglib-2.0.a
|
%{_libdir}/libglib-2.0.a
|
||||||
%{_libdir}/libgmodule-2.0.a
|
%{_libdir}/libgmodule-2.0.a
|
||||||
%{_libdir}/libgobject-2.0.a
|
%{_libdir}/libgobject-2.0.a
|
||||||
%{_libdir}/libgthread-2.0.a
|
%{_libdir}/libgthread-2.0.a
|
||||||
|
%endif
|
||||||
|
|
||||||
%files tests
|
%files tests
|
||||||
%{_libexecdir}/installed-tests
|
%{_libexecdir}/installed-tests
|
||||||
%{_datadir}/installed-tests
|
%{_datadir}/installed-tests
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Jun 25 2018 Debarshi Ray <rishi@fedoraproject.org> - 2.54.2-3
|
* Tue Nov 24 2020 Kalev Lember <klember@redhat.com> - 2.67.0-5
|
||||||
|
- Backport upstream patches to fix invalid use of volatile objects
|
||||||
|
(gcc 11 support)
|
||||||
|
|
||||||
|
* Wed Nov 11 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.67.0-4
|
||||||
|
- Make GnuTLS patch RHEL-specific, and make glib2-static subpackage Fedora-specific
|
||||||
|
|
||||||
|
* Tue Nov 10 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.67.0-3
|
||||||
|
- Use GnuTLS to implement GHmac (thanks to Colin Walters)
|
||||||
|
|
||||||
|
* Wed Nov 04 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.67.0-2
|
||||||
|
- Backport fix for GSocketClient crash
|
||||||
|
|
||||||
|
* Thu Oct 29 2020 Kalev Lember <klember@redhat.com> - 2.67.0-1
|
||||||
|
- Update to 2.67.0
|
||||||
|
|
||||||
|
* Mon Oct 19 2020 Kalev Lember <klember@redhat.com> - 2.66.2-1
|
||||||
|
- Update to 2.66.2
|
||||||
|
- Drop gtk-doc patch as we finally have a new enough gtk-doc
|
||||||
|
|
||||||
|
* Wed Oct 14 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.66.1-3
|
||||||
|
- Fix yet another timezone bug
|
||||||
|
|
||||||
|
* Wed Oct 14 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.66.1-2
|
||||||
|
- Fix timezone-related bugs in many applications caused by new glib timezone cache
|
||||||
|
|
||||||
|
* Thu Oct 1 2020 Kalev Lember <klember@redhat.com> - 2.66.1-1
|
||||||
|
- Update to 2.66.1
|
||||||
|
|
||||||
|
* Thu Sep 10 2020 Kalev Lember <klember@redhat.com> - 2.66.0-1
|
||||||
|
- Update to 2.66.0
|
||||||
|
|
||||||
|
* Wed Sep 02 2020 Kalev Lember <klember@redhat.com> - 2.65.3-1
|
||||||
|
- Update to 2.65.3
|
||||||
|
|
||||||
|
* Tue Aug 25 2020 Adam Williamson <awilliam@redhat.com> - 2.65.2-3
|
||||||
|
- Backport fix for GGO #2189 (error accessing some filesystems)
|
||||||
|
|
||||||
|
* Thu Aug 20 2020 Jeff Law <law@redhat.com> - 2.65.2-2
|
||||||
|
- Re-enable LTO
|
||||||
|
|
||||||
|
* Tue Aug 18 2020 Kalev Lember <klember@redhat.com> - 2.65.2-1
|
||||||
|
- Update to 2.65.2
|
||||||
|
|
||||||
|
* Mon Aug 17 2020 Kalev Lember <klember@redhat.com> - 2.65.1-1
|
||||||
|
- Update to 2.65.1
|
||||||
|
|
||||||
|
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.65.0-5
|
||||||
|
- Second attempt - Rebuilt for
|
||||||
|
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.65.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 30 2020 Jeff Law <aw@redhat.com> - 2.65.0-3
|
||||||
|
Disable LTO
|
||||||
|
|
||||||
|
* Mon Jun 22 2020 Kalev Lember <klember@redhat.com> - 2.65.0-2
|
||||||
|
- Update gio-2.0.pc with correct gio-querymodules name when renaming it
|
||||||
|
(#1849441)
|
||||||
|
|
||||||
|
* Mon Jun 22 2020 Kalev Lember <klember@redhat.com> - 2.65.0-1
|
||||||
|
- Update to 2.65.0
|
||||||
|
|
||||||
|
* Wed May 20 2020 Kalev Lember <klember@redhat.com> - 2.64.3-1
|
||||||
|
- Update to 2.64.3
|
||||||
|
|
||||||
|
* Tue Apr 28 2020 Tomas Popela <tpopela@redhat.com> - 2.64.2-2
|
||||||
|
- Backport fix for a race condition in GCancellable (rhbz#1825230)
|
||||||
|
|
||||||
|
* Fri Apr 10 2020 Kalev Lember <klember@redhat.com> - 2.64.2-1
|
||||||
|
- Update to 2.64.2
|
||||||
|
|
||||||
|
* Wed Mar 11 2020 Kalev Lember <klember@redhat.com> - 2.64.1-1
|
||||||
|
- Update to 2.64.1
|
||||||
|
|
||||||
|
* Mon Mar 02 2020 Kalev Lember <klember@redhat.com> - 2.64.0-1
|
||||||
|
- Update to 2.64.0
|
||||||
|
|
||||||
|
* Mon Feb 24 2020 Kalev Lember <klember@redhat.com> - 2.63.6-1
|
||||||
|
- Update to 2.63.6
|
||||||
|
|
||||||
|
* Wed Feb 12 2020 Kalev Lember <klember@redhat.com> - 2.63.5-3
|
||||||
|
- Backport a patch to work around SELinux policies not allowing
|
||||||
|
SYS_sched_setattr (#1795524)
|
||||||
|
|
||||||
|
* Fri Feb 07 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.63.5-2
|
||||||
|
- Add patch for CVE-2020-6750 and related issues.
|
||||||
|
|
||||||
|
* Mon Feb 03 2020 Kalev Lember <klember@redhat.com> - 2.63.5-1
|
||||||
|
- Update to 2.63.5
|
||||||
|
|
||||||
|
* Wed Jan 29 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.63.4-3
|
||||||
|
- Fix GThreadPool initialization that is breaking createrepo_c (BZ #1795052)
|
||||||
|
|
||||||
|
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.63.4-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 24 2020 Kalev Lember <klember@redhat.com> - 2.63.4-1
|
||||||
|
- Update to 2.63.4
|
||||||
|
|
||||||
|
* Mon Dec 16 2019 Kalev Lember <klember@redhat.com> - 2.63.3-1
|
||||||
|
- Update to 2.63.3
|
||||||
|
|
||||||
|
* Mon Dec 02 2019 Kalev Lember <klember@redhat.com> - 2.63.2-1
|
||||||
|
- Update to 2.63.2
|
||||||
|
|
||||||
|
* Fri Oct 04 2019 Kalev Lember <klember@redhat.com> - 2.63.0-1
|
||||||
|
- Update to 2.63.0
|
||||||
|
|
||||||
|
* Fri Oct 04 2019 Kalev Lember <klember@redhat.com> - 2.62.1-1
|
||||||
|
- Update to 2.62.1
|
||||||
|
|
||||||
|
* Fri Sep 06 2019 Kalev Lember <klember@redhat.com> - 2.62.0-1
|
||||||
|
- Update to 2.62.0
|
||||||
|
|
||||||
|
* Tue Sep 03 2019 Kalev Lember <klember@redhat.com> - 2.61.3-1
|
||||||
|
- Update to 2.61.3
|
||||||
|
|
||||||
|
* Mon Aug 12 2019 Kalev Lember <klember@redhat.com> - 2.61.2-1
|
||||||
|
- Update to 2.61.2
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.61.1-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 11 2019 David King <amigadave@amigadave.com> - 2.61.1-2
|
||||||
|
- Fix CVE-2019-12450 (#1719142)
|
||||||
|
- Consistently use buildroot macro
|
||||||
|
|
||||||
|
* Fri May 24 2019 Kalev Lember <klember@redhat.com> - 2.61.1-1
|
||||||
|
- Update to 2.61.1
|
||||||
|
|
||||||
|
* Tue Apr 16 2019 Adam Williamson <awilliam@redhat.com> - 2.61.0-2
|
||||||
|
- Rebuild with Meson fix for #1699099
|
||||||
|
|
||||||
|
* Mon Apr 15 2019 Kalev Lember <klember@redhat.com> - 2.61.0-1
|
||||||
|
- Update to 2.61.0
|
||||||
|
|
||||||
|
* Mon Apr 15 2019 Kalev Lember <klember@redhat.com> - 2.60.1-1
|
||||||
|
- Update to 2.60.1
|
||||||
|
|
||||||
|
* Wed Mar 13 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.60.0-3
|
||||||
|
- Switch back to timestamp-based pyc invalidation mode
|
||||||
|
|
||||||
|
* Wed Mar 6 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.60.0-2
|
||||||
|
- Make sure all .py files have fixed timestamps (fixes issue with
|
||||||
|
parallel installability of i686 and amd64 -devel packages)
|
||||||
|
- Switch to explicit byte compilation to override invalidation mode
|
||||||
|
|
||||||
|
* Mon Mar 04 2019 Kalev Lember <klember@redhat.com> - 2.60.0-1
|
||||||
|
- Update to 2.60.0
|
||||||
|
|
||||||
|
* Mon Feb 18 2019 Kalev Lember <klember@redhat.com> - 2.59.3-1
|
||||||
|
- Update to 2.59.3
|
||||||
|
|
||||||
|
* Mon Feb 04 2019 Kalev Lember <klember@redhat.com> - 2.59.2-1
|
||||||
|
- Update to 2.59.2
|
||||||
|
|
||||||
|
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.59.1-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jan 26 2019 Kalev Lember <klember@redhat.com> - 2.59.1-1
|
||||||
|
- Update to 2.59.1
|
||||||
|
|
||||||
|
* Thu Jan 03 2019 Kalev Lember <klember@redhat.com> - 2.59.0-1
|
||||||
|
- Update to 2.59.0
|
||||||
|
- Switch to the meson build system
|
||||||
|
|
||||||
|
* Tue Dec 18 2018 Kalev Lember <klember@redhat.com> - 2.58.2-1
|
||||||
|
- Update to 2.58.2
|
||||||
|
|
||||||
|
* Fri Oct 05 2018 Kalev Lember <klember@redhat.com> - 2.58.1-2
|
||||||
|
- Fix multilib -devel installs (#1634778)
|
||||||
|
|
||||||
|
* Fri Sep 21 2018 Kalev Lember <klember@redhat.com> - 2.58.1-1
|
||||||
|
- Update to 2.58.1
|
||||||
|
|
||||||
|
* Wed Sep 05 2018 Kalev Lember <klember@redhat.com> - 2.58.0-1
|
||||||
|
- Update to 2.58.0
|
||||||
|
|
||||||
|
* Thu Aug 2 2018 Ondrej Holy <oholy@redhat.com> - 2.57.2-1
|
||||||
|
- Update to 2.57.2
|
||||||
|
|
||||||
|
* Fri Jul 20 2018 Ondrej Holy <oholy@redhat.com> - 2.57.1-1
|
||||||
|
- Update to 2.57.1
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.56.1-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 2.56.1-5
|
||||||
|
- Rebuilt for Python 3.7
|
||||||
|
|
||||||
|
* Thu Jun 14 2018 Debarshi Ray <rishi@fedoraproject.org> - 2.56.1-4
|
||||||
- Backport patch to fix possible invalid pointer in dbus callback in the FD.o
|
- Backport patch to fix possible invalid pointer in dbus callback in the FD.o
|
||||||
notification backend (RH #1584916)
|
notification backend (RH #1584916)
|
||||||
|
|
||||||
* Thu Jan 18 2018 Kalev Lember <klember@redhat.com> - 2.54.3-2
|
* Sun May 27 2018 Kalev Lember <klember@redhat.com> - 2.56.1-3
|
||||||
|
- Fix multilib -devel installs (#1581067)
|
||||||
|
|
||||||
|
* Sun May 13 2018 Fabio Valentini <decathorpe@gmail.com> - 2.56.1-2
|
||||||
|
- Include upstream patch to fix gdbus-codegen with meson 0.46.
|
||||||
|
|
||||||
|
* Sun Apr 08 2018 Kalev Lember <klember@redhat.com> - 2.56.1-1
|
||||||
|
- Update to 2.56.1
|
||||||
|
|
||||||
|
* Mon Mar 12 2018 Kalev Lember <klember@redhat.com> - 2.56.0-1
|
||||||
|
- Update to 2.56.0
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.55.2-3
|
||||||
|
- Undo disabling mangling
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Kalev Lember <klember@redhat.com> - 2.55.2-2
|
||||||
|
- Disable brp-mangle-shebangs shebangs
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Kalev Lember <klember@redhat.com> - 2.55.2-1
|
||||||
|
- Update to 2.55.2
|
||||||
|
- Drop ldconfig scriptlets
|
||||||
|
|
||||||
|
* Wed Jan 31 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.55.1-3
|
||||||
|
- Switch to %%ldconfig_scriptlets
|
||||||
|
|
||||||
|
* Thu Jan 18 2018 Kalev Lember <klember@redhat.com> - 2.55.1-2
|
||||||
- gmain: Partial revert of recent wakeup changes
|
- gmain: Partial revert of recent wakeup changes
|
||||||
|
|
||||||
* Tue Jan 09 2018 Kalev Lember <klember@redhat.com> - 2.54.3-1
|
* Mon Jan 08 2018 Kalev Lember <klember@redhat.com> - 2.55.1-1
|
||||||
- Update to 2.54.3
|
- Update to 2.55.1
|
||||||
|
- Drop upstreamed systemtap multilib fix
|
||||||
|
|
||||||
|
* Tue Dec 19 2017 Kalev Lember <klember@redhat.com> - 2.55.0-1
|
||||||
|
- Update to 2.55.0
|
||||||
|
|
||||||
* Wed Nov 01 2017 Kalev Lember <klember@redhat.com> - 2.54.2-1
|
* Wed Nov 01 2017 Kalev Lember <klember@redhat.com> - 2.54.2-1
|
||||||
- Update to 2.54.2
|
- Update to 2.54.2
|
||||||
|
668
gnutls-hmac.patch
Normal file
668
gnutls-hmac.patch
Normal file
@ -0,0 +1,668 @@
|
|||||||
|
From afb5735506e2ed1c638a8c916aa3748bf0615f32 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Colin Walters <walters@verbum.org>
|
||||||
|
Date: Fri, 7 Jun 2019 18:44:43 +0000
|
||||||
|
Subject: [PATCH 1/2] ghmac: Split off wrapper functions into ghmac-utils.c
|
||||||
|
|
||||||
|
Prep for adding a GnuTLS HMAC implementation; these are just
|
||||||
|
utility functions that call the "core" API.
|
||||||
|
---
|
||||||
|
glib/ghmac-utils.c | 145 +++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
glib/ghmac.c | 112 ----------------------------------
|
||||||
|
glib/meson.build | 1 +
|
||||||
|
3 files changed, 146 insertions(+), 112 deletions(-)
|
||||||
|
create mode 100644 glib/ghmac-utils.c
|
||||||
|
|
||||||
|
diff --git a/glib/ghmac-utils.c b/glib/ghmac-utils.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..a17359ff1
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/glib/ghmac-utils.c
|
||||||
|
@@ -0,0 +1,145 @@
|
||||||
|
+/* ghmac.h - data hashing functions
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2011 Collabora Ltd.
|
||||||
|
+ * Copyright (C) 2019 Red Hat, Inc.
|
||||||
|
+ *
|
||||||
|
+ * This library is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This library is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public License
|
||||||
|
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+#include "ghmac.h"
|
||||||
|
+
|
||||||
|
+#include "glib/galloca.h"
|
||||||
|
+#include "gatomic.h"
|
||||||
|
+#include "gslice.h"
|
||||||
|
+#include "gmem.h"
|
||||||
|
+#include "gstrfuncs.h"
|
||||||
|
+#include "gtestutils.h"
|
||||||
|
+#include "gtypes.h"
|
||||||
|
+#include "glibintl.h"
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * g_compute_hmac_for_data:
|
||||||
|
+ * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
+ * @key: (array length=key_len): the key to use in the HMAC
|
||||||
|
+ * @key_len: the length of the key
|
||||||
|
+ * @data: (array length=length): binary blob to compute the HMAC of
|
||||||
|
+ * @length: length of @data
|
||||||
|
+ *
|
||||||
|
+ * Computes the HMAC for a binary @data of @length. This is a
|
||||||
|
+ * convenience wrapper for g_hmac_new(), g_hmac_get_string()
|
||||||
|
+ * and g_hmac_unref().
|
||||||
|
+ *
|
||||||
|
+ * The hexadecimal string returned will be in lower case.
|
||||||
|
+ *
|
||||||
|
+ * Returns: the HMAC of the binary data as a string in hexadecimal.
|
||||||
|
+ * The returned string should be freed with g_free() when done using it.
|
||||||
|
+ *
|
||||||
|
+ * Since: 2.30
|
||||||
|
+ */
|
||||||
|
+gchar *
|
||||||
|
+g_compute_hmac_for_data (GChecksumType digest_type,
|
||||||
|
+ const guchar *key,
|
||||||
|
+ gsize key_len,
|
||||||
|
+ const guchar *data,
|
||||||
|
+ gsize length)
|
||||||
|
+{
|
||||||
|
+ GHmac *hmac;
|
||||||
|
+ gchar *retval;
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (length == 0 || data != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ hmac = g_hmac_new (digest_type, key, key_len);
|
||||||
|
+ if (!hmac)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ g_hmac_update (hmac, data, length);
|
||||||
|
+ retval = g_strdup (g_hmac_get_string (hmac));
|
||||||
|
+ g_hmac_unref (hmac);
|
||||||
|
+
|
||||||
|
+ return retval;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * g_compute_hmac_for_bytes:
|
||||||
|
+ * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
+ * @key: the key to use in the HMAC
|
||||||
|
+ * @data: binary blob to compute the HMAC of
|
||||||
|
+ *
|
||||||
|
+ * Computes the HMAC for a binary @data. This is a
|
||||||
|
+ * convenience wrapper for g_hmac_new(), g_hmac_get_string()
|
||||||
|
+ * and g_hmac_unref().
|
||||||
|
+ *
|
||||||
|
+ * The hexadecimal string returned will be in lower case.
|
||||||
|
+ *
|
||||||
|
+ * Returns: the HMAC of the binary data as a string in hexadecimal.
|
||||||
|
+ * The returned string should be freed with g_free() when done using it.
|
||||||
|
+ *
|
||||||
|
+ * Since: 2.50
|
||||||
|
+ */
|
||||||
|
+gchar *
|
||||||
|
+g_compute_hmac_for_bytes (GChecksumType digest_type,
|
||||||
|
+ GBytes *key,
|
||||||
|
+ GBytes *data)
|
||||||
|
+{
|
||||||
|
+ gconstpointer byte_data;
|
||||||
|
+ gsize length;
|
||||||
|
+ gconstpointer key_data;
|
||||||
|
+ gsize key_len;
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (data != NULL, NULL);
|
||||||
|
+ g_return_val_if_fail (key != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ byte_data = g_bytes_get_data (data, &length);
|
||||||
|
+ key_data = g_bytes_get_data (key, &key_len);
|
||||||
|
+ return g_compute_hmac_for_data (digest_type, key_data, key_len, byte_data, length);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * g_compute_hmac_for_string:
|
||||||
|
+ * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
+ * @key: (array length=key_len): the key to use in the HMAC
|
||||||
|
+ * @key_len: the length of the key
|
||||||
|
+ * @str: the string to compute the HMAC for
|
||||||
|
+ * @length: the length of the string, or -1 if the string is nul-terminated
|
||||||
|
+ *
|
||||||
|
+ * Computes the HMAC for a string.
|
||||||
|
+ *
|
||||||
|
+ * The hexadecimal string returned will be in lower case.
|
||||||
|
+ *
|
||||||
|
+ * Returns: the HMAC as a hexadecimal string.
|
||||||
|
+ * The returned string should be freed with g_free()
|
||||||
|
+ * when done using it.
|
||||||
|
+ *
|
||||||
|
+ * Since: 2.30
|
||||||
|
+ */
|
||||||
|
+gchar *
|
||||||
|
+g_compute_hmac_for_string (GChecksumType digest_type,
|
||||||
|
+ const guchar *key,
|
||||||
|
+ gsize key_len,
|
||||||
|
+ const gchar *str,
|
||||||
|
+ gssize length)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (length == 0 || str != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ if (length < 0)
|
||||||
|
+ length = strlen (str);
|
||||||
|
+
|
||||||
|
+ return g_compute_hmac_for_data (digest_type, key, key_len,
|
||||||
|
+ (const guchar *) str, length);
|
||||||
|
+}
|
||||||
|
diff --git a/glib/ghmac.c b/glib/ghmac.c
|
||||||
|
index 49fd272f0..4f181f21f 100644
|
||||||
|
--- a/glib/ghmac.c
|
||||||
|
+++ b/glib/ghmac.c
|
||||||
|
@@ -329,115 +329,3 @@ g_hmac_get_digest (GHmac *hmac,
|
||||||
|
g_checksum_update (hmac->digesto, buffer, len);
|
||||||
|
g_checksum_get_digest (hmac->digesto, buffer, digest_len);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
-/**
|
||||||
|
- * g_compute_hmac_for_data:
|
||||||
|
- * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
- * @key: (array length=key_len): the key to use in the HMAC
|
||||||
|
- * @key_len: the length of the key
|
||||||
|
- * @data: (array length=length): binary blob to compute the HMAC of
|
||||||
|
- * @length: length of @data
|
||||||
|
- *
|
||||||
|
- * Computes the HMAC for a binary @data of @length. This is a
|
||||||
|
- * convenience wrapper for g_hmac_new(), g_hmac_get_string()
|
||||||
|
- * and g_hmac_unref().
|
||||||
|
- *
|
||||||
|
- * The hexadecimal string returned will be in lower case.
|
||||||
|
- *
|
||||||
|
- * Returns: the HMAC of the binary data as a string in hexadecimal.
|
||||||
|
- * The returned string should be freed with g_free() when done using it.
|
||||||
|
- *
|
||||||
|
- * Since: 2.30
|
||||||
|
- */
|
||||||
|
-gchar *
|
||||||
|
-g_compute_hmac_for_data (GChecksumType digest_type,
|
||||||
|
- const guchar *key,
|
||||||
|
- gsize key_len,
|
||||||
|
- const guchar *data,
|
||||||
|
- gsize length)
|
||||||
|
-{
|
||||||
|
- GHmac *hmac;
|
||||||
|
- gchar *retval;
|
||||||
|
-
|
||||||
|
- g_return_val_if_fail (length == 0 || data != NULL, NULL);
|
||||||
|
-
|
||||||
|
- hmac = g_hmac_new (digest_type, key, key_len);
|
||||||
|
- if (!hmac)
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
- g_hmac_update (hmac, data, length);
|
||||||
|
- retval = g_strdup (g_hmac_get_string (hmac));
|
||||||
|
- g_hmac_unref (hmac);
|
||||||
|
-
|
||||||
|
- return retval;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-/**
|
||||||
|
- * g_compute_hmac_for_bytes:
|
||||||
|
- * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
- * @key: the key to use in the HMAC
|
||||||
|
- * @data: binary blob to compute the HMAC of
|
||||||
|
- *
|
||||||
|
- * Computes the HMAC for a binary @data. This is a
|
||||||
|
- * convenience wrapper for g_hmac_new(), g_hmac_get_string()
|
||||||
|
- * and g_hmac_unref().
|
||||||
|
- *
|
||||||
|
- * The hexadecimal string returned will be in lower case.
|
||||||
|
- *
|
||||||
|
- * Returns: the HMAC of the binary data as a string in hexadecimal.
|
||||||
|
- * The returned string should be freed with g_free() when done using it.
|
||||||
|
- *
|
||||||
|
- * Since: 2.50
|
||||||
|
- */
|
||||||
|
-gchar *
|
||||||
|
-g_compute_hmac_for_bytes (GChecksumType digest_type,
|
||||||
|
- GBytes *key,
|
||||||
|
- GBytes *data)
|
||||||
|
-{
|
||||||
|
- gconstpointer byte_data;
|
||||||
|
- gsize length;
|
||||||
|
- gconstpointer key_data;
|
||||||
|
- gsize key_len;
|
||||||
|
-
|
||||||
|
- g_return_val_if_fail (data != NULL, NULL);
|
||||||
|
- g_return_val_if_fail (key != NULL, NULL);
|
||||||
|
-
|
||||||
|
- byte_data = g_bytes_get_data (data, &length);
|
||||||
|
- key_data = g_bytes_get_data (key, &key_len);
|
||||||
|
- return g_compute_hmac_for_data (digest_type, key_data, key_len, byte_data, length);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-/**
|
||||||
|
- * g_compute_hmac_for_string:
|
||||||
|
- * @digest_type: a #GChecksumType to use for the HMAC
|
||||||
|
- * @key: (array length=key_len): the key to use in the HMAC
|
||||||
|
- * @key_len: the length of the key
|
||||||
|
- * @str: the string to compute the HMAC for
|
||||||
|
- * @length: the length of the string, or -1 if the string is nul-terminated
|
||||||
|
- *
|
||||||
|
- * Computes the HMAC for a string.
|
||||||
|
- *
|
||||||
|
- * The hexadecimal string returned will be in lower case.
|
||||||
|
- *
|
||||||
|
- * Returns: the HMAC as a hexadecimal string.
|
||||||
|
- * The returned string should be freed with g_free()
|
||||||
|
- * when done using it.
|
||||||
|
- *
|
||||||
|
- * Since: 2.30
|
||||||
|
- */
|
||||||
|
-gchar *
|
||||||
|
-g_compute_hmac_for_string (GChecksumType digest_type,
|
||||||
|
- const guchar *key,
|
||||||
|
- gsize key_len,
|
||||||
|
- const gchar *str,
|
||||||
|
- gssize length)
|
||||||
|
-{
|
||||||
|
- g_return_val_if_fail (length == 0 || str != NULL, NULL);
|
||||||
|
-
|
||||||
|
- if (length < 0)
|
||||||
|
- length = strlen (str);
|
||||||
|
-
|
||||||
|
- return g_compute_hmac_for_data (digest_type, key, key_len,
|
||||||
|
- (const guchar *) str, length);
|
||||||
|
-}
|
||||||
|
diff --git a/glib/meson.build b/glib/meson.build
|
||||||
|
index aaf40a218..b3bf067c7 100644
|
||||||
|
--- a/glib/meson.build
|
||||||
|
+++ b/glib/meson.build
|
||||||
|
@@ -253,6 +253,7 @@ glib_sources = files(
|
||||||
|
'ggettext.c',
|
||||||
|
'ghash.c',
|
||||||
|
'ghmac.c',
|
||||||
|
+ 'ghmac-utils.c',
|
||||||
|
'ghook.c',
|
||||||
|
'ghostutils.c',
|
||||||
|
'giochannel.c',
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
||||||
|
|
||||||
|
From 703e63f9d8b3ea4f26f41f0d2287b301025a73cc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Colin Walters <walters@verbum.org>
|
||||||
|
Date: Fri, 7 Jun 2019 19:36:54 +0000
|
||||||
|
Subject: [PATCH 2/2] Add a gnutls backend for GHmac
|
||||||
|
|
||||||
|
For RHEL we want apps to use FIPS-certified crypto libraries,
|
||||||
|
and HMAC apparently counts as "keyed" and hence needs to
|
||||||
|
be validated.
|
||||||
|
|
||||||
|
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1630260
|
||||||
|
Replaces: https://gitlab.gnome.org/GNOME/glib/merge_requests/897
|
||||||
|
|
||||||
|
This is a build-time option that backs the GHmac API with GnuTLS.
|
||||||
|
Most distributors ship glib-networking built with GnuTLS, and
|
||||||
|
most apps use glib-networking, so this isn't a net-new library
|
||||||
|
in most cases.
|
||||||
|
|
||||||
|
mcatanzaro note: I've updated Colin's original patch to implement
|
||||||
|
g_hmac_copy() using gnutls_hmac_copy(), which didn't exist when Colin
|
||||||
|
developed this patch.
|
||||||
|
---
|
||||||
|
glib/gchecksum.c | 9 ++-
|
||||||
|
glib/gchecksumprivate.h | 32 ++++++++
|
||||||
|
glib/ghmac-gnutls.c | 164 ++++++++++++++++++++++++++++++++++++++++
|
||||||
|
glib/ghmac.c | 3 +
|
||||||
|
glib/meson.build | 10 ++-
|
||||||
|
meson.build | 7 ++
|
||||||
|
meson_options.txt | 5 ++
|
||||||
|
7 files changed, 224 insertions(+), 6 deletions(-)
|
||||||
|
create mode 100644 glib/gchecksumprivate.h
|
||||||
|
create mode 100644 glib/ghmac-gnutls.c
|
||||||
|
|
||||||
|
diff --git a/glib/gchecksum.c b/glib/gchecksum.c
|
||||||
|
index f8a3f9ab8..b391a6264 100644
|
||||||
|
--- a/glib/gchecksum.c
|
||||||
|
+++ b/glib/gchecksum.c
|
||||||
|
@@ -20,7 +20,7 @@
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
-#include "gchecksum.h"
|
||||||
|
+#include "gchecksumprivate.h"
|
||||||
|
|
||||||
|
#include "gslice.h"
|
||||||
|
#include "gmem.h"
|
||||||
|
@@ -173,9 +173,9 @@ sha_byte_reverse (guint32 *buffer,
|
||||||
|
}
|
||||||
|
#endif /* G_BYTE_ORDER == G_BIG_ENDIAN */
|
||||||
|
|
||||||
|
-static gchar *
|
||||||
|
-digest_to_string (guint8 *digest,
|
||||||
|
- gsize digest_len)
|
||||||
|
+gchar *
|
||||||
|
+gchecksum_digest_to_string (guint8 *digest,
|
||||||
|
+ gsize digest_len)
|
||||||
|
{
|
||||||
|
gsize i, len = digest_len * 2;
|
||||||
|
gchar *retval;
|
||||||
|
@@ -194,6 +194,7 @@ digest_to_string (guint8 *digest,
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
+#define digest_to_string gchecksum_digest_to_string
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MD5 Checksum
|
||||||
|
diff --git a/glib/gchecksumprivate.h b/glib/gchecksumprivate.h
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..86c7a3b61
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/glib/gchecksumprivate.h
|
||||||
|
@@ -0,0 +1,32 @@
|
||||||
|
+/* gstdioprivate.h - Private GLib stdio functions
|
||||||
|
+ *
|
||||||
|
+ * Copyright 2017 Руслан Ижбулатов
|
||||||
|
+ *
|
||||||
|
+ * This library is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This library is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public License
|
||||||
|
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifndef __G_CHECKSUMPRIVATE_H__
|
||||||
|
+#define __G_CHECKSUMPRIVATE_H__
|
||||||
|
+
|
||||||
|
+#include "gchecksum.h"
|
||||||
|
+
|
||||||
|
+G_BEGIN_DECLS
|
||||||
|
+
|
||||||
|
+gchar *
|
||||||
|
+gchecksum_digest_to_string (guint8 *digest,
|
||||||
|
+ gsize digest_len);
|
||||||
|
+
|
||||||
|
+G_END_DECLS
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/glib/ghmac-gnutls.c b/glib/ghmac-gnutls.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..f1a74a849
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/glib/ghmac-gnutls.c
|
||||||
|
@@ -0,0 +1,164 @@
|
||||||
|
+/* ghmac.h - data hashing functions
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2011 Collabora Ltd.
|
||||||
|
+ * Copyright (C) 2019 Red Hat, Inc.
|
||||||
|
+ *
|
||||||
|
+ * This library is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ * License as published by the Free Software Foundation; either
|
||||||
|
+ * version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This library is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ * Lesser General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU Lesser General Public License
|
||||||
|
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <gnutls/crypto.h>
|
||||||
|
+
|
||||||
|
+#include "ghmac.h"
|
||||||
|
+
|
||||||
|
+#include "glib/galloca.h"
|
||||||
|
+#include "gatomic.h"
|
||||||
|
+#include "gslice.h"
|
||||||
|
+#include "gmem.h"
|
||||||
|
+#include "gstrfuncs.h"
|
||||||
|
+#include "gchecksumprivate.h"
|
||||||
|
+#include "gtestutils.h"
|
||||||
|
+#include "gtypes.h"
|
||||||
|
+#include "glibintl.h"
|
||||||
|
+
|
||||||
|
+#ifndef HAVE_GNUTLS
|
||||||
|
+#error "build configuration error"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+struct _GHmac
|
||||||
|
+{
|
||||||
|
+ int ref_count;
|
||||||
|
+ GChecksumType digest_type;
|
||||||
|
+ gnutls_hmac_hd_t hmac;
|
||||||
|
+ gchar *digest_str;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+GHmac *
|
||||||
|
+g_hmac_new (GChecksumType digest_type,
|
||||||
|
+ const guchar *key,
|
||||||
|
+ gsize key_len)
|
||||||
|
+{
|
||||||
|
+ gnutls_mac_algorithm_t algo;
|
||||||
|
+ GHmac *hmac = g_slice_new0 (GHmac);
|
||||||
|
+ hmac->ref_count = 1;
|
||||||
|
+ hmac->digest_type = digest_type;
|
||||||
|
+
|
||||||
|
+ switch (digest_type)
|
||||||
|
+ {
|
||||||
|
+ case G_CHECKSUM_MD5:
|
||||||
|
+ algo = GNUTLS_MAC_MD5;
|
||||||
|
+ break;
|
||||||
|
+ case G_CHECKSUM_SHA1:
|
||||||
|
+ algo = GNUTLS_MAC_SHA1;
|
||||||
|
+ break;
|
||||||
|
+ case G_CHECKSUM_SHA256:
|
||||||
|
+ algo = GNUTLS_MAC_SHA256;
|
||||||
|
+ break;
|
||||||
|
+ case G_CHECKSUM_SHA384:
|
||||||
|
+ algo = GNUTLS_MAC_SHA384;
|
||||||
|
+ break;
|
||||||
|
+ case G_CHECKSUM_SHA512:
|
||||||
|
+ algo = GNUTLS_MAC_SHA512;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ g_return_val_if_reached (NULL);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ gnutls_hmac_init (&hmac->hmac, algo, key, key_len);
|
||||||
|
+
|
||||||
|
+ return hmac;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+GHmac *
|
||||||
|
+g_hmac_copy (const GHmac *hmac)
|
||||||
|
+{
|
||||||
|
+ GHmac *copy;
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (hmac != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ copy = g_slice_new0 (GHmac);
|
||||||
|
+ copy->ref_count = 1;
|
||||||
|
+ copy->digest_type = hmac->digest_type;
|
||||||
|
+ copy->hmac = gnutls_hmac_copy (hmac->hmac);
|
||||||
|
+
|
||||||
|
+ return copy;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+GHmac *
|
||||||
|
+g_hmac_ref (GHmac *hmac)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (hmac != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ g_atomic_int_inc (&hmac->ref_count);
|
||||||
|
+
|
||||||
|
+ return hmac;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+g_hmac_unref (GHmac *hmac)
|
||||||
|
+{
|
||||||
|
+ g_return_if_fail (hmac != NULL);
|
||||||
|
+
|
||||||
|
+ if (g_atomic_int_dec_and_test (&hmac->ref_count))
|
||||||
|
+ {
|
||||||
|
+ gnutls_hmac_deinit (hmac->hmac, NULL);
|
||||||
|
+ g_free (hmac->digest_str);
|
||||||
|
+ g_slice_free (GHmac, hmac);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+g_hmac_update (GHmac *hmac,
|
||||||
|
+ const guchar *data,
|
||||||
|
+ gssize length)
|
||||||
|
+{
|
||||||
|
+ g_return_if_fail (hmac != NULL);
|
||||||
|
+ g_return_if_fail (length == 0 || data != NULL);
|
||||||
|
+
|
||||||
|
+ gnutls_hmac (hmac->hmac, data, length);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+const gchar *
|
||||||
|
+g_hmac_get_string (GHmac *hmac)
|
||||||
|
+{
|
||||||
|
+ guint8 *buffer;
|
||||||
|
+ gsize digest_len;
|
||||||
|
+
|
||||||
|
+ g_return_val_if_fail (hmac != NULL, NULL);
|
||||||
|
+
|
||||||
|
+ if (hmac->digest_str)
|
||||||
|
+ return hmac->digest_str;
|
||||||
|
+
|
||||||
|
+ digest_len = g_checksum_type_get_length (hmac->digest_type);
|
||||||
|
+ buffer = g_alloca (digest_len);
|
||||||
|
+
|
||||||
|
+ gnutls_hmac_output (hmac->hmac, buffer);
|
||||||
|
+ hmac->digest_str = gchecksum_digest_to_string (buffer, digest_len);
|
||||||
|
+ return hmac->digest_str;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+g_hmac_get_digest (GHmac *hmac,
|
||||||
|
+ guint8 *buffer,
|
||||||
|
+ gsize *digest_len)
|
||||||
|
+{
|
||||||
|
+ g_return_if_fail (hmac != NULL);
|
||||||
|
+
|
||||||
|
+ gnutls_hmac_output (hmac->hmac, buffer);
|
||||||
|
+ *digest_len = g_checksum_type_get_length (hmac->digest_type);
|
||||||
|
+}
|
||||||
|
diff --git a/glib/ghmac.c b/glib/ghmac.c
|
||||||
|
index 4f181f21f..c62d9ce4e 100644
|
||||||
|
--- a/glib/ghmac.c
|
||||||
|
+++ b/glib/ghmac.c
|
||||||
|
@@ -33,6 +33,9 @@
|
||||||
|
#include "gtypes.h"
|
||||||
|
#include "glibintl.h"
|
||||||
|
|
||||||
|
+#ifdef HAVE_GNUTLS
|
||||||
|
+#error "build configuration error"
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:hmac
|
||||||
|
diff --git a/glib/meson.build b/glib/meson.build
|
||||||
|
index b3bf067c7..3cdc3b573 100644
|
||||||
|
--- a/glib/meson.build
|
||||||
|
+++ b/glib/meson.build
|
||||||
|
@@ -252,7 +252,6 @@ glib_sources = files(
|
||||||
|
'gfileutils.c',
|
||||||
|
'ggettext.c',
|
||||||
|
'ghash.c',
|
||||||
|
- 'ghmac.c',
|
||||||
|
'ghmac-utils.c',
|
||||||
|
'ghook.c',
|
||||||
|
'ghostutils.c',
|
||||||
|
@@ -308,6 +307,7 @@ glib_sources = files(
|
||||||
|
'guriprivate.h',
|
||||||
|
'gutils.c',
|
||||||
|
'gutilsprivate.h',
|
||||||
|
+ 'gchecksumprivate.h',
|
||||||
|
'guuid.c',
|
||||||
|
'gvariant.c',
|
||||||
|
'gvariant-core.c',
|
||||||
|
@@ -352,6 +352,12 @@ else
|
||||||
|
glib_dtrace_hdr = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
+if get_option('gnutls')
|
||||||
|
+ glib_sources += files('ghmac-gnutls.c')
|
||||||
|
+else
|
||||||
|
+ glib_sources += files('ghmac.c')
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
pcre_static_args = []
|
||||||
|
|
||||||
|
if use_pcre_static_flag
|
||||||
|
@@ -378,7 +384,7 @@ libglib = library('glib-2.0',
|
||||||
|
# intl.lib is not compatible with SAFESEH
|
||||||
|
link_args : [noseh_link_args, glib_link_flags, win32_ldflags],
|
||||||
|
include_directories : configinc,
|
||||||
|
- dependencies : pcre_deps + [thread_dep, librt] + libintl_deps + libiconv + platform_deps + gnulib_libm_dependency + [libsysprof_capture_dep],
|
||||||
|
+ dependencies : pcre_deps + libgnutls_dep + [thread_dep, librt] + libintl_deps + libiconv + platform_deps + gnulib_libm_dependency + [libsysprof_capture_dep],
|
||||||
|
c_args : glib_c_args,
|
||||||
|
objc_args : glib_c_args,
|
||||||
|
)
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index e0b308a25..70dd5355e 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -2056,6 +2056,13 @@ if host_system == 'linux'
|
||||||
|
glib_conf.set('HAVE_LIBMOUNT', libmount_dep.found())
|
||||||
|
endif
|
||||||
|
|
||||||
|
+# gnutls is used optionally by ghmac
|
||||||
|
+libgnutls_dep = []
|
||||||
|
+if get_option('gnutls')
|
||||||
|
+ libgnutls_dep = [dependency('gnutls', version : '>=3.6.9', required : true)]
|
||||||
|
+ glib_conf.set('HAVE_GNUTLS', 1)
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
if host_system == 'windows'
|
||||||
|
winsock2 = cc.find_library('ws2_32')
|
||||||
|
endif
|
||||||
|
diff --git a/meson_options.txt b/meson_options.txt
|
||||||
|
index af9645eda..2c4b2c37e 100644
|
||||||
|
--- a/meson_options.txt
|
||||||
|
+++ b/meson_options.txt
|
||||||
|
@@ -34,6 +34,11 @@ option('libmount',
|
||||||
|
value : 'auto',
|
||||||
|
description : 'build with libmount support')
|
||||||
|
|
||||||
|
+option('gnutls',
|
||||||
|
+ type : 'boolean',
|
||||||
|
+ value : false,
|
||||||
|
+ description : 'build with gnutls support')
|
||||||
|
+
|
||||||
|
option('internal_pcre',
|
||||||
|
type : 'boolean',
|
||||||
|
value : false,
|
||||||
|
--
|
||||||
|
2.28.0
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (glib-2.54.3.tar.xz) = 23eb4458684624f80c17aa784eab42a38eec87bb5979fcfe56f0bc63b5c7bcf8251a0d4ea916fe2c8109ff5b14a4b60c6260755d079ff984c0d8e6a2871d307d
|
SHA512 (glib-2.67.0.tar.xz) = 82d562bc80885c7e516e38f17a8830596b32b1e1a4b58454ca589be79e6ab27e0a2fe0a108cb02da21981c75474abed0263c0aa38c71ead45a68db675a1d2f80
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
if test $# != 1; then
|
|
||||||
echo "usage: update-gio-modules host_triplet" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Warning: update-gio-modules is deprecated and will be removed in glib2-2.28.0"
|
|
||||||
|
|
||||||
umask 022
|
|
||||||
|
|
||||||
case "$host" in
|
|
||||||
alpha*|ia64*|powerpc64*|ppc64*|s390x*|sparc64*|x86_64*)
|
|
||||||
/usr/bin/gio-querymodules-64 /usr/lib64/gio/modules
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
/usr/bin/gio-querymodules-32 /usr/lib/gio/modules
|
|
||||||
;;
|
|
||||||
esac
|
|
Loading…
Reference in New Issue
Block a user