diff -Naur AppStream-1.0.2.orig/meson.build AppStream-1.0.2/meson.build
--- AppStream-1.0.2.orig/meson.build	2024-02-25 03:23:01.000000000 +0600
+++ AppStream-1.0.2/meson.build	2024-06-04 18:34:21.248471767 +0600
@@ -156,10 +156,10 @@
 #
 # Dependencies
 #
-glib_dep = dependency('glib-2.0', version: '>= 2.62')
-gobject_dep = dependency('gobject-2.0', version: '>= 2.62')
-gio_dep = dependency('gio-2.0', version: '>= 2.62')
-curl_dep = dependency('libcurl', version: '>= 7.62')
+glib_dep = dependency('glib-2.0', version: '>= 2.56')
+gobject_dep = dependency('gobject-2.0', version: '>= 2.56')
+gio_dep = dependency('gio-2.0', version: '>= 2.56')
+curl_dep = dependency('libcurl', version: '>= 7.60')
 xml2_dep = dependency('libxml-2.0')
 yaml_dep = dependency('yaml-0.1')
 xmlb_dep = dependency('xmlb', version: '>= 0.3.14',
@@ -179,7 +179,7 @@
 if get_option ('gir')
     # ensure we have a version of GIR that isn't broken with Meson
     # (prior versions failed when any non-GObject library was linked)
-    dependency('gobject-introspection-1.0', version: '>=1.56')
+    dependency('gobject-introspection-1.0', version: '>=1.54')
 endif
 
 stemmer_inc_dirs = include_directories()
diff -Naur AppStream-1.0.2.orig/src/as-release.c AppStream-1.0.2/src/as-release.c
--- AppStream-1.0.2.orig/src/as-release.c	2024-02-25 03:23:01.000000000 +0600
+++ AppStream-1.0.2/src/as-release.c	2024-06-04 18:54:18.132967181 +0600
@@ -362,13 +362,14 @@
 as_release_set_timestamp (AsRelease *release, guint64 timestamp)
 {
 	AsReleasePrivate *priv = GET_PRIVATE (release);
-	g_autoptr(GDateTime) time = g_date_time_new_from_unix_utc (timestamp);
-
-	g_return_if_fail (AS_IS_RELEASE (release));
+	GTimeVal time;
 
 	priv->timestamp = timestamp;
+	time.tv_sec = priv->timestamp;
+	time.tv_usec = 0;
+
 	g_free (priv->date);
-	priv->date = g_date_time_format_iso8601 (time);
+	priv->date = g_time_val_to_iso8601 (&time);
 }
 
 /**
@@ -499,16 +500,15 @@
 as_release_set_timestamp_eol (AsRelease *release, guint64 timestamp)
 {
 	AsReleasePrivate *priv = GET_PRIVATE (release);
-	g_autoptr(GDateTime) time = NULL;
-
-	g_return_if_fail (AS_IS_RELEASE (release));
+	GTimeVal time;
 
 	if (timestamp == 0)
 		return;
 
-	time = g_date_time_new_from_unix_utc (timestamp);
+	time.tv_sec = timestamp;
+	time.tv_usec = 0;
 	g_free (priv->date_eol);
-	priv->date_eol = g_date_time_format_iso8601 (time);
+	priv->date_eol = g_time_val_to_iso8601 (&time);
 }
 
 /**
@@ -1031,9 +1031,10 @@
 			time_str = g_strdup_printf ("%" G_GUINT64_FORMAT, priv->timestamp);
 			as_xml_add_text_prop (subnode, "timestamp", time_str);
 		} else {
-			g_autoptr(GDateTime)
-				       time = g_date_time_new_from_unix_utc (priv->timestamp);
-			time_str = g_date_time_format_iso8601 (time);
+			GTimeVal time;
+			time.tv_sec = priv->timestamp;
+			time.tv_usec = 0;
+			time_str = g_time_val_to_iso8601 (&time);
 			as_xml_add_text_prop (subnode, "date", time_str);
 		}
 	}
@@ -1211,9 +1212,10 @@
 		if (as_context_get_style (ctx) == AS_FORMAT_STYLE_CATALOG) {
 			as_yaml_emit_entry_timestamp (emitter, "unix-timestamp", priv->timestamp);
 		} else {
-			g_autoptr(GDateTime)
-				       time = g_date_time_new_from_unix_utc (priv->timestamp);
-			time_str = g_date_time_format_iso8601 (time);
+			GTimeVal time;
+			time.tv_sec = priv->timestamp;
+			time.tv_usec = 0;
+			time_str = g_time_val_to_iso8601 (&time);
 			as_yaml_emit_entry (emitter, "date", time_str);
 		}
 	}
diff -Naur AppStream-1.0.2.orig/src/as-utils.c AppStream-1.0.2/src/as-utils.c
--- AppStream-1.0.2.orig/src/as-utils.c	2024-02-25 03:23:01.000000000 +0600
+++ AppStream-1.0.2/src/as-utils.c	2024-06-05 08:50:10.922528854 +0600
@@ -360,13 +360,14 @@
 /**
  * as_iso8601_to_datetime:
  *
- * Helper function to work around a bug in g_date_time_new_from_iso8601.
+ * Helper function to work around a bug in g_time_val_from_iso8601.
  * Can be dropped when the bug gets resolved upstream:
  * https://bugzilla.gnome.org/show_bug.cgi?id=760983
  **/
 GDateTime *
 as_iso8601_to_datetime (const gchar *iso_date)
 {
+	GTimeVal tv;
 	guint dmy[] = { 0, 0, 0 };
 
 	/* nothing set */
@@ -374,14 +375,12 @@
 		return NULL;
 
 	/* try to parse complete ISO8601 date */
-	if (g_strstr_len (iso_date, -1, "T") != NULL) {
-		g_autoptr(GTimeZone) tz_utc = g_time_zone_new_utc ();
-		GDateTime *res = g_date_time_new_from_iso8601 (iso_date, tz_utc);
-		if (res != NULL)
-			return res;
+	if (g_strstr_len (iso_date, -1, " ") != NULL) {
+		if (g_time_val_from_iso8601 (iso_date, &tv) && tv.tv_sec != 0)
+			return g_date_time_new_from_timeval_utc (&tv);
 	}
 
-	/* g_date_time_new_from_iso8601() blows goats and won't
+	/* g_time_val_from_iso8601() blows goats and won't
 	 * accept a valid ISO8601 formatted date without a
 	 * time value - try and parse this case */
 	if (sscanf (iso_date, "%u-%u-%u", &dmy[0], &dmy[1], &dmy[2]) != 3)
