diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..3381d42 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,6586 @@ +glib2.0 (2.72.4-0ubuntu2.2+evin1) jammy; urgency=medium + + * update patches + + -- Alexis Cruz Tue, 04 Jul 2023 12:02:35 +0200 + +glib2.0 (2.72.4-0ubuntu2.2) jammy-security; urgency=medium + + * SECURITY UPDATE: multiple GVariant security issues + - debian/patches/gvariant-security-*.patch: backported upstream fixes + for GVariant normalization issues. + - CVE-2023-24593, CVE-2023-29499, CVE-2023-25180, CVE-2023-32611, + CVE-2023-32636, CVE-2023-32643, CVE-2023-32665 + + -- Marc Deslauriers Thu, 08 Jun 2023 10:15:59 -0400 + +glib2.0 (2.72.4-0ubuntu2) jammy; urgency=medium + + * d/p/0001-gio-Make-portal-support-aware-of-snaps.patch: + - Make portal support aware of snaps (LP: #1998267) + + -- Robert Ancell Wed, 22 Mar 2023 15:52:13 +1300 + +glib2.0 (2.72.4-0ubuntu1) jammy; urgency=medium + + * New upstream release (LP: #1980408) + * Update testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch + for new testfilemonitor test. + + -- Jeremy Bicha Wed, 12 Oct 2022 14:59:04 -0400 + +glib2.0 (2.72.1-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release (LP: #1969115) + - Includes workaround for meson #1008382 + * Add patch to recognize GNOME Console as a terminal app + * Refresh patch + * debian/libglib2.0-0.symbols: Add new symbol + + [ Johannes Schauer Marin Rodrigues ] + * debian/libglib2.0-0.postinst.in: only run clean-up-unmanaged-libraries + on upgrades and not on new installations + (Closes: #1008096) + + -- Jeremy Bicha Thu, 14 Apr 2022 09:35:23 -0400 + +glib2.0 (2.72.0-1) unstable; urgency=medium + + * New upstream release + - Fix assertion failure with time zone offsets >= 25 hours + (Closes: #1007226) + - Various unit test fixes + - Fix a memory leak with an invalid format in g_vasprintf() + - Translation updates + * Merge 2.71.x release history from experimental + - d/gbp.conf, d/control.in: Update branch for upload to unstable + * Upload to unstable + + -- Simon McVittie Fri, 18 Mar 2022 09:05:21 +0000 + +glib2.0 (2.70.5-1) unstable; urgency=medium + + * New upstream release + - Fix assertion failure with time zone offsets >= 25 hours + (Closes: #1007226) + - Fix possible buffer overflow in g_canonicalize_filename() + + -- Simon McVittie Thu, 17 Mar 2022 23:28:00 +0000 + +glib2.0 (2.70.4-1) unstable; urgency=medium + + * New upstream release + * Adjust Lintian overrides for newer Lintian + + -- Simon McVittie Tue, 15 Feb 2022 10:08:01 +0000 + +glib2.0 (2.71.3-1) experimental; urgency=medium + + * New upstream development release + + -- Simon McVittie Tue, 08 Mar 2022 19:53:44 +0000 + +glib2.0 (2.71.2-1) experimental; urgency=medium + + * New upstream development release + * Update symbols file. + Ignore removal of g_debug_controller_dup_default, which was only added + during this development cycle. GLib doesn't guarantee ABI stability + within x.odd.z branches. + * d/p/debian/tests-Skip-debugcontroller-test.patch: + Add patch to skip another unreliable unit test while it's investigated + upstream + + -- Simon McVittie Tue, 15 Feb 2022 20:52:33 +0000 + +glib2.0 (2.71.1-1) experimental; urgency=medium + + * New upstream development release + * Merge packaging changes from unstable + - Use debhelper 13 features instead of dh-exec + * Update symbols file + + -- Simon McVittie Thu, 27 Jan 2022 16:43:04 +0000 + +glib2.0 (2.70.3-1) unstable; urgency=medium + + * New upstream release + - Do not allow empty structs (tuples) in D-Bus messages, resolving a + denial-of-service vulnerability for private GDBus servers that accept + messages from untrusted clients (glib#2557) + - Do not allow deep recursion in serialized GVariant binary data, + resolving a denial of service for anything that loads untrusted + GVariant binary data (glib#2572) + - Fix file descriptor handling when launching subprocesses + - Don't skip fsync when writing out files on btrfs. + This was based on a kernel behaviour that was guaranteed prior to + 2014, but is no longer considered to be a guarantee. + - Translation updates + * Use debhelper 13 features instead of dh-exec + debhelper now has ${DEB_HOST_MULTIARCH} substitutions, so we don't need + to use dh-exec for those. + After that, the one remaining dh-exec feature in use was a conditional + installation for the FAM GIO module for Hurd. Open-code this in d/rules + instead. + * d/gbp.conf: Use upstream/2.70.x branch for packaging. + We have already had a 2.71.x release. + + -- Simon McVittie Wed, 26 Jan 2022 20:18:19 +0000 + +glib2.0 (2.71.0-2) experimental; urgency=medium + + * Merge packaging updates from unstable + + -- Simon McVittie Mon, 27 Dec 2021 17:05:59 +0000 + +glib2.0 (2.70.2-1) unstable; urgency=medium + + * New upstream release + * Build-Depend on dh-sequence-gnome and dh-sequence-python3 + * debian/rules: Drop environment variable clearing now done for us by dh13 + + -- Jeremy Bicha Sat, 04 Dec 2021 20:58:45 -0500 + +glib2.0 (2.71.0-1) experimental; urgency=medium + + * New upstream development release + * Unfuzz patch series + * Update symbols file + + -- Simon McVittie Mon, 27 Dec 2021 15:04:01 +0000 + +glib2.0 (2.70.1-1) unstable; urgency=medium + + * New upstream release + - Functionally equivalent to previous releases to Debian, except for + Windows-specific changes + * Drop patches that came from upstream + * d/upstream/metadata: Add + * Use debhelper compat level 13 + - Drop override for dh_missing --fail-missing, which is now the default + + -- Simon McVittie Fri, 05 Nov 2021 15:58:04 +0000 + +glib2.0 (2.70.0-3) unstable; urgency=medium + + * d/rules: Remove internal_pcre build option, which no longer exists. + Meson 0.60.0 no longer tolerates this. + + -- Simon McVittie Mon, 25 Oct 2021 11:25:31 +0100 + +glib2.0 (2.70.0-2) unstable; urgency=medium + + * d/patches: Update to upstream glib-2-70 branch commit + 2.70.0-41-g359a837ee. + Among other fixes, this makes sure we receive change-notification from + NetworkManager (>= 1.31.5), which dropped its legacy PropertiesChanged + signal in favour of using standard D-Bus Properties. (LP: #1946196) + * Add Breaks on older versions of glib-networking-tests. + With this GLib, the old way glib-networking's tests used to mock up + a particular negotiated protocol no longer works. + * Add Breaks on versions of gnome-keyring that had elevated capabilities. + Security hardening in GLib 2.70.0 interferes with their ability to + connect to D-Bus in some system configurations. (See #994961) + * Remove vestigial triggers for /usr/lib/gio/modules. + We no longer load files from that directory (since Debian 11 and Ubuntu + 20.04), but we still had a trigger for it, and the postinst still created + a module cache if it existed. + * d/libglib2.0-0.postinst.in: Clean up /usr/lib/gio/modules on upgrade. + This directory would still exist if older versions of GLib created a + cache there. + * d/libglib2.0-0.postinst.in: Add comments indicating when other + workarounds can be removed + * Add Lintian override for a unit test depending on a private library + * Skip memory-monitor-dbus test by default, and add extra debug info. + Helps: #995178 + + -- Simon McVittie Sun, 24 Oct 2021 22:41:35 +0100 + +glib2.0 (2.70.0-1) unstable; urgency=medium + + * New upstream release + * d/rules: Make shared objects in installed-tests non-executable + * Remove shebang from taptestrunner.py differently + - Remove shebang from installed file using sed. + This avoids missing the fact that there are two copies in the source, + of which we only patched one. + - d/p/debian/taptestrunner-Stop-looking-like-an-executable-script.patch: + Drop, no longer necessary + * Add Lintian override for #970275 + * d/copyright, d/libglib2.0-0.symbols: Update + * d/gbp.conf: Switch upstream branch + * Unfuzz patch series + * Standards-Version: 4.6.0 (no changes required) + + -- Simon McVittie Sun, 19 Sep 2021 17:11:43 +0100 + +glib2.0 (2.68.4-1) unstable; urgency=medium + + * New upstream release + - Avoid a deadlock while finalizing a GLocalFileMonitor + - Correctly use 3 parameters for close_range(), fixing build with + glibc 2.34 + - Fix global trash directory detection + - Make g_string_replace() with empty search string behave sensibly + (matching Python str.replace()) + - Translation updates: oc, zh_CN, zh_TW + * tests: Specify charset for generated locales to fix FTBFS with new glibc. + glibc 2.31-14 dropped support for all non-UTF-8 locales, so we can't + use /usr/share/i18n/SUPPORTED to choose a suitable charset any more. + * d/rules: Override dh_fixperms to set correct permissions on /usr/libexec. + Making everything executable is not quite right for installed-tests. + + -- Simon McVittie Fri, 20 Aug 2021 10:31:42 +0100 + +glib2.0 (2.68.3-2) unstable; urgency=medium + + * Merge from experimental branch + * Changes relative to 2.68.3-1 in experimental: + - d/watch: Only watch for stable (2.even.z) releases + - d/p/debian/61_glib-compile-binaries-path.patch: Remove. + This patch turns out to be unnecessary, and is harmful for + cross-compiling. Thanks to Helmut Grohne (Closes: #982213) + * Changes relative to previous version in unstable: + - New upstream stable release branch 2.68.x + - Fix maintainer scripts' handling of /usr/lib/MULTIARCH/gio/modules + (Closes: #987913, see 2.68.1-2 changelog) + - Mark dbus as . + Several of the installed-tests won't be built unless dbus-daemon is + available, so is insufficient. + - Move test-dependencies to Build-Depends-Arch. + We don't run the majority of the tests when we're only building the + documentation. + - Remove an unused Lintian override + - Add more Lintian overrides for test data + - Use d/tests/run-with-locales for better locale-sensitive test coverage + * d/rules: Fix dead link when documenting why we use -Wl,--no-as-needed + * Bump minimum GLib version for callers of g_dbus_server_new_sync() + Programs that call this function might be passing in the new flag + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER, which is + security-significant. Don't allow such programs to be built against + GLib 2.68 and run with GLib 2.66 or older. + * Add Breaks on libsoup2.4-tests before 2.72.0-3. + Older versions of the libsoup test suite had an assertion that would + only succeed because of a GLib bug, which is fixed in 2.68.x. Newer + versions tolerate the bug, but do not require it. + + -- Simon McVittie Sun, 15 Aug 2021 14:57:30 +0100 + +glib2.0 (2.68.3-1) experimental; urgency=medium + + * New upstream release 2.68.3, fixing bugs: + - GFile: `g_file_replace_contents()` reports `G_IO_ERROR_WRONG_ETAG` when + saving from a symlink + - glocalfileoutputstream: Fix ETag check when replacing through a symlink + - gmacros: check that __cplusplus or _MSC_VER is defined + - gmacros: missing check if __STDC_VERSION__ is defined + - gthreadedresolver: don't ignore flags in lookup_by_name_with_flags + - inotify: Fix a memory leak + - json-glib does not build with glib 2.68.1 + - testfilemonitor test leaks ip_watched_file_t struct + - tlscertificate: Avoid possible invalid read + + -- Iain Lane Tue, 29 Jun 2021 15:24:06 +0100 + +glib2.0 (2.68.1-2) experimental; urgency=medium + + * Fix maintainer scripts' handling of /usr/lib/MULTIARCH/gio/modules: + - postrm: Only delete GIO module cache on remove or purge. + Despite its name, the postrm can be invoked for reasons other than + package removal: in particular, the old version's postrm is run + during upgrades. + - postinst: Recreate GIO module directory if deleted by an older + postrm, to recover from the bug fixed here. + - postinst: Don't guard glib-compile-schemas or gio-querymodules with + a check for existence of a directory that is shipped in the .deb. + If such a directory has somehow gone missing, we want to see + a warning. This won't make the postinst fail, because we're ignoring + exit status anyway. + (Closes: #987913) + + -- Simon McVittie Sun, 02 May 2021 14:45:36 +0100 + +glib2.0 (2.68.1-1) experimental; urgency=medium + + * New upstream stable release + * d/tests/run-with-locales: Avoid FTBFS with locales-all installed + + -- Simon McVittie Thu, 15 Apr 2021 09:42:05 +0100 + +glib2.0 (2.68.0-1) experimental; urgency=medium + + * New upstream stable release + - Drop dead code from glib-compile-schemas + - Improve valgrind suppressions + - Fix error in g_bytes_icon_new() documentation + - Avoid close(-1) during error handling + - Fix copy/paste error in queue test + - Translation updates + * Add CVE ID references to previous changelog entries. + CVE IDs were not yet available at the time these vulnerabilities were + initially fixed. + + -- Simon McVittie Sat, 20 Mar 2021 15:42:00 +0000 + +glib2.0 (2.67.6-1) experimental; urgency=medium + + * New upstream release + - This fixes a symlink attack affecting file-roller. + When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION + to replace a path that is a dangling symlink, previously it would + have also created the target of the symlink as an empty file, which + could conceivably be security-sensitive if the symlink is + attacker-controlled. (Closes: #984969; CVE-2021-28153) + * Revert test-dependency on libc6-dev, which should no longer be + necessary with the new upstream release. + + -- Simon McVittie Mon, 15 Mar 2021 18:18:48 +0000 + +glib2.0 (2.67.5-2) experimental; urgency=medium + + * debian/tests/control: Test-Depend on libc6-dev; the `pollable` test + requires it. See [upstream MR !1977][0]. The upstream tests now rely on + finding "libutil.so", which is in libc6-dev. Once that MR, or something + like it, is merged, we can remove this test-dep as the runtime library + will be being used. + [0]: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1977 + + -- Iain Lane Tue, 02 Mar 2021 18:29:23 +0000 + +glib2.0 (2.67.5-1) experimental; urgency=medium + + * New upstream release + + Fix more issues with `glib_typeof` macro from 2.67.3–2.67.4 (LP: + #1916705) + + Fix regression with some FD mappings passed to + `g_subprocess_launcher_spawnv()` (Closes: #983026) (LP: #1916701) + * debian/watch: Fix to not match `..`. The watch file was matching the + "Parent directory/" link and considering that the highest, since its + target is `..`. Expect 1+ digits to begin the version number. + + + -- Iain Lane Mon, 01 Mar 2021 17:18:36 +0000 + +glib2.0 (2.67.4-1) experimental; urgency=medium + + * New upstream release + - Among other changes, this should fix FTBFS on armel + * d/libglib2.0-0.symbols: Add g_spawn_async_with_pipes_and_fds + + -- Simon McVittie Wed, 17 Feb 2021 09:58:25 +0000 + +glib2.0 (2.67.3+git20210214-1) experimental; urgency=medium + + * d/changelog: Add bug reference for GHSL-2021-045 to previous entry + * New upstream git snapshot; among other changes: + - Fix regressions caused by the GHSL-2021-045 fixes in 2.67.3 + - Warn and fail on integer overflow in g_byte_array_new_take() + for arrays larger than G_MAXUINT + (Closes: #982779; CVE-2021-27218) + * d/libglib2.0-0.symbols: Add g_string_replace() + * Refresh patch series + * d/rules, d/tests: Generate various locales mentioned in the tests + * Mark dbus as . + Several of the installed-tests won't be built unless dbus-daemon is + available, so is insufficient. + * Move test-dependencies to Build-Depends-Arch. + We don't run the majority of the tests when we're only building the + documentation. + * Remove an unused Lintian override + * Add more Lintian overrides for test data + + -- Simon McVittie Sun, 14 Feb 2021 17:27:54 +0000 + +glib2.0 (2.67.3-1) experimental; urgency=medium + + * New upstream release + - Fix various integer overflows, some of them potentially exploitable + (Closes: #982778; CVE-2021-27219, GHSL-2021-045) + * Drop patches that came from upstream or were applied upstream + + -- Simon McVittie Thu, 04 Feb 2021 22:38:42 +0000 + +glib2.0 (2.67.2-1) experimental; urgency=medium + + * New upstream release + * Refresh patch series + * d/patches: Cherry-pick some fixes from upstream git master. + This is mostly for parity with the update to 2.66.x that I'm preparing + for unstable, which also includes the XDG_CURRENT_DESKTOP fixes. + * d/p/spawn-Don-t-set-a-search-path-if-we-don-t-want-to-search-.patch: + Make the g_spawn family only search PATH if G_SPAWN_SEARCH_PATH is used. + Previously, they would sometimes search /usr/bin:/bin:. for an + executable they should have only loaded from the current working + directory. In particular, this made gtk+3.0 fail its build-time tests + if ImageMagick display(1) happened to be installed. (Closes: #977961) + + -- Simon McVittie Wed, 27 Jan 2021 12:57:48 +0000 + +glib2.0 (2.67.1-1) experimental; urgency=medium + + * Branch for experimental and 2.67.x + * New upstream development release + * Temporarily use git to fetch upstream release. + The official tarball release doesn't seem to have made it onto mirrors. + * d/rules: Explicitly enable libelf dependency for gresource tool + * d/p/Handle-the-case-of-g_object_run_dispose-in-GBinding.patch: + Add patch from upstream to fix a regression in GBinding that caused + gnome-terminal-server to crash on startup + + -- Simon McVittie Fri, 11 Dec 2020 11:16:25 +0000 + +glib2.0 (2.66.8-1) unstable; urgency=medium + + * d/watch: Only watch for 2.66.x versions. + 2.68.0 has been released but will not be in bullseye. + * New upstream release + - Functionally equivalent to 2.66.7-2, except for the version number + and a change to Windows-specific code that is not used in Debian + * Drop patches that were included in the new upstream release + * d/p/glocalfileoutputstream-Tidy-up-error-handling.patch: + Add patch from upstream to clean up error handling. + After the fix for #984969, this function could end up calling close(-1), + which is harmless but gets flagged as an error by static analysis and + by error-checking instrumentation. Fixing this will prevent it from + obscuring real errors. + * Add CVE references in recent changelog entries. + CVE IDs for the vulnerabilities were not available at the time they were + fixed, but now they are. + + -- Simon McVittie Sat, 20 Mar 2021 15:35:19 +0000 + +glib2.0 (2.66.7-2) unstable; urgency=medium + + * d/changelog: Add bug numbers for integer overflows in previous versions + * Add patches to fix a symlink attack affecting file-roller. + When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION to + replace a path that is a dangling symlink, previously it would have also + created the target of the symlink as an empty file, which could + conceivably be security-sensitive if the symlink is attacker-controlled. + (Closes: #984969; CVE-2021-28153) + + -- Simon McVittie Thu, 11 Mar 2021 10:23:38 +0000 + +glib2.0 (2.66.7-1) unstable; urgency=high + + * New upstream release + - Fix another regression caused by the GHSL-2021-045 fixes in 2.66.6 + - Warn and fail on integer overflow in g_byte_array_new_take() + for arrays larger than G_MAXUINT + (Closes: #982779; CVE-2021-27218) + - Disallow using currently-undefined D-Bus connection or server flags, + to prevent forward-compatibility problems with new security-sensitive + flags that are likely to be introduced in GLib 2.68 + * Drop previous patches for GHSL-2021-045 regressions, applied upstream + + -- Simon McVittie Thu, 11 Feb 2021 17:08:14 +0000 + +glib2.0 (2.66.6-2) unstable; urgency=high + + * d/patches: Add proposed fixes for regressions in 2.66.6. + Two functions that took either a positive length, or -1 to indicate + strlen(), had assertions with the wrong sense in 2.66.6, causing some + valid uses of those functions to regress. + * d/p/debian/61_glib-compile-binaries-path.patch: Remove. + This patch turns out to be unnecessary, and is harmful for + cross-compiling. Thanks to Helmut Grohne (Closes: #982213) + * Set high urgency to get the regression fixes into bullseye + + -- Simon McVittie Mon, 08 Feb 2021 19:43:08 +0000 + +glib2.0 (2.66.6-1) unstable; urgency=high + + * New upstream release + - Fix various integer overflows, some of them potentially exploitable + (Closes: #982778; CVE-2021-27219, GHSL-2021-045) + + -- Simon McVittie Thu, 04 Feb 2021 20:24:20 +0000 + +glib2.0 (2.66.5-1) unstable; urgency=medium + + * New upstream release, equivalent to 2.66.4-27-g0051c0635 + * Drop patches that were applied upstream + + -- Simon McVittie Wed, 03 Feb 2021 19:16:01 +0000 + +glib2.0 (2.66.4-4) unstable; urgency=medium + + * d/patches: Update patch series to upstream commit 2.66.4-27-g0051c0635 + - Improve test coverage for #977961 + - Stop valgrind reporting memory leaks in GSpawn in most cases + - Partially revert security hardening from 2.66.4-2: allow + DBUS_SESSION_BUS_ADDRESS to be taken from the environment by + setcap executables (to avoid regressing gnome-keyring) and by + setgid executables (to avoid regressing msmtp). + (Closes: #981420, #981555) + Note that this is likely to be reverted in GLib 2.70.x to provide + better hardening. The D-Bus session bus is not designed to be used + by processes that have elevated privileges. + + -- Simon McVittie Wed, 03 Feb 2021 13:55:41 +0000 + +glib2.0 (2.66.4-3) unstable; urgency=medium + + * Improve patch for #977961, and add basic test coverage + + -- Simon McVittie Thu, 28 Jan 2021 19:05:50 +0000 + +glib2.0 (2.66.4-2) unstable; urgency=medium + + * d/patches: Update patch series to upstream commit 2.66.4-18-g872181c4f + (excluding Windows-specific changes) + - Security hardening: in GIO, ignore various environment variables + if GIO is (inadvisably) used in a setuid process without sanitizing + the environment first, similar to CVE-2012-3524 + - Reject very long date strings early, instead of spending time + normalizing and parsing them + - Fix recursion in GPrivate + * d/p/spawn-Don-t-set-a-search-path-if-we-don-t-want-to-search-.patch: + Make the g_spawn family only search PATH if G_SPAWN_SEARCH_PATH is used. + Previously, they would sometimes search /usr/bin:/bin:. for an + executable they should have only loaded from the current working + directory. In particular, this made gtk+3.0 fail its build-time tests + if ImageMagick display(1) happened to be installed. (Closes: #977961) + + -- Simon McVittie Wed, 27 Jan 2021 11:33:06 +0000 + +glib2.0 (2.66.4-1) unstable; urgency=medium + + * New upstream release + + -- Simon McVittie Fri, 18 Dec 2020 17:26:51 +0000 + +glib2.0 (2.66.3-2) unstable; urgency=medium + + * Apply packaging changes from experimental to unstable: + - postinst: Clean up outdated copies of GLib if present, to avoid + infrequent upgrade issues on non-merged-/usr systems. + See #911225 and #949395 for more information. + (Closes: #896019, #954960, #955331) + * Add myself to Uploaders + * Standards-Version: 4.5.1 (no changes required) + * Swap Homepage field to something more GLib-specific + * d/gbp.conf: Change upstream branch to upstream/2.66.x. + 2.67.0 was already released, so it's inaccurate to say that 2.66.x + is the latest. + + -- Simon McVittie Wed, 02 Dec 2020 12:28:42 +0000 + +glib2.0 (2.66.3-1+exp1) experimental; urgency=medium + + * Merge from unstable + + -- Simon McVittie Thu, 19 Nov 2020 20:47:54 +0000 + +glib2.0 (2.66.3-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Improve performance of processing files hidden via ./.hidden + - All other changes were already included in 2.66.2-1 + * Drop patches that were cherry-picked from upstream + * Stop reverting gtk-doc dependency version. + We now have a suitable gtk-doc in Debian. + * Drop a patch that was not applied upstream. + This was hoped to be a workaround for intermittent test failures, but + doesn't seem to have had the desired effect in practice. + * Mark the DBUS_COOKIE_SHA1 parts of gdbus-server-auth test as flaky. + This is not reliable enough to always pass on buildds, but is too + intermittent to be able to reproduce the failure in a development + environment, and DBUS_COOKIE_SHA1 is not an important enough feature + to justify failing the build for this. + As with other flaky tests, we still run this as an autopkgtest in an + attempt to get more useful information, but we ignore failure. + + -- Simon McVittie Thu, 19 Nov 2020 11:11:06 +0000 + +glib2.0 (2.66.2-1+exp1) experimental; urgency=medium + + * Branch for experimental + * postinst: Clean up outdated copies of GLib to avoid infrequent + upgrade issues on non-merged-/usr systems + (Closes: #896019, #954960, #955331) + + -- Simon McVittie Sun, 01 Nov 2020 13:11:00 +0000 + +glib2.0 (2.66.2-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Add some missing (nullable) and (not nullable) annotations + * Drop patches that were cherry-picked from upstream + * Update patch series to upstream 2.66.2-9-g4daaf303a + - Fix race in socketclient-slow test + - Cope with sending fds in a D-Bus message that takes multiple writes + - Don't skip updating polled fd sources + - Add G_GNUC_PRINTF annotation to g_trace_mark() + * d/p/glib-tests-fileutils-Make-more-use-of-g_assert_no_errno.patch, + d/p/glib-tests-fileutils-Fix-expectations-when-running-as-roo.patch: + Add proposed patch to fix a test failure when running as root + (Closes: #973271) + * d/rules: Remove migration path from legacy -dbg package. + This was most recently shipped in Debian 9, and we don't support + upgrades from anything older than Debian 10. + * Drop obsolete workaround for #887629. + We don't support upgrades from versions older than Debian 10, so we can + drop workarounds that were only relevant for the upgrade from 9 to 10. + + -- Simon McVittie Sat, 31 Oct 2020 13:54:56 +0000 + +glib2.0 (2.66.1-2) unstable; urgency=medium + + * Cherry-pick patches from the glib-2-66 branch upstream + - Fixes the regression called out in 2.66.1-1's changelog. + * Add-a-test-for-the-6-days-until-EOM-bug.patch, + Fix-the-6-days-until-the-end-of-the-month-bug.patch: Cherry-pick upstream + mr!1705 to not break on timezones built with `zic -b slim` + + -- Iain Lane Fri, 16 Oct 2020 17:38:50 +0100 + +glib2.0 (2.66.1-1) unstable; urgency=medium + + * Team upload + * New upstream release + - A performance problem where timezones were reloaded from disk + every time a GTimeZone was created has been fixed (upstream issue + #2204), but this means that changes to /etc/localtime will not take + effect until a process restarts. Future changes in a subsequent + 2.66.x release will improve this. + - Security fix for incorrect scope/zone ID parsing in URIs + - Fix invalid Pointer Arithmetic in g_path_get_basename + - Fix cookie lifetimes in GDBus DBUS_COOKIE_SHA1 mechanism + - Fix faulty logic in DNS TXT record parsing + - trash portal: Handle portal failures + - gio-tool-trash: Prevent recursion to speed up emptying trash + - glist: Clarify that g_list_free() and friends only free an entire list + - gdatetime: Avoid integer overflow creating dates too far in the past + - Translation updates + * d/p/glocalfile-Never-require-G_LOCAL_FILE_STAT_FIELD_ATIME.patch, + d/p/gdbusauthmechanismsha1-Use-the-same-timeouts-as-libdbus.patch: + Drop patches that were applied upstream + + -- Simon McVittie Mon, 12 Oct 2020 09:31:27 +0100 + +glib2.0 (2.66.0-2) unstable; urgency=medium + + * Team upload + * d/p/glocalfile-Never-require-G_LOCAL_FILE_STAT_FIELD_ATIME.patch: + Add proposed patch to fix file copying on ZFS and CIFS (Closes: #970228) + * d/p/gdbus-server-auth-Don-t-usually-test-non-EXTERNAL-repeate.patch: + Add proposed patch to work around DBUS_COOKIE_SHA1 test failures + * d/p/Revert-gtk-doc-dependency-to-1.32.patch: Move to debian subdirectory. + This patch is not intended to go upstream. + + -- Simon McVittie Tue, 15 Sep 2020 22:12:49 +0100 + +glib2.0 (2.66.0-1) unstable; urgency=medium + + * Team upload + * New upstream stable release + - Fix missing tab in makefile rule + - guri: Fix user passed to g_uri_split_with_user() not being NULL'd + - Translation updates: + * d/watch: Only watch for stable releases + * d/p/gdbusauthmechanismsha1-Use-the-same-timeouts-as-libdbus.patch: + Add patch to fix intermittent test failures on slower architectures. + This narrowly missed the upstream code freeze, and should be in 2.66.1. + + -- Simon McVittie Fri, 11 Sep 2020 09:18:58 +0100 + +glib2.0 (2.65.3-1) experimental; urgency=medium + + * New upstream release + + Fixes to the new `statx()` calls — note that since GLib 2.65.2 uses + `statx()` (if available) instead of + `stat()`/`fstat()`/`lstat()`/`fstatat()`, syscall sandboxing for third + party applications might need to be updated + + Also includes "Fix splice behavior on cancellation", a fix for a bug + which was affecting tracker - particularly its autopkgtests. + + -- Iain Lane Thu, 03 Sep 2020 18:55:20 +0100 + +glib2.0 (2.65.2-1) experimental; urgency=medium + + * Team upload + * New upstream development release + * d/rules: Run gtk-doc checks, even if building indep-only. + Previously we would only run the gtk-doc checks if building + architecture-dependent and -independent packages in the same build, + which is done on Ubuntu amd64 buildds, but not on any Debian buildds. + * Reduce dependency to the version of gtk-doc-tools from unstable. + Instead of being some random snapshot from upstream git, this is the + last release plus some selected patches. In particular, it has enough + fixes to make the gtk-doc tests pass (Closes: #968975). + * d/libglib2.0-tests.lintian-overrides: Update + + -- Simon McVittie Tue, 25 Aug 2020 12:44:02 +0100 + +glib2.0 (2.65.1-1) experimental; urgency=medium + + [ Sebastien Bacher ] + * debian/control.in: + - let libglib2.0-tests Depends on libglib2.0-0 (= ${binary:Version}), + otherwise we can end up with failures due to out of sync versions + + [ Simon McVittie ] + * d/shlibs.local: Upgrade all binary packages in lockstep. + Like many projects where one source package builds multiple binary + packages, GLib has private headers that share non-public interfaces + between its binary packages. Instead of setting this up for individual + binary packages, we can tell dpkg-shlibdeps to generate lockstep + dependencies whenever one of our binary packages depends on our shared + libraries. + * d/watch, d/control.in, d/gbp.conf: Branch for experimental + * New upstream development release + - Require the experimental version of gtk-doc-tools. + GLib 2.65.x requires a version that hasn't been released yet. + - Update symbols file + - Drop patches that were applied upstream + + -- Simon McVittie Fri, 07 Aug 2020 15:44:34 +0100 + +glib2.0 (2.64.4-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Improve async-signal-safety + * d/tests/build: Don't exercise static linking for GIO. + libmount will no longer support being linked statically from 2.35.2-8 + onwards. For now I'm continuing to test that the other libraries can + still be statically linked, but please consider them to be "at risk". + (Closes: #963933) + * Re-enable libmount support. + libmount no longer depends on libcryptsetup, avoiding the various + crashes that we are working around. Future versions will dlopen it + on-demand, which should also avoid those crashes. Bump the + build-dependency to a suitable version. + * d/p/tests-Use-g_assert_-in-cancellable-test-rather-than-g_ass.patch, + d/p/gcancellable-Fix-minor-race-between-GCancellable-and-GCan.patch: + Split combined d/p/git_gsource_segfault.patch into its two component + upstream commits, and add metadata + * d/p/glib-compile-resources-Fix-exporting-on-Visual-Studio.patch, + d/p/gdesktopappinfo-Fix-unnecessarily-copied-and-leaked-URI-l.patch: + Add post-release bugfixes from upstream + + -- Simon McVittie Tue, 07 Jul 2020 13:33:01 +0100 + +glib2.0 (2.64.3-2) unstable; urgency=medium + + * Team upload + * Temporarily disable libmount support. + Recent Debian revisions of libmount pull in libcryptsetup as a + dependency, for dm-verity support. libcryptsetup depends on json-c + and OpenSSL, causing crashes due to symbol conflicts with other + JSON libraries (jansson and json-glib, for example in firewalld and + virt-manager) and with statically-linked copies of OpenSSL (for + example in Steam and Minecraft). Until this is resolved in some + other way, disable libmount and parse /etc/fstab and /proc/mounts + ourselves, as we do in libglib2.0-udeb. + Mitigates: #963933, #963932, #963525, #963721 + + -- Simon McVittie Thu, 02 Jul 2020 10:05:03 +0100 + +glib2.0 (2.64.3-1) unstable; urgency=medium + + * Team upload + + [ Laurent Bigonville ] + * Drop the libgio-fam package, and install the fam GIO plugin in + libglib2.0-0 on Hurd ports. See: #885011 (Closes: #875915) + * Stop building the libgio-fam package on kFreeBSD ports. + It is no longer necessary now that gkqueuefilemonitor is available. + + [ Simon McVittie ] + * Clarify changelog entry regarding Hurd and kFreeBSD + * New upstream stable release + + -- Simon McVittie Fri, 29 May 2020 20:24:33 +0100 + +glib2.0 (2.64.2-1) unstable; urgency=medium + + [ Simon McVittie ] + * Add Breaks on older versions of gimp, which used a syntactically + invalid property name in a plugin, and would crash when GObject + rejects syntactically invalid property names + + [ Sebastien Bacher ] + * New upstream release + * debian/patches/git_gsource_segfault.patch: + - backport an upstream git change to fix a signal handler disconnect + segfault situation (lp: #1872153) + + -- Sebastien Bacher Wed, 15 Apr 2020 23:01:50 +0200 + +glib2.0 (2.64.1-1) unstable; urgency=medium + + * Team upload + * New upstream stable release + * d/p/tests-Skip-MemoryMonitor-test-if-GObject-Introspection-is.patch: + Drop patch, applied upstream + * Add Breaks on glib-networking-tests older than 2.63.2. + Those versions had a test that relied on TLS version fallback + behaviour that has now been removed. (Closes: #953766) + + -- Simon McVittie Sun, 15 Mar 2020 18:39:17 +0000 + +glib2.0 (2.64.0-2) unstable; urgency=medium + + * Team upload + * Merge packaging changes from unstable with new upstream release from + experimental + * d/control.in: Add Breaks on libgladeui-2-6 before 3.22.2. + Older versions used a syntactically invalid property name + "support warning", which GObject used to canonicalize to + "support-warning". GLib 2.64 made this check more strict (see #953010). + + -- Simon McVittie Tue, 10 Mar 2020 21:22:18 +0000 + +glib2.0 (2.64.0-1) experimental; urgency=medium + + * Team upload + * New upstream release + - Fixes a vulnerability where GSocketClient sometimes forgot to use + a configured proxy (CVE-2020-6750, Closes: #948554) + - Stop installing gio-launch-desktop, which no longer exists + - d/p/docs-Don-t-install-object-manager-example-separately.patch: + Drop, applied upstream + * d/p/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch: + Treat testfilemonitor as a flaky test + * Standards-Version: 4.5.0 (no changes required) + * New upstream release + * d/p/tests-Skip-MemoryMonitor-test-if-GObject-Introspection-is.patch: + Skip MemoryMonitor test if GObject-Introspection is too old to know it + * Install a shell script implementation of the old gio-launch-desktop + executable. While not required for *this* GLib, it is required by + old processes that already had the old GLib (2.57.2 to 2.63.5) in + memory before the upgrade. This can be removed after Ubuntu 20.04 + and Debian 11 are both released. + + -- Simon McVittie Fri, 28 Feb 2020 17:16:04 +0000 + +glib2.0 (2.63.5-2) experimental; urgency=medium + + * Skip-unreliable-gdbus-threading-tests--by-default.patch: Skip all of + gdbus-threading test_method_calls_in_thread() has become (more?) + unreliable too. When skipped, the test bus doesn't get torn down properly + - it times out. Let's stop running these tests for now, until they are + made reliable. + + -- Iain Lane Wed, 19 Feb 2020 17:16:16 +0000 + +glib2.0 (2.63.5-1) experimental; urgency=medium + + [ Iain Lane ] + * New upstream release + + [ Philip Withnall ] + * Rework 01_gettext-desktopfiles.patch to not add new public API. + Downstreams should not be adding new public API to GLib. From some code + searching, this doesn’t appear to be used in more than one or two places, + so won’t be too inconvenient to drop. The original patch should either be + upstreamed (I’d be open to some form of it, if there’s still evidence it’s + useful) or dropped. If it’s upstreamed, the new keys should be + standardised. The alternative to this was to document the added public + API; its addition was causing the new gtk-doc tests in GLib to fail. + * Bump gtk-doc-tools dependency to >= 1.32-4 as GLib requires some fixes + pushed to gtk-doc after its 1.32 release. + * control: Bump Meson dependency to >= 0.52.0 for building the documentation + * Drop PKCS#11 APIs added in 2.63.1 (not stable yet) + - g_tls_certificate_new_from_pkcs11_uris() + * Remove patches applied upstream: + - tests-Skip-GMemoryMonitor-tests-if-the-dbusmock-template-.patch + - tests-optional-portal.patch + * d/p/docs-Don-t-install-object-manager-example-separately.patch: Add patch + from upstream to disable incorrect installation of some example + documentation + * Rework libmount Meson argument as it’s now a feature; see !1344 upstream + + -- Iain Lane Mon, 17 Feb 2020 17:47:17 +0000 + +glib2.0 (2.63.3-3) experimental; urgency=medium + + * debian/control.in: + - lower the libglib2.0-tests Depends on xdg-desktop-portal to a + Recommends since the portal is not available on some architectures + * debian/patches/tests-optional-portal.patch: + - skip the new memory monitor tests if the portal is not available, + that allows the tests to be still successful on architectures were + the portal is not available (e.g Ubuntu/i386) + + -- Sebastien Bacher Wed, 22 Jan 2020 09:36:27 +0200 + +glib2.0 (2.63.3-2) experimental; urgency=medium + + * debian/control.in: + - libglib2.0-tests Depends on xdg-desktop-portal, it's required by the + new low memory tests (and got enabled by the new python-dbusmock) + + -- Sebastien Bacher Thu, 16 Jan 2020 10:28:46 +0100 + +glib2.0 (2.63.3-1) experimental; urgency=medium + + [ Iain Lane ] + * New upstream release + + Add a `--glib-min-version` argument to `gdbus-codegen` which controls + breaks in the API of generated code + + Add `g_clear_list()` API to clear `GList`s to `NULL` + + Add a `GMemoryMonitor` API to be notified of memory pressure situations + using the low-memory-monitor project + + Add support for dispose functions for `GSource` implementations + + Tighten up validation of GObject signal and property names, allowing + performance improvements + * debian/tests/build: Style fixes, thanks to shellcheck. + * d/p/d/Disable-some-tests-on-slow-architectures-which-keep-faili.patch: + Rebase. Upstream have disabled these tests by default too (unless slow + mode is enabled), so we don't need to add a patch to do a similar thing. + * debian/libglib2.0-0.symbols: New symbols for 2.63.3 + * d/p/tests-Skip-GMemoryMonitor-tests-if-the-dbusmock-template-.patch: Add. + We don't have a new enough dbusmock in Debian at the minute (one is not + released yet). Skip the test if the required template isn't available. + * control: Add Depends for the new memory-monitor tests. + There are new tests, written in python, for GMemoryMonitor. They require + dbus-python, pygobject, and the GI bindings for GLib and GIO. + + [ Steve Langasek ] + * debian/tests/build: Make cross-test friendly + autopkgtest is soon to get a `-a ARCHITECTURE` switch, which will + cross-test autopkgtests. This is to be detected by the presence of the + `dpkg-architecture`-style family of variables being set in the + environment. + For build tests like `glib2.0`'s `build` test, this means that we should + test "${DEB_HOST_ARCH}" and invoke the cross toolchain as necessary. + (Closes: #946355) + + -- Iain Lane Wed, 18 Dec 2019 14:02:00 +0000 + +glib2.0 (2.63.2-1) experimental; urgency=medium + + * Team upload + * Merge packaging changes from unstable + - Support for pkg.glib2.0.noinsttest build profile + * d/control.in: Refer to debian/experimental branch. + This avoids false-positive warnings from vcswatch. + * New upstream release + - Drop patches that were applied upstream + * Rename pkg.glib2.0.noinsttest build profile to noinsttest. + This is now registered on . + * Update symbols file + + -- Simon McVittie Sat, 30 Nov 2019 10:55:48 +0000 + +glib2.0 (2.63.1-2) experimental; urgency=medium + + * d/p/Revert-glocalfileinfo-Only-return-file-mode-not-type-as-U.patch: + Revert "glocalfileinfo: Only return file mode, not type, as UNIX_MODE + attribute" This reverts commit bfdc5fc4fc84ef8518d2d1a328c8482cf5a38e98. + This commit changes the semantics of the `unix::mode` attribute, which + some things (the one we've noticed is ostree) rely on. + * d/p/test_copy_preserve_mode-Adjust-for-revert-semantics.patch: + test_copy_preserve_mode: Adjust for revert semantics. Now we're returning + the file type again, we need to mask it out to compare with the mode. + + -- Iain Lane Mon, 18 Nov 2019 13:59:35 +0000 + +glib2.0 (2.63.1-1) experimental; urgency=medium + + * New upstream release + - Add `g_array_steal()`, `g_ptr_array_steal()` and `g_byte_array_steal()` + APIs + - Add `g_get_os_info()` API + - Add `GMainContextPusher` API + - Add `g_warning_once()` API + - Allow passing empty `GValue`s to `g_param_value_set_default()` + - Always resolve `localhost` to loopback address in `GResolver` + - Escape header guards generated by `gdbus-codegen` better + - Fix crash in `g_spawn()` with high FD numbers due to use of `select()` + rather than `poll()` + - Limit recursion in `g_variant_parse()` + - Several usability improvements to command line `gio` tool + * debian/libglib2.0-0.symbols: Add new symbols for this release + * debian/patches/*: + - Drop backports we had which are in this release. + - Update to upstream master at cc1b53f74. There are several test fixes + that we might as well grab now. + + -- Iain Lane Wed, 06 Nov 2019 16:37:24 +0000 + +glib2.0 (2.62.5-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Fixes a vulnerability where GSocketClient sometimes forgot to use + a configured proxy (CVE-2020-6750, Closes: #948554) + * Build-depend on libnss-myhostname | netbase if running tests. + This is an attempt to work around localhost not being a resolvable + name in some build environments, notably reproducible-builds. + (See #948834) + * Put the result of `getent ahosts localhost` and + `getent ahosts $(hostname)` in the build log, to check whether those + names are resolvable in the build environment. + * d/p/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch: + Treat testfilemonitor as a flaky test + * Standards-Version: 4.5.0 (no changes required) + + -- Simon McVittie Tue, 25 Feb 2020 12:19:00 +0000 + +glib2.0 (2.62.4-2) unstable; urgency=medium + + * Team upload + * Adjust dependencies to avoid broken partial upgrades on arm64 during + libffi7 transition: + - Bump versioned Depends on libffi-dev to get a guarantee that we'll + depend on libffi7 + - Add Breaks on libgirepository-1.0-1 (<< 1.62.0-4~) so we cannot + get a GObject built with libffi7 but a libgirepository built with + libffi6 + + -- Simon McVittie Mon, 03 Feb 2020 15:12:40 +0100 + +glib2.0 (2.62.4-1) unstable; urgency=medium + + * Team upload + + [ Steve Langasek ] + * debian/tests/build: Make cross-test friendly (Closes: #946355) + + [ Iain Lane ] + * debian/tests/build: Style fixes + + [ Simon McVittie ] + * New upstream release + + -- Simon McVittie Mon, 30 Dec 2019 13:01:04 +0000 + +glib2.0 (2.62.3-2) unstable; urgency=medium + + * Team upload + * Rename pkg.glib2.0.noinsttest build profile to noinsttest. + This is now registered on . + + -- Simon McVittie Sun, 01 Dec 2019 16:05:01 +0000 + +glib2.0 (2.62.3-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Drop patches that were applied upstream + * Don't build libglib2.0-tests under pkg.glib2.0.noinsttest build profile. + This is a prototype of the proposed standard build profile noinsttest. + If the build profiles include both nocheck and pkg.glib2.0.noinsttest, + we can drop the libdbus-1-dev build-dependency without harming test + coverage or altering the contents of binary packages. + * d/gbp.conf: Use upstream/2.62.x branch + + -- Simon McVittie Mon, 25 Nov 2019 08:47:58 +0000 + +glib2.0 (2.62.2-3) unstable; urgency=medium + + * Team upload + + [ Iain Lane ] + * control: Drop `debian/experimental` from Vcs-* + + [ Simon McVittie ] + * Build-depend on libdbus-1-dev for better test coverage + * Update to upstream commit 2.62.2-28-g3cf25070e: + - d/p/goption-Relax-assertion-to-avoid-being-broken-by-kdeinit5.patch: + Fix assertion failure when called from a process that overwrites its + argv, such as kdeinit5 + - d/p/gdbus-peer-Specifically-listen-on-127.0.0.1.patch: + Improve reliability of gdbus-peer test in some container environments + - d/p/gdbusserver-Delete-socket-and-nonce-file-when-stopping-se.patch, + d/p/gdbusserver-Keep-a-strong-reference-to-the-server-in-call.patch, + d/p/gdbusauthmechanismsha1-Remove-unnecessary-g_warning-calls.patch, + d/p/gdbusauthmechanismsha1-Create-.dbus-keyrings-directory-re.patch, + d/p/tests-Move-main-loop-and-test-GUID-into-test-functions-in.patch, + d/p/tests-Isolate-directories-in-gdbus-peer-test.patch, + d/p/gdbus-peer-test-Improve-diagnostics-if-g_rmdir-fails.patch, + d/p/gdbus-peer-test-Stop-GDBusServer-before-tearing-down-temp.patch, + d/p/gdbus-peer-test-Use-unix-dir-address-if-exact-format-does.patch, + d/p/gdbus-server-auth-test-Create-temporary-directory-for-Uni.patch: + Mark as applied upstream in 2.62.x branch + * d/p/gdbus-server-auth-test-Include-gcredentialsprivate.h.patch: + Apply patch from 2.63.x to fix missing coverage in test for #941018 + * d/p/Make-ld-executable-configurable.patch: + Apply patch from 2.63.x to use cross ld where necessary + * d/p/gdbus-server-auth-test-Create-temporary-directory-for-Uni.patch: + Mark as applied upstream in 2.63.x branch + * Improve patch metadata: use more URLs for bug references + + -- Simon McVittie Wed, 06 Nov 2019 09:02:14 +0000 + +glib2.0 (2.62.2-2) unstable; urgency=medium + + * Team upload + * Update to upstream commit 2.62.2-14-gfcbb88823: + - d/p/gdesktopappinfo-Allocate-DesktopFileDir-structs-dynamical.patch, + d/p/gdesktopappinfo-Cancel-file-monitor-when-resetting-a-Desk.patch, + d/p/glocalfilemonitor-Keep-a-weak-ref-to-the-monitor-in-GFile.patch: + Fix intermittent test failures for GDesktopAppInfo (Closes: #941550) + - d/p/gvariant-Limit-recursion-in-g_variant_parse.patch: + Ensure that parsing a text-format GVariant does not run out of stack + space + - d/p/tests-Use-objcopy-from-the-cross-compilation-file-if-conf.patch, + d/p/docs-Add-objcopy-to-example-cross-compilation-file.patch: + Use the appropriate architecture's objcopy when cross-compiling + - d/p/gtestutils-Add-additional-non-NULL-check-in-g_assert_cmpm.patch: + Avoid false positive NULL dereference warnings in g_assert_cmpmem() + - d/p/gspawn-Port-to-g_poll-from-select.patch: + Fix launching subprocesses when a very large number of fds are open + - d/p/gcredentialsprivate-Document-the-various-private-macros.patch, + d/p/credentials-Invalid-Linux-struct-ucred-means-no-informati.patch, + d/p/GDBus-prefer-getsockopt-style-credentials-passing-APIs.patch: + Ensure libdbus clients can authenticate with a GDBusServer like the + one in ibus (Closes: #941018) + * d/p/gdbusserver-Delete-socket-and-nonce-file-when-stopping-se.patch, + d/p/gdbusserver-Keep-a-strong-reference-to-the-server-in-call.patch, + d/p/Add-a-test-for-GDBusServer-authentication.patch: + Backport regression test for #941018 from upstream git master + * d/p/gdbusauthmechanismsha1-Remove-unnecessary-g_warning-calls.patch, + d/p/gdbusauthmechanismsha1-Create-.dbus-keyrings-directory-re.patch, + d/p/tests-Move-main-loop-and-test-GUID-into-test-functions-in.patch, + d/p/tests-Isolate-directories-in-gdbus-peer-test.patch: + Backport reliability fixes for gdbus-peer test from upstream git master + * d/p/gdbus-peer-test-Improve-diagnostics-if-g_rmdir-fails.patch, + d/p/gdbus-peer-test-Stop-GDBusServer-before-tearing-down-temp.patch, + d/p/gdbus-peer-test-Use-unix-dir-address-if-exact-format-does.patch, + d/p/gdbus-server-auth-test-Create-temporary-directory-for-Uni.patch: + Add some proposed patches to improve GDBus unit tests + * d/p/debian/mimeapps-test-Mark-as-flaky.patch: + Drop patch, hopefully no longer needed with #941550 fixed + * d/p/debian/taptestrunner-Stop-looking-like-an-executable-script.patch: + Make taptestrunner non-executable to avoid a Lintian warning + + -- Simon McVittie Wed, 30 Oct 2019 08:45:56 +0000 + +glib2.0 (2.62.2-1) unstable; urgency=medium + + * New upstream release + + Fixes use after free when calling g_dbus_connection_flush_sync() in a + dedicated thread (LP: #1848202) + + -- Iain Lane Fri, 25 Oct 2019 10:54:42 +0100 + +glib2.0 (2.62.1-1) unstable; urgency=medium + + * Team upload + * d/watch: Only watch for even-numbered (stable) releases + * New upstream release + - Fix regression that made G_FILE_COPY_TARGET_DEFAULT_PERMS result in + private permissions rather than respecting umask (Closes: #505398) + - d/p/g_file_info_get_modification_date_time-Calculate-in-integ.patch, + d/p/Always-build-tests-if-we-enabled-installed-tests.patch: + Drop patches that were applied upstream + * d/p/debian/mimeapps-test-Mark-as-flaky.patch: + Mark mimeapps test as flaky (see #941550) + + -- Simon McVittie Mon, 07 Oct 2019 09:46:24 +0100 + +glib2.0 (2.62.0-3) unstable; urgency=medium + + * Team upload + * Merge packaging from 2.60.x branch previously in unstable + - No changes since 2.62.0-2, except in d/changelog + - d/p/debian/Disable-an-optimization-when-building-with-gcc-9.patch: + Remove workaround for #931921, which turned out to be a clutter bug + * d/p/Always-build-tests-if-we-enabled-installed-tests.patch: + Add patch to fix installation of installed-tests in cross-builds + (Closes: #941509) + * d/p/g_file_info_get_modification_date_time-Calculate-in-integ.patch: + Add patch to fix intermittent g-file-info test failures on i386 + (Closes: #941547) + * libglib2.0-dev: Suggest libgirepository1.0-dev, for the GIR files + (Closes: #914152) + * d/gbp.conf: Use debian/master branch + * Standards-Version: 4.4.1 (no changes required) + + -- Simon McVittie Wed, 02 Oct 2019 09:13:12 +0100 + +glib2.0 (2.60.6-2) unstable; urgency=medium + + * Team upload + * d/rules: Edit debcrossgen output instead of using a modified version. + This fixes use of CFLAGS, etc. during cross-compilation. + (Closes: #933560) + * Remove obsolete permissions fixing. + Issue 1539 was fixed upstream. + * d/p/debian/Disable-an-optimization-when-building-with-gcc-9.patch: + Disable an optimization when building with gcc-9, instead of forcing + gcc-8. This avoids depending on an old gcc, and should be easier to + deal with for cross-compilation. (Workaround for #931921) + * d/p/gmessages-Only-use-structured-logs-if-GLIB_VERSION_MAX_AL.patch: + Update to upstream glib-2-60 branch at commit 2.60.6-2-ga365528f6 + - Don't use structured logging if GLIB_VERSION_MAX_ALLOWED < 2.56 + + -- Simon McVittie Tue, 13 Aug 2019 10:32:40 +0100 + +glib2.0 (2.62.0-2) unstable; urgency=medium + + * Team upload. + * Upload to unstable. (Closes: #940161) + + -- Andreas Henriksson Mon, 30 Sep 2019 12:33:16 +0200 + +glib2.0 (2.62.0-1) experimental; urgency=medium + + * New upstream release + + Fix new `GFileInfo` APIs to work when + `G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC` was not queried + + -- Iain Lane Mon, 09 Sep 2019 15:41:48 +0100 + +glib2.0 (2.61.3-1) experimental; urgency=medium + + * New upstream release + * d/p: Drop cherry-picks from upstream branch which we now have + * d/p/d/Disable-an-optimization-when-building-with-gcc-9.patch: Drop, + clutter has been fixed now (thanks Simon) + * d/p/*: Refresh via gbp-pq as necessary + + -- Iain Lane Wed, 04 Sep 2019 17:29:23 +0100 + +glib2.0 (2.61.2-2) experimental; urgency=medium + + * Team upload + * d/p/cond-test-Don-t-make-assumptions-about-struct-sigaction-m.patch: + Add proposed patch to fix FTBFS due to a test failure on mips* + + -- Simon McVittie Tue, 13 Aug 2019 10:29:29 +0100 + +glib2.0 (2.61.2-1) experimental; urgency=medium + + * Team upload + * New upstream release + * d/patches: Update to upstream git master, commit 2.61.2-23-g870b30bd7 + - Fix regression in g_mkdir_with_permissions() + - Fix a memory leak + - Update translations: es, id, ro + * Merge changes from unstable + * Refresh patch series + * d/p/debian/06_thread_test_ignore_prctl_fail.patch: + Use g_test_skip() when skipping test + * d/p/GIO-tests-Don-t-do-clever-tricks-with-objcopy.patch: + Drop workaround for #932287, and build-depend on fixed binutils on + mips64el instead + * d/rules: Edit debcrossgen output instead of using a modified version. + This fixes use of CFLAGS, etc. during cross-compilation. + (Closes: #933560) + * d/libglib2.0-0.symbols: Update + * Remove obsolete permissions fixing. + Issue 1539 was fixed upstream. + * libglib2.0-tests: Depend on libglib2.0-dev-bin. + This is required for the new mkenums and genmarshal tests. + * d/p/debian/Disable-an-optimization-when-building-with-gcc-9.patch: + Disable an optimization when building with gcc-9, instead of forcing + gcc-8. This avoids depending on an old gcc, and should be easier to + deal with for cross-compilation. (Workaround for #931921) + + -- Simon McVittie Mon, 12 Aug 2019 09:32:26 +0100 + +glib2.0 (2.60.6-1) unstable; urgency=medium + + * Team upload + * New upstream release, functionally equivalent to 2.60.5 with the + patches we were already applying + - d/p/portal-Add-a-getter-for-dconf-access.patch, + d/p/settings-Tweak-priorities-for-keyfile-backend.patch, + d/p/key-file-Handle-filename-being-NULL.patch: + Drop, applied upstream + * d/p/tests-Fix-data-race-in-gmenumodel-test.patch, + d/p/tests-Fix-data-race-in-task-test.patch: + Add patches from upstream git master to fix data races in tests. + In particular, the one for gmenumodel might solve an unreproducible + test failure on i386 (see #932678). + * d/p/debian/gmenumodel-test-Mark-as-flaky.patch, + d/p/debian/gvariant-test-Don-t-run-at-build-time-on-mips.patch: + Skip more tests at build-time and during the non-flaky autopkgtest. + The unreproducible gmenumodel test failure on i386 might in fact be + fixed by d/p/tests-Fix-data-race-in-gmenumodel-test.patch, but it's + hard to be sure about that. The gvariant fuzz test is catastrophically + slow on certain mips CPUs and so is impractical to run there. + (Closes: #932678) + * Standards-Version: 4.4.0 (no changes required) + * Use debhelper compat level 12 + - Stop explicitly passing -V to dh_makeshlibs, it is now the default + - Disable dh_dwz for libglib2.0-udeb. + This avoids an apparent debhelper bug in which dh_dwz generates + multifiles for udebs, but dh_strip does not remove them from the + udeb's staging directory. (Workaround for #933212) + * Stop overriding libexecdir. + Since FHS 3.0 (Policy 4.1.5), /usr/libexec is considered valid, + and since debhelper compat level 12 it is the default. + In this particular package this only affects the installed-tests. + * Remove an obsolete Lintian override + + -- Simon McVittie Sat, 27 Jul 2019 16:57:55 +0100 + +glib2.0 (2.60.5-1) unstable; urgency=medium + + * Team upload + * Prepare GLib 2.60.x stable branch for unstable + * New upstream release + * d/p/portal-Add-a-getter-for-dconf-access.patch, + d/p/settings-Tweak-priorities-for-keyfile-backend.patch, + d/p/key-file-Handle-filename-being-NULL.patch: + Add post-release fixes from upstream glib-2-60 branch + * d/p/GIO-tests-Don-t-do-clever-tricks-with-objcopy.patch: + Don't do strange things with objcopy while testing GResource, + while we work out what is going on in mips64el builds. + Mitigates: #932287 + + -- Simon McVittie Wed, 17 Jul 2019 21:36:30 +0100 + +glib2.0 (2.61.1-2) experimental; urgency=medium + + * control, rules: Build with gcc-8. See #931921 - when we're built with + gcc-9, some applications that use GLib might start hanging. + + -- Iain Lane Fri, 12 Jul 2019 11:37:01 +0100 + +glib2.0 (2.61.1-1) experimental; urgency=medium + + * New upstream release + + `g_unichar_isxdigit()` and `g_unichar_xdigit_value()` now handle + full-width characters (U+FF21–U+FF26 and U+FF41–U+FF46) + + Deprecate `gtester` utility and its test reporting format and enable TAP + output by default instead — the `--tap` option to tests is now a no-op + + Add `g_test_summary()` to allow test authors to programmatically summarise + what each unit test in a test suite does + * Upgrade to Unicode Character Database v12.1 + + More IPv6 Happy Eyeballs fixes to `GNetworkAddress` and `GSocketClient` + + Fix valgrind and gdb support for the new `GHashTable` changes + + Fix GTask wait times growing faster than the number of task threads + + Add `g_autoqueue()` helper macros, similar to `g_autolist()` + + Add pre-allocated link helpers for `GList` and `GQueue`: + - `g_list_insert_before_link()` + - `g_queue_insert_before_link()` + - `g_queue_insert_after_link()` + + Improve network availability detection with NetworkManager to treat lower + levels of connectivity as having reduced availability + + Add `g_clear_signal_handler()` to allow disconnecting from a `GObject` + signal and clearing the signal handler ID to zero in a single call + + Add `g_autoptr()` support for `GRWLock` + * 81-skip-monitor-test-on-non-linux.patch: Drop. This test was removed + upstream. + * debian/libglib2.0-0.symbols: Update + + -- Iain Lane Fri, 05 Jul 2019 17:45:06 +0100 + +glib2.0 (2.60.4-1) experimental; urgency=medium + + * New upstream release (LP: #1832457) + + Fixes to improved network status detection with NetworkManager (#1788) + + Leak fixes to some `glib-genmarshal` generated code + + Further fixes to the Happy Eyeballs (RFC 8305) implementation + + File system permissions fix to clamp down permissions in a small time window + when copying files (CVE-2019-12450) + + Bugs fixed: + - Please revert #535 gmacros: Try to use the standard __func__ first in + G_STRFUNC + * gfile-Limit-access-to-files-when-copying.patch: Drop. It's in this version + upstream. + * d/p/*: Refresh through gbp pq + + -- Iain Lane Wed, 12 Jun 2019 09:15:11 +0100 + +glib2.0 (2.60.3-2) experimental; urgency=medium + + * Team upload + * d/p/gfile-Limit-access-to-files-when-copying.patch: + Backport patch from upstream to ensure files don't temporarily have + less restrictive permissions during copying + (Closes: #929753, CVE-2019-12450) + * Drop d/p/debian/04_homedir_env.patch: + Remove legacy support for Debian-specific G_HOME environment variable. + GLib has respected the HOME environment variable in the conventional + way since wheezy. Only two packages (pygtk and ruby-graphviz) still + set G_HOME without also setting HOME. + * Drop d/p/debian/90_gio-modules-multiarch-compat.patch: + Remove legacy support for loading modules from /usr/lib/gio/modules. + All the known packages containing GIO modules (dconf, glib-networking + and gvfs) migrated to /usr/lib/${DEB_HOST_MULTIARCH}/gio/modules + before wheezy. + * Register documentation in doc-base via symlinks in /usr/share/doc. + The doc-base specification requires this, presumably for the benefit + of tools that export /usr/share/doc via HTTP (see #925200), and + Lintian 2.12 added a warning for not doing so. + + -- Simon McVittie Tue, 04 Jun 2019 11:03:28 +0100 + +glib2.0 (2.60.3-1) experimental; urgency=medium + + * New upstream releases 2.60.1 2.60.2 2.60.3, fixing many bugs: + + build: Fix a typo in the test whether _NL_ABALTMON_n is supported + + Critical in g_socket_client_async_connect_complete + + Fix crash when displaying notifications on macOS (!786) + + Fix documentation for `gdbus-tool wait` to use correct units + + Fix typo in German translation + + glib/date test fails + + glib/gconstructor.h: Include stdlib.h for MSVC builds + + GNetworkAddressAddressEnumerator unsafely modifies cache in + GNetworkAddress + + gnetworkaddress: Fix parallel enumerations interfering with eachother + + gnetworkmonitornm: Fix network available detection + + GResource generation test incompatible with stable LLVM on Linux + + gschema.dtd: Add target attribute to alias + + gsocketclient: Fix a leak in the connection code + + Improve network status detection with NetworkManager + + Leaks in gsocketclient.c connection code + + test_month_names: assertion failed + + tests: Update month name check for Greek locale + + Update gdb pretty-printer for GHashTable + + Various fixes to small key/value support in `GHashTable` + + New GHashTable implementation confuses valgrind + + more GHashTable fixes + + GDB pretty-printer for GHashTable no longer works + + ghash: Disable small-arrays under valgrind + + -- Iain Lane Thu, 23 May 2019 16:59:32 +0100 + +glib2.0 (2.60.0-1) experimental; urgency=medium + + * New upstream release + + Further fixes to the Happy Eyeballs (RFC 8305) implementation + + Add support for the XDG trash portal + * Call dh_python3 for all packages and add Depends to libglib2.0-tests. + The tests now ship a "static-link.py" test. While it early-exits + currently, we still need the right dependencies to be able to do that. + Call dh_python3 for libglib2.0-test's private directory, and while we're + here make sure that it is called for all packages too. + * flaky autopkgtest: `closures` has been renamed to `closure-refcount` + * Refresh and drop patches. + - d/p/flaky-socket-service-test/*: Drop, applied upstream. + - d/p/debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch: + Refresh. + + -- Iain Lane Tue, 05 Mar 2019 15:32:41 +0000 + +glib2.0 (2.59.3-2) experimental; urgency=medium + + [ Philip Withnall ] + * debian: Drop GVariant alignment patches which are no longer needed. + The upstream 2.59.0 release contained commit + 0f2a6c61c9c5e34d57293fb6987b21f3d1feb1cb, which automatically aligns + GVariants at construction time. The realignment in the tests was a + workaround for this. + See upstream issue https://gitlab.gnome.org/GNOME/glib/issues/1342. + + [ Iain Lane ] + * Cherry-pick fixes for upstream bug #1679 to fix a flaky test. + This is apparently more flaky on the autopkgtest machines than elsewhere + - it's quite consistently failing there. + + -- Iain Lane Wed, 27 Feb 2019 10:21:40 +0000 + +glib2.0 (2.59.3-1) experimental; urgency=medium + + * New upstream release + + Fix support for g_get_user_special_dir() on macOS, including support for + the Downloads directory + + Ensure that cancelling a GTask cannot cause its callback to be called + synchronously (in the same call chain as the original *_async() call) + + Further fixes to the Happy Eyeballs (RFC 8305) implementation + + Various fixes for installation of installed tests + * Refresh and drop patches. + Drop gio-tests-Install-test1.overlay-file-when-building-instal.patch, + tests-Install-the-slow-connect-preload.so-library-and-use.patch, + fixed upstream. + + -- Iain Lane Wed, 20 Feb 2019 14:25:13 +0000 + +glib2.0 (2.59.2-2) experimental; urgency=medium + + * Install `test1.overlay' file, which is needed for the installed tests. + * tests: Install the slow-connect-preload.so library and use it + + -- Iain Lane Mon, 11 Feb 2019 10:25:27 +0000 + +glib2.0 (2.59.2-1) experimental; urgency=medium + + * New upstream release + + Fix check on GDBusMessage size when reading it. + + Add async GIO API: g_file_query_default_handler_async(), + g_app_info_launch_uris_async() + + Fix some bugs in the Happy Eyeballs implementation. + + Install a new generated header with enum types for Unicode enums. + + Support the XDG trash portal. + + Autotools support is gone. + + g_format_size() now uses a no-break space to separate digits and units; + translations will need to be updated accordingly. + + New g_queue_clear_full() API. + + Fix argument quoting on win32 when spawning subprocesses. + + Allow polling more than 64 handles on win32 using g_poll(). + + Tag various tests as ‘flaky’. These are no longer run routinely on our + upstream CI machines, and downstream packagers may want to not run them + (or not treat those test failures as package build failures) on their + test machines either. They are in the `flaky` test suite. + + Add overlay support to g_resources_get_info(). + + Support defaults and locks in the keyfile GSettings backend. This will + be used for flatpaks. + + Accept unquoted strings in the keyfile GSettings backend to simplify + things for sysadmins. + + Update our contribution guidelines (`CONTRIBUTING.md`). + + Add writev() and writev_all() APIs to GOutputStream and + GPollableOutputStream, and provide implementations of them for many + subclasses. + * Refresh patches, drop trash test patches which are upstream now + * build-time tests: Run "flaky" suite separately and non fatally + * debian/libglib2.0-0.symbols: Add new symbols from 2.59.{1,2} + + -- Iain Lane Wed, 06 Feb 2019 17:09:28 +0000 + +glib2.0 (2.59.0-1) experimental; urgency=medium + + * New upstream release + * Update patches and drop upstreamed ones + * debian/control: Update meson BD to ≥ 0.48.0 per upstream + * debian/rules: enable-selinux takes "enabled" or "disabled" now. + Not true/false. + * debian/*: Update for experimental + * debian/libglib2.0-0.symbols: Update with new symbols for this release + + -- Iain Lane Thu, 17 Jan 2019 18:43:00 +0000 + +glib2.0 (2.58.3-3) unstable; urgency=medium + + * control, rules: Build with gcc-8. See #931921 - when we're built with + gcc-9, some applications that use GLib might start hanging. + + -- Iain Lane Fri, 12 Jul 2019 11:38:21 +0100 + +glib2.0 (2.58.3-2) unstable; urgency=medium + + * Team upload + * d/p/gfile-Limit-access-to-files-when-copying.patch: + Backport patch from upstream to ensure files don't temporarily have + less restrictive permissions during copying + (Closes: #929753, CVE-2019-12450) + * d/watch: Only watch for 2.58.x releases now that 2.60.x is out + * Add cross-reference to #919777 in previous changelog entry + + -- Simon McVittie Mon, 03 Jun 2019 22:37:45 +0100 + +glib2.0 (2.58.3-1) unstable; urgency=medium + + * Team upload + + [ Iain Lane ] + * debian/gbp.conf: Use upstream/2.58.x + + [ Simon McVittie ] + * New upstream release + - Fix crashes related to the GUnixMount API (Closes: #919777) + - Make G_DEFINE_INTERFACE compatible with g++ -Wint-in-bool-context + - Drop patches that were applied upstream + * d/p/gdbusmessage-Fix-check-on-upper-limit-of-message-size.patch: + Add patch from upstream glib-2-58 branch to limit the maximum size of + D-Bus messages according to the protocol specification + (the limit was 256M, and is now the correct 128M) + + -- Simon McVittie Thu, 07 Feb 2019 08:28:56 +0000 + +glib2.0 (2.58.2-4) unstable; urgency=medium + + [ Simon McVittie ] + * Update patch metadata + + [ Iain Lane ] + * trash-test-Don-t-assume-that-.local-exists.patch, + trash-test-Don-t-rely-on-being-able-to-determine-mount-po.patch: + Cherry pick two patches by Simon McVittie (slightly modified by Iain Lane) + to fix the trash test on Launchpad autobuilders. + + -- Iain Lane Thu, 17 Jan 2019 11:27:34 +0000 + +glib2.0 (2.58.2-3) unstable; urgency=medium + + * Team upload + * Release to unstable + * Standards-Version: 4.3.0 (no changes required) + * d/p/gvariant-test-Also-force-alignment-for-tuple-test-data.patch: + Mark as forwarded + * debian/Skip-unreliable-test_threaded_singleton-by-default.patch: + Don't run test_threaded_singleton() at build-time or in the part of + the autopkgtest run that must succeed. Run it from d/tests/flaky + instead. + + -- Simon McVittie Fri, 04 Jan 2019 08:43:36 +0000 + +glib2.0 (2.58.2-2) experimental; urgency=medium + + * Team upload + * d/p/gvariant-test-Also-force-alignment-for-tuple-test-data.patch: + Fix gvariant test failure on s390x by forcing more test data to be aligned + (Closes: #917980) + * d/p/debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch, + d/tests/flaky: + Only run closures test on arm* as part of a separate, flaky autopkgtest. + This test does not seem to be reliable enough for its failures to be + treated as release-critical, at least on arm*. If we run too many + iterations, it fails on CPUs where 16-bit accesses are slow; if we run + too few, it occasionally fails when one thread starves another. + (Closes: #917983) + * d/p/debian/Disable-some-tests-on-slow-architectures-which-keep-faili.patch, + d/p/debian/Skip-test-which-performs-some-unreliable-floating-point-c.patch: + d/tests/flaky: + Use g_test_skip() for flaky tests, and run them from d/tests/flaky + + -- Simon McVittie Thu, 03 Jan 2019 09:35:04 +0000 + +glib2.0 (2.58.2-1) experimental; urgency=medium + + * Team upload + * New upstream release + * Drop many patches that were applied upstream + * d/p/tests-Allocate-gvariant-data-from-the-heap-to-guarantee-a.patch: + Add patch from upstream to fix alignment of GVariant test data + * d/libglib2.0-0.symbols: Update for new ABI + * d/tests/installed-tests: Log execution environment + * postinst: Convert triggers into a function + * postinst: Quote strings with #TOKENS# to fix syntax highlighting + * postinst: Add a vim modeline + + -- Simon McVittie Tue, 01 Jan 2019 10:59:39 +0000 + +glib2.0 (2.58.1-6) experimental; urgency=medium + + * Team upload + * d/p/closures-test-Avoid-timeout-on-ARM64-CPUs.patch: + Rename from + d/p/debian/closures-test-Run-fewer-iterations-on-ARM64-and-armhf.patch, + increase the test timeout to prevent this test from timing out on + Cortex-A57 CPUs when building with Meson, and mark as forwarded + upstream + * Disable xattr support on kFreeBSD. + kFreeBSD has stub implementations of getxattr() etc. which will + always fail. Autoconf considers these to be present, but Meson + detects them and treats them as absent, resulting in configuration + failure. + + -- Simon McVittie Tue, 06 Nov 2018 14:19:18 +0000 + +glib2.0 (2.58.1-5) experimental; urgency=medium + + * Team upload + * d/p/*: + Update to upstream glib-2-58 branch as of 2.58.1-89-g7aa52a7d5, + except for translations + * d/p/mainloop-test-Fix-race-conditions.patch: + Add patch from upstream git master to fix race conditions in + mainloop test + * d/p/meson-Define-__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4-on-GNU-Li.patch: + Add proposed patch to fix detection of atomic operations on armel + * Respect nocheck in DEB_BUILD_OPTIONS + * Adjust test timeouts: + - Increase armel, armhf, hppa timeout multiplier from x3 to x5 + - Reduce mips*, sparc* timeout multiplier from x10 to x5 + - Reduce timeout multiplier for architectures known to have qemu + buildds from x50 to x20 + * d/rules: Set Meson cross properties using a modified debcrossgen. + This avoids embedding a local copy of GNUlib (v)(sn)printf when + cross-compiling. (Workaround for #912559) + + -- Simon McVittie Fri, 02 Nov 2018 19:05:22 +0000 + +glib2.0 (2.58.1-4) experimental; urgency=medium + + * Team upload + * d/rules: Deduplicate test invocation + * Use `meson test` directly, instead of going via `ninja test` + * Multiply Meson test timeouts. + Use x3 timeouts for most architectures (in general the timeouts in + the upstream Meson build system are somewhat optimistic), x10 for + the mips and sparc families, and x50 for architectures known to + use qemu for buildds. + * Enable FAM support on Hurd and kFreeBSD. + In the Autotools build system this was auto-detected, but in Meson it + is off by default and must be explicitly enabled if wanted. + * d/p/meson-Mark-1bit-emufutex-test-as-slow.patch: + Increase timeout for the 1bit-emufutex test + + -- Simon McVittie Fri, 19 Oct 2018 09:55:19 +0100 + +glib2.0 (2.58.1-3) experimental; urgency=medium + + * Team upload + * Upload to experimental to check that everything is OK with the + switch to Meson + * Switch build system to Meson as recommended by upstream + - Stop removing .la files: Meson doesn't build those + - d/p/debian/61_glib-compile-binaries-path.patch: Change the same + path if we build with Meson + - d/patches: Apply patches proposed for backport from master to + glib-2-58 in upstream MR 392. These fix various build issues, + mostly around Meson. Some of these patch Windows-specific code, + but they are likely to be in 2.58.2 and upstream asked for wider + testing, so I'm applying them anyway, to test the complete set. + - d/p/Spelling-*.patch: + MR 392 also applies patches from upstream git master to fix various + spelling mistakes detected by Lintian + * Always generate testmarshal.h, even when cross-compiling + (Closes: #908334) + * Fix static linking and make sure it won't regress, prompted by + comparing the Autotools and Meson builds: + - Add missing -dev dependencies on libffi-dev, libmount-dev, + libselinux1-dev + - d/p/Autotools-Move-libmount-from-Libs.private-to-Requires.pri.patch: + Add patch from upstream git master to fix static linking with libgio + - d/tests/build: Exercise all libraries + - d/tests/build-static: Exercise static linking + * d/rules: Fix some permissions (equivalent of #1539 upstream) + * Add Lintian override for a spelling-error-in-binary false positive + * Add some Lintian overrides for hardening-no-fortify-functions. + These objects mostly don't use libc directly. + * Remove /usr/bin/gio-launch-desktop symlink. + It's an implementation detail of libgio, and isn't intended to be + run directly. Removing it from PATH silences a Lintian warning about + it not having a man page. + * Don't delete compiled GSettings schemas during purge if the dpkg + reference count is greater than 1. This avoids deleting and regenerating + it unnecessarily if another architecture's libglib2.0-0 is still + installed. (Closes: #775854) + * d/tests/installed-tests: Replace deprecated $ADTTMP with $AUTOPKGTEST_TMP + * d/tests/control: Mark build tests as superficial (see #904979) + + -- Simon McVittie Thu, 18 Oct 2018 18:32:21 +0100 + +glib2.0 (2.58.1-2) unstable; urgency=medium + + * Fix dh_missing rule for arch:all build with compat 11 + + -- Jeremy Bicha Fri, 21 Sep 2018 23:53:00 -0400 + +glib2.0 (2.58.1-1) unstable; urgency=medium + + * New upstream release + * Drop patches applied in new release: + - Fix-g_icon_to_string-regression-doc-inconsistency.patch + - tests-timer-Skip-test_timeval_to_iso8601_overflow-if-we-c.patch + * Refresh 61_glib-compile-binaries-path.patch + * Bump Standards-Version to 4.2.1 + * Bump debhelper compat to 11 + + -- Jeremy Bicha Fri, 21 Sep 2018 20:11:06 -0400 + +glib2.0 (2.58.0-4) unstable; urgency=medium + + [ Simon McVittie ] + * Adjust installation path of gdb scripts to match GLib itself. + We used to put libglib-2.0.so.0 in /lib/MULTIARCH, but this is no + longer the case since 2.56.0-5. + * Wrap and sort (build-)dependency lists (wrap-and-sort -a) + * Wrap and sort file lists (wrap-and-sort -a) + * Install HTML in /usr/share/gtk-doc/html with symlinks in /usr/share/doc. + The gtk-doc documentation is technically a functionally significant + part of the package (it affects cross-reference generation during build + of other packages) so according to Policy §12.3 it is not appropriate + for /usr/share/doc. + Using the upstream default installation path for the HTML also makes + it more straightforward to switch to the Meson build system, because + the Meson build does not have an equivalent of --with-html-dir. + - d/debian/libglib2.0-doc.maintscript: Add migration steps + * d/p/debian/Look-for-gio-launch-desktop-in-libdir-glib-2.0.patch: + Also patch meson build system + + [ Jeremy Bicha ] + * Cherry-pick Fix-g_icon_to_string-regression-doc-inconsistency.patch + - Have g_icon_new_for_string() go back to only returning a single name + when created with a single name since some apps assume that behavior. + (Closes: #908705) + + -- Jeremy Bicha Mon, 17 Sep 2018 17:47:57 -0400 + +glib2.0 (2.58.0-3) unstable; urgency=medium + + [ Iain Lane ] + * Run fewer iterations of clousures test on armhf too + + -- Jeremy Bicha Fri, 07 Sep 2018 13:51:53 -0400 + +glib2.0 (2.58.0-2) unstable; urgency=medium + + * Cherry-pick upstream patch to fix test_timeval_to_iso8601_overflow on + 32-bit, fixing FTBFS there. + + -- Iain Lane Tue, 04 Sep 2018 15:29:53 +0100 + +glib2.0 (2.58.0-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + * Drop patches applied in new release: + - date-test-Use-g_test_skip-not-g_test_incomplete.patch + - g_binding_unbind-make-it-more-introspection-friendly-allo.patch: + * Release to unstable + + [ Simon McVittie ] + * d/p/debian/closures-test-Run-fewer-iterations-on-ARM64.patch: + Update metadata + * libglib2.0-dev-bin: Add Suggests for the packages containing + xmllint and gdk-pixbuf-pixdata, which are sometimes invoked by + glib-compile-resources (Closes: #834998) + * Invoke dh_python3 twice so that we correctly rewrite the shebang + line for /usr/bin scripts (Closes: #876009) + * Don't install very old changelogs and NEWS files + * Install README.md instead of stub README + + -- Jeremy Bicha Sun, 02 Sep 2018 08:57:46 -0400 + +glib2.0 (2.57.2-2) experimental; urgency=medium + + * Cherry-pick g_binding_unbind-make-it-more-introspection-friendly-allo.patch + to fix pygobject build (LP: #1787474) + + -- Jeremy Bicha Mon, 20 Aug 2018 12:54:49 -0400 + +glib2.0 (2.57.2-1) experimental; urgency=medium + + * Team upload + * New upstream development release + * d/watch: Look for odd-numbered releases + * Rebase patch series + * Install gio-launch-desktop in libglib2.0-0's private libdir to avoid + a circular dependency between libglib2.0-0 and libglib2.0-bin + - d/p/debian/Look-for-gio-launch-desktop-in-libdir-glib-2.0.patch: + Look for it there + * d/copyright: Update + * d/libglib2.0-0.symbols: Update + * Use upstream autogen.sh for autoreconf + * Don't clean org.gtk.test.gschema.override.orig + * d/gbp.conf: Use upstream/latest branch + * d/p/Drop-a-questionable-test-from-the-refstring-suite.patch: + Add patch to fix FTBFS on i386 + * d/p/date-test-Use-g_test_skip-not-g_test_incomplete.patch: + Add patch to fix autopkgtest failures without locales-all + * d/gbp.conf: Don't number patches + + -- Simon McVittie Thu, 02 Aug 2018 17:44:16 +0100 + +glib2.0 (2.56.1-2) unstable; urgency=medium + + [ Tim Lunn ] + * libglib2.0-0.triggers:use interest-await trigger for schemas + + [ Iain Lane ] + * debian/patches/tests-network-monitor-Always-use-the-dummy-proxy-res.patch: + Take patch from upstream to ignore the system's proxy settings for the + network-monitor test - it's testing an "abstract" network unrelated to the + system's network, and these settings interfere with that. This fixes a + failure in the Ubuntu autopkgtest machines, which have a proxy set. + + -- Iain Lane Tue, 10 Apr 2018 18:12:27 +0100 + +glib2.0 (2.56.1-1) unstable; urgency=medium + + [ Tim Lunn ] + * New upstream release + * Drop patches included in new release + * libglib2.0-0.triggers: Use interest-noawait triggers, generating caches + doesn't need to block configuration. flagged by lintian + uses-implicit-await-trigger warning. + + [ Simon McVittie ] + * Explicitly use autoconf build system, even with debhelper 11.2 + (see #895174) + + -- Tim Lunn Mon, 09 Apr 2018 19:03:24 +1000 + +glib2.0 (2.56.0-6) unstable; urgency=medium + + * Team upload + * d/p/0002-gapplication-Tighten-up-application-ID-validation.patch: + Transliterate commit message into ASCII so git-buildpackage doesn't + export it as a blob of base64 + * d/p/g_test_dbus_down-Ensure-next-test-does-not-use-old-c.patch: + Add patch to address a race condition that sometimes makes D-Bus-based + tests fail (Closes: #894677) + * d/patches: Improve metadata on various patches + + -- Simon McVittie Thu, 05 Apr 2018 09:24:45 +0100 + +glib2.0 (2.56.0-5) unstable; urgency=medium + + [ Simon McVittie ] + * Use `set -e` in the (empty) prerm to avoid a Lintian warning + * Add Lintian override for the empty prerm used to work around + #887629 + + [ Michael Biebl ] + * Stop installing libglib to /lib. + Late mounting of /usr is no longer supported, so this is not necessary + anymore. + * Drop maintscript migration code from pre-jessie. + * Drop obsolete Breaks. + + -- Michael Biebl Sun, 01 Apr 2018 17:59:50 +0200 + +glib2.0 (2.56.0-4) unstable; urgency=medium + + * Fix typo: libglib2.0-dev-bin Depends on python3-distutils, not + distuils (Closes: #893773) + * Restore `set -x` in debian/tests/build + + -- Simon McVittie Thu, 22 Mar 2018 09:08:05 +0000 + +glib2.0 (2.56.0-3) unstable; urgency=medium + + [ Iain Lane ] + * debian/tests/build: Add Restrictions: allow-stderr. We run this test with + `set -x', which outputs to stderr, and would like to continue doing so. + + [ Jeremy Bicha ] + * Depend and Build-Depend on python3-distutils to fix build failures + since python3 no longer depends on python3-distutils (Closes: #893736) + + -- Jeremy Bicha Thu, 22 Mar 2018 00:27:02 -0400 + +glib2.0 (2.56.0-2) unstable; urgency=medium + + [ Simon McVittie ] + * Merge from experimental to unstable + * d/tests/build: Don't rely on having unmerged /usr + * d/watch: Only watch for stable releases + * d/gbp.conf: Use debian/master, upstream/2.56.x branches + * d/control: Update Vcs-* for default branch + + -- Jeremy Bicha Sat, 17 Mar 2018 08:49:26 -0400 + +glib2.0 (2.56.0-1) experimental; urgency=medium + + * Team upload + * New upstream stable release 2.56.0 + * d/p/000?-gdbus-tool-*.patch: + Drop patches that came from upstream + * Refresh remaining patches + * d/p/0001-tests-Use-modern-test-assertions-in-GApplication-tes.patch, + d/p/0002-gapplication-Tighten-up-application-ID-validation.patch: + Cherry-pick GApplication ID fixes from upstream 2.56 branch + (GNOME #793400) + + -- Simon McVittie Tue, 13 Mar 2018 18:53:02 +0000 + +glib2.0 (2.55.2-2) experimental; urgency=medium + + * Merge changes from unstable, in particular: + + d/libglib2.0-dev.prerm: Add an empty prerm to make sure that we have a + way to recover from #887629 in stretch (Closes: #887863) + * d/p/0001-gdbus-tool-Ignore-unknown-options-for-the-emit-subco.patch, + d/p/0002-gdbus-tool-Make-dest-optional-for-emit-again.patch, + d/p/0003-gdbus-tool-Don-t-repeatedly-complete-signal.patch, + d/p/0004-gdbus-tool-Factor-out-common-GOptionContext-construc.patch: + Cherry-pick from upstream. Fix `gdbus emit' to not require `--dest', and + improve its bash completion. Should fix the dbus-test-runner autopkgtest, + which relied on this behaviour. + + -- Iain Lane Thu, 22 Feb 2018 10:02:17 +0000 + +glib2.0 (2.55.2-1) experimental; urgency=medium + + * debian/control{,.in}: Update Vcs-* to specify debian/experimental branch. + * New upstream release 2.55.2: + + GFile now has API to get the path without copying + * debian/patches/gdbus-threading-test-Allow-even-longer-for-test_method_ca.patch, + debian/patches/gdatetime-Avoid-repeated-floating-point-multiplies-w.patch, + debian/patches/gdatetime-Mark-the-usecs-as-volatile.patch: + Drop, applied upstream in this release. + * debian/libglib2.0-0.symbols: New symbols for 2.55.2 + + -- Iain Lane Thu, 15 Feb 2018 10:23:05 +0000 + +glib2.0 (2.55.1-1) experimental; urgency=medium + + * debian/gbp.conf, debian/watch: Update for experimental + * New upstream development release 2.55.1 + * debian/libglib2.0-0.symbols: Update with new symbols in this release. + * debian/patches/gdatetime-Avoid-repeated-floating-point-multiplies-w.patch, + debian/patches/gdatetime-Mark-the-usecs-as-volatile.patch: Cherry-pick two + patches from upstream. Fix some precision problems within GDateTime, that + in some cases resulted in incorrect answers on i386. + + -- Iain Lane Mon, 15 Jan 2018 12:26:35 +0000 + +glib2.0 (2.54.3-2) unstable; urgency=medium + + * Team upload + * d/libglib2.0-dev.prerm: Add an empty prerm to make sure that we have + a way to recover from #887629 in stretch (Closes: #887863) + * d/p/gdbus-threading-test-Allow-even-longer-for-test_method_ca.patch: + Mark as applied upstream + * d/p/gmain-Partial-revert-of-recent-wakeup-changes-to-gmain.c.patch: + Apply patch from upstream glib-2-54 branch to revert GWakeup changes + that appear to have broken WebKit and/or LibreOffice + (Closes: #887492) + + -- Simon McVittie Mon, 22 Jan 2018 12:39:58 +0000 + +glib2.0 (2.54.3-1) unstable; urgency=medium + + [ Simon McVittie ] + * Move Vcs-* to salsa.debian.org + * New upstream stable release + - Fix a race condition when a GCancellable is cancelled in another + thread (Closes: #884654) + - Drop patches for #884661, fixed upstream + * d/p/gdbus-peer-Skip-test-during-Debian-package-build.patch: + Drop. We should no longer need to skip this test now that #884654 + is fixed. + * d/p/Do-not-attempt-to-autolaunch-a-session-dbus-daemon-w.patch: + Drop patch. It has not been necessary since 2.50. + * d/p/0001-Fix-trashing-on-overlayfs.patch, + d/p/0001-timer-test-use-volatile-for-locals.patch, + d/p/gdbus-threading-test-Allow-even-longer-for-test_method_ca.patch: + Mark as forwarded upstream + * d/patches: Move non-upstreamable patches (Debian-specific changes + and workarounds) to d/p/debian, and to the bottom of d/p/series + * d/watch: Only watch for the upstream stable branch + + [ Iain Lane ] + * debian/gbp.conf: Update upstream branch to upstream/2.54.x following + DEP-14. + + -- Iain Lane Tue, 09 Jan 2018 18:02:53 +0000 + +glib2.0 (2.54.2-5) unstable; urgency=medium + + * Set Rules-Requires-Root to no. This package builds successfully + with the same content in that mode. + * d/p/61_glib-compile-binaries-path.patch: Only use the multiarch + path for glib-compile-schemas, not for glib-compile-resources + * Install glib-compile-resources into PATH in libglib2.0-dev-bin, + not libglib2.0-bin: it is a development tool used at compile-time + - libglib2.0-dev-bin Breaks/Replaces older libglib2.0-bin + * Install the glib-compile-resources binary in libglib2.0-dev-bin, + not libglib2.0-0. This means we get an executable version of that + binary when cross-compiling (Closes: #885019) + * Bump Standards-Version to 4.1.3 + + -- Simon McVittie Fri, 29 Dec 2017 22:07:56 +0000 + +glib2.0 (2.54.2-4) unstable; urgency=medium + + * Team upload + * d/p/closures-test-Run-fewer-iterations-on-ARM64.patch: + Run more iterations on ARM64 than in 2.54.2-3, but fewer than in + 2.54.2-2. If we don't run enough iterations, we get an assertion + failure when the main thread starves the other threads. + * d/p/gmenumodel*.patch: Mark as upstreamed in 2.54.3 and 2.55.1 + * d/rules: Set DEB_BUILD_TIME_TESTS when running dh_auto_test, so that + tests can distinguish between autopkgtest and `make check` + * d/p/gdbus-peer-Skip-test-during-Debian-package-build.patch: + Skip the gdbus-peer test during package build, so that its known + race condition does not cause intermittent FTBFS (mitigates: #884654) + + -- Simon McVittie Thu, 21 Dec 2017 14:41:40 +0000 + +glib2.0 (2.54.2-3) unstable; urgency=medium + + * Team upload + * d/patches: Re-export with gbp pq + * d/patches: Use `gbp pq export`-style metadata, retrieving authors + and dates from d/changelog where needed + * d/p/closures-test-Run-fewer-iterations-on-ARM64.patch: New patch. + tests/refcount/closures: Run fewer iterations on ARM64 + (mitigates: #880883) + * d/p/gdbus-threading-test-Allow-even-longer-for-test_method_ca.patch: + New patch. Allow even longer for the gdbus-threading test, and + re-enable it on 32-bit ARM now that the timeout is longer + (Closes: #884660) + * d/p/gmenumodel-test-If-something-goes-wrong-don-t-wait-foreve.patch, + d/p/gmenumodel-test-Wait-for-the-expected-events-to-happen.patch: + Add patches to make the GMenuModel test more patient (Closes: #884661) + * d/p/gwakeuptest-Be-less-parallel-unless-invoked-with-m-slow.patch: + Reduce number of threads and number of operations in response to + timeout on reproducible-builds infrastructure (mitigates: #884659) + + -- Simon McVittie Mon, 18 Dec 2017 21:30:18 +0000 + +glib2.0 (2.54.2-2) unstable; urgency=medium + + * Update Vcs fields for conversion to git + * Add debian/gbp.conf + * Bump Standards-Version to 4.1.2 + + -- Jeremy Bicha Wed, 13 Dec 2017 21:15:13 -0500 + +glib2.0 (2.54.2-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + + [ Didier Roche ] + * debian/patches/01_gettext-desktopfiles.patch: + - fix untranslated desktop action names when using gettext + (Closes: #877761) + + [ Simon McVittie ] + * Skip gtk-doc documentation unless we are building libglib2.0-doc, + fixing cross-builds (Closes: #870346) + - Note that gtk-doc-tools is still in Build-Depends, not + Build-Depends-Indep, because we need it for autoreconf + * Explicitly disable documentation for the udeb build + * Skip build-time tests for Arch:all builds - testing once per + architecture is sufficient + * Remove unused lintian override for an example file that is no + longer installed + + -- Jeremy Bicha Fri, 27 Oct 2017 21:16:41 -0400 + +glib2.0 (2.54.1-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + * Bump Standards-Version to 4.1.1 + + [ Michael Biebl ] + * Drop uploaders.mk include as it breaks the clean target. + Updating the Uploaders list is already handled by the gnome dh addon. + + -- Jeremy Bicha Mon, 02 Oct 2017 12:13:25 -0400 + +glib2.0 (2.54.0-1) unstable; urgency=medium + + * New upstream stable release. + + -- Emilio Pozuelo Monfort Mon, 11 Sep 2017 19:11:00 +0200 + +glib2.0 (2.53.7-1) unstable; urgency=medium + + * New upstream release. + * debian/patches/81-skip-monitor-test-on-non-linux.patch: + + Refreshed. + * debian/control.in: drop automake and autotools-dev build dependencies, + dh-autoreconf does that for us. + * Bump Standards-Version to 4.1.0; no changes needed. + + -- Emilio Pozuelo Monfort Sat, 09 Sep 2017 15:11:02 +0200 + +glib2.0 (2.53.6-1) unstable; urgency=medium + + * New upstream release. + * git_glib-mkenums-utf8.patch, git_glib-mkenums-flags.patch: Drop, now + applied upstream. + * debian/rules: Don't pass -X.la to dh_auto_install - it can easily lead to + unwanted removals (not claiming this is happening here) + * debian/rules: Fix arguments to dh_auto_test so tests are run again + * debian/rules, debian/control{,.in}: Use dh_missing and not dh_install + --list-missing. Also upgrade this check to --fail-missing. + * debian/rules: Don't run the tests under fakeroot; it makes them fail with + dbus-related authentication problems. + + -- Iain Lane Mon, 21 Aug 2017 17:01:22 +0100 + +glib2.0 (2.53.4-3) unstable; urgency=medium + + [ Matthias Klumpp ] + * Update Vcs-* URLs + + [ Jeremy Bicha ] + * Bump Breaks/Replaces: libglib2.0-dev to 2.53 (Closes: #867679) + * Add git_glib-mkenums-utf8.patch: + - Backport commit to fix "glib-mkenums: UnicodeDecodeError" + (Closes: #870310) + * Add git_glib-mkenums-flags.patch: + - Backport commit to fix mate-panel FTBFS (Closes: #870212) + + -- Jeremy Bicha Thu, 03 Aug 2017 12:21:04 -0400 + +glib2.0 (2.53.4-2) unstable; urgency=medium + + * Upload to unstable + + -- Matthias Klumpp Sun, 30 Jul 2017 12:54:22 +0200 + +glib2.0 (2.53.4-1) experimental; urgency=medium + + * New upstream release 2.53.4 + + Unicode support has been updated to Unicode 10.0.0 + + glib-genmarshal and glib-mkenums have been rewritten in python + + GLib can now be built with meson. autotools are still supported + + -- Iain Lane Wed, 19 Jul 2017 17:32:31 +0100 + +glib2.0 (2.53.3-1) experimental; urgency=medium + + * New upstream release 2.53.3. + * d/p/0001-gdatetime-Fix-a-potential-overflow-in-overflow-calcu.patch, + d/p/0002-tests-Fix-GDateTime-overflow-tests-on-32-bit-archite.patch, + d/p/0003-tests-Fix-overflows-in-find_maximum_supported_tv_sec.patch: + Cherry-picks to fix some overflow problems in GDateTime on 32 bit arches. + + -- Iain Lane Fri, 23 Jun 2017 11:09:22 +0100 + +glib2.0 (2.53.2-1) experimental; urgency=medium + + * New upstream release 2.53.2 + + A few new number parsing functions have been added: + - g_ascii_string_to_signed + - g_ascii_string_to_unsigned + These have better error handling than the existing ones. + + glib-mkenums now supports /*< private >*/ and /*< public >*/ + + GSettings now consider XDG_DATA_HOME in addition to XDG_DATA_DIRS. + * debian/libglib2.0-0.symbols: Add new symbols for 2.53.1. + * debian/patches/skip-broken-dbus-appinfo-test.patch: Drop - this test works + now. + + -- Iain Lane Mon, 12 Jun 2017 16:25:21 +0100 + +glib2.0 (2.53.1-1) experimental; urgency=medium + + * New upstream release 2.53.1 + + The gdbus tool gained a wait command + + g_unix_signal_source_new support SIGWINCH now + + There are now g_enum_to_string and g_flags_to_string functions + + A new function to instantiate objects: g_objet_new_with_properties + + GParameter and related APIs have been deprecated + * debian/libglib2.0-0.symbols: Add new symbols for 2.53.1. + + -- Iain Lane Fri, 05 May 2017 18:04:15 +0100 + +glib2.0 (2.52.0-1) experimental; urgency=medium + + * New upstream release 2.52.0 + * d/p/tests-gdatetime-Use-a-real-rather-than-invented-time.patch: Drop, + applied in this release. + + -- Iain Lane Mon, 20 Mar 2017 17:14:29 +0000 + +glib2.0 (2.51.5-1) experimental; urgency=medium + + * New upstream release 2.51.5 + * Drop patches applied upstream in this release: + - Install-gdb-Python-helpers-as-data-not-as-executable.patch + - glib-mkenums-Sort-input-files-for-more-deterministic.patch + * debian/patches/tests-gdatetime-Use-a-real-rather-than-invented-time.patch: + Cherry-pick a patch from upstream to fix GDateTime tests when tzdata ≥ + 2017a is in use. + * debian/libglib2.0-dev.install: Install the gdb script for libglib-2.0.so.* + into .../lib instead of .../usr/lib - it needs to match the installed path + of the library and we put libglib-2.0.so.* into /lib. + * debian/libglib2.0-0.symbols: Add g_content_type_is_mime_type + + -- Iain Lane Wed, 15 Mar 2017 13:55:41 +0000 + +glib2.0 (2.51.4-1) experimental; urgency=medium + + * Team upload + * New upstream release 2.51.4 (and 2.51.3) + * Build with dh instead of cdbs + - Move to debhelper compat level 10 + - Use dpkg-buildflags variables to extend LDFLAGS + - Enable bindnow hardening + - Remove indirection via $(SHARED_PKG), etc. variables + - Let dh_gnome_clean update the Uploaders instead of reinventing it + - Install some missing files detected by dh_install --list-missing + - Fix lintian warnings about useless use of dh-exec + - debian/dh_listmissing.pl: Remove + * Improve packaging for cross-compiling (Closes: #648621, #842442) + - Move glib-genmarshal and related files to a new M-A:foreign package + libglib2.0-dev-bin. Thanks to Helmut Grohne for the patch. + - Additionally move gdbus-codegen and gtester-report to + libglib2.0-dev-bin. They are architecture-independent, so in + particular clearly Multi-Arch: foreign; they aren't large enough to + justify a separate Architecture: all package. This works around + dh_python3's postinst snippet failing when used in a Multi-Arch: same + package with more than one instance installed. + - Move gtester to libglib2.0-dev-bin. It is a test-runner that can + operate on any executable, and does not rely on a matching architecture. + - Move gobject-query to libglib2.0-dev-bin. It prints the same things on + all architectures, and it isn't clear what use it is; glib-2.0.m4 + checks for it and AC_SUBSTs it, but according to codesearch.debian.net + no package actually seems to run it. + - Make libglib2.0-dev Multi-Arch: same + * Move gdb helpers from libglib2.0-0-dbg to libglib2.0-dev, move + detached debug symbols from libglib2.0-0-dbg to autogenerated -dbgsym + packages, and remove the libglib2.0-0-dbg binary package + * Add support for noudeb build profile + - Do not do the udeb build if the noudeb profile is selected, + for faster test-builds + * Fix assorted Lintian warnings + - Add missing build-dependency on dh-python + + remove obsolete Lintian override for mmissing B-D on python + - Add Lintian overrides for some intentionally weird scripts used in tests + - Do not install glib_gdb.py, gobject_gdb.py executable. They are + libraries to be imported by the gdb hooks, not scripts. + - Don't generate a ldconfig trigger for libglib2.0-tests, which does + not contain any public shared libraries + * Add patch to make glib-mkenums output more reproducible (Closes: #809152) + * Explicitly build-depend on automake so that the aspcud resolver used for + experimental does not decide automake1.11 is the best solution to + a dependency on automake | automaken + + -- Simon McVittie Sat, 04 Mar 2017 17:00:47 +0000 + +glib2.0 (2.51.2-1) experimental; urgency=medium + + * New upstream release 2.51.2 (& 2.51.1). + + Minimal support for UUIDs has been added + + A new file attribute, G_FILE_ATTRIBUTE_RECENT_MODIFIED has been added to + improve sorting of recent files + + glib-compile-resources grew a --generate-phony-targets flag + + GLib now installs a valgrind suppressions file for GLib and GIO + * debian/patches/skip-brokwn-dbus-appinfo-test.patch: Refresh (and fix the + typo in the filename) + * debian/libglib2.0-0.symbols: Add g_uuid* symbols which are new in this + release + + -- Iain Lane Tue, 14 Feb 2017 14:16:05 +0000 + +glib2.0 (2.51.0-2) experimental; urgency=medium + + * Merge changes from 2.50.2-2: + + debian/rules: disable libmount on !linux (Closes: #844052) + + debian/patches/0001-Fix-trashing-on-overlayfs.patch: Update with new + version from the upstream report to hopefully fix trashing of files in + directories which are symlinks to different devices. (Closes: #800047) + (LP: #1638245) + + -- Iain Lane Wed, 23 Nov 2016 17:36:07 +0000 + +glib2.0 (2.51.0-1) experimental; urgency=medium + + * debian/control{,.in}: Branch to experimental + * debian/watch: Track unstable releases again. + * New upstream release 2.51.0 + + glib-genmarshal and glib-mkenums have gained --output options for better + build system integration + + New API: g_utf8_make_valid + * Update debian/libglib2.0-0.symbols. + + -- Iain Lane Wed, 16 Nov 2016 18:23:38 +0000 + +glib2.0 (2.52.3-1) unstable; urgency=medium + + * New upstream release. + * skip-brokwn-dbus-appinfo-test.patch, + tests-gdatetime-Use-a-real-rather-than-invented-time.patch: + + Dropped, applied upstream. + * debian/libglib2.0-0.symbols: + + Add new symbols. + + -- Emilio Pozuelo Monfort Fri, 23 Jun 2017 21:06:46 +0200 + +glib2.0 (2.50.3-2) unstable; urgency=medium + + * debian/patches/tests-gdatetime-Use-a-real-rather-than-invented-time.patch: + Cherry-pick a patch from upstream to fix GDateTime tests when tzdata ≥ + 2017a is in use. (Closes: #858214) + + -- Michael Biebl Mon, 20 Mar 2017 00:21:57 +0100 + +glib2.0 (2.50.3-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Wed, 15 Feb 2017 19:00:01 +0100 + +glib2.0 (2.50.2-2) unstable; urgency=medium + + * debian/rules: disable libmount on !linux (Closes: #844052) + * debian/patches/0001-Fix-trashing-on-overlayfs.patch: Update with new + version from the upstream report to hopefully fix trashing of files in + directories which are symlinks to different devices. (Closes: #800047) + + -- Iain Lane Wed, 23 Nov 2016 16:33:21 +0000 + +glib2.0 (2.50.2-1) unstable; urgency=medium + + * New upstream release. + * Track stable releases in debian/watch. + + -- Michael Biebl Tue, 08 Nov 2016 00:37:05 +0100 + +glib2.0 (2.50.1-1) unstable; urgency=medium + + [ Jason Crain ] + * libglib2.0-bin: includes a new 'gio' commandline tool (Closes: #840164) + + [ Andreas Henriksson ] + * New upstream release. + + -- Andreas Henriksson Tue, 11 Oct 2016 14:51:05 +0200 + +glib2.0 (2.50.0-2) unstable; urgency=medium + + [ Simon McVittie ] + * Build-depend on tzdata, which is no longer transitively Essential. + One test needs it. (Closes: #839487) + + [ Michael Biebl ] + * Fix Vcs-* to point to unstable. + * Mark dependencies which are required to run the test-suite with + . + * Add explicit Build-Depends on xsltproc, docbook-xml and docbook-xsl. + Besides libxml2-utils, those are needed for building the man pages. + * Drop Build-Depends on dbus-x11. The test-suite uses a mock version of + dbus-launch nowadays, so this dependency is no longer needed. + (Closes: #835884) + * Use dh-exec to substitute ${DEB_HOST_MULTIARCH} in .install, .links and + .dirs files. + + -- Michael Biebl Sat, 01 Oct 2016 22:15:22 +0200 + +glib2.0 (2.50.0-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + + -- Michael Biebl Tue, 20 Sep 2016 18:37:10 +0200 + +glib2.0 (2.49.7-1) unstable; urgency=medium + + * New upstream release. + * Update debian/libglib2.0-0.symbols with one addition. + + -- Andreas Henriksson Tue, 13 Sep 2016 14:40:14 +0200 + +glib2.0 (2.49.6-1) unstable; urgency=low + + * New upstream release. + * Limit the libmount-dev build-depedency to [linux-any]. + + -- Andreas Henriksson Tue, 30 Aug 2016 17:57:52 +0200 + +glib2.0 (2.49.5-2) experimental; urgency=medium + + * debian/rules: Disable libmount for the udeb build; there's no + libmount-udeb, no immediate plans to provide one, and the functionality in + glib isn't that interesting in the d-i context at the present time. + + -- Iain Lane Mon, 22 Aug 2016 11:12:26 +0100 + +glib2.0 (2.49.5-1) experimental; urgency=medium + + [ Simon McVittie ] + * Merge packaging from unstable. + + [ Iain Lane ] + * New upstream release 2.49.5 + * debian/patches/gregex-loosen-behaviour-testing.patch: Drop this patch - + it's in 2.49.5. + * debian/libglib2.0-0.symbols: Add symbols for async + g_app_info_launch_default_for_uri. + * debian/control{,.in}, debian/rules: Enable libmount support + + -- Iain Lane Thu, 18 Aug 2016 12:10:08 +0100 + +glib2.0 (2.48.1-3) unstable; urgency=medium + + * debian/tests/control: do not fail on stderr output from + installed-tests. If gvfs happens to be installed, it gets + D-Bus-activated (even if it's disabled via GIO_USE_VFS and + GIO_USE_VOLUME_MONITOR), resulting in logging from dbus-daemon. + (Closes: #821031) + * debian/tests/installed-tests: explicitly select built-in VFS and + volume monitor + * d/p/gregex-loosen-behaviour-testing.patch: add patch from upstream + bug 767240 (not applied yet) to relax assertions about PCRE's behaviour, + which changed in 8.38 (Closes: #834272) + * d/rules: unset XDG_CONFIG_HOME, XDG_CACHE_HOME, XDG_DATA_HOME, + XDG_CONFIG_DIRS, XDG_DATA_DIRS so that they are based on the temporary + HOME. This avoids FTBFS if the user doing the build has these variables + already set in their build environment (Closes: #834334) + + -- Simon McVittie Mon, 15 Aug 2016 18:01:03 +0100 + +glib2.0 (2.48.1-2) unstable; urgency=medium + + * Remove refdbg variant. Thanks to Jonny Lamb for the patch. + Closes: #827269. + * Switch to python3. + + -- Emilio Pozuelo Monfort Wed, 13 Jul 2016 17:46:31 +0200 + +glib2.0 (2.49.4-1) experimental; urgency=medium + + * New upstream release. + * debian/patches/add-missing-gio-xml.patch: + + Dropped, gio.xml is now shipped in the tarballs. + * debian/patches/0001-Fix-gio-tests-socket-listener.patch: + + Dropped, included upstream. + + -- Emilio Pozuelo Monfort Thu, 21 Jul 2016 18:12:05 +0200 + +glib2.0 (2.49.3-1) experimental; urgency=medium + + * Switch to python3. + * New upstream release. + * d/p/0001-gsettings-test-Wrap-guint64-literals-in-G_GUINT64_CO.patch: + + Dropped, applied upstream. + * debian/patches/add-missing-gio-xml.patch: + + Add gio.xml file, which is missing from the tarball. Needed for the + documentation build. + * debian/patches/0001-Fix-gio-tests-socket-listener.patch: + + Fix a test hang. + * debian/libglib2.0-0.symbols: + + Update with new symbols. + * Standards-Version is 3.9.8. No changes needed. + + -- Emilio Pozuelo Monfort Wed, 20 Jul 2016 23:23:12 +0200 + +glib2.0 (2.49.2-2) experimental; urgency=medium + + * d/p/0001-gsettings-test-Wrap-guint64-literals-in-G_GUINT64_CO.patch: + Cherry-pick from upstream to fix test failure on non-64 bit arches. + + -- Iain Lane Thu, 23 Jun 2016 16:56:04 +0100 + +glib2.0 (2.49.2-1) experimental; urgency=medium + + [ Emilio Pozuelo Monfort ] + * Remove refdbg variant. Thanks to Jonny Lamb for the patch. + Closes: #827269. + + [ Iain Lane ] + * Update Vcs-* for experimental + * New upstream release 2.49.2 + + GDesktopAppInfo now allows bus activation with dashes. This is not + technically allowed per the Desktop Entry specification, but it happens + in the wild. Rather than forcing people to go through another traumatic + desktop file rename, accept it and translate - to _. + + The support for giving names to threads has been improved. Thread names + are now supported on Solaris as well, and the Linux support no longer + uses prctl() but the pthread api. + + GIO resources can now be overridden at runtime, using the + G_RESOURCE_OVERLAYS environment variable. + + gdbus-codegen can now generate autocleanup definitions for the types it + generates. Use the --c-generate-autocleanup option to control this + + GMainContext and GTask have gained more systemtap probes + * debian/watch: Update to find unstable versions + * debian/patches/04_homedir_env.patch: Refresh to apply correctly + * debian/libglib2.0-0.symbols: Update for this release + + -- Iain Lane Tue, 21 Jun 2016 14:20:19 +0100 + +glib2.0 (2.48.1-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + * Drop obsolete Conflicts, Breaks and Replaces from pre-wheezy. + * Drop obsolete preinst maintainer scripts which cleaned up the + /usr/share/doc symlinks. + * Drop version requirement for pkg-config dependency. (Closes: #734479) + + -- Michael Biebl Wed, 11 May 2016 01:11:42 +0200 + +glib2.0 (2.48.0-1) unstable; urgency=medium + + * New upstream stable release 2.48.0 + + a minor build fix in the name of determinism (Closes: #812876) + + a few coverity fixes + + -- Iain Lane Wed, 23 Mar 2016 17:59:23 +0000 + +glib2.0 (2.47.92-1) experimental; urgency=medium + + * New upstream release. + + -- Andreas Henriksson Wed, 16 Mar 2016 11:18:53 +0100 + +glib2.0 (2.47.6-1) experimental; urgency=medium + + * New upstream release. + - GString is missing (transfer none) annotations on many of its methods + - systemtap and gdb scripts install in wrong place + - Documentation: various small improvements + - gdbusobjectmanagerserver: Clarify recommended ObjectManager paths + - Fix some annotations + - Cannot build with default flags under Fedora rawhide + (-Werror=format-nonliteral) + - gmacros.h is testing attributes with __has_feature (when compiling with + clang) + * debian/libglib2.0-0-dbg.install.in: Upstream now installs the gdb + auto-loaded scripts in the right place by themselves - no need for us to + move them about. + + -- Iain Lane Thu, 18 Feb 2016 14:07:22 +0000 + +glib2.0 (2.47.5-1) experimental; urgency=medium + + * debian/watch: Use download.gnome.org, seems ftp.gnome.org is not updating + properly currently. + * New upstream release 2.47.5 + + the system copy of PCRE is now used by default to implement GRegex. + Configure with --with-pcre=internal if a system PCRE version + is unavailable or undesired. + + interfaces for DTLS support have been added. A new version of + glib-networking will also be required. + + GDBusMethodInvocation now drops replies if the sender set the + NO_REPLY_EXPECTED flag + + several GApplication fixes, including fixes for commandline arguments in + interpreted languages on Windows + * debian/libglib2.0-0.symbols: Update with new symbols for this release. + * 0001-regex-test-expect-ASSERTION_EXPECTED-for-ab-with-PCR.patch: Drop, + it's included in this release. + + -- Iain Lane Wed, 20 Jan 2016 17:55:16 +0000 + +glib2.0 (2.47.4-1) experimental; urgency=medium + + * New upstream release + + The GApplication documentation has been improved in several areas. + * 0001-tests-fix-a-test-on-32-bit-builds.patch, + 0001-gtypes.h-move-G_STATIC_ASSERT-to-function-scope.patch: Drop, applied + upstream in this release. + * 0001-regex-test-expect-ASSERTION_EXPECTED-for-ab-with-PCR.patch: Fix regex + tests to assert the right errors as of pcre 8.38. Cherry-pick from + upstream. (Closes: #808842) + * Don't build automatic dbgsym package for -refdbg + + -- Iain Lane Thu, 14 Jan 2016 18:27:02 +0000 + +glib2.0 (2.47.3-3) experimental; urgency=medium + + * debian/patches/0001-gtypes.h-move-G_STATIC_ASSERT-to-function-scope.patch: + Another cherry-pick. Should fix g-ir-scanner. + + -- Iain Lane Sun, 29 Nov 2015 18:45:29 +0000 + +glib2.0 (2.47.3-2) experimental; urgency=medium + + * debian/patches/0001-tests-fix-a-test-on-32-bit-builds.patch: Cherry-pick + from upstream. Fix tests (and therefore the build) on 32 bit arches. + + -- Iain Lane Thu, 26 Nov 2015 16:12:12 +0000 + +glib2.0 (2.47.3-1) experimental; urgency=medium + + * New upstream release + + New API: hardware-assisted helpers for overflow-checked integer math. + + Fixes: Invalid free in g_local_file_trash() (LP: #1512826) + * d/p/{Doc-copy-included-example-files.patch, + Doc-Fix-missing-glibconfig.h-when-builddir-srcdir.patch, + Build-gdbus-example-objectmanager-server-again.patch}: Remove - in this + upstream release. + + -- Iain Lane Wed, 25 Nov 2015 17:59:33 +0000 + +glib2.0 (2.47.1-1) experimental; urgency=medium + + * New upstream release. + + The Unicode support has been updated to version 8.0 of the Unicode standard + + GDesktopAppInfo no longer sets the DISPLAY environment variable when + launching apps. This is now done in the GAppLaunchContext + implementations when appropriate. + * debian/watch: Look for development versions too. + * debian/patches/90_gio-modules-multiarch-compat.patch: Refresh to apply on + this version. + * debian/patches/0001-GDateTime-test-fix-occasional-failures.patch: Drop, + upstream in this release. + * debian/libglib2.0-0.symbols: Update with new symbols for this release. + + -- Iain Lane Wed, 04 Nov 2015 17:28:23 +0000 + +glib2.0 (2.46.2-3) unstable; urgency=medium + + * Add debian/patches/disable-failing-test-for-pcre838.patch + - disable regexp test that fails with new system pcre 8.38 + which just hit Debian unstable. Needs further investigation + but lets not leave the build broken during the holidays. + + -- Andreas Henriksson Wed, 23 Dec 2015 17:11:16 +0100 + +glib2.0 (2.46.2-2) unstable; urgency=medium + + [ Iain Lane ] + * Fix typo in previous changelog entry. + + [ Andreas Henriksson ] + * Add debian/patches/bug712848-volume-monitor-deadlock-kfreebsd.patch + - patch by and big thanks to Steven Chamberlain for debugging this! + - given lack of feedback from upstream, which would be very welcome + for deep changes like this, use an ifdef to only change on + *FreeBSD for now... (Closes: #712848) + * Add --no-ddebs arg to dh_strip for refdbg package build which + otherwise fails and I doubt we need ddeb/dbgsym for our debug + package. + + -- Andreas Henriksson Wed, 23 Dec 2015 11:54:51 +0100 + +glib2.0 (2.46.2-1) unstable; urgency=medium + + * Fix Vcs-* to point to unstable. + * New upstream stable release 2.46.2. + + Fixes cross compilation (Closes: #800610) + * Drop changes from 2.46.1-2, which are all in this upstream release. + * Drop debian/patches/0001-GDateTime-test-fix-occasional-failures.patch, + applied upstream. + + -- Iain Lane Mon, 09 Nov 2015 12:59:12 +0000 + +glib2.0 (2.46.1-2) unstable; urgency=medium + + * Team upload. + * Cherry-pick patches from upstream glib-2-46 branch to fix incomplete + documentation (Closes: #659977) + * debian/gdbus-example-objectmanager-server.c: add missing example file + from upstream git; it was accidentally omitted from upstream tarballs + + -- Simon McVittie Mon, 02 Nov 2015 17:31:00 +0000 + +glib2.0 (2.46.1-1) unstable; urgency=medium + + [ Michael Biebl ] + * Drop clean-la.mk from debian/rules, no longer required. + + [ Iain Lane ] + * New upstream release 2.46.1 + + Remove system_header pragma (should fix lack of warnings with things + like g_return_if_fail) + + move GStrv typedef (and auto-cleanup) from libgobject to libglib + + fix order of trashing files to be closer to what is required in the + specification. Namely, trashinfo files are written first. This should + fix issues with the gvfs trash backend failing to correctly read the + info for recently trashed files (preventing 'restore'). (Closes: + #800491) (LP: #1495943) + + tweak mime logic to return text/plain on all empty files instead of + returning application/octet-stream. This includes files that have + extensions that imply that they may be other types of files, which is a + slight change of behaviour with respect to old GLib versions. (LP: + #1497170) + * debian/patches/0001-Revert-list-store-Fix-a-parameter-check.patch: Drop - + this is applied upstream in this release. + * debian/patches/0001-GDateTime-test-fix-occasional-failures.patch: Take + patch from bgo#754994 to resolve intermittent test failures in the + GDateTime tests. + + -- Iain Lane Thu, 15 Oct 2015 16:08:30 +0100 + +glib2.0 (2.46.0-2) unstable; urgency=medium + + * debian/patches/0001-Revert-list-store-Fix-a-parameter-check.patch: + Cherry-pick from upstream to fix GSequence (this at least makes + GStreamer's testsuite fail). + + -- Iain Lane Mon, 28 Sep 2015 13:07:06 +0100 + +glib2.0 (2.46.0-1) unstable; urgency=medium + + [ Iain Lane ] + * New upstream stable release 2.46.0 + + Disable runtime-deprecation warnings + + Fix marshalling of flags on bigendian 64bit architectures + + [ Simon McVittie ] + * Change section of libglib2.0-refdbg from debug to devel, so that it + isn't kicked out into a separate mirror network when we get + automatic -dbgsym packages (Closes: #796836) + + -- Iain Lane Wed, 23 Sep 2015 11:33:01 +0100 + +glib2.0 (2.45.8-1) experimental; urgency=medium + + * New upstream development release. + * Update debian/libglib2.0-0.symbols with one addition: + g_param_spec_get_name_quark + + -- Andreas Henriksson Thu, 17 Sep 2015 10:05:17 +0200 + +glib2.0 (2.45.7-1) experimental; urgency=medium + + * New upstream release 2.45.7 + + Add G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE for use by non-POSIX-like + backends (e.g. cloud storage). + + GFileMonitor: Make the inotify backend work with atomic renames again + + GSettings: change notification is again working unconditionally + + GListStore has a sort function now + + Test infrastructure: + - Tests are now required to have unique names + - TAP support has been improved + - A macro for asserting that two memory regions have identical content + has been added + * debian/libglib2.0-0.symbols: Add new symbol for this release. + + -- Iain Lane Thu, 03 Sep 2015 14:09:02 +0100 + +glib2.0 (2.45.6-1) experimental; urgency=medium + + * New upstream releases 2.45.5 and 2.45.6 + + GNetworkMonitor now provides information about metered networks + + g_mem_set_vtable has been deprecated; it has not been working for quite + a while. The recommendation is to use valgrind, or replace malloc + itself. + * debian/patches/0001-GOptionContext-Don-t-crash-without-main-group.patch: + Drop, applied upstream. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Wed, 26 Aug 2015 17:25:52 +0100 + +glib2.0 (2.45.4-2) experimental; urgency=medium + + * debian/patches/0001-GOptionContext-Don-t-crash-without-main-group.patch: + Cherry-pick. Don't crash in GOptionContext if there's no main group. Fixes + crash when running (for example) gdbus. + + -- Iain Lane Wed, 29 Jul 2015 16:30:21 +0100 + +glib2.0 (2.45.4-1) experimental; urgency=medium + + * New upstream release 2.45.4 + * d/p/0001-gio-tests-appmonitor-Delete-file-before-checking-for.patch, + d/p/0001-glocalfilemonitor-Send-DELETED-event-when-there-is-n.patch: Drop, + applied upstream. + * d/p/07_disable_tests_on_slow_archs.patch: Refresh to apply cleanly. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Tue, 21 Jul 2015 18:07:32 +0100 + +glib2.0 (2.45.3-1) experimental; urgency=medium + + [ Simon McVittie ] + * d/p/regex-if-PCRE-is-8.34-or-later-disable-auto-possessi.patch: + mark as applied upstream in 2.45.3 + + [ Iain Lane ] + * New upstream release 2.45.3. + + Improve performance of g_signal_handler_disconnect for signals + with many handlers + + GDBus has gained a new call flag to allow interactive authorization + + GSettings: + - New API: g_settings_schema_list_keys + - Deprecated: g_settings_list_keys + * debian/libglib2.0-0.symbols: Update with new symbols from this release. + * debian/patches/regex-if-PCRE-is-8.34-or-later-disable-auto-possessi.patch: + Delete, applied upstream. + * d/p/0001-gio-tests-appmonitor-Delete-file-before-checking-for.patch: + Cherry-pick upstream patch to fix testsuite failure causing FTBFS. + + -- Iain Lane Wed, 01 Jul 2015 18:15:07 +0100 + +glib2.0 (2.45.2-1) experimental; urgency=medium + + [ Simon McVittie ] + * Correctly attribute previous upload to Iain + * d/p/0001-Fix-trashing-on-overlayfs.patch: add upstream bug reference + * d/p/0001-glocalfilemonitor-Send-DELETED-event-when-there-is-n.patch: + add upstream bug reference + * d/p/10_kfreebsd_issetugid_prototype.patch, + d/p/11_kfreebsd_pthread_condattr_setclock_prototype.patch, + d/p/13_sparc_prlimit_prototype.patch: + drop workarounds for #635205, #703545, #703559 which were all fixed + in jessie + * d/p/81-skip-monitor-test-on-non-linux.patch: add DEP-3 information + * d/p/90_gio-modules-multiarch-compat.patch: add DEP-3 information + + [ Iain Lane ] + * New upstream release 2.45.2 + + Improve error reporting in glib-compile-schemas. + + Add introspection annotations to GListStore. + * GDBus-tests-change-progress-noise-from-if-not-quiet-.patch, + gdbus-tests-wait-up-to-60s-for-gdbus-testserver-to-t.patch, + gdbus-connection-wait-up-to-10s-to-actually-send-a-m.patch, + regex-test-do-not-assert-that-system-PCRE-still-has-.patch, + gdbus-serialization-use-check_serialization-instead-.patch, + gdbus-peer-test-let-GDBusServer-start-before-notifyi.patch, + gdatetime-test-don-t-assume-that-time-stands-still.patch: Delete, applied + upstream. + * 07_disable_tests_on_slow_archs.patch: Refresh to defuzz + + -- Iain Lane Tue, 09 Jun 2015 16:19:20 +0100 + +glib2.0 (2.45.1-2) experimental; urgency=medium + + [ Simon McVittie ] + * d/p/regex-if-PCRE-is-8.34-or-later-disable-auto-possessi.patch: + update to my latest version submitted upstream, which fixes undefined + behaviour in the unlikely event that G_REGEX_OPTIMIZE is combined + with g_regex_match_all(). + * d/p/regex-test-do-not-assert-that-system-PCRE-still-has-.patch: + update to my latest version submitted upstream, which asserts that + a newer-than-8.32 system PCRE does not have the bug in question. + * d/p/gdbus-serialization-use-check_serialization-instead-.patch: + add patch to fix FTBFS in non-minimal environments (libdbus-1-dev + installed). Applied upstream for 2.45.2. + + [ Iain Lane ] + * d/p/0001-Fix-trashing-on-overlayfs.patch: Take patch from + upstream bug to fix trashing on overlayfs. + * d/p/0001-glocalfilemonitor-Send-DELETED-event-when-there-is-n.patch: Take + patch from upstream bug to send the right event when moving files outside + a monitored directory. + + -- Iain Lane Mon, 11 May 2015 16:30:47 +0100 + +glib2.0 (2.45.1-1) experimental; urgency=medium + + * New upstream release 2.45.1 + + The GSettings schema compiler, glib-compile-schemas has been changed + to reject schema xml that has duplicate or + elements. Such elements typically occur when translations are merged + into the schema, with xml:lang attributes. This is not the correct way + to translate schemas. Instead keep the translations in the .mo file and + set the gettext-domain attribute on the element. To avoid + breaking already-installed schemas, this change is only taking effect + when you use the --strict option. + + The file monitoring infrastructure has been rewritten, and all backends + have seen major improvements. + + The inotify backend is reporting events with less delay (no event will + be delayed more than 10ms) and wakeups due to file monitoring have + been significantly reduced. A CHANGES_DONE event will also be sent + when new files appear. + + The poll implementation is now using the thread default main context. + + The fam implmentation is now running in the worker thread. + + The fen implementation has been removed, since it was unmaintained. + + The hardcoded 10-thread limit of GTask's thread pool has been removed, + since it was prone to causing deadlocks. The thread pool is now allowed + to grow dynamically and will shrink back over time. + + GSimpleAsyncResult has been deprecated in favor of GTask. + + The algorithm used by GAppInfo to find default handlers for mime types + has been tweaked to prefer apps that handle the specific subtype over + default handlers for a generic supertype. + * d/p/regex-test-do-not-assert-that-system-PCRE-allows-P-1.patch: Drop, + applied upstream. + * debian/control{,.in}: Update Vcs-* for experimental. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Fri, 01 May 2015 13:37:01 +0100 + +glib2.0 (2.44.1-1) unstable; urgency=medium + + * New upstream release 2.44.1 + + Improve the default application algorithm + + Bump the number of children a GType can have + + Various testsuite improvements + + -- Iain Lane Wed, 13 May 2015 17:46:59 +0100 + +glib2.0 (2.44.0-3) unstable; urgency=medium + + * Team upload. + + [ Simon McVittie ] + * d/p/regex-test-do-not-assert-that-system-PCRE-allows-P-1.patch: + update to the version that went upstream in 2.45.1. No functional change. + * d/p/regex-if-PCRE-is-8.34-or-later-disable-auto-possessi.patch: + update to my latest version submitted upstream, which fixes undefined + behaviour in the unlikely event that G_REGEX_OPTIMIZE is combined + with g_regex_match_all(). + * d/p/regex-test-do-not-assert-that-system-PCRE-still-has-.patch: + update to my latest version submitted upstream, which asserts that + a newer-than-8.32 system PCRE does not have the bug in question. + * d/p/gdbus-serialization-use-check_serialization-instead-.patch: + add patch to fix FTBFS in non-minimal environments (libdbus-1-dev + installed). Applied upstream for 2.45.2. + * d/p/gdbus-peer-test-let-GDBusServer-start-before-notifyi.patch: + add patch fixing a race condition in the gdbus-peer test. + Applied upstream for 2.45.2. + * d/p/GDBus-tests-change-progress-noise-from-if-not-quiet-.patch: + add patch fixing potential test failures caused by corrupt TAP + output. Applied upstream for 2.45.2. + * d/p/gdatetime-test-don-t-assume-that-time-stands-still.patch: + add patch fixing potential test failures at the boundary between + one second and the next. Applied upstream for 2.45.2. + * d/p/10_kfreebsd_issetugid_prototype.patch, + d/p/11_kfreebsd_pthread_condattr_setclock_prototype.patch, + d/p/13_sparc_prlimit_prototype.patch: + drop workarounds for #635205, #703545, #703559 which were all fixed + in jessie + * d/p/81-skip-monitor-test-on-non-linux.patch: add DEP-3 information + * d/p/90_gio-modules-multiarch-compat.patch: add DEP-3 information + + [ Iain Lane ] + * d/p/0001-Fix-trashing-on-overlayfs.patch: Take patch from + upstream bug to fix trashing on overlayfs. + + -- Simon McVittie Tue, 12 May 2015 13:15:38 +0100 + +glib2.0 (2.44.0-2) unstable; urgency=medium + + * Upload to unstable. + * debian/watch: Consider stable versions only. + + -- Iain Lane Fri, 01 May 2015 11:27:39 +0100 + +glib2.0 (2.44.0-1) experimental; urgency=medium + + * New upstream release 2.44.0 + + gsocket: Document FD ownership with g_socket_new_from_fd() + + -- Iain Lane Mon, 30 Mar 2015 16:35:53 +0100 + +glib2.0 (2.43.92-1) experimental; urgency=medium + + * New upstream release 2.43.92 + + GUnixMountMonitor now properly supports multiple main contexts + + many documentation improvements and cleanups. + + new support for HTTP proxies in GIO + + new GTask:completed property + + use "private" futexes in order to further improve the performance of the + contended case of GMutex and g_bit_lock() + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Wed, 18 Mar 2015 11:03:04 +0000 + +glib2.0 (2.43.91-1) experimental; urgency=medium + + * New upstream release 2.43.91 + - We have now added 'g_autofree' as a libgsystem-style autocleanup macro + that calls g_free() on the content of a local variable when it leaves + scope (working only on GCC and clang). + - GApplication now has an "is-busy" property, allowing one to query the + effective busy state. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Tue, 03 Mar 2015 17:36:38 +0000 + +glib2.0 (2.43.90-1) experimental; urgency=medium + + * New upstream release 2.43.90 + + new GSimpleIOStream class to construct a GIOStream from an arbitrary + GInputStream and GOutputStream + + GApplication: new API for marking 'busy' state according to the value of + a boolean property on another object + + GOptionGroup: add binding support (boxed type, annotation fixes, etc.) + * debian/patches/gdbus-Let-the-pending-read-finish-before-closing-the.patch: + Drop this cherry-pick from an upstream bug - should be fixed differently + in this release (bgo #743990). + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Thu, 19 Feb 2015 11:37:11 +0000 + +glib2.0 (2.43.4-1) experimental; urgency=medium + + * New upstream release 2.43.4 + + GType now has type declaration macros G_DECLARE_DERIVABLE_TYPE, + G_DECLARE_FINAL_TYPE and G_DECLARE_INTERFACE, which significantly reduce + the boilerplate needed for GObject types and interfaces. + + g_autoptr and g_auto are macros for declaring variables with automatic + cleanup. They only work with gcc and clang. + + GListModel is a new interface that represents a dynamic list of GObjects. + + GListStore is a GSequence-based implementation of GListModel. + + g_simple_action_set_state_hint: New function to set the state hint of + GSimpleActions + + g_settings_schema_list_children and g_settings_schema_key_get_name are + new functions to complete the GSettingsSchema API. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Mon, 16 Feb 2015 16:37:30 +0000 + +glib2.0 (2.43.3-1) experimental; urgency=medium + + [ Laurent Bigonville ] + * debian/control.in, debian/libglib2.0-dev.install.in, + debian/libglib2.0-0-dbg.install.in: Install the gdb python scripts in the + proper locations, move them to the -dbg package and add the needed + Breaks/Replaces (Closes: #774024) + + [ Iain Lane ] + * New upstream release 2.43.3 + + add g_set_object() convenience function + + GNetworkMonitor: check if NM is not running and don't crash + + fix some races with g_mkdir_with_parents + + avoid use of G_STRLOC in G_OBJECT_WARN_INVALID_PSPEC in order to save on + static strings + + fix some content type vs. mime issues + * 07_disable_tests_on_slow_archs.patch: Refresh + + -- Iain Lane Tue, 20 Jan 2015 13:46:28 +0000 + +glib2.0 (2.43.2-1) experimental; urgency=medium + + [ Laurent Bigonville ] + * debian/control.in: Switch build-dependency from libelfg0-dev to libelf-dev + (Closes: #769408) + + [ Iain Lane ] + * New upstream release 2.43.2 + + New function: g_strv_contains + + New function: g_network_address_new_loopback + + New function: g_socket_send_messages + + A new GNetworkMonitor implementation using NetworkManager provides more + detailed connectivity information + * 0001-GSettings-fix-check-for-delaying-backend-subscriptio.patch, + 0001-gmain-fix-poll-record-comparison.patch: gmain: fix the sorting of: + Drop, applied in this release. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Tue, 16 Dec 2014 17:29:02 +0000 + +glib2.0 (2.43.1-2) experimental; urgency=medium + + * 0001-GSettings-fix-check-for-delaying-backend-subscriptio.patch: + Cherry-pick patch from upstream. Check signal detail too when looking for + pending signal handlers, so that subscribing to changed signals with a + detail works again. + * 0001-gmain-fix-poll-record-comparison.patch: gmain: fix the sorting of + poll records. Resolves FTBFS on ppc64el. + + -- Iain Lane Fri, 28 Nov 2014 18:08:16 +0000 + +glib2.0 (2.43.1-1) experimental; urgency=medium + + * New upstream release 2.43.1, changes since 2.42.1: + + GQueue now accepts NULL as a sibling in g_queue_insert_before() and + g_queue_insert_after() + + GObject gained a debug option to provide instance counts. To use it, set + GOBJECT_DEBUG=instance-count and call g_type_get_instance_count(). + + GOption now has a strict POSIX mode in which it stops parsing arguments + as soon as a non-option argument is encountered. + * debian/control{,.in}: Bump Standards-Version to 3.9.6, no changes + required. + * debian/libglib2.0-0.symbols: Add new symbols for this release. + + -- Iain Lane Tue, 25 Nov 2014 12:46:31 +0000 + +glib2.0 (2.42.1-1) unstable; urgency=medium + + [ Iain Lane ] + * Pass --enable-debug=minimum not minimal - this is what configure.ac + expects. + + [ Emilio Pozuelo Monfort ] + * New upstream bugfix release. + * d/p/0001-properties-disable-default-deprecation-warnings.patch: + + Removed, merged upstream. + + -- Emilio Pozuelo Monfort Tue, 11 Nov 2014 18:53:49 +0100 + +glib2.0 (2.42.0-2) unstable; urgency=medium + + [ Andreas Henriksson ] + * Update Vcs-* to use unstable instead of experimental branch + + [ Iain Lane ] + * 0001-properties-disable-default-deprecation-warnings.patch: Backport from + upstream stable branch - silences warnings that are shown to users on + stderr, and which also cause some testsuite failures and consequent FTBFS. + + -- Iain Lane Thu, 02 Oct 2014 13:08:24 +0100 + +glib2.0 (2.42.0-1) unstable; urgency=medium + + * New upstream release + + -- Iain Lane Tue, 23 Sep 2014 10:12:15 +0100 + +glib2.0 (2.41.5-2) unstable; urgency=medium + + * Upload to unstable. + + -- Andreas Henriksson Fri, 19 Sep 2014 22:00:33 +0200 + +glib2.0 (2.41.5-1) experimental; urgency=medium + + [ Andreas Henriksson ] + * Make libglib2.0-0 recommend xdg-user-dirs + - needed to set up ~/.config/user-dirs.dirs to get default XDG_*_DIR set. + + [ Iain Lane ] + * New upstream release 2.41.5 + - GDesktopAppInfo: avoid polling on missing desktop dirs + + -- Iain Lane Wed, 17 Sep 2014 10:19:27 +0100 + +glib2.0 (2.41.4-1) experimental; urgency=medium + + * New upstream release + * debian/libglib2.0-0.symbols: + + Add g_application_add_main_option symbol + + -- Sjoerd Simons Sat, 06 Sep 2014 15:16:14 +0200 + +glib2.0 (2.41.3-1) experimental; urgency=medium + + * New upstream release 2.41.3 + * debian/tests/installed-tests: Revert the previous change - require dbus >= + 1.8 and always use dbus-run-session. + + -- Iain Lane Wed, 20 Aug 2014 16:16:23 +0100 + +glib2.0 (2.41.2-1) experimental; urgency=medium + + * New upstream release + - The Unicode support has been updated to version 7.0 of the Unicode + standard + - GNotification now supports priorities for notifications + - GMutex now uses a faster, native implementation on Linux + * 0001-gvariant-tests-workaround-libc-compiler-issue.patch: Drop, applied + upstream in this release. + * Add new symbols for this release. + * Merge in changes from 2.40.0-4 + + Adapt for system pcre3/1:8.35 (Closes: #755439): + - a PCRE 8.31 bug in case-insensitivity has been fixed, so do not assert + bug-for-bug compatibility with 8.31 + - named match groups' names cannot start with a digit any more, so + (?P<1>.) is no longer allowed; do not assert that it is + - turn off a new optimization that would reduce the result set when + called from g_match_all(_full), to preserve existing functionality + + Build-depend on pcre3/1:8.35 so that the new optimization is + known to be turned off in the built binaries + + Add patch from upstream to fix mis-optimization in gvariant test + with gcc 4.9 (Closes: #756272) + + Avoid using dbus-launch for regression tests (Closes: #737488): + - run installed-tests under dbus-run-session from dbus (>= 1.8) + - do not run build-time tests under dbus-launch: those that use D-Bus + all create their own session bus instances now + (i.e. remove 05_run-gio-tests-with-a-dbus-session.patch) + - set a deliberately invalid DBUS_SESSION_BUS_ADDRESS to make sure + nothing in the build is still inheriting it from the environment + + Override Lintian false positive #733733: we build-depend on python:any + but Lintian doesn't yet understand :any syntax + * Make the installed tests still run dbus-launch if we don't have + dbus-run-session (i.e. if the installed dbus is << 1.8). + + -- Iain Lane Thu, 14 Aug 2014 11:14:40 +0100 + +glib2.0 (2.41.1-2) experimental; urgency=medium + + * 0001-gvariant-tests-workaround-libc-compiler-issue.patch: Cherry-pick + patch from upstream to fix/workaround a new compiler optimisation in + gcc-4.9 which occurs when passing a null pointer / zero size to memcmp. + Should fix FTBFS on many arches in unstable. + + -- Iain Lane Wed, 25 Jun 2014 10:21:27 +0100 + +glib2.0 (2.41.1-1) experimental; urgency=medium + + * New upstream release + * 0001-Prevent-an-invalid-CARBON_LIBS-from-appearing-in-the.patch: Drop, + included in this release. + * Update symbols file with the new symbol in this release. + + -- Iain Lane Tue, 24 Jun 2014 12:40:29 +0100 + +glib2.0 (2.41.0-2) experimental; urgency=medium + + [ Andreas Henriksson ] + * Bump python:any build-dependency to >= 2.7.5-5~ (Closes: #747928) + + [ Emilio Pozuelo Monfort ] + * Use the default compiler on sparc, since it's already >> 4.7. + Closes: #751313. + + [ Iain Lane ] + * 0001-Prevent-an-invalid-CARBON_LIBS-from-appearing-in-the.patch: + Cherry-pick patch from upstream to fix an invalid "@CARBON_LIBS@" token + appearing in Libs.private in the pcfile. (LP: #1330033) + + -- Iain Lane Mon, 16 Jun 2014 10:17:36 +0100 + +glib2.0 (2.41.0-1) experimental; urgency=medium + + [ Emilio Pozuelo Monfort ] + * debian/libglib2.0-doc.links: + + The symlink for the gtk docs is broken at the moment, and even if + fixed, it will still be broken if libgtk2.0-doc isn't installed on + a system, so just drop it. Closes: #746782. + + [ Iain Lane ] + * New upstream release 2.41.0 + - Many bugfixes found by static analysis, including potential fd leaks and + NULL pointer dereferences. + - Increased use of (nullable) attribute on out values and return types now + that it is supported (mostly from porting Vala metadata). + - use XDG_CURRENT_DESKTOP for OnlyShowIn/NotShowIn handling of desktop + files, deprecating g_desktop_app_info_set_desktop_env() + - add support for g_desktop_app_info_get_implementations() to find desktop + files that have an Implements= line for a given interface + - GHmac has gained SHA-512 support + - support the new mimeapps specification (most notably, moving the + assoications/defaults configuration to ~/.config/mimeapps.list). + - libgobject is now linked -Wl,-z,nodelete when possible to avoid errors + when gobject is used from a module for a program that does not itself use + gobject and that module is unloaded/reloaded + * debian/watch: Use http://ftp.gnome.org; it's more up-to-date. + * Update symbols file with new symbols for this release. + + -- Iain Lane Tue, 27 May 2014 15:41:46 +0100 + +glib2.0 (2.40.0-4) unstable; urgency=medium + + * Team upload + + [ Emilio Pozuelo Monfort ] + * Use the default compiler on sparc, since it's already >> 4.7. + Closes: #751313. + + [ Iain Lane ] + * Fix Vcs-* for the unstable branches + + [ Simon McVittie ] + * Adapt for system pcre3/1:8.35 (Closes: #755439): + - a PCRE 8.31 bug in case-insensitivity has been fixed, so do not assert + bug-for-bug compatibility with 8.31 + - named match groups' names cannot start with a digit any more, so + (?P<1>.) is no longer allowed; do not assert that it is + - turn off a new optimization that would reduce the result set when called + from g_match_all(_full), to preserve existing functionality + * Build-depend on pcre3/1:8.35 so that the new optimization is + known to be turned off in the built binaries + * Add patch from upstream to fix mis-optimization in gvariant test + with gcc 4.9 (Closes: #756272) + * Avoid using dbus-launch for regression tests (Closes: #737488): + - run installed-tests under dbus-run-session from dbus (>= 1.8) + - do not run build-time tests under dbus-launch: those that use D-Bus + all create their own session bus instances now + (i.e. remove 05_run-gio-tests-with-a-dbus-session.patch) + - set a deliberately invalid DBUS_SESSION_BUS_ADDRESS to make sure + nothing in the build is still inheriting it from the environment + * Override Lintian false positive #733733: we build-depend on python:any + but Lintian doesn't yet understand :any syntax + + -- Simon McVittie Sun, 10 Aug 2014 22:58:33 +0100 + +glib2.0 (2.40.0-3) unstable; urgency=medium + + [ Rico Tzschichholz ] + * debian/libglib2.0-bin.install: + - Install /usr/bin/gapplication + + -- Sjoerd Simons Sun, 27 Apr 2014 10:36:34 +0200 + +glib2.0 (2.40.0-2) unstable; urgency=medium + + [ Iain Lane ] + * gdbus-tests-wait-up-to-60s-for-gdbus-testserver-to-t.patch: Take latest + version from upstream bug to resolve some test failures. + * Add xauth test-dep, needed for xvfb-run + + [ Emilio Pozuelo Monfort ] + * Upload to unstable. + + -- Emilio Pozuelo Monfort Wed, 02 Apr 2014 14:37:13 +0200 + +glib2.0 (2.40.0-1) experimental; urgency=medium + + * New upstream release. + + -- Andreas Henriksson Mon, 24 Mar 2014 20:58:34 +0100 + +glib2.0 (2.39.92-2) experimental; urgency=medium + + * test_timer_basic is still broken. Skip it. + + -- Iain Lane Tue, 18 Mar 2014 15:43:35 +0000 + +glib2.0 (2.39.92-1) experimental; urgency=medium + + * New upstream release. + * 0001-timer-test-use-volatile-for-locals.patch: Take patch from bgo #722604 + to workaround gcc's intentional spec violation in the timer tests. + + Remove debian/patches/80-skip-timer-test.patch accordingly; it should + now work. + + -- Iain Lane Tue, 18 Mar 2014 10:14:36 +0000 + +glib2.0 (2.39.91-1) experimental; urgency=medium + + * New upstream release. + * d/p/0001-asyncqueue-fix-timeout-math-on-32bit-systems.patch: + + Dropped, merged upstream. + * debian/patches/81-skip-monitor-test-on-non-linux.patch: + + New patch, skip the monitor test on non-linux as it currently hangs. + * debian/libglib2.0-0.symbols: + + Add a new symbol. + + -- Emilio Pozuelo Monfort Sun, 09 Mar 2014 15:06:31 +0100 + +glib2.0 (2.39.90-2) experimental; urgency=medium + + * debian/control.in: + + Bump gtk-doc-tools build-dependency per configure.ac. + * debian/patches/Don-t-use-a-parallel-build-for-the-documentation.patch: + + Removed, no longer needed with gtk-doc 1.20. + * d/p/0001-asyncqueue-fix-timeout-math-on-32bit-systems.patch: + + Patch from git, fix an overflow in g_async_queue_timed_pop_unlocked + on 32 bits systems. + * debian/patches/80-skip-timer-test.patch: + + Skip the timer test which currently fails on x86 because of float + precission errors. + * debian/rules: + + Make the test suite fatal on linux. + + Run the test suite on !linux, but ignore test suite errors for now. + + -- Emilio Pozuelo Monfort Sun, 23 Feb 2014 16:36:18 +0100 + +glib2.0 (2.39.90-1) experimental; urgency=medium + + * New upstream release. + * Drop patches now included in upstream release: + - 0001-glib-tests-collate.c-run-to-completion-when-skipping.patch + - 0002-g_test_run-return-0-if-all-tests-are-skipped-in-TAP-.patch + * Fix fuzz to make debian/patches/04_homedir_env.patch apply again. + * Use quilt to refresh remaining patches. + * debian/libglib2.0-0.symbols: Add new symbols. + + -- Andreas Henriksson Tue, 18 Feb 2014 19:53:16 +0100 + +glib2.0 (2.39.4-1) experimental; urgency=medium + + * New upstream development release. + * debian/rules: + + Tell dh_clean not to remove org.gtk.test.gschema.xml.orig, otherwise + the build fails as that fail is missing. Apparently dh_clean removes + everything that ends with .orig. + * debian/libglib2.0-0.symbols: + + Add new symbols. + * d/p/valgrind_h_add_r0_to_the_clobber_list_on_PPC.patch, + d/p/tests-move-param-implement-to-m-slow.patch, + d/p/Fix-races-in-unix-signal-dispatch.patch: + + Dropped, applied upstream. + * d/p/0001-glib-tests-collate.c-run-to-completion-when-skipping.patch, + d/p/0002-g_test_run-return-0-if-all-tests-are-skipped-in-TAP-.patch: + + Add patches from upstream to fix test suite errors. + * debian/patches/*: + + Refreshed. + * debian/rules: + + Don't run the test suite in parallel as some tests fail otherwise. + + Ignore test suite errors for now. There are a few known racy tests + that fail randomly, and I'm more interested in whether glib builds + fine everywhere. We should make the tests fatal again before 2.40. + + -- Emilio Pozuelo Monfort Sun, 16 Feb 2014 11:38:59 +0100 + +glib2.0 (2.38.2-5) unstable; urgency=medium + + * Upload to unstable. + + -- Emilio Pozuelo Monfort Sat, 15 Feb 2014 12:34:05 +0100 + +glib2.0 (2.38.2-4) experimental; urgency=medium + + * Team upload + * DEP-3: tag patch for Debian#737501 as sent upstream to GNOME#723653 + * d/p/gdbus-Let-the-pending-read-finish-before-closing-the.patch: + add patch from Mikhail Zabaluev fixing a test failure on mips, + also reproduced on mipsel (Closes: #738290) + * d/p/Fix-races-in-unix-signal-dispatch.patch: add patch from upstream + to fix what appears to be the root cause of #737380 + * d/p/gdbus-tests-wait-up-to-60s-for-gdbus-testserver-to-t.patch, + d/p/gdbus-connection-wait-up-to-10s-to-actually-send-a-m.patch: + improve arbitrary timeouts in regression tests, fixing an unreported + FTBFS on armhf + + -- Simon McVittie Tue, 11 Feb 2014 17:43:08 +0000 + +glib2.0 (2.38.2-3) experimental; urgency=medium + + * Team upload + * d/p/Don-t-use-a-parallel-build-for-the-documentation.patch: + Disable parallel build for the documentation, hopefully fixing an + intermittent FTBFS in which gtk-doc tries to scan Windows-specific + objects (Closes: #737501) + * d/p/Do-not-attempt-to-autolaunch-a-session-dbus-daemon-w.patch: + Refuse to perform D-Bus "autolaunch" if $DISPLAY is unset, in which + case it isn't going to work anyway. This works around a process-launching + issue in the GApplication test on mipsel (Closes: #737380) + * Bump debhelper compat level to 9, resulting in co-installable + multiarch debug symbols and ~ 50% smaller installed size + for libglib2.0-0-dbg (at the cost of ~ 30% larger .deb size) + - mark libglib2.0-0-dbg Multi-Arch: same + + -- Simon McVittie Thu, 06 Feb 2014 09:53:27 +0000 + +glib2.0 (2.38.2-2) experimental; urgency=medium + + * Team upload. + + [ Emilio Pozuelo Monfort ] + * debian/rules: + + Enable parallel builds. + + [ Laurent Bigonville ] + * Add d/p/valgrind_h_add_r0_to_the_clobber_list_on_PPC.patch: Fix FTBFS on + PPC (taken from upstream, Closes: #737379) + + [ Simon McVittie ] + * Add DEP-3 tagging to PPC patch + * Add d/p/tests-move-param-implement-to-m-slow.patch to knock out + test /param/implement, which upstream describe as "essentially a + forkbomb", leading to failures on armel and at least sporadically + on mipsel (Closes: #737381) + + -- Simon McVittie Sun, 02 Feb 2014 20:35:34 +0000 + +glib2.0 (2.38.2-1) experimental; urgency=low + + * New upstream release + - Drop d/p/0001-g_file_copy-Fall-back-to-pathname-queryinfo-to-help-.patch + merged upstream + * debian/control.in: + - Bump Standards-Version to 3.9.5 (no further changes) + - Use canonical URL for Vcs-Svn field + + -- Laurent Bigonville Sat, 14 Dec 2013 16:38:02 +0100 + +glib2.0 (2.38.1-2) experimental; urgency=low + + * debian/rules: + + Set VERBOSE so we get failing tests' stdout and stderr. This will + help us debug the various build failures in different arches. + + -- Emilio Pozuelo Monfort Sun, 27 Oct 2013 21:58:46 +0100 + +glib2.0 (2.38.1-1) experimental; urgency=low + + * Build-Depend on python:any. python is Multi-Arch: allowed; this BD allows + the python from any architecture that can be executed on the builder to + satisfy the BD, simplifying cross building of glib2.0. + * New upstream bugfix release 2.38.1 + + Fix error code checks when SOCK_CLOEXEC is defined but not supported + (fix support for GNU/Hurd) + + g_settings_list_children: only list viable schemas (fix gsettings + list-recursively crashes with invalid schemas installed) + + GDBusObjectManagerClient: Fix typo in the /org/freedesktop/DBus path + when adding match rules + - Remove 0001-gio-Fix-typo-in-the-org-freedesktop-DBus-path.patch + * 0001-g_file_copy-Fall-back-to-pathname-queryinfo-to-help-.patch: + Cherry-pick gio patch to fall back to g_file_query_info if + query_info_on_read is not supported. Fixes copying from backends that + don't implement the latter. (Closes: #715436, LP: #1217230) + + -- Iain Lane Thu, 17 Oct 2013 15:53:12 +0100 + +glib2.0 (2.38.0-1) experimental; urgency=low + + * New upstream release + * debian/patches/0001-gio-Fix-typo-in-the-org-freedesktop-DBus-path.patch: + Cherry-pick patch from upstream to fix object path typo in gio (LP: + #1227295) + * Add --enable-debug=minimal explicitly to the deb build so the debugging + level doesn't change between pre-release and stable versions. + + -- Iain Lane Wed, 25 Sep 2013 10:37:50 +0000 + +glib2.0 (2.37.93-1) experimental; urgency=low + + * New upstream release 2.37.93 (& .92) + + new API g_file_measure_disk_usage() similar to du(1) + * Add new symbols for g_file_measure_disk_usage API added in this release. + + -- Iain Lane Wed, 18 Sep 2013 10:07:15 +0000 + +glib2.0 (2.37.7-1) experimental; urgency=low + + * New upstream 2.37.7 + + GDateTime now supports %:z formatting variations for timezones. This is + a GNU date extension. + + -- Iain Lane Tue, 10 Sep 2013 11:26:28 +0000 + +glib2.0 (2.37.6-1) experimental; urgency=low + + * New upstream release 2.37.6 + * Update symbols file + * Merge changes from unstable, mainly for build / testsuite fixes. + + -- Iain Lane Wed, 21 Aug 2013 09:48:19 +0000 + +glib2.0 (2.37.5-1) experimental; urgency=low + + * New upstream release 2.37.5 (including interesting changes from .3 and .4) + + Implement the Desktop Action specification + + The gsettings tool now reports failure to write a key (e.g. because the + key was locked down) + + add a new API for instance private data: G_DEFINE_TYPE_WITH_PRIVATE + + add new D-Bus API for async property handling + * libglib2.0-tests: Depend on shared-mime-info required by contenttype test. + * New upstream release + * 0001-Revert-g_file_set_contents-don-t-fsync-on-ext3-4.patch: Drop, now + upstream. + * debian/tests/installed-tests: Add a new DEP-8 test to run the + installed-tests. + * Refresh patches. + * Update symbols file. + * debian/patches/skip-brokwn-dbus-appinfo-test.patch: Skip a broken new + dbus-appinfo test which is hanging. + + -- Iain Lane Fri, 02 Aug 2013 16:54:51 +0000 + +glib2.0 (2.37.2-1) experimental; urgency=low + + * New upstream version + + add support for installed tests: + https://live.gnome.org/GnomeGoals/InstalledTests + + add a new g_test_trap_subprocess() that works on Windows as a + replacement for the (now deprecated) g_test_trap_fork() + + support for explicitly cancelling a gobject property binding + + performance improvements for signal argument handling + + stop using `quotes' in very many log messages generated by GLib, for + favour of 'this style'. This may cause testcases in other packages to + fail if they were matching on the previous text. + + improve manpages: add missing arguments and flags + + Installing properties after class initialization is deprecated, and will + trigger a warning. + + GApplication Support org.freedesktop.Application, including D-Bus + activation from desktop files + * Refresh patches. + * Update symbols file with new symbols in this release. + * Enable installed tests and install into a libglib2.0-tests package. + * clean debian/{install,build,stamp-makefile-check} and + gio/gdbus-2.0/codegen/*.pyc + * Set $XDG_RUNTIME_DIR to a writable directory we control; now required by + the testsuite. + + -- Iain Lane Fri, 21 Jun 2013 15:28:46 +0100 + +glib2.0 (2.36.4-1) unstable; urgency=low + + * New upstream release. + * Remove 0001-Revert-g_file_set_contents-don-t-fsync-on-ext3-4.patch, merged + upstream. + * Make test suite linux only again. On kfreebsd the test suite keeps getting + stuck and the build is killed after a timeout. + + -- Michael Biebl Sat, 10 Aug 2013 09:57:58 +0200 + +glib2.0 (2.36.3-4) unstable; urgency=low + + [ Josselin Mouette ] + * Still run the testsuite on !linux, even though non-fatal. + + [ Michael Biebl ] + * Track stable releases. + * Use dh_python2 to properly generate the dependencies for gdbus-codegen, + which is shipped in libglib2.0-dev. + + -- Michael Biebl Sun, 04 Aug 2013 16:39:05 +0200 + +glib2.0 (2.36.3-3) unstable; urgency=low + + [ Julien Cristau ] + * Use gcc-4.8 on sparc to fix misbuild causing test failure (closes: #709781). + + [ Josselin Mouette ] + * Only make the testsuite fatal on linux. Although the other + architectures don’t pass, we have to keep a pair of reverse + dependencies working. + + -- Josselin Mouette Sat, 06 Jul 2013 15:51:11 +0200 + +glib2.0 (2.36.3-2) unstable; urgency=low + + * 0001-Revert-g_file_set_contents-don-t-fsync-on-ext3-4.patch: + + Patch from the upstream 2.36 stable branch. Revert a previous + commit that dropped calls to fsync() on ext[234] fileystems as + that caused data corruption in some cases (e.g. corrupted dconf + db on power loss). + + -- Emilio Pozuelo Monfort Thu, 20 Jun 2013 23:17:54 +0200 + +glib2.0 (2.36.3-1) unstable; urgency=low + + [ Josselin Mouette ] + * Make the testsuite fatal on all architectures. If it fails, we need + to fix it or drop the architecture, not to ignore it. + * Break libgnome-desktop-3-2 < 3.4.2-2 for the thumbnails location + change. + + [ Emilio Pozuelo Monfort ] + * New upstream bugfix release. Closes: #708568. + * debian/patches/13_sparc_prlimit_prototype.patch: + + Refreshed. + + -- Emilio Pozuelo Monfort Mon, 10 Jun 2013 21:34:19 +0200 + +glib2.0 (2.36.1-2) unstable; urgency=low + + * Merge experimental branch, upload to unstable. + + -- Martin Pitt Wed, 08 May 2013 06:25:57 +0200 + +glib2.0 (2.36.1-1) experimental; urgency=low + + * New upstream release + * Refresh debian/patches/06_thread_test_ignore_prctl_fail.patch + + -- Iain Lane Tue, 23 Apr 2013 10:20:47 +0100 + +glib2.0 (2.36.0-2) experimental; urgency=low + + * debian/rules: + + Don't abort the build if the test suite fails on mipsel. + * debian/patches/17_check_abis_mips_symbols.patch: + + Also allow _ftext in libgthread. + + -- Emilio Pozuelo Monfort Thu, 28 Mar 2013 12:44:06 +0100 + +glib2.0 (2.36.0-1) experimental; urgency=low + + * New upstream release. + + debian/libglib2.0-0.symbols: + - Updated. + * debian/rules: + + Make the test suite fatal in armel and armhf. + * debian/patches/17_check_abis_mips_symbols.patch: + + Add _ftext to the list of allowed symbols, since that + is leaked on mips. + + -- Emilio Pozuelo Monfort Tue, 26 Mar 2013 11:14:37 +0100 + +glib2.0 (2.35.9-2) experimental; urgency=low + + * d/p/11_kfreebsd_pthread_condattr_setclock_prototype.patch: + + Another patch to fix the build on kfreebsd. Add a prototype + for pthread_condattr_setclock() when building on kfreebsd + since the prototype there is missing. The glibc bug to add + the missing prototype is #703545, we can remove this hack + when that is fixed. + * debian/patches/13_sparc_prlimit_prototype.patch: + + New patch, only use prlimit if the prototype is available. + Should fix the build on sparc where prlimit is available but + the prototype is missing. Thanks to Julien Cristau for the + patch. This works-around #703559 and can be removed when that + bug is fixed. + * debian/patches/15_gio_desktop_app_info_test_bin_true_path.patch: + + Change path for 'true' to /bin/true as that's where it is in + Debian. This fixes a testcase that was failing on every arch + and was causing the build to fail on ia64 and powerpc as test + failures are fatal on those arches. + * debian/rules: + + Use filter instead of findstring to match the current arch + against the list of architectures where the test suite should + not be fatal, as the latter matches substrings and so it was + making the testsuite non-fatal on amd64 and i386 because they + match kfreebsd-amd64 and kfreebsd-i386. + + -- Emilio Pozuelo Monfort Thu, 21 Mar 2013 16:24:45 +0100 + +glib2.0 (2.35.9-1) experimental; urgency=low + + * debian/control.in: + + Break python-gi (<< 3.7.2). Closes: #702603. + * New upstream release. + + debian/patches/04_homedir_env.patch: + - Updated to apply again. + * debian/rules: + + Set HOME instead G_HOME, as GLib now honors the former. We will + eventually remove our local patch to support G_HOME, so packages + that need to override the home directory for the test suite should + switch to overriding HOME. + * debian/libglib2.0-0.symbols: + + Bump minimum version for g_get_home_dir() so that users that need + HOME to be honored get a proper runtime dependency. + * debian/patches/10_kfreebsd_issetugid_prototype.patch: + + Untested patch to fix the build on kfreebsd. + + -- Emilio Pozuelo Monfort Tue, 19 Mar 2013 13:58:27 +0100 + +glib2.0 (2.35.8-1) experimental; urgency=low + + [ Matthias Klose ] + * Configure cross builds with --disable-modular-tests --disable-gtk-doc. + + [ Iain Lane ] + * Merges from unstable branch (Michael Biebl) + - Take into account multiarch when removing the cache files in postrm: + Remove /usr/lib/gio/modules/giomodule.cache only for the native + architecture for which this cache file was created. + After removing /usr/share/glib-2.0/schemas/gschemas.compiled on purge, + run dpkg-trigger explicitly, so in case libglib2.0-0 is installed for + other architectures, the cache file is re-created. (Closes: #696389) + - Drop the various Breaks from libglib2.0-0. Those are causing APT to + fail on a dist-upgrade from squeeze to wheezy. (Closes: #676485) + * Refresh patches and slightly rework debian/patches/04_homedir_env.patch: + g_get_home_dir() now respects the HOME environment variable but we'll keep + G_HOME for now as packages in Debian rely on it. + * gdbus-codegen .py files have moved to /usr/share/glib-2.0 + * Update symbols file + + [ Martin Pitt ] + * New upstream release 2.35.4 + * debian/libglib2.0-0.symbols: Update for new upstream release. + * Drop 08_disable_gapplication_basic_test.patch, test is now more robust. + * Drop 92_revert_appinfo_command_line.patch and add xterm build dependency; + xterm is rather lightweight in terms of dependencies and is sufficient to + run all the "Terminal=true" tests. + * Add 08_fix_closure_invalidation.patch: gsignal: fix closure invalidation + code. (GNOME #690118) + + [ Emilio Pozuelo Monfort ] + * New upstream release 2.35.8. + + debian/patches/08_fix_closure_invalidation.patch: + - Removed, applied upstream. + + debian/patches/*: + - Refreshed. + + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + + -- Emilio Pozuelo Monfort Sat, 23 Feb 2013 19:27:38 +0100 + +glib2.0 (2.34.3-1) experimental; urgency=low + + * New upstream release. + + -- Emilio Pozuelo Monfort Wed, 28 Nov 2012 14:38:35 +0100 + +glib2.0 (2.34.2-1) experimental; urgency=low + + * Team upload + + [ Martin Pitt ] + * debian/rules: Re-enable failing the build on failed tests on armel/armhf + on Ubuntu, now that the buildds behave themselves again. + + [ Simon McVittie ] + * New upstream release + - 50_git_gmenuexporter_allow_null_bus_on_name_vanished.patch: remove, + applied upstream + - 91_kfreebsd_credentials.patch: remove, applied upstream + * Override a couple of package-contains-empty-directory lintian tags + for deliberate empty directories + * Override package-contains-devhelp-file-without-symlink lintian tag + for gdbus-object-manager-example, which is deliberately not in devhelp + + -- Simon McVittie Mon, 12 Nov 2012 16:08:29 +0000 + +glib2.0 (2.34.1-2) experimental; urgency=low + + * Team upload + * Apply patch from unstable to use the FreeBSD credentials-passing code + path on kFreeBSD too, fixing (at least) gnome-terminal and lightdm on + kFreeBSD (Closes: #581750, #631968) + + -- Simon McVittie Wed, 31 Oct 2012 12:56:54 +0000 + +glib2.0 (2.34.1-1) experimental; urgency=low + + [ Josselin Mouette ] + * Require libelfg0-dev, not libelf-dev which has nothing to do with + it. + + [ Iain Lane ] + * New upstream release + + GTimeZone support for zoneinfo version 1 + + Leak in glib-compile-resources + + g_settings_bind: use canonical property name + + Port gio tests from pygobject to pygi + * Switch python-gobject-2 BD to python-gi, folowing porting of tests. + * debian/patches/50_git_gmenuexporter_allow_null_bus_on_name_vanished.patch: + Cherry-pick upstream patch to fix crash when GBusNameVanishedCallback is + called with a NULL GDBusConnection. (LP: #1044322) + + -- Iain Lane Wed, 17 Oct 2012 11:51:14 +0100 + +glib2.0 (2.34.0-1) experimental; urgency=low + + [ Martin Pitt ] + * debian/rules: Only run tests for the main flavour; it takes too + long for all three and does not give us a lot of extra confidence. + * debian/rules: Manually create debian/stamp-makefile-check, as with above + change it's not created automatically any more. + * Add 07_disable_tests_on_slow_archs.patch: Disable tests on slow + architectures which keep failing the tests. These are currently + /socket/timed_wait, /mainloop/timeouts, /mainloop/child_sources, + /timeout/rounding, and the upper bound on /gdbus/method-calls-in-thread on + ARM platforms. + * debian/control.in: Bump pcre dependency to >= 1:8.31. + * debian/rules: Seems there is no way of making the test suite work reliably + with the upgraded Ubuntu ARM builders, so make tests non-fatal on + arm{el,hf} until they get less swap happy. + + [ Michael Biebl ] + * New upstream release. + * Drop debian/patches/91_revert_pcre_8.31_test.patch now that we have a + recent enough version. + + -- Martin Pitt Thu, 27 Sep 2012 11:22:56 +0200 + +glib2.0 (2.33.14-1) experimental; urgency=low + + [ Iain Lane ] + * New upstream release + + CVE-2012-3524: don't run dbus-launch from setuid binaries + + g_content_type_get_generic_icon_name(): new API for getting the icon + name for a mime type + + Introspection fixes: + - GDBusConnection nullability fixes + - give a box type to GTimeZone + + Drop GVFS_INOTIFY_DIAG + + Add a new "Writing GLib Applications" section to the reference + documentation with general info on security, threads, etc. + + gwin32mount.c: Fix syntax error + + gresource tests: srcdir != builddir fixes + + tests/gvariant: Fix test on big endian architectures + + Fix regression in g_shell_parse_argv() + * Dropped 07_tests_gvariant_big_endian.patch: applied upstream. + + [ Michael Biebl ] + * Bump all 2.33.x symbol versions to 2.33.14 to ensure a tight enough + dependency for packages using features from glib 2.33. + + -- Michael Biebl Wed, 19 Sep 2012 18:38:24 +0200 + +glib2.0 (2.33.12-4) experimental; urgency=low + + * debian/patches/03_disble_glib_compile_schemas_warning.patch: Add a new + patch to disable a warning when compiling schemas which are installed into + 'deprecated' locations. Users see this very often due to + glib-compile-schemas being called from libglib2.0-0's trigger and it is + not very useful for them. + + -- Iain Lane Mon, 10 Sep 2012 16:25:18 +0100 + +glib2.0 (2.33.12-3) experimental; urgency=low + + * debian/control.in: Add Breaks: too glib-networking versions prior to + 2.33.12. (LP: #1046319) + * debian/rules: Ignore test case failures on hurd-i386 (not a release + architecture) and mips (this keeps tripping over a gdbus test race + condition). + * Replace 07_disable_gvariant_checksum_tests.patch with + 07_tests_gvariant_big_endian.patch which fixes the test properly instead + of disabling it. Taken from + https://bugzilla.gnome.org/show_bug.cgi?id=683384 + + -- Martin Pitt Thu, 06 Sep 2012 06:14:41 +0200 + +glib2.0 (2.33.12-2) experimental; urgency=low + + * Drop 10_increase_gapplication_test_delay.patch. We disable the whole test + now anyway (08_disable_gapplication_basic_test.patch). + * Add 07_disable_gvariant_checksum_tests.patch: 2.33.12 introduced two new + checks for GVariant checksum stability. This does not currently work on + big-endian machines (https://bugzilla.gnome.org/show_bug.cgi?id=683384), + so disable these tests for now. + + -- Martin Pitt Wed, 05 Sep 2012 11:19:29 +0200 + +glib2.0 (2.33.12-1) experimental; urgency=low + + [ Sebastien Bacher ] + * New upstream version + * debian/libglib2.0-0.symbols: + - updated + * revert_g_file_make_directory_with_parents_error_propagation.patch: + - dropped, the issue is fixed in the new version + * debian/patches/92_revert_appinfo_command_line.patch: + - don't require a vte for test, we don't want an xorg stack there + + [ Iain Lane ] + * Add revert_g_file_make_directory_with_parents_error_propagation.patch: + This reverts upstream commit b0bce4ad41937dabf7e5c94dcce3caf4e88f3f97 + which caused applications to segfault. The proper fix will be in the next + glib release, so this patch should be dropped then. (LP: #1035688) + + [ Martin Pitt ] + * Add 07_test_method_calls_on_proxy_bump_max_time.patch: On slower + platforms, the overhead of the 240 D-BUS Sleep calls is larger than + the current maximum of 6 seconds. Bump maximum time to 8 seconds to be + more resilient to this. + * Add 08_disable_gapplication_basic_test.patch: Disable /gapplication/basic + test. It's full of race conditions and keeps breaking builds. + + [ Robert Ancell ] + * New upstream bugfix release (LP: #1045608) + * Drop 07_test_method_calls_on_proxy_bump_max_time.patch: + - Applied upstream + + -- Martin Pitt Tue, 04 Sep 2012 15:50:40 +0200 + +glib2.0 (2.33.8-1) experimental; urgency=low + + * New upstream release 2.33.8. + - GIO now has a g_file_delete_async function + - The defaults for GThreadPools max_unused_threads and max_idle_time + values have been changed to 2 and 15*1000, respectively. + * debian/control{,.in}: XC-Package-Type → Package-Type, thanks to Lintian. + * debian/libglib2.0-0.symbols: Update for new symbols in this release and + remove Debian revisions which aren't necessary. + + -- Iain Lane Tue, 07 Aug 2012 14:38:25 +0100 + +glib2.0 (2.33.6-1) experimental; urgency=low + + * New upstream release. + * Drop 91_revert_schema_path_warning.patch now, we are not in final freeze + in Ubuntu, and this is not aimed at Debian Wheezy. + * Add 91_revert_pcre_8.31_test.patch: Revert new regex test from 2.33.4 + which depends on pcre 8.31. We still have 8.30, and we are building + against the system library instead of the bundled one. + + -- Martin Pitt Wed, 18 Jul 2012 14:41:39 +0200 + +glib2.0 (2.33.4-1) experimental; urgency=low + + [ Martin Pitt ] + * debian/rules: Make tests always fatal on Ubuntu. + + [ Iain Lane ] + * New upstream release 2.33.4. + * Refresh patches to apply cleanly and remove those applied upstream. + * Bump version on libpcre-dev BD in line with upstream. + * debian/libglib2.0-0.symbols: Add new symbols in this release. + + -- Iain Lane Mon, 16 Jul 2012 11:55:30 +0100 + +glib2.0 (2.33.3-2) experimental; urgency=low + + * Rename 07_socket_test_timespan_jitter.patch to 00git_* and update + changelog with what got committed upstream. + * Add 07_contenttype_test_fix_overflow.patch: Call g_content_type_guess() + with valid data len. Fixes a segfault when running the test. + Forwarded to GNOME #674452. + * Add 08_contenttype_known_test_failure.patch: Disable known test failure + due to a bug in g_content_type_from_mime_type(). For details, see + https://bugzilla.gnome.org/show_bug.cgi?id=678941 + * Add 09_valuetransform_ulong_bool.patch: valuetransform: Fix definition of + ulong_bool. Thanks Philipp Kern! (Closes: #662057) + * Add 10_increase_gapplication_test_delay.patch: /gapplication/basic + sometimes fails due to a different order of expected and actual actions; + increase delay between them to reduce the race condition. Workaround for + https://bugzilla.gnome.org/show_bug.cgi?id=664627 + * Add 11_timeout_test_reduce_race.patch: Due to load, particular traits of + the architecture, or other circumstances, the /mainloop/timeouts sometimes + manages to call the "every 100 ms" timer loop only 9 times in 1050 ms. + This is an inherent race-condition in the test; allow it some slack and + accept 9 times as well. Forwarded to GNOME #678959. + + -- Martin Pitt Wed, 27 Jun 2012 11:50:54 +0200 + +glib2.0 (2.33.3-1) experimental; urgency=low + + * New upstream release. + * debian/libglib2.0-0.symbols: Add new symbols from this release. + * debian/libglib2.0-bin.install: bash completion is now installed into + /usr/share/bash-completion/completions/ by upstream. + * Add debian/libglib2.0-bin.maintscript: Clean up old bash completion + conffiles on upgrade. Add ${misc:Pre-Depends} to libglib2.0-bin. + * Add debian/tests/control: DEP-8 autopkgtest control file. Add XS-Testsuite + header to debian/control.in. + * Add debian/tests/build: autopkgtest check: Build and run a program against + glib, to verify that the headers and pkg-config file are installed + correctly. + * Add 06_thread_test_ignore_prctl_fail.patch: Do not fail the + /thread/thread4 test if prctrl() fails. This happens on the Debian + buildds. + * debian/rules: Set G_HOME to not clutter $HOME with ~/.dbus-keyrings and + avoid failure on the buildds where creating /home/buildd/.dbus-keyrings + fails. + * debian/rules: Fail the build on failed tests, except on architectures with + known current failures (arm*, kfreebsd*, s390x, sparc). + * Add 07_socket_test_timespan_jitter.patch: On some buildds the poll + duration in the /socket/timed_wait test is slightly lower than the + requested 100000. Adjust test to not fail in these cases. Forwarded to + GNOME #678881. + + -- Martin Pitt Tue, 26 Jun 2012 19:28:14 +0200 + +glib2.0 (2.33.2-1) experimental; urgency=low + + * Track unstable versions in the experimental branch. + * New upstream release 2.33.2 + - GLIB_VERSION_MIN_REQUIRED now defaults to the current stable version + - GIO input and output stream classes have grown GBytes-based methods + - GApplication now has hooks to register D-Bus objects before the bus name + is taken + * Refresh 04_homedir_env.patch to cleanly apply + * Add the new symbols from this release (g_app_info_get_supported_types, + g_*_bytes, g_type_ensure) + + -- Iain Lane Mon, 18 Jun 2012 11:56:08 +0100 + +glib2.0 (2.33.1-1) experimental; urgency=low + + * debian/control.in: Update Vcs-* for experimental branch. + * Drop 03_revert_git_single_include_error.patch. For GNOME 3.5.x we want to + properly fix the reverse dependencies. NB this is NOT for Debian wheezy. + * New upstream release. + * 04_homedir_env.patch: Adjust for new release. + * Drop 95_configure-Fix-typo-in-ELF-check.patch and + 96_configure-Reset-LIBS-after-ELF-check.patch: upstream now. + * debian/libglib2.0-0.symbols: Add new symbols from this release. + + -- Martin Pitt Tue, 15 May 2012 16:59:15 +0200 + +glib2.0 (2.33.12+really2.32.4-5) unstable; urgency=low + + * Fix the closing fi in the if statement in postrm. + + -- Michael Biebl Wed, 09 Jan 2013 16:14:49 +0100 + +glib2.0 (2.33.12+really2.32.4-4) unstable; urgency=low + + * Take into account multiarch when removing the cache files in postrm: + Remove /usr/lib/gio/modules/giomodule.cache only for the native + architecture for which this cache file was created. + After removing /usr/share/glib-2.0/schemas/gschemas.compiled on purge, + run dpkg-trigger explicitly, so in case libglib2.0-0 is installed for + other architectures, the cache file is re-created. (Closes: #696389) + * Drop the various Breaks from libglib2.0-0. Those are causing APT to fail + on a dist-upgrade from squeeze to wheezy. (Closes: #676485) + + -- Michael Biebl Tue, 08 Jan 2013 23:30:04 +0100 + +glib2.0 (2.33.12+really2.32.4-3) unstable; urgency=low + + * Team upload + * 92_kfreebsd_credentials.patch: use the FreeBSD credentials-passing + implementation on kFreeBSD too, making gnome-terminal and lightdm + work on kFreeBSD (Closes: #631968) + + -- Simon McVittie Wed, 24 Oct 2012 10:51:08 +0100 + +glib2.0 (2.33.12+really2.32.4-2) unstable; urgency=medium + + * Revert link adding for gdbus-object-manager-example. While it is + useful to have in /usr/share/doc as an example, it must not be + shipped with the system documentation. + * 20_glib-compile-resources_leak.patch: new patch. Fix a leak + introduced in version 2.32.4. Thanks Niels Thykier! + * SECURITY: add 11_CVE-2012-3524_setuid.patch from upstream. Prevents + using DBus in a setuid binary. Fixes CVE-2012-3524. + + -- Josselin Mouette Sat, 06 Oct 2012 01:15:16 +0200 + +glib2.0 (2.33.12+really2.32.4-1) unstable; urgency=low + + * New upstream bugfix release. + * 10_gdbus_race.patch: stolen from upstream git. Fix a race condition + that would make gnome-shell crash on startup under some conditions. + * libglib2.0-bin.install: bash completions have moved to /usr/share. + * libglib2.0-bin.maintscript: remove old conffiles. + * Add appropriate pre-dependency. + * libglib2.0-doc.links: add link for gdbus-object-manager-example. + + -- Josselin Mouette Sat, 22 Sep 2012 17:59:34 +0200 + +glib2.0 (2.33.12+really2.32.3-2) unstable; urgency=low + + * Explicitly set the shlibs version to 2.32.3 to not generate overly strict + dependencies for udeb packages. + + -- Michael Biebl Wed, 19 Sep 2012 21:25:56 +0200 + +glib2.0 (2.33.12+really2.32.3-1) unstable; urgency=low + + * Brown paper bag upload + * Re-upload version previously in unstable to superseded + experimental-targetted version previously mistakenly uploaded there. + + -- Iain Lane Mon, 10 Sep 2012 22:52:32 +0100 + +glib2.0 (2.32.3-1) unstable; urgency=low + + * New upstream release. + * Remove debian/patches/95_configure-Fix-typo-in-ELF-check.patch and + debian/patches/96_configure-Reset-LIBS-after-ELF-check.patch, merged + upstream. + + -- Michael Biebl Tue, 15 May 2012 16:12:21 +0200 + +glib2.0 (2.32.2-1) unstable; urgency=low + + * New upstream release. + * Refresh patches. + * Remove debian/patches/git_powerpc_gresources.patch, merged upstream. + * debian/patches/95_configure-Fix-typo-in-ELF-check.patch: Fix typo in ELF + configure check. Patch cherry-picked from upstream Git. + * debian/patches/96_configure-Reset-LIBS-after-ELF-check.patch: Reset LIBS + after running the ELF checks otherwise we end up linking everything + against libelf. Patch cherry-picked from upstream Git. + + -- Michael Biebl Tue, 01 May 2012 20:02:21 +0200 + +glib2.0 (2.32.1-1) unstable; urgency=low + + * New upstream release. + * Refresh patches. + * debian/patches/git_powerpc_gresources.patch: Upstream fix for gresource on + big endian architectures, i.e powerpc. Closes: #669130 + * debian/patches/revert_schema_path_warning.patch: Revert upstream commit + which generates a warning for applications using a non-recommended + gsettings path. Final freeze is not the time to start fixing the gsettings + paths of all packages. This avoids tons of spewage from the gsettings + trigger during package installation. + + -- Michael Biebl Thu, 26 Apr 2012 23:13:28 +0200 + +glib2.0 (2.32.0-4) unstable; urgency=low + + * Set --sourcedir for the different flavors when running dh_install. This + way the .install files can be simplified a lot which makes them much more + readable. + * Bump Standards-Version to 3.9.3. + * Add Breaks against emacs23, eog and gwaei. Those applications were broken + due to changes in GApplication and the way they interacted with + GdkThreads so they needed to be fixed to correctly work with glib 2.32. + Closes: #668019 + + -- Michael Biebl Mon, 09 Apr 2012 14:16:26 +0200 + +glib2.0 (2.32.0-3) unstable; urgency=low + + [ Martin Pitt ] + * 01_gettext-desktopfiles.patch: Use official "Keywords" key now, + X-GNOME-Keywords has been deprecated for a while now. (LP: #949864) + * debian/libglib2.0-0.postrm.in: Only remove the compiled schemas on purge, + not during upgrades. Otherwise we have no schemas available until the new + postinst is run, which leads to applications aborting on missing schemas. + + [ Michael Biebl ] + * Don't enforce single include for glib/gversionmacros.h since this header + is included from glib/gtypes.h which is widely used. + + -- Michael Biebl Fri, 30 Mar 2012 23:55:41 +0200 + +glib2.0 (2.32.0-2) unstable; urgency=low + + * Upload to unstable. + * Revert upstream commit for now which makes single includes mandatory as + the list of affected packages is still a bit too long. + + -- Michael Biebl Fri, 30 Mar 2012 08:25:15 +0200 + +glib2.0 (2.32.0-1) experimental; urgency=low + + * New upstream release. + * Add single-include guard for gbytes.h. Patch cherry-picked from + upstream Git. + + -- Michael Biebl Mon, 26 Mar 2012 18:41:49 +0200 + +glib2.0 (2.31.22-1) experimental; urgency=low + + * New upstream development release. + * debian/libglib2.0-0.symbols: Add new symbol. + + -- Michael Biebl Tue, 20 Mar 2012 02:00:06 +0100 + +glib2.0 (2.31.20-1) experimental; urgency=low + + * New upstream development release. + * debian/patches/61_glib-compile-binaries-path.patch: Refreshed. + * debian/libglib2.0-0.symbols: Add new symbols. + * Override list-missing target with an implementation that better handles + multiple flavors (copied from the gtk+3.0 package). + + -- Michael Biebl Tue, 06 Mar 2012 02:28:12 +0100 + +glib2.0 (2.31.18-3) experimental; urgency=low + + * debian/control.in: Add Build-Depends on python-dbus, python-gobject-2, and + libxml2-utils (xmllint). Required to run the test-suite. + + -- Michael Biebl Sun, 04 Mar 2012 20:27:09 +0100 + +glib2.0 (2.31.18-2) experimental; urgency=low + + * debian/control.in: + - add libpcre3-dev to the list of dependencies of libglib2.0-dev + - add libelf-dev as a build dependency to make gresource able to deal + with ELF files + + -- Gustavo Noronha Silva Sat, 03 Mar 2012 17:29:51 -0300 + +glib2.0 (2.31.18-1) experimental; urgency=low + + [ Gustavo Noronha Silva ] + * New development release + - Yeah, 2.31.8 was a mistake =/ + * debian/libglib2.0-0.symbols: + - fix version declared for 2.31.8 symbols to not have -1 + - updated for 2.31.8 symbols + * debian/patches/61_glib-compile-schemas-path.patch, + debian/patches/61_glib-compile-binaries-path.patch: + - renamed, and updated to also cover glib-compile-resources + * debian/libglib2.0-0.install.in: + - add glib-compile-resources + + [ Michael Biebl ] + * debian/libglib2.0-bin.install: Install new gresource binary and the man + pages for gresource and glib-compile-resources. + * debian/libglib2.0-bin.links.in: Add symlink in /usr/bin for + glib-compile-resources since we install the binary in a multiarch path. + * debian/rules: Re-enable test-suite on kfreebsd but keep it non-fatal for + now. + + -- Michael Biebl Sat, 03 Mar 2012 02:36:26 +0100 + +glib2.0 (2.31.8-1) experimental; urgency=low + + * New development release + * debian/patches/*: + - refreshed; + * debian/patches/95-gmain-get-rid-of-poll_waiting.patch, + debian/patches/96-fix-one-bit-mutex-test-on-some-platforms.patch, + debian/patches/97-silence-compiler-warnings.patch, + debian/patches/98-disable-two-more-GDBus-tests-using-fork.patch: + - removed; applied upstream + * debian/libglib2.0-0.symbols: + - updated with new symbols + NOTES: + + g_simple_action_get_parameter_type (from 2.28.0) + was made static in 09429e2c820118918e6132d32884eb02203136d4 + + g_unix_resolver_get_type (from 2.22.0) was removed + by 5a30712dc7e4adc36b0e8fd82cf5ccec19bbbdc5, with the + removal of !g_thread_supported code paths + + -- Gustavo Noronha Silva Fri, 02 Mar 2012 00:34:30 -0300 + +glib2.0 (2.30.2-7) UNRELEASED; urgency=low + + * libglib2.0-0.postinst.in: + + Encapsulate gio-querymodules calls in || true statements. + Closes: #659588. + + Only run gio-querymodules on the non-multiarch path for the host + architecture. + * rules: add substitution for #ARCH# for the above change. + + -- Josselin Mouette Thu, 16 Feb 2012 12:21:51 +0100 + +glib2.0 (2.30.2-6) unstable; urgency=low + + * Revert the patches added in 2.30.2-5 which changed the handling of return + types from libffi. They didn't actually fix the build failures on s390x + and had some unpleasant side effects, like making other packages FTBFS. + + -- Michael Biebl Wed, 25 Jan 2012 12:17:29 +0100 + +glib2.0 (2.30.2-5) unstable; urgency=low + + [ Josselin Mouette ] + * Drop deprecated build-dependencies on pygobject & python-dbus. + * Retain one on python for the script that uses it. + + [ Loïc Minier ] + * Avoid harmless warnings when processing triggers of libglib2.0-0 + ("Unable to open directory /usr/lib/gio/modules: Error opening + directory '/usr/lib/gio/modules': No such file or directory"). + + [ Michael Biebl ] + * Cherry-pick patches from upstream Git which fix handling of ENUMs and + integral return types on 64-bit BE platforms. Closes: #653308 + - Add d/p/94-closure-fix-handling-of-ENUMs-and-integral-return-ty.patch. + - Add d/p/93-gvalue-Add-explicitly-signed-g_value_get_schar-and-g.patch. + - Update symbols file accordingly. + + -- Michael Biebl Wed, 18 Jan 2012 13:50:56 +0100 + +glib2.0 (2.30.2-4) unstable; urgency=low + + * Upload to unstable. + * Disable test suite on kfreebsd-* for now. + + -- Michael Biebl Fri, 18 Nov 2011 19:38:40 +0100 + +glib2.0 (2.30.2-3) experimental; urgency=low + + * debian/patches/98-disable-two-more-GDBus-tests-using-fork.patch: + - Added. Disable gdbus test which use GMainContext over a fork, see + https://bugzilla.gnome.org/show_bug.cgi?id=658999 for more details + + -- Sjoerd Simons Thu, 17 Nov 2011 22:20:48 +0000 + +glib2.0 (2.30.2-2) experimental; urgency=low + + * debian/patches/95-gmain-get-rid-of-poll_waiting.patch: + - Added, Fix race conditions with g_main_quit being called from other + threads by getting rid of the poll_waiting flag. (Backported from git + master) + * debian/patches/96-fix-one-bit-mutex-test-on-some-platforms.patch: + - Added, Fix the 1 bit mutex failing on platforms that have pointers + aligned to 32 bits instead of 64 bits (bgo#201322). + * debian/patches/97-silence-compiler-warnings.patch: + - Added, Fix various compiler warnings + + -- Sjoerd Simons Wed, 16 Nov 2011 22:21:52 +0000 + +glib2.0 (2.30.2-1) experimental; urgency=low + + * New upstream release. + * debian/patches/70-fix-race-in-gdbus-connection-test.patch: + - Removed, merged upstream. + * debian/patches/80_gtk_doc_out_of_tree.patch: + - Removed, merged upstream. + + -- Michael Biebl Sun, 13 Nov 2011 01:24:28 +0100 + +glib2.0 (2.30.1-2) experimental; urgency=low + + [ Martin Pitt ] + * debian/patches/01_gettext-desktopfiles.patch: + - Translate X-GNOME-FullName and X-GNOME-Keywords, too. + + [ Sjoerd Simons ] + * debian/patches/80_gtk_doc_out_of_tree.patch: + - Added. Fix documentation generation when build out of tree + + [ Michael Biebl ] + * Transition to multiarch, thanks Steve. Closes: #634099 + The following modifications were made to the original patch: + - Drop the libtool .la files, since we break existing references anyway. + - Don't mark libglib2.0-0-dbg as Multi-Arch: same and install into + /usr/lib/debug, not /usr/lib//debug. + - Guard the for loops in debian/rules with "set -e". + * debian/libglib2.0-dev.install.in: + - Install gdb auto-load files. + + -- Michael Biebl Fri, 21 Oct 2011 21:26:48 +0200 + +glib2.0 (2.30.1-1) experimental; urgency=low + + [ Michael Biebl ] + * New upstream release. + - Avoid assertion in GDBus if we fail to authenticate twice. + Closes: #634312 + * Bump debhelper compatibility level to 8. + - Bump Build-Depends on debhelper. + - Don't pass --dbg-package= without an argument to dh_strip as commands + will fail rather than warn when they are passed unknown options. + * Don't use brace expansion in debian/libglib2.0-0.install and + debian/libglib2.0-dev.install. + * debian/control.in + - Use architecture wildcard for kfreebsd and hurd. + - Bump Standards-Version to 3.9.2. No further changes. + - Set pkg-gnome-maintainers@lists.alioth.debian.org as Maintainer. + - Add Build-Depends on libffi-dev (>= 3.0.0). + * debian/libglib2.0-dev.install + - Install gdbus-codegen binary and manpage. + - Install gtester and gtester-report manpage. + * debian/libglib2.0-bin.install + - Install bash completion files for gdbus and gsettings. + * debian/libglib2.0-0.symbols + - Update symbols file. The GAction API had an incompatible change. As a + result g_action_set_state has been renamed to g_action_change_state. + See upstream commit 5ff65d869543587d10d78c123698e47effc5fb8c for further + details and on the impact of this change. + * debian/watch: + - Track .xz tarballs. + * Update patches + - Remove 03_blacklist-directories.patch, merged upstream. + - Remove 10_gdesktopappinfo_set_last_used.patch, fixed upstream. + - Remove 60_wait-longer-for-threads-to-die.patch, fixed upstream using a + counter. + - Refresh remaining patches. + + [ Josselin Mouette ] + * Break gtk3 < 3.0.12 because it uses an internal symbol that ceases + to work with glib 2.30. + + [ Sjoerd Simons ] + * debian/rules: Explicitely build gtk-doc + * debian/patches/70-fix-race-in-gdbus-connection-test.patch: + - Added, fix race condition in the GDBusConnection life-cycle test + + -- Sjoerd Simons Sun, 16 Oct 2011 11:50:31 +0100 + +glib2.0 (2.28.8-1) unstable; urgency=low + + * New upstream release. + * debian/watch: + - Update to version 3. + - Track .xz tarballs. + * Bump debhelper compatibility level to 8. + - Bump Build-Depends on debhelper. + - Don't pass --dbg-package= without an argument to dh_strip as commands + will fail rather than warn when they are passed unknown options. + * Don't use brace expansion in debian/libglib2.0-0.install and + debian/libglib2.0-dev.install. + * debian/control.in + - Use architecture wildcard for kfreebsd and hurd. + - Bump Standards-Version to 3.9.2. No further changes. + - Set pkg-gnome-maintainers@lists.alioth.debian.org as Maintainer. + * Refresh patches. + + -- Michael Biebl Sat, 15 Oct 2011 18:09:05 +0200 + +glib2.0 (2.28.6-4) unstable; urgency=low + + * Upload to unstable. + + -- Michael Biebl Fri, 14 Oct 2011 10:42:58 +0200 + +glib2.0 (2.28.6-3) experimental; urgency=low + + * Break gnome-session < 3.0.0-3 for the updated defaults.list taking + x-scheme-* into account. + * Break gdm < 3.0.3 to avoid adding a security hole to it. + * 10_gdesktopappinfo_set_last_used.patch: new patch. When calling + g_app_info_set_as_last_used_for_type, correctly inherit the default + filled in the file from the system default. This avoids + gnome-control-center breaking file associations just by opening the + info dialog. + + -- Josselin Mouette Sun, 04 Sep 2011 23:07:46 +0200 + +glib2.0 (2.28.6-2) experimental; urgency=low + + * Team upload. + * Drop 20_mime_extension_point.patch and add Breaks against gvfs + and gnome-control-center to ensure they have been updated at the + same time. + * Drop Conflicts against pango, it's no longer relevant (even for + oldstable). + * Fix watch file. + * Drop leading article in descriptions as recommended by lintian. + * Add lintian overrides for package-name-doesnt-match-sonames, it's a + deliberate choice. + * Add some copyright holders to debian/copyright to appease lintian. + * Drop unneeded section/priority fields as they duplicate the default + values. + * Add some DEP-3 descriptions to patches that had no description at + all. + + -- Raphaël Hertzog Thu, 14 Apr 2011 10:51:16 +0200 + +glib2.0 (2.28.6-1) unstable; urgency=low + + * New upstream bugfix release. + + -- Sebastian Dröge Thu, 14 Apr 2011 09:18:31 +0200 + +glib2.0 (2.28.4-1) unstable; urgency=low + + * debian/control.in: + + Build depend on dbus, dbus-x11, shared-mime-info, python-gobject + and python-dbus, needed by the test suite. + + libglib2.0-data doesn't need to depend on libglib2.0-0, since + it only ships translations. This will avoid making glib + uninstallable on the buildds when it is uploaded until the new + version has been built. + * d/p/0001-Run-gio-tests-with-a-dbus-session.patch: + + New patch. Run gio tests through dbus-launch, since some of them + need a running dbus session. + * debian/control.in, + debian/rules: + + Add autoreconf magic, needed by the above patch. + * New upstream release. + + -- Emilio Pozuelo Monfort Mon, 28 Mar 2011 19:53:02 +0100 + +glib2.0 (2.28.2-1) unstable; urgency=low + + * New upstream release. + + -- Emilio Pozuelo Monfort Fri, 11 Mar 2011 21:05:36 +0000 + +glib2.0 (2.28.1-1) unstable; urgency=low + + * New upstream release. + + Fixes g_timeout_add overflowing with large timeouts. Closes: #606618. + + -- Emilio Pozuelo Monfort Sat, 19 Feb 2011 21:24:21 +0000 + +glib2.0 (2.28.0-2) unstable; urgency=low + + * 20_mime_extension_point.patch: temporary revert the upstream change + in URI schemes handling. Closes: #612876. + Note for later: it must absolutely be reverted in a synchronized + upload with gvfs 1.8 and control-center 3.0. + + -- Josselin Mouette Fri, 18 Feb 2011 19:36:42 +0100 + +glib2.0 (2.28.0-1) unstable; urgency=low + + * debian/control.in: + + Drop obsolete conflicts/replaces with libglib1.3. + + Don't suggest libgtk2.0-doc in the doc package. + * New upstream stable release. + + debian/control.in: + - Bump the libpcre3-dev build dependency. + + debian/patches/01_gettext-desktopfiles.patch, + debian/patches/02_gettext-desktopfiles-ubuntu.patch, + debian/patches/04_homedir_env.patch, + debian/patches/61_glib-compile-schemas-path.patch: + - Refreshed. + + debian/libglib2.0-0.symbols: + - Updated. + + -- Emilio Pozuelo Monfort Wed, 09 Feb 2011 21:52:02 +0000 + +glib2.0 (2.27.91-1) experimental; urgency=low + + * debian/rules: + - Don't exclude .sgml and .devhelp files from being compressed. + The former are already excluded by dh_compress and the later + can be compressed now that devhelp can handle them. + - Fix variable substitution. + * New upstream release. + - debian/patches/62_dont_crash_without_desktop_filename.patch: + + Removed, included upstream. + * debian/control.in: + - Standards-Version is 3.9.1, no changes needed. + + -- Emilio Pozuelo Monfort Tue, 11 Jan 2011 22:59:07 +0000 + +glib2.0 (2.27.90-2) experimental; urgency=low + + * debian/patches/62_dont_crash_without_desktop_filename.patch + * Added. Fix crash when launching application without a desktop file (From + upstream git) + + -- Sjoerd Simons Fri, 07 Jan 2011 11:28:34 +0000 + +glib2.0 (2.27.90-1) experimental; urgency=low + + * Switch to CDBS' flavors system. + * Switch to source format 3.0 (quilt). + * Stop symlinking /usr/share/doc/$pkg directories. + * debian/rules: + - Explicitly link with --no-as-needed, as --as-needed might be the + default and is harmful for us. + - Run the test suite but don't make it fatal yet. + * New upstream release. + - debian/libglib2.0-0.symbols: + + Updated. + + -- Emilio Pozuelo Monfort Thu, 06 Jan 2011 12:46:00 +0000 + +glib2.0 (2.27.5-1) experimental; urgency=low + + * New upstream release. + + debian/libglib2.0-0.symbols: + - Updated. + * debian/rules: + + Make the shlibs always depend on the latest upstream version. + We have symbols file anyway, and manually bumping the shver is + error prone. + + -- Emilio Pozuelo Monfort Thu, 23 Dec 2010 01:44:45 +0000 + +glib2.0 (2.27.4-2) experimental; urgency=low + + * debian/rules: Change --disable-visibility to --disable-Bsymbolic for + the refdbg package. + + -- Jonny Lamb Wed, 15 Dec 2010 21:52:29 +0000 + +glib2.0 (2.27.4-1) experimental; urgency=low + + * New upstream release. + + debian/libglib2.0-0.symbols: + - Updated. + + debian/rules: + - Bump the SHVER. + + -- Emilio Pozuelo Monfort Tue, 30 Nov 2010 00:48:49 +0100 + +glib2.0 (2.27.3-1) experimental; urgency=low + + * New upstream release. + + debian/libglib2.0-0.symbols: + - Updated. + + -- Emilio Pozuelo Monfort Mon, 15 Nov 2010 23:05:29 +0100 + +glib2.0 (2.27.2-1) experimental; urgency=low + + * New upstream development release: + + debian/patches/*: + - Refreshed. + + debian/libglib2.0-0.symbols: + - Updated + + debian/patches/70_dtrace.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Mon, 01 Nov 2010 10:53:15 +0100 + +glib2.0 (2.27.1-1) experimental; urgency=low + + [ Josselin Mouette ] + * Drop lynx dependency in the -doc package. Suggest devhelp instead. + Closes: #599743. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/patches/70_fix-header-cleaup-fallout.patch: + - Dropped, merged upstream. + + debian/patches/*: + - Refreshed. + + debian/libglib2.0-0.symbols: + - Updated + + debian/patches/70_dtrace.patch: + - Patch from upstream GIT to not enable DTrace if it's not + available. Fixes the build on kFreeBSD (Closes: #592024). + + -- Sebastian Dröge Fri, 29 Oct 2010 11:32:02 +0200 + +glib2.0 (2.27.0-1) experimental; urgency=low + + [ Sjoerd Simons ] + * New upstream experimental release + * debian/libglib2.0-0.symbols + + Updated + * debian/patches/70_fix-header-cleaup-fallout.patch + + Added. Fix complilation error (from upstream git) + + [ Sebastian Dröge ] + * Upload to experimental. + * debian/rules: + + Update SHVER to 2.27.0. + + -- Sebastian Dröge Tue, 12 Oct 2010 10:56:13 +0200 + +glib2.0 (2.26.0-1) experimental; urgency=low + + * New upstream stable release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for the new version. + + debian/patches/90_gregex-system-pcre.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Mon, 27 Sep 2010 22:43:13 +0200 + +glib2.0 (2.25.16-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for the new version. + + debian/patches/90_gregex-system-pcre.patch: + - Fix GRegex compilation with the system pcre. + + -- Sebastian Dröge Sat, 18 Sep 2010 07:15:26 +0200 + +glib2.0 (2.25.15-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for the new version. + + -- Sebastian Dröge Tue, 31 Aug 2010 11:26:25 +0200 + +glib2.0 (2.25.14-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for the new version. + + -- Sebastian Dröge Tue, 17 Aug 2010 11:37:23 +0200 + +glib2.0 (2.25.13-1) experimental; urgency=low + + * New upstream development release: + + debian/patches/90_git_glibconfig_build.patch, + + debian/patches/99_autoreconf.patch: + - Dropped, merged upstream. + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for the new version. + + debian/control.in: + - (Build-) depend on pkg-config >= 0.16.0. + + -- Sebastian Dröge Sat, 07 Aug 2010 09:34:16 +0200 + +glib2.0 (2.25.12-2) experimental; urgency=low + + [ Sebastien Bacher ] + * debian/rules: + + clean the distributed glibconfig.h it has 64 bits values + which leaded to the issues on 32 bits architectures + (Closes: #591075, #591492). + * debian/patches/90_git_glibconfig_build.patch: + + git change to use the builddir glibconfig.h and not the srcdir one + + [ Sebastian Dröge ] + * debian/patches/99_autoreconf.patch: + + Regenerated autotools files for the above patch. + * debian/rules: + + Call dh_installdirs to actually use the .dirs files. + + -- Sebastian Dröge Fri, 06 Aug 2010 18:50:27 +0200 + +glib2.0 (2.25.12-1) experimental; urgency=low + + [ Josselin Mouette ] + * Don’t run the triggers when executed from a nonexistent directory. + Closes: #589693. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API changes. + + debian/patches/99_gsocket-create-socket-cloexec.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Fri, 30 Jul 2010 12:29:10 +0200 + +glib2.0 (2.25.11-3) experimental; urgency=low + + * debian/patches/99_gsocket-create-socket-cloexec.patch: + Patch by Julien Cristau: + Just because SOCK_CLOEXEC was defined at build time doesn't mean the + kernel we're running on supports it. So if socket() fails with EINVAL, + try again without the flag. + + -- Sebastian Dröge Thu, 15 Jul 2010 20:23:30 +0200 + +glib2.0 (2.25.11-2) experimental; urgency=low + + * debian/control.in, + debian/libglib2.0-bin.links, + debian/libglib2.0-0.links: + + Move links to the -bin package again but let the -dev package + depend on the -bin package. Having the links in the shared library + package will cause conflicts when the soname changes but the + links in /usr/bin must be there at least if the -dev package is + installed because build systems might assume that the applications + are in $PATH. + * debian/patches/61_glib-compile-schemas-path.patch: + + Adjust path to glib-compile-schemas in the pkg-config file. + + -- Sebastian Dröge Tue, 13 Jul 2010 14:06:28 +0200 + +glib2.0 (2.25.11-1) experimental; urgency=low + + [ Josselin Mouette ] + * Drop type-handling usage. Closes: #587863. + * Bump standards version accordingly. + * Patch from Ubuntu, thanks Sébastien Bacher. Closes: #587661. + * debian/libglib2.0-bin.install: + - Install glib-compile-schemas + * debian/libglib2.0-bin.postinst: + - Run glib-compile-schemas when schemas modified + * debian/libglib2.0-bin.triggers: + - Watch for schema changes + * debian/libglib2.0-dev.install: + - glib-compile-schemas moved to libglib2.0-bin + * debian/libglib2.0-dev.install: + - install the new gdb python macros since the gdb version is recent + enough now to use those + * Put gio-querymodules and glib-compile-schemas in a private, + versioned directory in libglib2.0-0 to avoid a dependency loop. + * Move back the triggers to libglib2.0-0. + * Add a purge of the necessary files in the postinst. + * Stop recommending libglib2.0-bin since the necessary stuff is in + libglib2.0-0 now. + * Add symlinks to keep the binaries at their place in libglib2.0-bin. + * Tighten the dependency between libglib2.0-bin and libglib2.0-0. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API changes. + * debian/libglib2.0-0.dirs: + + Create empty directories for the triggers to actually work. + * debian/libglib2.0-0.links, + debian/control.in: + + Add links for gio-querymodules and glib-compile-schemas in + /usr/bin. + + -- Sebastian Dröge Sun, 11 Jul 2010 20:13:58 +0200 + +glib2.0 (2.25.10-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API changes. + + debian/libglib2.0-dev.install: + - Drop gsettings-schema-convert. + + debian/patches/*: + - Refreshed all patches. + + -- Sebastian Dröge Thu, 24 Jun 2010 19:59:54 +0200 + +glib2.0 (2.25.9-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + -- Sebastian Dröge Fri, 18 Jun 2010 06:24:03 +0200 + +glib2.0 (2.25.8-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + -- Sebastian Dröge Tue, 08 Jun 2010 11:07:18 +0200 + +glib2.0 (2.25.7-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + -- Sebastian Dröge Tue, 25 May 2010 11:29:07 +0200 + +glib2.0 (2.25.6-1) experimental; urgency=low + + * New upstream development release. + + -- Sebastian Dröge Thu, 20 May 2010 10:27:41 +0200 + +glib2.0 (2.25.5-1) experimental; urgency=low + + * New upstream development release. + + -- Sebastian Dröge Sat, 15 May 2010 09:44:10 +0200 + +glib2.0 (2.25.4-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + debian/libglib2.0-bin.install: + - Add gdbus utility and manpage. + + -- Sebastian Dröge Fri, 14 May 2010 18:25:58 +0200 + +glib2.0 (2.25.3-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + debian/libglib2.0-dev.install: + - gschema-compile was renamed to glib-compile-schemas. + + debian/control.in, + debian/rules: + - Manpages are now properly shipped with the tarballs, + drop xsltproc, etc. build dependencies. + + -- Sebastian Dröge Sat, 24 Apr 2010 06:16:59 +0200 + +glib2.0 (2.25.2-1) experimental; urgency=low + + * New upstream development release: + + debian/libglib2.0-0.install, + debian/libglib2.0-0.triggers, + debian/control.in, + debian/rules, + debian/libglib2.0-bin.install, + debian/libglib2.0-bin.triggers: + - Move binaries to an unversioned, separate package. + - Add new gsettings tool. + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + -- Sebastian Dröge Fri, 23 Apr 2010 06:14:47 +0200 + +glib2.0 (2.25.1-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for API additions. + + debian/libglib2.0-dev.install, + debian/libglib2.0-0.install: + - Install new GSettings utitilies and manpages. + * debian/control.in, + debian/rules: + + Enable manpage generation via xsltproc for now until + https://bugzilla.gnome.org/show_bug.cgi?id=616264 + is fixed. + + -- Sebastian Dröge Tue, 20 Apr 2010 09:24:20 +0200 + +glib2.0 (2.24.0-1) unstable; urgency=low + + * New upstream stable release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated 2.23 symbols to 2.24 to force dependencies on a stable release. + + debian/rules: + - Remove check-dist.mk include to allow uploads to unstable again. + + -- Sebastian Dröge Fri, 26 Mar 2010 16:59:18 +0100 + +glib2.0 (2.23.6-1) experimental; urgency=low + + [ Emilio Pozuelo Monfort ] + * debian/patches/05_gvariant_test_failure.patch: + - Backport patch from upstream git to fix a gvariant test that fails + randomly on x86. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + debian/patches/05_gvariant_test_failure.patch: + - Dropped, merged upstream. + * debian/rules: + + Make unit test failures non-fatal again because of race conditions + in some tests. + + -- Sebastian Dröge Mon, 22 Mar 2010 06:10:18 +0100 + +glib2.0 (2.23.5-1) experimental; urgency=low + + [ Emilio Pozuelo Monfort ] + * debian/patches/05-dont-fail-a-couple-of-tests-when-running-as-root.patch: + - Updated. + * 06-test-for-unexisting-files-in-TMP-and-not-in-HOME.patch: + - Added, don't look for an unexisting file in $HOME since it will + fail with an unexpected result if it's not writable (which happens + on some buildds). Look at $TMP instead. + * debian/rules: + - Make test suite failures fatal on amd64, i386 and s390. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + debian/patches/05-dont-fail-a-couple-of-tests-when-running-as-root.patch, + debian/patches/06-test-for-unexisting-files-in-TMP-and-not-in-HOME.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Mon, 08 Mar 2010 18:49:00 +0000 + +glib2.0 (2.23.4-1) experimental; urgency=low + + [ Emilio Pozuelo Monfort ] + * debian/patches/05-dont-fail-a-couple-of-tests-when-running-as-root.patch: + - Added, expect a couple of tests that play with file permissions + to succeed when running as root. + * debian/control.in: + - Add desktop-file-utils to build depends to fix another test. + - Standards-Version is 3.8.4, no changes needed. + - Let libgio-fam depend on ${misc:Depends}. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + -- Sebastian Dröge Mon, 22 Feb 2010 09:04:48 +0100 + +glib2.0 (2.23.3-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + -- Sebastian Dröge Tue, 09 Feb 2010 16:48:07 +0100 + +glib2.0 (2.23.2-2) experimental; urgency=low + + * debian/control.in, + debian/libglib2.0-0.triggers, + debian/libglib2.0-0.install, + debian/libglib2.0-dev.install: + + Ship gio-querymodules in the shared library package + and triggers calls to every time /usr/lib/gio/modules + is touched by a package. + + -- Sebastian Dröge Tue, 26 Jan 2010 09:40:47 +0100 + +glib2.0 (2.23.2-1) experimental; urgency=low + + * New upstream development release: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + -- Sebastian Dröge Tue, 26 Jan 2010 08:14:26 +0100 + +glib2.0 (2.23.1-1) experimental; urgency=low + + [ Sebastian Dröge ] + * debian/control.in: + + Let the -dev package depend on zlib1g-dev as it's required by + the pkg-config file now. + + [ Emilio Pozuelo Monfort ] + * New upstream release. + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new API. + + -- Emilio Pozuelo Monfort Tue, 22 Dec 2009 23:25:41 +0100 + +glib2.0 (2.23.0-1) experimental; urgency=low + + [ Loïc Minier ] + * -refdbg package is section/prio debug/extra. + * Add note to NOT use -Wl,--as-needed as it might drop a critical -lpthread + link in gio (which dlopen()s gvfs); see + mid:<1257999019.21780.15.camel@marzipan>. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/patches/90_mimetype-sorting.patch: + - Dropped, merged upstream. + + debian/rules, + debian/libglib2.0-0.symbols: + - Update for new API. + + debian/control.in: + - Build depend on zlib. + + debian/rules: + - Include check-dist.mk to prevent accidental uploads to unstable. + + -- Sebastian Dröge Mon, 30 Nov 2009 10:04:07 +0100 + +glib2.0 (2.22.2-2) unstable; urgency=low + + * debian/patches/90_mimetype-sorting.patch: + + Fix sorting of mimetypes by weight. Highest weight means most + important, not the other way around. Patch from upstream GIT. + + -- Sebastian Dröge Thu, 08 Oct 2009 18:34:23 +0200 + +glib2.0 (2.22.2-1) unstable; urgency=low + + [ Emilio Pozuelo Monfort ] + * Move libglib2.0-data to section libs. Closes: #549079. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Thu, 08 Oct 2009 12:48:51 +0200 + +glib2.0 (2.22.1-1) unstable; urgency=low + + * New upstream bugfix release: + + debian/patches/10_inotify_init1.patch, + debian/patches/30_metadata_symlinks.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Wed, 30 Sep 2009 08:17:57 +0200 + +glib2.0 (2.22.0-2) unstable; urgency=low + + * Don’t install Python GDB macros for now, they only work with an + experimental GDB branch. + * 30_metadata_symlinks.patch: stolen upstream. Get metadata to work + with symbolic links. Closes: #548142. + + -- Josselin Mouette Wed, 30 Sep 2009 01:02:11 +0200 + +glib2.0 (2.22.0-1) unstable; urgency=low + + [ Josselin Mouette ] + * Move libglib-2.0.so.0 to /lib so that DeviceKit (and other potential + sources) can work without having /usr mounted. + * 11_chmod_symlinks.patch: new patch. Fix potential security issue + when manipulating symlink permissions. Thanks Arand Nash for the + heads up. + + [ Sebastian Dröge ] + * New upstream stable release: + + debian/patches/11_chmod_symlinks.patch: + - Dropped, merged upstream. + + debian/libglib2.0-0.symbols, + debian/rules: + - Update for the new version. + + -- Sebastian Dröge Wed, 23 Sep 2009 05:04:37 +0200 + +glib2.0 (2.21.6-1) experimental; urgency=low + + [ Josselin Mouette ] + * 10_inotify_init1.patch: fall back on inotify_init when inotify_init1 + does not work, as happens with kernel versions < 2.6.27. + Closes: #544354. + + [ Sebastian Dröge ] + * New upstream development release: + + debian/libglib2.0-0.symbols: + - Update for the new version. + + debian/rules: + - Update SHVER to 2.21.6. + * debian/control.in: + + Updated Standards-Version to 3.8.3, no additional changes needed. + + -- Sebastian Dröge Sat, 05 Sep 2009 07:15:58 +0200 + +glib2.0 (2.21.5-1) experimental; urgency=low + + * New upstream development release: + + debian/libglib2.0-0.symbols: + - Update for the new version. + + debian/rules: + - Update SHVER to 2.21.5. + * debian/control.in: + + Updated Standards-Version to 3.8.2, no additional changes needed. + + -- Sebastian Dröge Tue, 25 Aug 2009 18:38:51 +0200 + +glib2.0 (2.21.4-1) experimental; urgency=low + + * New upstream development release: + + debian/rules: + - Include check-dist.mk to prevent accidental uploads to unstable. + - Update shlib version to 2.21.4. + + debian/libglib2.0-0.symbols: + - Update for the API additions. + * debian/control.in: + + Updated Standards-Version to 3.8.1, no additional changes needed. + + -- Sebastian Dröge Tue, 21 Jul 2009 09:35:33 +0200 + +glib2.0 (2.20.4-1) unstable; urgency=low + + * New upstream bugfix release. + + -- Sebastian Dröge Sat, 27 Jun 2009 09:56:08 +0200 + +glib2.0 (2.20.3-1) unstable; urgency=low + + [ Josselin Mouette ] + * Only build the libgio-fam package for hurd and kfreebsd, it is + totally useless under Linux. + * Make it recommend gamin for kqueue support. + * Make libgamin-dev the primary build-dependency. Closes: #526219. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Mon, 01 Jun 2009 15:35:40 +0200 + +glib2.0 (2.20.1-2) unstable; urgency=low + + * Add refdbg package: libglib2.0-0-refdbg. (Closes: #525915) + + -- Jonny Lamb Tue, 28 Apr 2009 15:11:27 +0100 + +glib2.0 (2.20.1-1) unstable; urgency=low + + * New upstream bugfix release: + + 10_log_valist.patch, dropped. + + -- Sebastian Dröge Sat, 11 Apr 2009 17:00:43 +0200 + +glib2.0 (2.20.0-3) unstable; urgency=low + + * Fix debug package section. + * 10_log_valist.patch: new patch, stolen upstream. Copy a va_list + before using it twice. Closes: #520484. + + -- Josselin Mouette Thu, 09 Apr 2009 20:11:52 +0200 + +glib2.0 (2.20.0-2) unstable; urgency=low + + * Remove 02_usr_share_gnome_applications.patch, now gnome-session sets + XDG_DATA_DIRS accordingly. + + -- Josselin Mouette Thu, 19 Mar 2009 22:59:34 +0100 + +glib2.0 (2.20.0-1) unstable; urgency=low + + * New upstream stable release. + * Upload to unstable, remove check-dist include. + This won't block any transitions because of symbol files. + * debian/libglib2.0-0.symbols, + debian/rules: + + Update for the API changes. + + -- Sebastian Dröge Sat, 14 Mar 2009 10:53:26 +0100 + +glib2.0 (2.19.10-1) experimental; urgency=low + + * New upstream development release. + + -- Sebastian Dröge Mon, 02 Mar 2009 16:04:08 +0100 + +glib2.0 (2.19.8-2) experimental; urgency=low + + * debian/patches/01_gettext-desktopfiles.patch, + debian/patches/02_gettext-desktopfiles-ubuntu.patch: + + Updated from the Ubuntu package, thanks to Martin Pitt for the changes: + - 01_gettext-desktopfiles.patch: Merge OpenSUSE's and our patch: + - Now prefers inline translations over gettext translations, which + fixes a few corner cases (like renaming .desktop files on the + user's desktop), is more in line with the recent gconf patch, + and more palatable for upstream inclusion. + - Use X-GNOME-Gettext-Domain, for preparing upstream inclusion. + - Forwarded upstream now. + - Add 02_gettext-desktopfiles-ubuntu.patch: Provide backwards + compatibility for 01_gettext-desktopfiles.patch for + X-{Debian,Ubuntu}-Gettext-Domain. The latter was changed to use + X-GNOME-, so this is necessary until all our .desktop files are + converted. + + -- Sebastian Dröge Tue, 24 Feb 2009 16:08:05 +0100 + +glib2.0 (2.19.8-1) experimental; urgency=low + + * New upstream development release. + + -- Sebastian Dröge Fri, 20 Feb 2009 10:38:44 +0100 + +glib2.0 (2.19.7-1) experimental; urgency=low + + * New development release + + -- Gustavo Noronha Silva Tue, 17 Feb 2009 01:43:04 -0300 + +glib2.0 (2.19.6-1) experimental; urgency=low + + * New development release + * debian/libglib2.0-0.symbols: + - updated with new symbols + + -- Gustavo Noronha Silva Sun, 15 Feb 2009 23:58:22 -0300 + +glib2.0 (2.18.4-2) unstable; urgency=low + + * Release to unstable + * debian/rules: + - bump SHVER, since we are already forcing a 2.18.0 dependecy on the + symbols introduced in the development versions + * debian/control.in: + - added Homepage and Vcs-* control fields + + -- Gustavo Noronha Silva Sun, 15 Feb 2009 13:00:43 -0300 + +glib2.0 (2.18.4-1) experimental; urgency=low + + [ Josselin Mouette ] + * 04_homedir_env.patch: new patch. Handle the G_HOME environment + variable, to override the passwd entry. This will allow to fix + various kinds of build failures due to restricted build + environments. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Sat, 10 Jan 2009 14:21:55 +0100 + +glib2.0 (2.18.3-1) experimental; urgency=low + + * New upstream bugfix release. + + -- Sebastian Dröge Mon, 24 Nov 2008 10:07:47 +0100 + +glib2.0 (2.18.2-1) experimental; urgency=low + + [ Loic Minier ] + * Suffix the Debian specific pcre bdep with "~" to allow backports and make + lintian happy. + * Update doc-base entries for new doc-base secttions: use Programming/C + instead of Apps/Programming. + * Use uppercase GNOME in doc-base description of glib. + * Recommend shared-mime-info for content-type guessing API; see + GNOME #554563. + * Pass -k to make check. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Sun, 19 Oct 2008 13:26:48 +0200 + +glib2.0 (2.18.1-1) experimental; urgency=low + + * New upstream bugfix release. + * debian/libglib2.0-0.symbols: + + Updated all 2.17 symbols to 2.18.0 to get dependencies on the stable + versions. + + -- Sebastian Dröge Sun, 21 Sep 2008 15:31:15 +0200 + +glib2.0 (2.18.0-1) experimental; urgency=low + + * New upstream stable release, with API addition. + - Update symbols file for new g_object_get_type() symbol and drop + g_slice_debug_tree_statistics() which shouldn't have been exported in + the first place. + - Refresh patches 01_gettext-desktopfiles, + 02_usr_share_gnome_applications, and 03_blacklist-directories to apply + cleanly. + + -- Loic Minier Wed, 03 Sep 2008 00:51:29 +0200 + +glib2.0 (2.17.7-1) experimental; urgency=low + + * New upstream development release, the new API might still change: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + + -- Sebastian Dröge Mon, 18 Aug 2008 16:04:30 +0200 + +glib2.0 (2.17.6-1) experimental; urgency=low + + * New upstream development release, the new API might still change: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + + -- Sebastian Dröge Mon, 04 Aug 2008 19:54:44 +0200 + +glib2.0 (2.17.4-1) experimental; urgency=low + + [ Loic Minier ] + * List back m68k in arches where we could make the testsuite fatal, + following the update on GNOME #481575. + * Document why testsuite is currently completely disabled (fails when + there's no writable $HOME). + + [ Sebastian Dröge ] + * New upstream development release, the new API might still change: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + + debian/patches/90_gio-nautilus-crash.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Tue, 22 Jul 2008 11:17:05 +0200 + +glib2.0 (2.17.3-2) experimental; urgency=low + + * debian/patches/90_gio-nautilus-crash.patch: + + Patch from upstream SVN to fix a crash in nautilus 2.22. + + -- Sebastian Dröge Sat, 05 Jul 2008 16:57:05 +0200 + +glib2.0 (2.17.3-1) experimental; urgency=low + + * New upstream development release, the new API might still change: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + * debian/control.in: + + Updated Standards-Version to 3.8.0, no additional changes needed. + + -- Sebastian Dröge Thu, 03 Jul 2008 11:21:17 +0200 + +glib2.0 (2.17.2-1) experimental; urgency=low + + * New upstream development release, the new API might still change: + + debian/rules, + debian/libglib2.0-0.symbols: + - Updated for the new symbols. + + -- Sebastian Dröge Tue, 17 Jun 2008 09:18:10 +0200 + +glib2.0 (2.17.0-1) experimental; urgency=low + + [ Josselin Mouette ] + * debian/rules: don't compress .sgml and .devhelp files. + + [ Loic Minier ] + * Fix broken second dh_strip invocation which was not only acting on the + udeb but also on binary packages (-s -pUDEB should have been -pUDEB). + + [ Sebastian Dröge ] + * New upstream development release, the new API might still change. + * debian/rules: + + Include check-dist.mk to prevent accidental uploads to unstable. + + Bump SHVER to 2.17.0. + + Pass -c4 to dh_makeshlibs. + * debian/libglib2.0-0.symbols: + + Update symbols. + + -- Sebastian Dröge Wed, 28 May 2008 10:40:30 +0200 + +glib2.0 (2.16.3-2) unstable; urgency=low + + * debian/rules: Don't add the debug symbols of the udeb in the -dbg package. + Makes the debugging info actually usefull again (Closes: #468093) + + -- Sjoerd Simons Fri, 11 Apr 2008 22:58:03 +0200 + +glib2.0 (2.16.3-1) unstable; urgency=low + + [ Sjoerd Simons ] + * debian/patches/70_g_timeout_seconds_fix.patch + + Added. Fix a rare case where a timeout from g_timeout_add_seconds() is + never triggered. See http://bugzilla.gnome.org/show_bug.cgi?id=448943 + + [ Sebastian Dröge ] + * New upstream bugfix release: + + debian/patches/70_g_timeout_seconds_fix.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Tue, 08 Apr 2008 12:02:07 +0200 + +glib2.0 (2.16.2-1) unstable; urgency=low + + [ Loic Minier ] + * Drop nautilus conflicts as it triggers a bug in the APT resolver on + dist-upgrade. + * Update patch 01_gettext-desktopfiles with a newer version taken from the + Ubuntu package. + * Update and enable patch 01_gettext-desktopfiles to also look for + X-Debian-Gettext-Domain if X-Ubuntu-Gettext-Domain isn't present. + + [ Sebastian Dröge ] + * New upstream bugfix release: + + Fixes FTBFS on hurd/i386 (Closes: #472129). + + debian/patches/04_nfs4.patch, + debian/patches/80_static-mutex-aliasing-warnings.patch, + debian/patches/81_c99-inline-warnings.patch: + - Dropped, merged upstream. + + -- Sebastian Dröge Tue, 01 Apr 2008 07:40:48 +0200 + +glib2.0 (2.16.1-2) unstable; urgency=low + + [ Josselin Mouette ] + * 02_usr_share_gnome_applications.patch: ported from GnomeVFS. Use + /usr/share/gnome/applications/defaults.list to obtain the defaults + for MIME mapping. Currently this file is still shipped by GnomeVFS. + Closes: #469504. + * 03_blacklist-directories.patch: ported from GnomeVFS. Blacklist more + FHS directories that are commonly found as Unix mount points, + including those necessary for live-initramfs. + * 04_nfs4.patch: ported from GnomeVFS. Support for nfs4 filesystems. + + [ Sebastian Dröge ] + * 80_static-mutex-aliasing-warnings.patch: Prevent warnings about + breaking strict-aliasing rules when using G_LOCK(). + See http://bugzilla.gnome.org/show_bug.cgi?id=316221 + * 81_c99-inline-warnings.patch: Fix warnings when using G_INLINE_FUNC + in C99 mode (Closes: #470796). + See http://bugzilla.gnome.org/show_bug.cgi?id=522292 + * Don't ship the old changelogs and news to save some space. + + -- Sebastian Dröge Fri, 14 Mar 2008 10:13:09 +0100 + +glib2.0 (2.16.1-1) unstable; urgency=low + + * New upstream bugfix release. + + -- Sebastian Dröge Tue, 11 Mar 2008 04:41:30 +0100 + +glib2.0 (2.16.0-1) unstable; urgency=low + + * New upstream stable release: + + debian/rules: + - Update shlibs version to 2.16.0. + - Drop check-dist include, upload to unstable. + + debian/libglib2.0-0.symbols: + - Updated symbols for the new version. + + -- Sebastian Dröge Mon, 10 Mar 2008 19:23:55 +0100 + +glib2.0 (2.15.6-1) experimental; urgency=low + + * New upstream release: + + debian/rules: + - Update shlibs version to 2.15.6. + + debian/libglib2.0-0.symbols: + - Updated symbols for the new version. + + -- Sebastian Dröge Tue, 26 Feb 2008 06:22:28 +0100 + +glib2.0 (2.15.5-1) experimental; urgency=low + + * New upstream release: + + debian/patches/02_fam-helper.patch: + - Dropped, merged upstream. + + debian/patches/60_wait-longer-for-threads-to-die.patch: + - Updated to apply cleanly again. + + debian/libglib2.0-0.symbols: + - Update symbols for 2.15.5. + + -- Sebastian Dröge Tue, 12 Feb 2008 06:08:39 +0100 + +glib2.0 (2.15.4-1) experimental; urgency=low + + [ Loic Minier ] + * Add a gio gtk-doc symlink. + * Add a doc-base file for gio. + + [ Sebastian Dröge ] + * New upstream release: + + debian/libglib2.0-0.symbols: + - Update symbols for 2.15.4. + + debian/rules: + - Update API version to 2.15.4. + * debian/patches/02_fam-helper.patch: + + Fix build failure when building with FAM and not gamin. See BGO #509419 + and BGO #512384 for more details. + + -- Sebastian Dröge Tue, 29 Jan 2008 12:14:08 +0100 + +glib2.0 (2.15.3-1) experimental; urgency=low + + * New upstream release. + * debian/rules, + debian/libglib2.0-0.symbols: + + Update shlibs and all unstable symbols to 2.15.3. + + -- Sebastian Dröge Tue, 22 Jan 2008 11:54:42 +0100 + +glib2.0 (2.15.2-3) experimental; urgency=low + + [ Loic Minier ] + * Bump up dpkg-dev build-dep to >= 1.14.13 for Build-Depends-Package; thanks + Raphaël Hertzog. + * Drop duplicate dpkg-dev bdep. + * Let libglib2.0-dev depends on ${shlibs:Depends}; thanks Niko Tyni. + + [ Sebastian Dröge ] + * debian/libgio-fam.install: + + Fix path where we install the GIO FAM plugin. It shouldn't be + /usr/lib/gio/gio but /usr/lib/gio. Thanks to Sedat Dilek for reporting. + + -- Sebastian Dröge Mon, 21 Jan 2008 08:58:33 +0100 + +glib2.0 (2.15.2-2) experimental; urgency=low + + * debian/rules: + + Disable selinux for the udeb until we have a libselinux1 udeb. + + -- Sebastian Dröge Thu, 17 Jan 2008 11:50:11 +0100 + +glib2.0 (2.15.2-1) experimental; urgency=low + + [ Sebastian Dröge ] + * New upstream development release, the new API may still change + incompatibly; API additions: + + Drop patch 67_gcc43-inline.patch, merged upstream. + * Include check-dist again to prevent accidental uploads to unstable. + * Disable testsuite for now. + * Bump shlibs to 2.15.2. + * Add build dependencies for GIO and add libgio-fam package that contains + a GIO file/directory monitoring module that uses fam. + * debian/rules, + debian/libglib2.0-0.symbols, + debian/control.in: + + Add a symbol file for GLib, generated from 2.12.4, 2.14.3, 2.15.2. + This is handled by dh_makeshlibs. Require dpkg-dev (>= 1.14.8) for this. + * debian/control.in: + + Recommend python on the -dev package for the gtester-report utility. + * debian/shlibs.local: + + Dropped as pcre is fixed now since 7.4-1 (Closes: #450796). + + [ Loic Minier ] + * Build-dep on gtk-doc-tools to prevent a spurious warning from + gtk-doc.make: "/bin/sh: line 11: test: !=: unary operator expected". + * Build udeb against system pcre again (now that it provides an udeb); bump + up libpcre build-dep to >= 7.4-1 (Closes: #443067). + + -- Sebastian Dröge Tue, 15 Jan 2008 15:30:20 +0100 + +glib2.0 (2.14.4-2) unstable; urgency=low + + * debian/rules: + + Make testsuite failures on sparc non-fatal too as the + threadpool-test fails there too, most probably of some + timing related bug. See BGO #481573. + + -- Sebastian Dröge Thu, 29 Nov 2007 11:45:57 +0100 + +glib2.0 (2.14.4-1) unstable; urgency=low + + [ Loic Minier ] + * Fix disabled patch name 01_gettext-desktopfiles in series. + + [ Josselin Mouette ] + * Conflict against nautilus < 2.20 according to + http://bugzilla.gnome.org/show_bug.cgi?id=440988#c182 + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Sun, 25 Nov 2007 14:37:34 +0100 + +glib2.0 (2.14.3-1) unstable; urgency=high + + [ Sebastian Dröge ] + * debian/shlibs.local: + + Override libpcre3's shlibs to require at least pcre 7.2 (See: #449289). + + [ Loic Minier ] + * New upstream stable release; bug fixes and security update. + - SECURITY: Update the internal copy of PCRE to 7.4, fixes CVE-2007-4767; + the internal copy is used for the udeb. + - Drop relibtoolizing patch, 70_relibtoolize, as upstream prepared this + tarball with libtool 1.5.24. + + -- Loic Minier Sat, 10 Nov 2007 19:59:04 +0100 + +glib2.0 (2.14.2-1) unstable; urgency=low + + * Add GNOME bug id to 70_relibtoolize. + * New upstream stable release; no API change. + * Add lpia to the list of arches on which testsuite failures are fatal. + + -- Loic Minier Wed, 17 Oct 2007 17:19:16 +0200 + +glib2.0 (2.14.1-5) unstable; urgency=low + + * Add a relibtoolizing patch, 70_relibtoolize, to get some hurd-i386 fixes + in libtool; see Debian #445001. + + -- Loic Minier Sun, 07 Oct 2007 16:52:44 +0200 + +glib2.0 (2.14.1-4) unstable; urgency=low + + * Document that testsuite failure aren't fatal on m68k due to GNOME #481575. + * Disable testsuite on arm, mips, powerpc; see GNOME #481573; mipsel was + already disabled because its testsuite results were unknown in + experimental. + * Document that testsuite failure is disabled on hppa, hurd, kfreebsd-amd64, + kfreebsd-i386 due to Debian #428674. + + -- Loic Minier Sat, 29 Sep 2007 13:56:18 +0200 + +glib2.0 (2.14.1-3) unstable; urgency=medium + + * Only build the standards debs against the system PCRE, i.e. build the udeb + against the builtin PCRE until pcre3 provides an udeb. + + -- Loic Minier Tue, 18 Sep 2007 21:35:30 +0200 + +glib2.0 (2.14.1-2) unstable; urgency=low + + * debian/control.in, + debian/rules: + + Build against the system PCRE instead of the supplied one. + + -- Sebastian Dröge Mon, 17 Sep 2007 09:41:48 +0200 + +glib2.0 (2.14.1-1) unstable; urgency=low + + [ Loic Minier ] + * Mention I added 90_fix-abi-check-with-debug in 2.14.0-1 + + [ Sebastian Dröge ] + * New upstream major stable release, without API changes. + * debian/patches/90_fix-abi-check-with-debug.patch: + + Dropped, merged upstream. + + -- Sebastian Dröge Mon, 17 Sep 2007 06:35:29 +0200 + +glib2.0 (2.14.0-2) unstable; urgency=low + + * Upload to unstable; drop check-dist include. + + -- Loic Minier Tue, 21 Aug 2007 09:05:30 +0200 + +glib2.0 (2.14.0-1) experimental; urgency=low + + * Fix double --host/--build flags to configure. + * Update patch 67_gcc43-inline to also fix the headers for GCC 4.2. + * New upstream major stable release; API additions. + - Bump up shlibs to >= 2.14.0. + - Drop patch 90_from_svn_fix_missing_pointer_casting, merged upstream. + - New patch, 90_fix-abi-check-with-debug, fixes build of testsuite in + debug mode; from SVN. + + -- Loic Minier Mon, 20 Aug 2007 21:54:07 +0200 + +glib2.0 (2.13.7-3) experimental; urgency=low + + * debian/patches/90_from_svn_fix_missing_pointer_casting.patch: + - patch from SVN, "fixed missing pointer casts when using atomic ops." + (Closes: #434853) + + -- Sebastien Bacher Fri, 27 Jul 2007 16:14:13 +0200 + +glib2.0 (2.13.7-2) experimental; urgency=low + + * Bump shlibs to 2.13.7. + + -- Loic Minier Wed, 25 Jul 2007 16:09:27 +0200 + +glib2.0 (2.13.7-1) experimental; urgency=low + + * Drop "libtool_is_fool" snippet patching hardcode_libdir_flag_spec and + archive_cmds which is probably dangerous with newer libtools. + * Fix flavor name in a comment of debian/rules. + * Use -s instead of -a in arch-specific dh_* calls. + * New upstream development release; some API additions. + - Drop patch 60_output-lines-during-tests, merged upstream. + * New patch, 60_wait-longer-for-threads-to-die, to wait 5 seconds instead of + one for threads to die in the threadpool test; hopefully fixes hppa and + kfreebsd testsuite failures; see #428674 and #431720. + * Don't make testsuite failures fatal on hppa; closes: #431720. + + -- Loic Minier Thu, 12 Jul 2007 21:37:47 +0200 + +glib2.0 (2.13.6-1) experimental; urgency=low + + * Don't pass -L to dh_shlibdeps as the shlibs.local trick is enough and this + can result in duplicate deps; closes: #317461. + * Set myself as maintainer. + * Cleanups. + * Make the testsuite failures fatal on arches which passed the testsuite + with 2.13.5 in experimental (currently: alpha amd64 arm hppa i386 ia64 + mips powerpc s390); closes: #291486. + * Don't run the testsuite when cross-compiling. + * New upstream development release; only API change is to change back the + definition of GType for C++ to be gulong. + + -- Loic Minier Mon, 02 Jul 2007 10:21:34 +0200 + +glib2.0 (2.13.5-1) experimental; urgency=low + + * New upstream release + - Bump shlibs to >= 2.13.5, as the API was changed + + -- Marc 'HE' Brockschmidt Tue, 19 Jun 2007 16:14:16 +0200 + +glib2.0 (2.13.4-2) experimental; urgency=low + + * New patch, 67_gcc43-inline, fixes FTBFS of apps using glib with GCC 4.3 + which uses C99 where the meaning of "inline" changed; patch was adapted + from patches in GNOME #315437 and Gentoo #156475; closes: #416863. + + -- Loic Minier Sat, 16 Jun 2007 18:49:57 +0200 + +glib2.0 (2.13.4-1) experimental; urgency=low + + * Also honor parallel=n in DEB_BUILD_OPTIONS. + * New upstream release series; these are development releases, the new API + may still change incompatibly. + - Target at experimental; include check-dist. + - Bump up shlibs to >= 2.13.4. + * New patch but disabled, 01_gettext-desktopfiles, permits overriding the + gettext domain when desktop files have such a field; found in the Ubuntu + package. + + -- Loic Minier Wed, 13 Jun 2007 10:52:27 +0200 + +glib2.0 (2.12.12-1) unstable; urgency=low + + * Fix description of the -dbg package. + * New upstream release. + + -- Loic Minier Thu, 03 May 2007 19:14:33 +0200 + +glib2.0 (2.12.11-3) unstable; urgency=medium + + * Initialize CFLAGS to -Wall -g; pass debian/rules' CFLAGS and LDFLAGS to + configure, doh! + * Track all stable versions in watch file. + * Wrap build-deps and deps. + * Add ${misc:Depends}. + * New patch 60_output-lines-during-tests, outputs newlines after thousand + iterations of the inner-loop of the closures test to avoid the timeout on + mips and mipsel buildds. + + -- Loic Minier Thu, 12 Apr 2007 16:13:46 +0200 + +glib2.0 (2.12.11-2) unstable; urgency=low + + * Run "make check" test suite for the deb flavor except if DEB_BUILD_OPTIONS + contains the "nocheck" keyword; ignore failures. + * Include the new uploaders.mk from gnome-pkg-tools instead of duplicating + its logic; build-dep on gnome-pkg-tools >= 0.11. + * Drop useless version computations. + * Add support for DEB_BUILD_OPTIONS_PARALLEL. + * Upload to unstable; drop check-dist include. + + -- Loic Minier Wed, 11 Apr 2007 10:35:43 +0200 + +glib2.0 (2.12.11-1) experimental; urgency=medium + + * New upstream release; no API change. + + -- Loic Minier Fri, 9 Mar 2007 22:02:25 +0100 + +glib2.0 (2.12.10-1) experimental; urgency=low + + * Include the new check-dist Makefile to prevent accidental uploads to + unstable; bump build-dep on gnome-pkg-tools to >= 0.10. + * New upstream release; no API change. + - Rewrite and cleanup the build-system completely to build a set of + flavors; drop obsolete targets; drop obsolete files; switch from + tar-in-tar and sys-build to regular source and quilt patching; + build-depend on quilt; drop DEB_USE_DBS_TARBALL_LAYOUT; create stampdir + when necessary; switch from dh_movefiles and dh_installdirs to + dh_install. + - Drop patch 000_glib-link; merged upstream. + * Bump up Debhelper compatibility level to 5. + * Only ship README.Debian in libglib2.0-dev. + * Empty dependency_libs in the *.la files of libglib2.0-dev. + * Override shlibs for the inter-shlibdeps before computing them. + * Use >= ${source:Version} and ${binary:Version} for inder-deps; build-dep + on dpkg-dev >= 1.13.19. + * Fix --dbg-package name. + * Use make vars for package names. + * Tune udeb description. + * Clean /usr/share/doc symlinks generation and move to dh_link generated + links. + * Cleanup list of invoked dh_* commands. + + -- Loic Minier Thu, 8 Mar 2007 18:51:27 +0100 + +glib2.0 (2.12.9-2) experimental; urgency=low + + * Bump shlibs to >= 2.12.9. + * Avoir overwriting the *.la files of the main build with the *.la files of + the udeb build; fixes "old_library" in *.la files; thanks Tim Dijkstra; + closes: #297741. + + -- Loic Minier Sat, 20 Jan 2007 09:13:40 +0100 + +glib2.0 (2.12.9-1) experimental; urgency=low + + * Add a get-orig-source target to retrieve the upstream tarball. + * New upstream releases; no API change. + - Fixes documentation of g_key_file_set_string_list(); closes: #405028. + - Avoids spewing warnings with gcc 2.95; closes: #303124. + - Drop patch 009_accept-space-in-key-names; merged and adapted upstream. + + -- Loic Minier Wed, 17 Jan 2007 08:55:27 +0100 + +glib2.0 (2.12.7-1) experimental; urgency=low + + * New upstream release; no API change; translation updates, bug fixes, + build fixes. + - Target at experimental for now. + - Drop patch 010_restore-old-key-file-syntax-support, merged and adapted + upstream. + + -- Loic Minier Fri, 5 Jan 2007 12:24:38 +0100 + +glib2.0 (2.12.6-2) unstable; urgency=medium + + * New patch, 010_restore-old-key-file-syntax-support, reverts strict group + names and key names checks introduced between glib 2.12.4 and 2.12.6; + instead of failing, critical warnings are output; updates the relevant + tests as well; closes: #404888. + * New patch, 009_accept-space-in-key-names, adds support for space in key + names (independently of 010_restore-old-key-file-syntax-support); updates + and add relevant tests as well; closes: #404888 as well. + + -- Loic Minier Sun, 31 Dec 2006 20:43:23 +0100 + +glib2.0 (2.12.6-1) unstable; urgency=low + + * New upstream release; no API or ABI change. + - Fixes file-type detection in nautilus; closes: #404015. + + -- Loic Minier Thu, 21 Dec 2006 09:46:30 +0100 + +glib2.0 (2.12.5-3) unstable; urgency=low + + * Upload to unstable. + + -- Loic Minier Wed, 20 Dec 2006 17:27:25 +0100 + +glib2.0 (2.12.5-2) experimental; urgency=low + + * Upload to unstable. + + -- Loic Minier Wed, 20 Dec 2006 08:50:56 +0100 + +glib2.0 (2.12.5-1) experimental; urgency=low + + * Add cross-reference in 2.12.4-2. + * New upstream release; no API or ABI change. + - Target at experimental for now. + - Drop patch 011_glib-gettext-datarootdir, merged upstream. + * Drop patch 010_glib2.0.kfreebsd-amd64, is not needed anymore and seems to + have been at the wrong level anyway. + * Review and comment on the usefulness of patch 000_glib-link. + + -- Loic Minier Tue, 19 Dec 2006 08:52:26 +0100 + +glib2.0 (2.12.4-2) unstable; urgency=low + + * New patch, 011_glib-gettext-datarootdir, to compute datarootdir + appropriately for AM_GLIB_DEFINE_LOCALEDIR; GNOME #343825; + closes: #370282. + + -- Loic Minier Thu, 16 Nov 2006 10:14:52 +0100 + +glib2.0 (2.12.4-1) unstable; urgency=low + + * New upstream release; no API changes. + + -- Loic Minier Mon, 2 Oct 2006 10:39:57 +0200 + +glib2.0 (2.12.3-2) unstable; urgency=low + + * Upload to unstable + + [ Loic Minier] + * Merge 2.10.3-3. + + -- Sebastien Bacher Wed, 13 Sep 2006 13:16:29 +0200 + +glib2.0 (2.12.3-1) experimental; urgency=low + + * New upstream release; no public API changes. + * Broaden the -data dep on the lib to permit bin NMUs. + + -- Loic Minier Wed, 30 Aug 2006 22:12:02 +0200 + +glib2.0 (2.12.2-1) experimental; urgency=low + + * New upstream release; no API changes. + + -- Loic Minier Mon, 21 Aug 2006 12:30:24 +0200 + +glib2.0 (2.12.1-1) experimental; urgency=low + + * New upstream release. + * Sync with overrides and set udeb's Priority to optional instead of extra. + * Bump up Standards-Version to 3.7.2. + + -- Loic Minier Mon, 7 Aug 2006 22:08:21 +0200 + +glib2.0 (2.12.0-1) experimental; urgency=low + + * New upstream version: + Major new features include: + * The Unicode support has been updated to Unicode 5. + * GBookmarkFile: a parser for files containing bookmarks + stored using the Desktop Bookmark specification + * Base64 encoding support + * debian/rules: + - updated shver number + * debian/watch: + - updated + + -- Sebastien Bacher Mon, 3 Jul 2006 10:46:21 +0200 + +glib2.0 (2.10.3-3) unstable; urgency=low + + * debian/patches/999_ia64_atomic_ops_broken.patch: + - dropped, it's not required with the new gcc and it was breaking the build + (Closes: #376260) + + [ Loic Minier ] + * Sync with overrides and set udeb's Priority to optional instead of extra. + + -- Sebastien Bacher Wed, 12 Jul 2006 19:09:21 +0200 + +glib2.0 (2.10.3-2) unstable; urgency=medium + + * Re-add changes from 2.10.2-2 that were lost in the wild + (closes: #361697). + + -- Josselin Mouette Mon, 26 Jun 2006 19:54:17 +0200 + +glib2.0 (2.10.3-1) unstable; urgency=low + + * New upstream version: + Bugs fixed: + - g_completion_complete_utf8 crashes when NULL is passed to it + - update-desktop-database doesn't handle duplicate entries + (Closes: #298668) + - Dereferencing NULL value in g_key_file_get_group_comment + - GKeyFile set_string_list invalid memory reads + - The GObject tutorial say g_object_(un)ref is _not_ thread-safe + - Fix a memory leak in GOption + + -- Sebastien Bacher Sat, 27 May 2006 12:54:17 +0200 + +glib2.0 (2.10.2-2) unstable; urgency=low + + * debian/control.in, debian/rules: + - patch by Frans Pop + - Add support for udeb dependency resolution in shlibs file + (Closes: #361697). + - Simplify debian/rules by making use of udeb support in debhelper. + * debian/control.in: + - clarify the description for the -data package (Closes: #362316), + change suggested Robert Bihlmeyer + + -- Sebastien Bacher Fri, 28 Apr 2006 00:03:41 +0200 + +glib2.0 (2.10.2-1) unstable; urgency=low + + * New upstream version: + - Missing check for .dylib + - Segmentation Fault when %llu is passed to vasnprintf and HAVE_SNPRINTF + is not defined + - Add support for write FDs to GIOChannel + - Memleak in goption.c::parse_short_option + - g_parse_debug_string reads beyond buffer + - g_option_context_parse() should not set program name to '' if + it is already set + - g_main_context_unref calls g_source_destroy_internal with incorrect + arguments + - Slight performance gains (GList, GAsyncQueue) + - Use of unitialised memory in g_mem_profile + - make check FAIL: threadpool-test + - g_option_context_new parameter lacks better explanation + - Some breakages with GThreadPool + - gthread/gthread-win32.c: IsDebuggerPresent needs + '#define _WIN32_WINDOWS 0x0401' + - dlerror() portability issue causes crash on (old) a.out NetBSD platform + - g_timer_elapsed docs should mention that microseconds may be NULL + - goption + error out params + - Documentation should not reference G_HAVE_GINT64, as it's deprecated. + * debian/patches/010_glib2.0.kfreebsd-amd64.patch: + - patch by Aurelien Jarno , fix build on kfreebsd-amd64 + (Closes: #355953) + * debian/rules: + - use "-g" for CFLAGS, makes -dbg package useful again + change by Fabio M. Di Nitto on the Ubuntu package: + * Make sure to pass CFLAGS to configure. + * Generalize DEB_BUILD_ARCH. + + -- Sebastien Bacher Fri, 7 Apr 2006 23:23:14 +0200 + +glib2.0 (2.10.1-2) unstable; urgency=low + + [ Sjoerd Simons ] + * Upload to unstable + * Document udeb changes that Josselin did in an earlier experimental + package. + * debian/patches/999_ia64_atomic_ops_broken.patch + + Added. Uses atomic builtins that gcc-4.0 know on ia64, instead of those + for gcc-4.1. (Patch by LaMont Jones from the ubuntu package) + * Updated debian/watch to use download.gnome.org + + [ Josselin Mouette ] + * Set the conflict with pango < 1.11, that's where the breakage lies. + * Add a XC-Package-Type header to the udeb and set the priority to extra. + [debian/control.in] + + -- Sjoerd Simons Sun, 19 Mar 2006 12:41:21 +0100 + +glib2.0 (2.10.1-1) experimental; urgency=low + + * New upstream release (bugfixes, translation updates). + * [debian/rules] Bring priority parameter for dpkg-distaddfile for the udeb + in line with control.in . + + Josselin Mouette : + * Conflict with pango < 1.10 to avoid breakage caused by the unicode + changes. + + -- J.H.M. Dassen (Ray) Sat, 11 Mar 2006 13:53:16 +0100 + +glib2.0 (2.10.0-1) experimental; urgency=low + + * New upstream release. + + -- Josselin Mouette Mon, 6 Mar 2006 00:32:27 +0100 + +glib2.0 (2.8.6-1) unstable; urgency=medium + + * New upstream release (bugfixes, translation updates). + + -- J.H.M. Dassen (Ray) Wed, 18 Jan 2006 20:30:26 +0100 + +glib2.0 (2.8.5-1) unstable; urgency=low + + * New upstream release (bugfixes, translation updates, + g_object_compat_control() added). + * [debian/rules] Bumped shver to 2.8.5 to reflect the API change. + + -- J.H.M. Dassen (Ray) Thu, 5 Jan 2006 21:22:36 +0100 + +glib2.0 (2.8.4-2) unstable; urgency=high + + * Fix shlibs deps that crept in the amd64 package, thanks Kurt Roeckx for + all the fish. (Closes: #339685) + - Cleanup and clarify upstream version calculations. + - Drop dh_makeshlibs -a call as only one package ships shlibs and already + has a separate call. + - Drop useless shlibs.local generation. + - Call dh_shlibdeps with cleaner arguments. + [debian/rules] + * Fix "fakeroot debian/rules clean" by following find calls with a .svn + filter. + [debian/scripts/lib] + * Fix quoting of unfix.source.patch:START and FAILED messages. + [debian/scripts/messages] + * Clarify Copyright versus License and update upstream URL. + [debian/copyright] + + -- Loic Minier Sun, 20 Nov 2005 10:36:26 +0100 + +glib2.0 (2.8.4-1) unstable; urgency=low + + * New upstream version. + + -- Sebastien Bacher Tue, 15 Nov 2005 16:22:08 +0100 + +glib2.0 (2.8.3-1) unstable; urgency=medium + + * New upstream release (fix an error that crept in with a change to + glib-mkenums in 2.8.2, documentation improvements, translation updates). + + -- J.H.M. Dassen (Ray) Mon, 3 Oct 2005 20:52:26 +0200 + +glib2.0 (2.8.2-1) unstable; urgency=medium + + * New upstream release (bug fixes, documentation improvements, translation + updates). + + -- J.H.M. Dassen (Ray) Sun, 2 Oct 2005 09:31:27 +0200 + +glib2.0 (2.8.1-1) unstable; urgency=medium + + * New (for Debian) upstream version (bug fixes, documentation improvements, + translation updates). + * [debian/control.in] Bumped Standards-Version. + * [debian/copyright] Updated FSF's address. + + -- J.H.M. Dassen (Ray) Sat, 24 Sep 2005 13:45:47 +0200 + +glib2.0 (2.8.1-0ubuntu1) breezy; urgency=low + + * New upstream version. + * debian/watch: + - updated. + + -- Sebastien Bacher Tue, 23 Aug 2005 12:05:20 +0200 + +glib2.0 (2.8.0-1) unstable; urgency=low + + * New upstream version. + * debian/rules: + - updated the shlibs. + + -- Sebastien Bacher Sat, 13 Aug 2005 14:14:00 +0200 + +glib2.0 (2.7.3-1) experimental; urgency=low + + * New upstream version. + + -- Sebastien Bacher Fri, 15 Jul 2005 23:42:37 +0200 + +glib2.0 (2.7.2-1) experimental; urgency=low + + * New upstream version. + + -- Sebastien Bacher Fri, 8 Jul 2005 22:07:59 +0200 + +glib2.0 (2.7.1-1) experimental; urgency=low + + * New upstream version. + * debian/rules: + - updated the shlib. + + -- Sebastien Bacher Fri, 1 Jul 2005 19:43:05 +0200 + +glib2.0 (2.7.0-1) experimental; urgency=low + + * New upstream version: + * GKeyFile: + - add unit tests. + - accept \r\n as line end. + - don't interpret leading zeros as octal numbers. + - make key and group removal work. + * GOption: + - improve formatting of --help output. + - accept -?. + - warn about duplicate main groups. + - treat '-' as non-option argument. + - report missing arguments as errors. + - add a boxed type for GDate. + * GTree: + - g_tree_remove() and g_tree_steal() return status information. + * Stdio wrappers: + - work regardless of large file support. + - add g_access(), g_chmod(), g_creat(), g_chdir. + * GObject: + - implement "toggle references" to help language bindings. + - allow to mark names, nicks and blurbs of pspecs as static. + - make pspec lookup a bit faster. + * add g_listenv() to list all set environment variables. + * add g_file_set_contents() to atomically write a file. + * add g_try_malloc(), g_try_new(), g_try_new0() and g_try_renew(). + * add g_utf8_collate_key_for_filename() to sort filenames taking + extensions and numeric suffixes into account. + * add G_GNUC_NULL_TERMINATED to mark varargs function with + NULL-terminated argument lists. + * documentation improvements. + * new and updated translations. + * debian/rules: + - updated the shlibs. + * debian/watch: + - updated. + + -- Sebastien Bacher Tue, 21 Jun 2005 12:15:47 +0200 + +glib2.0 (2.6.5-1) unstable; urgency=low + + * New upstream release again bringing a number of bugfixes, improved + documentation and updated translations, including + gthread-posix.c (g_thread_create_posix_impl): Allow setstacksize to + fail. (GNOME #304790, Michael Banck) (Closes: #312382) + * [debian/patches/000_glib-link.patch] Updated. + + -- J.H.M. Dassen (Ray) Fri, 10 Jun 2005 21:14:42 +0200 + +glib2.0 (2.6.4-1) unstable; urgency=low + + * New upstream release bringing a number of bugfixes, improved + documentation and updated translations. + + -- J.H.M. Dassen (Ray) Wed, 6 Apr 2005 22:16:44 +0200 + +glib2.0 (2.6.3-1) unstable; urgency=low + + * New upstream release. + + -- Sebastien Bacher Mon, 28 Feb 2005 09:38:38 +0100 + +glib2.0 (2.6.2-1) unstable; urgency=low + + * New upstream release. + + -- Sebastien Bacher Sat, 5 Feb 2005 19:23:59 +0100 + +glib2.0 (2.6.1-3) unstable; urgency=low + + * debian/rules: + - use "-plibglib$(apiver)-udeb", fix the libglib2.0-0-dbg package. + + -- Sebastien Bacher Sun, 23 Jan 2005 22:24:21 +0100 + +glib2.0 (2.6.1-2) unstable; urgency=low + + * Upload to unstable. + * debian/control.in: + - rename libglib2.0-dbg to libglib2.0-0-dbg. + - set myself as maintainer. + * debian/rules: + - use dh_strip to make the debug package. + + -- Sebastien Bacher Sun, 16 Jan 2005 12:59:21 +0100 + +glib2.0 (2.6.1-1) experimental; urgency=low + + * New upstream release. + + -- Sebastien Bacher Sat, 8 Jan 2005 14:44:05 +0100 + +glib2.0 (2.6.0-1) experimental; urgency=low + + * New upstream release. + * debian/rules: + - updated the shlibs. + * debian/watch: + - updated. + + -- Sebastien Bacher Mon, 27 Dec 2004 16:15:36 +0100 + +glib2.0 (2.4.8-1) unstable; urgency=medium + + * New upstream bugfix release. + + -- J.H.M. Dassen (Ray) Sat, 4 Dec 2004 18:52:44 +0100 + +glib2.0 (2.4.7-1) unstable; urgency=medium + + * New upstream bugfix release. + * [debian/patches/000_glib-link.patch] Updated. + * [debian/patches/001_translations.patch] Dropped. + + -- J.H.M. Dassen (Ray) Fri, 8 Oct 2004 22:27:49 +0200 + +glib2.0 (2.4.6-4) unstable; urgency=medium + + * [debian/patches/001_translations.patch] Updated translations from CVS and + relibtoolise to use new translations. + * [debian/rules] Fixed udeb naming on Hurd. + + -- J.H.M. Dassen (Ray) Fri, 8 Oct 2004 12:43:09 +0200 + +glib2.0 (2.4.6-3) unstable; urgency=medium + + Colin Watson : (Closes: #274053) + * [debian/rules] binary-arch depends on binary-arch-udeb. + * [debian/rules] Strip udeb! + + -- J.H.M. Dassen (Ray) Wed, 29 Sep 2004 19:39:22 +0200 + +glib2.0 (2.4.6-2) unstable; urgency=medium + + * [debian/patches/001_translations.patch] Updated translations from CVS. + * [debian/rules] Tightened "shver" to tighten shlibs, as some + incompatibilities with older versions turned up with gconf. + (Closes: #265659) + + -- J.H.M. Dassen (Ray) Tue, 24 Aug 2004 18:50:04 +0200 + +glib2.0 (2.4.6-1) unstable; urgency=medium + + * New upstream bugfix release. + + -- J.H.M. Dassen (Ray) Sun, 15 Aug 2004 18:34:27 +0200 + +glib2.0 (2.4.5-2) unstable; urgency=low + + * debian/patches/000_glib-link.patch: + - patch from Jurij Smakov to link with all the libs + (Closes: #263130). + + -- Sebastien Bacher Tue, 3 Aug 2004 18:03:53 +0200 + +glib2.0 (2.4.5-1) unstable; urgency=low + + * New upstream release. + + -- Sebastien Bacher Sun, 1 Aug 2004 17:31:43 +0200 + +glib2.0 (2.4.4-1) unstable; urgency=low + + * New upstream release. + - remove spaces before "#pragma alloca" (Closes: #250667). + + -- Sebastien Bacher Fri, 16 Jul 2004 18:44:31 +0200 + +glib2.0 (2.4.2-1) unstable; urgency=low + + * New upstream release. + + -- Sebastien Bacher Sat, 5 Jun 2004 00:51:01 +0200 + +glib2.0 (2.4.1-2) unstable; urgency=low + + * Upload in unstable. + * GNOME Team Upload. + * J.H.M. Dassen (Ray) : + + [debian/rules] Make the linker work a bit harder so dynamic loading can + be done faster; safety measure: ensure the build aborts when the library + still has references to undefined symbols. + + -- Sebastien Bacher Sat, 22 May 2004 14:18:23 +0200 + +glib2.0 (2.4.1-1) experimental; urgency=low + + * New upstream release. + * GNOME Team Upload. + * debian/rules: + - updated shlib version to 2.4.1. + + -- Sebastien Bacher Sun, 2 May 2004 12:47:25 +0200 + +glib2.0 (2.4.0-2) experimental; urgency=low + + * Akira TAGOH + - debian/rules: + - bumped shlib version to 2.4.0. + + -- Akira TAGOH Wed, 24 Mar 2004 09:12:31 +0900 + +glib2.0 (2.4.0-1) experimental; urgency=low + + * New upstream release. + * debian/rules: + - doh. don't claim the newer shlibs. + * debian/control: + - added Uploaders to maintain as team. + - added gnome-pkg-tools to Build-Depends. + * debian/docs: + - added old ChangeLog and NEWS files. + + -- Akira TAGOH Wed, 17 Mar 2004 21:18:00 +0900 + +glib2.0 (2.2.3-1) unstable; urgency=low + + * "Welcome back my laptop PC!" release. + * New upstream release. + * debian/control: + - bumped Standards-Version to 3.6.1.0. + + -- Akira TAGOH Mon, 1 Sep 2003 02:29:14 +0900 + +glib2.0 (2.2.2-1) unstable; urgency=low + + * New upstream release. + - Fix portability problems with G_MIN/MAX_INT64 (closes: Bug#195302) + * debian/control: + - bumped Standards-Version to 3.5.10.0. + - changed the sections for libglib2.0-dev and libglib2.0-dbg to libdevel. + * debian/compat: + - use it instead of DH_COMPAT. + + -- Akira TAGOH Tue, 10 Jun 2003 18:44:01 +0900 + +glib2.0 (2.2.1-3) unstable; urgency=low + + * debian/control: + - rename libglib2.0-0-udeb to libglib2.0-udeb. + - delete Recommends line from libglib2.0-udeb. (closes: Bug#183749) + - add Provides: libglib2.0-0 for libglib2.0-udeb. + * debian/libglib2.0-udeb.files: + - contain the libraries and locale data. + + -- Akira TAGOH Sat, 8 Mar 2003 02:46:19 +0900 + +glib2.0 (2.2.1-2) unstable; urgency=low + + * debian/rules: + - create the symlinks on /usr/share/gtk-doc/html. (closes: Bug#183504) + - changed DH_COMPAT to 4. + * debian/control: + - add libglib2.0-0-udeb package for debian-installer. + + -- Akira TAGOH Thu, 6 Mar 2003 01:14:44 +0900 + +glib2.0 (2.2.1-1) unstable; urgency=low + + * New upstream release. + * debian/control: + - needed pkg-config (>= 0.14.0). + - add autotools-dev to Build-Depends. + + -- Akira TAGOH Tue, 4 Feb 2003 01:02:20 +0900 + +glib2.0 (2.2.0-2) unstable; urgency=low + + * close to be fixed in the upstream release. (closes: Bug#173508) + + -- Akira TAGOH Tue, 7 Jan 2003 17:22:20 +0900 + +glib2.0 (2.2.0-1) unstable; urgency=low + + * New upstream release. + * debian/control: + bumped Standards-Version to 3.5.8. + + -- Akira TAGOH Wed, 25 Dec 2002 13:46:08 +0900 + +glib2.0 (2.0.7-1) unstable; urgency=low + + * New upstream release. + * debian/control: + - changed libc6-dev to libc6-dev | libc-dev in -dev's Depends. + - bumped Standards-Version and depends debhelper (>> 4). + - add libgtk2.0-doc to Suggests for -doc. + * debian/rules: + - add symlink to fix the missing symlink for gtk. but this release doesn't + include the hyperlink for gtk+ (closes: Bug#162845) + - support noopt option for DEB_BUILD_OPTIONS. + + -- Akira TAGOH Tue, 5 Nov 2002 17:06:50 +0900 + +glib2.0 (2.0.6-1) unstable; urgency=low + + * New upstream release. + * debian/rules: removed --enable-debug option. conform to the default value + now. (closes: Bug#151815) + * debian/patches/000_glib2.0-garray.patch: removed because it's merged by + the upstream. + + -- Akira TAGOH Sun, 4 Aug 2002 16:05:03 +0900 + +glib2.0 (2.0.4-3) unstable; urgency=low + + * debian/patches/000_glib2.0-garray.patch: + applied to fix g_ptr_array_index() macro. (closes: Bug#150521) + + -- Akira TAGOH Sat, 29 Jun 2002 19:46:51 +0900 + +glib2.0 (2.0.4-2) unstable; urgency=low + + * debian/libglib2.0-doc.doc-base.gobject: fix the dupplicated title. + (closes: Bug#150040) + + -- Akira TAGOH Sun, 16 Jun 2002 23:27:38 +0900 + +glib2.0 (2.0.4-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Sun, 16 Jun 2002 03:33:22 +0900 + +glib2.0 (2.0.3-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Wed, 29 May 2002 00:49:56 +0900 + +glib2.0 (2.0.1-2) unstable; urgency=low + + * debian/scripts/vars.build: fix bashism. + * debian/README.Debian: add static link issue. + * debian/rules: add --enable-static. (closes: Bug#142198) + + -- Akira TAGOH Thu, 11 Apr 2002 19:25:17 +0900 + +glib2.0 (2.0.1-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Sat, 30 Mar 2002 16:23:54 +0900 + +glib2.0 (2.0.0-1) unstable; urgency=low + + * Initial Release. + + -- Akira TAGOH Tue, 12 Mar 2002 02:32:11 +0900 diff --git a/debian/clean b/debian/clean new file mode 100644 index 0000000..2cecdbc --- /dev/null +++ b/debian/clean @@ -0,0 +1,6 @@ +debian/cross.txt +debian/cross.txt.in +debian/libglib2.0-0.triggers +debian/libglib2.0-0.postinst +debian/libglib2.0-0.postrm +gio/gdbus-2.0/codegen/*.pyc diff --git a/debian/clean-up-unmanaged-libraries b/debian/clean-up-unmanaged-libraries new file mode 100755 index 0000000..9dec236 --- /dev/null +++ b/debian/clean-up-unmanaged-libraries @@ -0,0 +1,216 @@ +#!/bin/dash +# (This script requires either dash or bash due to its use of test -ef.) + +# Copyright 2020 Collabora Ltd. +# SPDX-License-Identifier: MIT +# (see "Expat" paragraph in debian/copyright) + +set -eu + +# global +bug_ref=911225 +force= +me="$0" +need_ldconfig= +really=yes +verbose= + +debug () { + [ -z "$verbose" ] || echo "DEBUG: $me: $*" >&2 +} + +warning () { + echo "WARNING: $me: $*" >&2 +} + +usage () { + local status="${1:-2}" + + if [ "$status" -gt 0 ]; then + exec >&2 + fi + + cat <&2 || : + + if [ -n "$really" ]; then + warning "Moving $impl into $removal" + install -d "$removal" + rm -f "$removal/${impl##*/}" + mv "$impl" "$removal/." + else + warning "Not moving $impl into $removal (--dry-run)" + fi + + echo >&2 + need_ldconfig=yes + done + + if [ -z "$found_one" ]; then + debug "No stray files found at /lib/$multiarch/$soname.*" + fi +} + +main () { + local getopt_temp + local multiarch + local soname + + getopt_temp="help" + getopt_temp="$getopt_temp,bug-ref:" + getopt_temp="$getopt_temp,dry-run" + getopt_temp="$getopt_temp,force" + getopt_temp="$getopt_temp,verbose" + + getopt_temp="$(getopt -o '' --long "$getopt_temp" -n "$me" -- "$@")" + eval "set -- $getopt_temp" + + while [ "$#" -gt 0 ] + do + case "$1" in + (--dry-run) + really= + verbose=yes + shift + ;; + + (--bug-ref) + bug_ref="$2" + shift 2 + ;; + + (--force) + force=yes + shift + ;; + + (--help) + usage 0 + ;; + + (--verbose) + verbose=yes + shift + ;; + + (--) + shift + break + ;; + + (-*) + warning "Unknown option: $1" + usage 2 + ;; + + (*) + break + ;; + esac + done + + if [ "$#" -lt 2 ]; then + warning "A multiarch tuple and at least one SONAME are required" + usage 2 + fi + + multiarch="$1" + shift + + if [ -n "$force" ]; then + debug "Using force" + elif [ "/usr/lib/$multiarch" -ef "/lib/$multiarch" ]; then + # On a merged-/usr system, a new library like libglib-2.0.so.0.5000.0 + # will take precedence over a stale library like + # libglib-2.0.so.0.4200.0 in the same directory without us needing + # to do anything, so the safe route is to avoid doing anything. + debug "Merged-/usr system, no need to do anything without --force" + return 0 + fi + + for soname in "$@"; do + do_soname "$multiarch" "$soname" + done + + if [ -n "$need_ldconfig" ] && [ -n "$really" ]; then + warning "Changes were made, running ldconfig..." + ldconfig || ldconfig --verbose + elif [ -n "$need_ldconfig" ]; then + debug "Would run ldconfig, but skipped due to --dry-run" + fi +} + +main "$@" + +# vim:set sw=4 sts=4 et: diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..b38d912 --- /dev/null +++ b/debian/control @@ -0,0 +1,208 @@ +# This file is autogenerated. DO NOT EDIT! +# +# Modifications should be made to debian/control.in instead. +# This file is regenerated automatically in the clean target. +Source: glib2.0 +Section: libs +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian GNOME Maintainers +Uploaders: Iain Lane , Jeremy Bicha , Simon McVittie +Build-Depends: dbus , + debhelper-compat (= 13), + dh-sequence-python3, + dh-sequence-gnome, + docbook-xml, + docbook-xsl, + dpkg-dev (>= 1.17.14), + gettext, + libdbus-1-dev (>= 1.2.14) , + libelf-dev (>= 0.142), + libffi-dev (>= 3.3), + libgamin-dev [hurd-any] | libfam-dev [hurd-any], + libmount-dev (>= 2.35.2-7~) [linux-any], + libpcre3-dev (>= 1:8.35), + libselinux1-dev [linux-any], + libxml2-utils, + linux-libc-dev [linux-any], + meson (>= 0.52.0), + pkg-config (>= 0.16.0), + python3-distutils, + python3:any (>= 2.7.5-5~), + xsltproc, + zlib1g-dev +Build-Depends-Arch: desktop-file-utils , + locales | locales-all , + python3-dbus , + python3-gi , + shared-mime-info , + tzdata , + xterm +Build-Depends-Indep: gtk-doc-tools (>= 1.32.1), +Rules-Requires-Root: no +Standards-Version: 4.6.0 +Homepage: https://wiki.gnome.org/Projects/GLib +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/glib +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/glib.git +Vcs-Browser: https://salsa.debian.org/gnome-team/glib/tree/ubuntu/jammy +Vcs-Git: https://salsa.debian.org/gnome-team/glib.git -b ubuntu/jammy + +Package: libglib2.0-0 +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Recommends: libglib2.0-data, + shared-mime-info, + xdg-user-dirs +Breaks: gimp (<< 2.10.14-3~), + glib-networking-tests (<< 2.70.0~), + gnome-keyring (<< 40.0-3~), + libgio-fam (<< 2.64.1-2~) [kfreebsd-any hurd-any], + libgirepository-1.0-1 (<< 1.62.0-4~), + libgladeui-2-6 (<< 3.22.2), + libsoup2.4-tests (<< 2.72.0-3~), +Replaces: libgio-fam (<< 2.64.1-2~) [kfreebsd-any hurd-any] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Description: GLib library of C routines + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the shared libraries. + +Package: libglib2.0-tests +Build-profiles: +Architecture: any +Depends: gir1.2-glib-2.0, + libglib2.0-dev-bin, + python3-dbus, + python3-dbusmock, + python3-gi, + shared-mime-info, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Recommends: xdg-desktop-portal, +Pre-Depends: ${misc:Pre-Depends} +Description: GLib library of C routines - installed tests + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains test programs, designed to be run as part of a + regression testsuite. + +Package: libglib2.0-udeb +Build-Profiles: +Section: debian-installer +Package-Type: udeb +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Description: GLib library of C routines - minimal runtime + This is a udeb, or a microdeb, for the debian-installer. + . + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the minimal runtime library needed by the Debian + installer. + +Package: libglib2.0-bin +Section: misc +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: libglib2.0-data, + ${misc:Depends}, + ${shlibs:Depends} +Multi-Arch: foreign +Description: Programs for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the program files which is used for the libraries + and others. + +Package: libglib2.0-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libffi-dev (>= 3.3), + libglib2.0-0 (= ${binary:Version}), + libglib2.0-bin (= ${binary:Version}), + libglib2.0-dev-bin (= ${binary:Version}), + libmount-dev (>= 2.35.2-7~) [linux-any], + libpcre3-dev (>= 1:8.31), + libselinux1-dev [linux-any], + pkg-config, + zlib1g-dev, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Breaks: libglib2.0-0-dbg (<< 2.51.4-1~) +Replaces: libglib2.0-0-dbg (<< 2.51.4-1~) +Suggests: libgirepository1.0-dev (>= 1.62), + libglib2.0-doc +Description: Development files for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed to compile programs against libglib2.0-0, + as only it includes the header files and static libraries (optionally) + needed for compiling. + . + GObject-Introspection metadata for this library can be found in the + libgirepository1.0-dev package. + +Package: libglib2.0-dev-bin +Section: libdevel +Architecture: any +Depends: python3-distutils, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Suggests: libgdk-pixbuf2.0-bin (>= 2.36.12-2~) | libgdk-pixbuf2.0-dev, + libxml2-utils +Breaks: libglib2.0-bin (<< 2.54.2-5~), + libglib2.0-dev (<< 2.53) +Replaces: libglib2.0-bin (<< 2.54.2-5~), + libglib2.0-dev (<< 2.53) +Multi-Arch: foreign +Description: Development utilities for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed to compile programs against libglib2.0-0. It contains + development utilities typically run during compilation and should not be + installed directly. Use libglib2.0-dev instead. + +Package: libglib2.0-data +Architecture: all +Depends: ${misc:Depends} +Multi-Arch: foreign +Description: Common files for GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed for the runtime libraries to display messages in + languages other than English. + +Package: libglib2.0-doc +Section: doc +Architecture: all +Depends: ${misc:Depends} +Suggests: devhelp +Multi-Arch: foreign +Description: Documentation files for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the HTML documentation for the GLib library + in /usr/share/doc/libglib2.0-doc/ . diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 0000000..758cf99 --- /dev/null +++ b/debian/control.in @@ -0,0 +1,204 @@ +Source: glib2.0 +Section: libs +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian GNOME Maintainers +Uploaders: @GNOME_TEAM@, Simon McVittie +Build-Depends: dbus , + debhelper-compat (= 13), + dh-sequence-python3, + dh-sequence-gnome, + docbook-xml, + docbook-xsl, + dpkg-dev (>= 1.17.14), + gettext, + libdbus-1-dev (>= 1.2.14) , + libelf-dev (>= 0.142), + libffi-dev (>= 3.3), + libgamin-dev [hurd-any] | libfam-dev [hurd-any], + libmount-dev (>= 2.35.2-7~) [linux-any], + libpcre3-dev (>= 1:8.35), + libselinux1-dev [linux-any], + libxml2-utils, + linux-libc-dev [linux-any], + meson (>= 0.52.0), + pkg-config (>= 0.16.0), + python3-distutils, + python3:any (>= 2.7.5-5~), + xsltproc, + zlib1g-dev +Build-Depends-Arch: desktop-file-utils , + locales | locales-all , + python3-dbus , + python3-gi , + shared-mime-info , + tzdata , + xterm +Build-Depends-Indep: gtk-doc-tools (>= 1.32.1), +Rules-Requires-Root: no +Standards-Version: 4.6.0 +Homepage: https://wiki.gnome.org/Projects/GLib +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/glib +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/glib.git +Vcs-Browser: https://salsa.debian.org/gnome-team/glib/tree/ubuntu/jammy +Vcs-Git: https://salsa.debian.org/gnome-team/glib.git -b ubuntu/jammy + +Package: libglib2.0-0 +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Recommends: libglib2.0-data, + shared-mime-info, + xdg-user-dirs +Breaks: gimp (<< 2.10.14-3~), + glib-networking-tests (<< 2.70.0~), + gnome-keyring (<< 40.0-3~), + libgio-fam (<< 2.64.1-2~) [kfreebsd-any hurd-any], + libgirepository-1.0-1 (<< 1.62.0-4~), + libgladeui-2-6 (<< 3.22.2), + libsoup2.4-tests (<< 2.72.0-3~), +Replaces: libgio-fam (<< 2.64.1-2~) [kfreebsd-any hurd-any] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Description: GLib library of C routines + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the shared libraries. + +Package: libglib2.0-tests +Build-profiles: +Architecture: any +Depends: gir1.2-glib-2.0, + libglib2.0-dev-bin, + python3-dbus, + python3-dbusmock, + python3-gi, + shared-mime-info, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Recommends: xdg-desktop-portal, +Pre-Depends: ${misc:Pre-Depends} +Description: GLib library of C routines - installed tests + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains test programs, designed to be run as part of a + regression testsuite. + +Package: libglib2.0-udeb +Build-Profiles: +Section: debian-installer +Package-Type: udeb +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Description: GLib library of C routines - minimal runtime + This is a udeb, or a microdeb, for the debian-installer. + . + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the minimal runtime library needed by the Debian + installer. + +Package: libglib2.0-bin +Section: misc +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: libglib2.0-data, + ${misc:Depends}, + ${shlibs:Depends} +Multi-Arch: foreign +Description: Programs for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the program files which is used for the libraries + and others. + +Package: libglib2.0-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libffi-dev (>= 3.3), + libglib2.0-0 (= ${binary:Version}), + libglib2.0-bin (= ${binary:Version}), + libglib2.0-dev-bin (= ${binary:Version}), + libmount-dev (>= 2.35.2-7~) [linux-any], + libpcre3-dev (>= 1:8.31), + libselinux1-dev [linux-any], + pkg-config, + zlib1g-dev, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Breaks: libglib2.0-0-dbg (<< 2.51.4-1~) +Replaces: libglib2.0-0-dbg (<< 2.51.4-1~) +Suggests: libgirepository1.0-dev (>= 1.62), + libglib2.0-doc +Description: Development files for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed to compile programs against libglib2.0-0, + as only it includes the header files and static libraries (optionally) + needed for compiling. + . + GObject-Introspection metadata for this library can be found in the + libgirepository1.0-dev package. + +Package: libglib2.0-dev-bin +Section: libdevel +Architecture: any +Depends: python3-distutils, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Suggests: libgdk-pixbuf2.0-bin (>= 2.36.12-2~) | libgdk-pixbuf2.0-dev, + libxml2-utils +Breaks: libglib2.0-bin (<< 2.54.2-5~), + libglib2.0-dev (<< 2.53) +Replaces: libglib2.0-bin (<< 2.54.2-5~), + libglib2.0-dev (<< 2.53) +Multi-Arch: foreign +Description: Development utilities for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed to compile programs against libglib2.0-0. It contains + development utilities typically run during compilation and should not be + installed directly. Use libglib2.0-dev instead. + +Package: libglib2.0-data +Architecture: all +Depends: ${misc:Depends} +Multi-Arch: foreign +Description: Common files for GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package is needed for the runtime libraries to display messages in + languages other than English. + +Package: libglib2.0-doc +Section: doc +Architecture: all +Depends: ${misc:Depends} +Suggests: devhelp +Multi-Arch: foreign +Description: Documentation files for the GLib library + GLib is a library containing many useful C routines for things such + as trees, hashes, lists, and strings. It is a useful general-purpose + C library used by projects such as GTK+, GIMP, and GNOME. + . + This package contains the HTML documentation for the GLib library + in /usr/share/doc/libglib2.0-doc/ . diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..e9dffa1 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,107 @@ +This package was debianized by Akira TAGOH on +Thu, 7 Mar 2002 01:05:25 +0900. + +It was downloaded from . + +Original Authors +---------------- +Peter Mattis +Spencer Kimball +Josh MacDonald + +Please do not mail the original authors asking questions about this +version of GLib. + +GLib Team +--------- +Shawn T. Amundson +Jeff Garzik +Raja R Harinath +Tim Janik +Elliot Lee +Tor Lillqvist +Paolo Molaro +Havoc Pennington +Manish Singh +Owen Taylor +Sebastian Wilhelmi + +The random number generator "Mersenne Twister", which is used by GLib, +was developed and originally coded by: +Makoto Matsumoto +Takuji Nishimura + +Major copyright holders: + + Copyright © 1995-2021 Red Hat, Inc. + Copyright © 2008-2010 Novell, Inc. + Copyright © 2008-2010 Codethink Limited. + Copyright © 2008-2018 Collabora, Ltd. + Copyright © 2018 Endless Mobile, Inc. + Copyright © 2018 Emmanuele Bassi + +License: + + This package 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 of the License, or (at your option) any later version. + + This package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + +Files: + gobject/tests/taptestrunner.py +Copyright: + 2015 Remko Tronçon +License: Expat + +Files: + tests/gen-casefold-txt.py + tests/gen-casemap-txt.py +Copyright: + 1998-1999 Tom Tromey + 2001 Red Hat Software +License: GPL-2+ + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + . + This program 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 General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, see . diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..8913f46 --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +NEWS +README.md diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..38ea28e --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,18 @@ +[DEFAULT] +pristine-tar = True +debian-branch = ubuntu/jammy +debian-tag = ubuntu/%(version)s +upstream-branch = upstream/2.72.x + +[buildpackage] +sign-tags = True + +[dch] +multimaint-merge = True + +[import-orig] +postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit +upstream-vcs-tag = %(version%~%.)s + +[pq] +patch-numbers = False diff --git a/debian/gio-launch-desktop b/debian/gio-launch-desktop new file mode 100755 index 0000000..9b949c3 --- /dev/null +++ b/debian/gio-launch-desktop @@ -0,0 +1,12 @@ +#!/bin/sh +# Fallback implementation of gio-launch-desktop. If we upgrade from a +# GLib version between 2.57.2 and 2.63.5, as long as that version is +# still loaded into some process, it requires this executable to launch +# .desktop files. +# +# This script will be removed after Ubuntu 20.04 and Debian 11 are released. +# Do not rely on it. + +set -eu +export GIO_LAUNCHED_DESKTOP_FILE_PID="$$" +exec "$@" diff --git a/debian/libglib2.0-0.dirs b/debian/libglib2.0-0.dirs new file mode 100644 index 0000000..0541661 --- /dev/null +++ b/debian/libglib2.0-0.dirs @@ -0,0 +1,2 @@ +/usr/lib/${DEB_HOST_MULTIARCH}/gio/modules +/usr/share/glib-2.0/schemas diff --git a/debian/libglib2.0-0.install b/debian/libglib2.0-0.install new file mode 100644 index 0000000..eb06f41 --- /dev/null +++ b/debian/libglib2.0-0.install @@ -0,0 +1,7 @@ +usr/lib/*/libglib*.so.* +usr/lib/*/libgobject*.so.* +usr/lib/*/libgmodule*.so.* +usr/lib/*/libgthread*.so.* +usr/lib/*/libgio*.so.* +usr/bin/gio-querymodules usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0 +usr/bin/glib-compile-schemas usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0 diff --git a/debian/libglib2.0-0.lintian-overrides b/debian/libglib2.0-0.lintian-overrides new file mode 100644 index 0000000..71438d8 --- /dev/null +++ b/debian/libglib2.0-0.lintian-overrides @@ -0,0 +1,7 @@ +# GObject uses GLib functions instead of using libc directly +libglib2.0-0: hardening-no-fortify-functions [usr/lib/*/libgobject-2.0.so.*] +# It's a deliberate choice of bundling them together +libglib2.0-0: package-name-doesnt-match-sonames libgio-2.0-0 libglib-2.0-0 libgmodule-2.0-0 libgobject-2.0-0 libgthread-2.0-0 +# These empty directories are deliberate. +libglib2.0-0: package-contains-empty-directory usr/lib/*/gio/modules/ +libglib2.0-0: package-contains-empty-directory usr/share/glib-2.0/schemas/ diff --git a/debian/libglib2.0-0.postinst.in b/debian/libglib2.0-0.postinst.in new file mode 100644 index 0000000..231ca3e --- /dev/null +++ b/debian/libglib2.0-0.postinst.in @@ -0,0 +1,68 @@ +#!/bin/sh +set -e + + +handle_triggers () { + local trigger + local dirs + + for trigger in "$@"; do + if ! [ -d $trigger ]; then + continue + fi + case $trigger in + /usr/share/glib-2.0/schemas) + # This is triggered everytime an application installs a + # GSettings schema + "/usr/lib/#MULTIARCH#/glib-2.0/glib-compile-schemas" /usr/share/glib-2.0/schemas || true + ;; + + "/usr/lib/#MULTIARCH#/gio/modules") + # This is triggered everytime an application installs a GIO + # module into /usr/lib/#MULTIARCH#/gio/modules + + "/usr/lib/#MULTIARCH#/glib-2.0/gio-querymodules" "/usr/lib/#MULTIARCH#/gio/modules" || true + ;; + esac + done +} + +cleanup () { + /usr/share/glib-2.0/clean-up-unmanaged-libraries \ + --bug-ref=896019 \ + "$@" \ + "#MULTIARCH#" \ + libglib-2.0.so.0 +} + +if [ "$1" = triggered ]; then + handle_triggers $2 + exit 0 +fi + +# Clean up stale shared libraries on upgrades if necessary. Do this before running +# glib-compile-schemas, gio-querymodules. +# This workaround can be removed after Ubuntu 22.04 is released. +if [ -n "$2" ] && ! cleanup; then + echo "$0: Trying cleanup again with more logging..." + cleanup --verbose +fi + +#DEBHELPER# + +# This is shipped in the .deb (see debian/libglib2.0-0.dirs) but would +# be removed if empty during upgrade by old versions of the postrm (#987913). +# This workaround can be removed after Ubuntu 22.04 is released. +install -d "/usr/lib/#MULTIARCH#/gio/modules" + +"/usr/lib/#MULTIARCH#/glib-2.0/glib-compile-schemas" /usr/share/glib-2.0/schemas || true +"/usr/lib/#MULTIARCH#/glib-2.0/gio-querymodules" "/usr/lib/#MULTIARCH#/gio/modules" || true + +# Clean up pre-multiarch giomodule.cache. +# This workaround can be removed after Debian 12 and Ubuntu 22.04 are released. +if [ -d /usr/lib/gio/modules ]; then + rm -f /usr/lib/gio/modules/giomodule.cache + rmdir -p --ignore-fail-on-non-empty /usr/lib/gio/modules +fi + +# vim:set sw=4 sts=4 et: diff --git a/debian/libglib2.0-0.postrm.in b/debian/libglib2.0-0.postrm.in new file mode 100644 index 0000000..c9d5cc0 --- /dev/null +++ b/debian/libglib2.0-0.postrm.in @@ -0,0 +1,21 @@ +#! /bin/sh +set -e + +#DEBHELPER# + +case "$1" in + (remove|purge) + if [ -d /usr/lib/#MULTIARCH#/gio/modules ]; then + # Purge the cache + rm -f /usr/lib/#MULTIARCH#/gio/modules/giomodule.cache + rmdir -p --ignore-fail-on-non-empty /usr/lib/#MULTIARCH#/gio/modules + fi + ;; +esac + +if [ "$1" = purge ] && [ -d /usr/share/glib-2.0/schemas ] && [ "$DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT" = 1 ]; then + # This is the last multiarch variant to be removed, so drop the + # architecture-independent compiled schemas + rm -f /usr/share/glib-2.0/schemas/gschemas.compiled + rmdir -p --ignore-fail-on-non-empty /usr/share/glib-2.0/schemas +fi diff --git a/debian/libglib2.0-0.symbols b/debian/libglib2.0-0.symbols new file mode 100644 index 0000000..268f89c --- /dev/null +++ b/debian/libglib2.0-0.symbols @@ -0,0 +1,4381 @@ +libgio-2.0.so.0 libglib2.0-0 #MINVER# +* Build-Depends-Package: libglib2.0-dev + g_action_activate@Base 2.28.0 + g_action_change_state@Base 2.30.0 + g_action_get_enabled@Base 2.28.0 + g_action_get_name@Base 2.28.0 + g_action_get_parameter_type@Base 2.28.0 + g_action_get_state@Base 2.28.0 + g_action_get_state_hint@Base 2.28.0 + g_action_get_state_type@Base 2.28.0 + g_action_get_type@Base 2.28.0 + g_action_group_action_added@Base 2.28.0 + g_action_group_action_enabled_changed@Base 2.28.0 + g_action_group_action_removed@Base 2.28.0 + g_action_group_action_state_changed@Base 2.28.0 + g_action_group_activate_action@Base 2.28.0 + g_action_group_change_action_state@Base 2.28.0 + g_action_group_get_action_enabled@Base 2.28.0 + g_action_group_get_action_parameter_type@Base 2.28.0 + g_action_group_get_action_state@Base 2.28.0 + g_action_group_get_action_state_hint@Base 2.28.0 + g_action_group_get_action_state_type@Base 2.28.0 + g_action_group_get_type@Base 2.28.0 + g_action_group_has_action@Base 2.28.0 + g_action_group_list_actions@Base 2.28.0 + g_action_group_query_action@Base 2.31.8 + g_action_map_add_action@Base 2.31.8 + g_action_map_add_action_entries@Base 2.31.8 + g_action_map_get_type@Base 2.31.8 + g_action_map_lookup_action@Base 2.31.8 + g_action_map_remove_action@Base 2.31.8 + g_action_name_is_valid@Base 2.37.5 + g_action_parse_detailed_name@Base 2.37.0 + g_action_print_detailed_name@Base 2.37.5 + g_app_info_add_supports_type@Base 2.16.0 + g_app_info_can_delete@Base 2.20.0 + g_app_info_can_remove_supports_type@Base 2.16.0 + g_app_info_create_flags_get_type@Base 2.16.0 + g_app_info_create_from_commandline@Base 2.16.0 + g_app_info_delete@Base 2.20.0 + g_app_info_dup@Base 2.16.0 + g_app_info_equal@Base 2.16.0 + g_app_info_get_all@Base 2.16.0 + g_app_info_get_all_for_type@Base 2.16.0 + g_app_info_get_commandline@Base 2.20.0 + g_app_info_get_default_for_type@Base 2.16.0 + g_app_info_get_default_for_uri_scheme@Base 2.16.0 + g_app_info_get_description@Base 2.16.0 + g_app_info_get_display_name@Base 2.24.0 + g_app_info_get_executable@Base 2.16.0 + g_app_info_get_fallback_for_type@Base 2.28.0 + g_app_info_get_icon@Base 2.16.0 + g_app_info_get_id@Base 2.16.0 + g_app_info_get_name@Base 2.16.0 + g_app_info_get_recommended_for_type@Base 2.28.0 + g_app_info_get_supported_types@Base 2.33.14 + g_app_info_get_type@Base 2.16.0 + g_app_info_launch@Base 2.16.0 + g_app_info_launch_default_for_uri@Base 2.16.0 + g_app_info_launch_default_for_uri_async@Base 2.49.5 + g_app_info_launch_default_for_uri_finish@Base 2.49.5 + g_app_info_launch_uris@Base 2.16.0 + g_app_info_launch_uris_async@Base 2.59.2 + g_app_info_launch_uris_finish@Base 2.59.2 + g_app_info_monitor_get@Base 2.39.4 + g_app_info_monitor_get_type@Base 2.39.4 + g_app_info_remove_supports_type@Base 2.16.0 + g_app_info_reset_type_associations@Base 2.20.0 + g_app_info_set_as_default_for_extension@Base 2.16.0 + g_app_info_set_as_default_for_type@Base 2.16.0 + g_app_info_set_as_last_used_for_type@Base 2.28.0 + g_app_info_should_show@Base 2.16.0 + g_app_info_supports_files@Base 2.16.0 + g_app_info_supports_uris@Base 2.16.0 + g_app_launch_context_get_display@Base 2.16.0 + g_app_launch_context_get_environment@Base 2.31.8 + g_app_launch_context_get_startup_notify_id@Base 2.16.0 + g_app_launch_context_get_type@Base 2.16.0 + g_app_launch_context_launch_failed@Base 2.16.0 + g_app_launch_context_new@Base 2.16.0 + g_app_launch_context_setenv@Base 2.31.8 + g_app_launch_context_unsetenv@Base 2.31.8 + g_application_activate@Base 2.28.0 + g_application_add_main_option@Base 2.41.4 + g_application_add_main_option_entries@Base 2.39.90 + g_application_add_option_group@Base 2.39.90 + g_application_bind_busy_property@Base 2.43.90 + g_application_command_line_create_file_for_arg@Base 2.35.8 + g_application_command_line_get_arguments@Base 2.28.0 + g_application_command_line_get_cwd@Base 2.28.0 + g_application_command_line_get_environ@Base 2.28.0 + g_application_command_line_get_exit_status@Base 2.28.0 + g_application_command_line_get_is_remote@Base 2.28.0 + g_application_command_line_get_options_dict@Base 2.39.90 + g_application_command_line_get_platform_data@Base 2.28.0 + g_application_command_line_get_stdin@Base 2.35.8 + g_application_command_line_get_type@Base 2.28.0 + g_application_command_line_getenv@Base 2.28.0 + g_application_command_line_print@Base 2.28.0 + g_application_command_line_printerr@Base 2.28.0 + g_application_command_line_set_exit_status@Base 2.28.0 + g_application_flags_get_type@Base 2.28.0 + g_application_get_application_id@Base 2.28.0 + g_application_get_dbus_connection@Base 2.33.14 + g_application_get_dbus_object_path@Base 2.33.14 + g_application_get_default@Base 2.31.8 + g_application_get_flags@Base 2.28.0 + g_application_get_inactivity_timeout@Base 2.28.0 + g_application_get_is_busy@Base 2.43.91 + g_application_get_is_registered@Base 2.28.0 + g_application_get_is_remote@Base 2.28.0 + g_application_get_resource_base_path@Base 2.41.2 + g_application_get_type@Base 2.28.0 + g_application_hold@Base 2.28.0 + g_application_id_is_valid@Base 2.28.0 + g_application_mark_busy@Base 2.37.0 + g_application_new@Base 2.28.0 + g_application_open@Base 2.28.0 + g_application_quit@Base 2.31.18 + g_application_register@Base 2.28.0 + g_application_release@Base 2.28.0 + g_application_run@Base 2.28.0 + g_application_send_notification@Base 2.39.4 + g_application_set_action_group@Base 2.28.0 + g_application_set_application_id@Base 2.28.0 + g_application_set_default@Base 2.31.8 + g_application_set_flags@Base 2.28.0 + g_application_set_inactivity_timeout@Base 2.28.0 + g_application_set_option_context_description@Base 2.55.1 + g_application_set_option_context_parameter_string@Base 2.55.1 + g_application_set_option_context_summary@Base 2.55.1 + g_application_set_resource_base_path@Base 2.41.2 + g_application_unbind_busy_property@Base 2.43.91 + g_application_unmark_busy@Base 2.37.0 + g_application_withdraw_notification@Base 2.39.4 + g_ask_password_flags_get_type@Base 2.16.0 + g_async_initable_get_type@Base 2.22.0 + g_async_initable_init_async@Base 2.22.0 + g_async_initable_init_finish@Base 2.22.0 + g_async_initable_new_async@Base 2.22.0 + g_async_initable_new_finish@Base 2.22.0 + g_async_initable_new_valist_async@Base 2.22.0 + g_async_initable_newv_async@Base 2.22.0 + g_async_result_get_source_object@Base 2.16.0 + g_async_result_get_type@Base 2.16.0 + g_async_result_get_user_data@Base 2.16.0 + g_async_result_is_tagged@Base 2.33.14 + g_async_result_legacy_propagate_error@Base 2.33.14 + g_buffered_input_stream_fill@Base 2.16.0 + g_buffered_input_stream_fill_async@Base 2.16.0 + g_buffered_input_stream_fill_finish@Base 2.16.0 + g_buffered_input_stream_get_available@Base 2.16.0 + g_buffered_input_stream_get_buffer_size@Base 2.16.0 + g_buffered_input_stream_get_type@Base 2.16.0 + g_buffered_input_stream_new@Base 2.16.0 + g_buffered_input_stream_new_sized@Base 2.16.0 + g_buffered_input_stream_peek@Base 2.16.0 + g_buffered_input_stream_peek_buffer@Base 2.16.0 + g_buffered_input_stream_read_byte@Base 2.16.0 + g_buffered_input_stream_set_buffer_size@Base 2.16.0 + g_buffered_output_stream_get_auto_grow@Base 2.16.0 + g_buffered_output_stream_get_buffer_size@Base 2.16.0 + g_buffered_output_stream_get_type@Base 2.16.0 + g_buffered_output_stream_new@Base 2.16.0 + g_buffered_output_stream_new_sized@Base 2.16.0 + g_buffered_output_stream_set_auto_grow@Base 2.16.0 + g_buffered_output_stream_set_buffer_size@Base 2.16.0 + g_bus_get@Base 2.26.0 + g_bus_get_finish@Base 2.26.0 + g_bus_get_sync@Base 2.26.0 + g_bus_name_owner_flags_get_type@Base 2.26.0 + g_bus_name_watcher_flags_get_type@Base 2.26.0 + g_bus_own_name@Base 2.26.0 + g_bus_own_name_on_connection@Base 2.26.0 + g_bus_own_name_on_connection_with_closures@Base 2.26.0 + g_bus_own_name_with_closures@Base 2.26.0 + g_bus_type_get_type@Base 2.26.0 + g_bus_unown_name@Base 2.26.0 + g_bus_unwatch_name@Base 2.26.0 + g_bus_watch_name@Base 2.26.0 + g_bus_watch_name_on_connection@Base 2.26.0 + g_bus_watch_name_on_connection_with_closures@Base 2.26.0 + g_bus_watch_name_with_closures@Base 2.26.0 + g_bytes_icon_get_bytes@Base 2.37.0 + g_bytes_icon_get_type@Base 2.37.0 + g_bytes_icon_new@Base 2.37.0 + g_cancellable_cancel@Base 2.16.0 + g_cancellable_connect@Base 2.22.0 + g_cancellable_disconnect@Base 2.22.0 + g_cancellable_get_current@Base 2.16.0 + g_cancellable_get_fd@Base 2.16.0 + g_cancellable_get_type@Base 2.16.0 + g_cancellable_is_cancelled@Base 2.16.0 + g_cancellable_make_pollfd@Base 2.22.0 + g_cancellable_new@Base 2.16.0 + g_cancellable_pop_current@Base 2.16.0 + g_cancellable_push_current@Base 2.16.0 + g_cancellable_release_fd@Base 2.22.0 + g_cancellable_reset@Base 2.16.0 + g_cancellable_set_error_if_cancelled@Base 2.16.0 + g_cancellable_source_new@Base 2.28.0 + g_charset_converter_get_num_fallbacks@Base 2.24.0 + g_charset_converter_get_type@Base 2.24.0 + g_charset_converter_get_use_fallback@Base 2.24.0 + g_charset_converter_new@Base 2.24.0 + g_charset_converter_set_use_fallback@Base 2.24.0 + g_content_type_can_be_executable@Base 2.16.0 + g_content_type_equals@Base 2.16.0 + g_content_type_from_mime_type@Base 2.18.0 + g_content_type_get_description@Base 2.16.0 + g_content_type_get_generic_icon_name@Base 2.33.14 + g_content_type_get_icon@Base 2.16.0 + g_content_type_get_mime_dirs@Base 2.59.0 + g_content_type_get_mime_type@Base 2.16.0 + g_content_type_get_symbolic_icon@Base 2.33.14 + g_content_type_guess@Base 2.16.0 + g_content_type_guess_for_tree@Base 2.18.0 + g_content_type_is_a@Base 2.16.0 + g_content_type_is_mime_type@Base 2.51.5 + g_content_type_is_unknown@Base 2.16.0 + g_content_type_set_mime_dirs@Base 2.59.0 + g_content_types_get_registered@Base 2.16.0 + g_converter_convert@Base 2.24.0 + g_converter_flags_get_type@Base 2.24.0 + g_converter_get_type@Base 2.24.0 + g_converter_input_stream_get_converter@Base 2.24.0 + g_converter_input_stream_get_type@Base 2.24.0 + g_converter_input_stream_new@Base 2.24.0 + g_converter_output_stream_get_converter@Base 2.24.0 + g_converter_output_stream_get_type@Base 2.24.0 + g_converter_output_stream_new@Base 2.24.0 + g_converter_reset@Base 2.24.0 + g_converter_result_get_type@Base 2.24.0 + g_credentials_get_native@Base 2.26.0 + g_credentials_get_type@Base 2.26.0 + g_credentials_get_unix_pid@Base 2.35.8 + g_credentials_get_unix_user@Base 2.26.0 + g_credentials_is_same_user@Base 2.26.0 + g_credentials_new@Base 2.26.0 + g_credentials_set_native@Base 2.26.0 + g_credentials_set_unix_user@Base 2.26.0 + g_credentials_to_string@Base 2.26.0 + g_credentials_type_get_type@Base 2.26.0 + g_data_input_stream_get_byte_order@Base 2.16.0 + g_data_input_stream_get_newline_type@Base 2.16.0 + g_data_input_stream_get_type@Base 2.16.0 + g_data_input_stream_new@Base 2.16.0 + g_data_input_stream_read_byte@Base 2.16.0 + g_data_input_stream_read_int16@Base 2.16.0 + g_data_input_stream_read_int32@Base 2.16.0 + g_data_input_stream_read_int64@Base 2.16.0 + g_data_input_stream_read_line@Base 2.16.0 + g_data_input_stream_read_line_async@Base 2.20.0 + g_data_input_stream_read_line_finish@Base 2.20.0 + g_data_input_stream_read_line_finish_utf8@Base 2.30.0 + g_data_input_stream_read_line_utf8@Base 2.30.0 + g_data_input_stream_read_uint16@Base 2.16.0 + g_data_input_stream_read_uint32@Base 2.16.0 + g_data_input_stream_read_uint64@Base 2.16.0 + g_data_input_stream_read_until@Base 2.16.0 + g_data_input_stream_read_until_async@Base 2.20.0 + g_data_input_stream_read_until_finish@Base 2.20.0 + g_data_input_stream_read_upto@Base 2.26.0 + g_data_input_stream_read_upto_async@Base 2.26.0 + g_data_input_stream_read_upto_finish@Base 2.26.0 + g_data_input_stream_set_byte_order@Base 2.16.0 + g_data_input_stream_set_newline_type@Base 2.16.0 + g_data_output_stream_get_byte_order@Base 2.16.0 + g_data_output_stream_get_type@Base 2.16.0 + g_data_output_stream_new@Base 2.16.0 + g_data_output_stream_put_byte@Base 2.16.0 + g_data_output_stream_put_int16@Base 2.16.0 + g_data_output_stream_put_int32@Base 2.16.0 + g_data_output_stream_put_int64@Base 2.16.0 + g_data_output_stream_put_string@Base 2.16.0 + g_data_output_stream_put_uint16@Base 2.16.0 + g_data_output_stream_put_uint32@Base 2.16.0 + g_data_output_stream_put_uint64@Base 2.16.0 + g_data_output_stream_set_byte_order@Base 2.16.0 + g_data_stream_byte_order_get_type@Base 2.16.0 + g_data_stream_newline_type_get_type@Base 2.16.0 + g_datagram_based_condition_check@Base 2.47.1 + g_datagram_based_condition_wait@Base 2.47.1 + g_datagram_based_create_source@Base 2.47.1 + g_datagram_based_get_type@Base 2.47.1 + g_datagram_based_receive_messages@Base 2.47.1 + g_datagram_based_send_messages@Base 2.47.1 + g_dbus_action_group_get@Base 2.31.8 + g_dbus_action_group_get_type@Base 2.31.8 + g_dbus_address_escape_value@Base 2.35.8 + g_dbus_address_get_for_bus_sync@Base 2.26.0 + g_dbus_address_get_stream@Base 2.26.0 + g_dbus_address_get_stream_finish@Base 2.26.0 + g_dbus_address_get_stream_sync@Base 2.26.0 + g_dbus_annotation_info_get_type@Base 2.26.0 + g_dbus_annotation_info_lookup@Base 2.26.0 + g_dbus_annotation_info_ref@Base 2.26.0 + g_dbus_annotation_info_unref@Base 2.26.0 + g_dbus_arg_info_get_type@Base 2.26.0 + g_dbus_arg_info_ref@Base 2.26.0 + g_dbus_arg_info_unref@Base 2.26.0 + g_dbus_auth_observer_allow_mechanism@Base 2.33.14 + g_dbus_auth_observer_authorize_authenticated_peer@Base 2.26.0 + g_dbus_auth_observer_get_type@Base 2.26.0 + g_dbus_auth_observer_new@Base 2.26.0 + g_dbus_call_flags_get_type@Base 2.26.0 + g_dbus_capability_flags_get_type@Base 2.26.0 + g_dbus_connection_add_filter@Base 2.26.0 + g_dbus_connection_call@Base 2.26.0 + g_dbus_connection_call_finish@Base 2.26.0 + g_dbus_connection_call_sync@Base 2.26.0 + g_dbus_connection_call_with_unix_fd_list@Base 2.30.0 + g_dbus_connection_call_with_unix_fd_list_finish@Base 2.30.0 + g_dbus_connection_call_with_unix_fd_list_sync@Base 2.30.0 + g_dbus_connection_close@Base 2.26.0 + g_dbus_connection_close_finish@Base 2.26.0 + g_dbus_connection_close_sync@Base 2.26.0 + g_dbus_connection_emit_signal@Base 2.26.0 + g_dbus_connection_export_action_group@Base 2.31.8 + g_dbus_connection_export_menu_model@Base 2.31.8 + g_dbus_connection_flags_get_type@Base 2.26.0 + g_dbus_connection_flush@Base 2.26.0 + g_dbus_connection_flush_finish@Base 2.26.0 + g_dbus_connection_flush_sync@Base 2.26.0 + g_dbus_connection_get_capabilities@Base 2.26.0 + g_dbus_connection_get_exit_on_close@Base 2.26.0 + g_dbus_connection_get_flags@Base 2.59.0 + g_dbus_connection_get_guid@Base 2.26.0 + g_dbus_connection_get_last_serial@Base 2.33.14 + g_dbus_connection_get_peer_credentials@Base 2.26.0 + g_dbus_connection_get_stream@Base 2.26.0 + g_dbus_connection_get_type@Base 2.26.0 + g_dbus_connection_get_unique_name@Base 2.26.0 + g_dbus_connection_is_closed@Base 2.26.0 + g_dbus_connection_new@Base 2.26.0 + g_dbus_connection_new_finish@Base 2.26.0 + g_dbus_connection_new_for_address@Base 2.26.0 + g_dbus_connection_new_for_address_finish@Base 2.26.0 + g_dbus_connection_new_for_address_sync@Base 2.26.0 + g_dbus_connection_new_sync@Base 2.26.0 + g_dbus_connection_register_object@Base 2.26.0 + g_dbus_connection_register_object_with_closures@Base 2.45.6 + g_dbus_connection_register_subtree@Base 2.26.0 + g_dbus_connection_remove_filter@Base 2.26.0 + g_dbus_connection_send_message@Base 2.26.0 + g_dbus_connection_send_message_with_reply@Base 2.26.0 + g_dbus_connection_send_message_with_reply_finish@Base 2.26.0 + g_dbus_connection_send_message_with_reply_sync@Base 2.26.0 + g_dbus_connection_set_exit_on_close@Base 2.26.0 + g_dbus_connection_signal_subscribe@Base 2.26.0 + g_dbus_connection_signal_unsubscribe@Base 2.26.0 + g_dbus_connection_start_message_processing@Base 2.26.0 + g_dbus_connection_unexport_action_group@Base 2.31.8 + g_dbus_connection_unexport_menu_model@Base 2.31.8 + g_dbus_connection_unregister_object@Base 2.26.0 + g_dbus_connection_unregister_subtree@Base 2.26.0 + g_dbus_error_encode_gerror@Base 2.26.0 + g_dbus_error_get_remote_error@Base 2.26.0 + g_dbus_error_get_type@Base 2.26.0 + g_dbus_error_is_remote_error@Base 2.26.0 + g_dbus_error_new_for_dbus_error@Base 2.26.0 + g_dbus_error_quark@Base 2.26.0 + g_dbus_error_register_error@Base 2.26.0 + g_dbus_error_register_error_domain@Base 2.26.0 + g_dbus_error_set_dbus_error@Base 2.26.0 + g_dbus_error_set_dbus_error_valist@Base 2.26.0 + g_dbus_error_strip_remote_error@Base 2.26.0 + g_dbus_error_unregister_error@Base 2.26.0 + g_dbus_escape_object_path@Base 2.67.3 + g_dbus_escape_object_path_bytestring@Base 2.67.3 + g_dbus_generate_guid@Base 2.26.0 + g_dbus_gvalue_to_gvariant@Base 2.30.0 + g_dbus_gvariant_to_gvalue@Base 2.30.0 + g_dbus_interface_dup_object@Base 2.31.18 + g_dbus_interface_get_info@Base 2.30.0 + g_dbus_interface_get_object@Base 2.30.0 + g_dbus_interface_get_type@Base 2.30.0 + g_dbus_interface_info_cache_build@Base 2.30.0 + g_dbus_interface_info_cache_release@Base 2.30.0 + g_dbus_interface_info_generate_xml@Base 2.26.0 + g_dbus_interface_info_get_type@Base 2.26.0 + g_dbus_interface_info_lookup_method@Base 2.26.0 + g_dbus_interface_info_lookup_property@Base 2.26.0 + g_dbus_interface_info_lookup_signal@Base 2.26.0 + g_dbus_interface_info_ref@Base 2.26.0 + g_dbus_interface_info_unref@Base 2.26.0 + g_dbus_interface_set_object@Base 2.30.0 + g_dbus_interface_skeleton_export@Base 2.30.0 + g_dbus_interface_skeleton_flags_get_type@Base 2.30.0 + g_dbus_interface_skeleton_flush@Base 2.30.0 + g_dbus_interface_skeleton_get_connection@Base 2.30.0 + g_dbus_interface_skeleton_get_connections@Base 2.31.8 + g_dbus_interface_skeleton_get_flags@Base 2.30.0 + g_dbus_interface_skeleton_get_info@Base 2.30.0 + g_dbus_interface_skeleton_get_object_path@Base 2.30.0 + g_dbus_interface_skeleton_get_properties@Base 2.30.0 + g_dbus_interface_skeleton_get_type@Base 2.30.0 + g_dbus_interface_skeleton_get_vtable@Base 2.30.0 + g_dbus_interface_skeleton_has_connection@Base 2.31.8 + g_dbus_interface_skeleton_set_flags@Base 2.30.0 + g_dbus_interface_skeleton_unexport@Base 2.30.0 + g_dbus_interface_skeleton_unexport_from_connection@Base 2.31.8 + g_dbus_is_address@Base 2.26.0 + g_dbus_is_error_name@Base 2.70.0 + g_dbus_is_guid@Base 2.26.0 + g_dbus_is_interface_name@Base 2.26.0 + g_dbus_is_member_name@Base 2.26.0 + g_dbus_is_name@Base 2.26.0 + g_dbus_is_supported_address@Base 2.26.0 + g_dbus_is_unique_name@Base 2.26.0 + g_dbus_menu_model_get@Base 2.31.8 + g_dbus_menu_model_get_type@Base 2.31.8 + g_dbus_message_byte_order_get_type@Base 2.26.0 + g_dbus_message_bytes_needed@Base 2.26.0 + g_dbus_message_copy@Base 2.26.0 + g_dbus_message_flags_get_type@Base 2.26.0 + g_dbus_message_get_arg0@Base 2.26.0 + g_dbus_message_get_body@Base 2.26.0 + g_dbus_message_get_byte_order@Base 2.26.0 + g_dbus_message_get_destination@Base 2.26.0 + g_dbus_message_get_error_name@Base 2.26.0 + g_dbus_message_get_flags@Base 2.26.0 + g_dbus_message_get_header@Base 2.26.0 + g_dbus_message_get_header_fields@Base 2.26.0 + g_dbus_message_get_interface@Base 2.26.0 + g_dbus_message_get_locked@Base 2.26.0 + g_dbus_message_get_member@Base 2.26.0 + g_dbus_message_get_message_type@Base 2.26.0 + g_dbus_message_get_num_unix_fds@Base 2.26.0 + g_dbus_message_get_path@Base 2.26.0 + g_dbus_message_get_reply_serial@Base 2.26.0 + g_dbus_message_get_sender@Base 2.26.0 + g_dbus_message_get_serial@Base 2.26.0 + g_dbus_message_get_signature@Base 2.26.0 + g_dbus_message_get_type@Base 2.26.0 + g_dbus_message_get_unix_fd_list@Base 2.26.0 + g_dbus_message_header_field_get_type@Base 2.26.0 + g_dbus_message_lock@Base 2.26.0 + g_dbus_message_new@Base 2.26.0 + g_dbus_message_new_from_blob@Base 2.26.0 + g_dbus_message_new_method_call@Base 2.26.0 + g_dbus_message_new_method_error@Base 2.26.0 + g_dbus_message_new_method_error_literal@Base 2.26.0 + g_dbus_message_new_method_error_valist@Base 2.26.0 + g_dbus_message_new_method_reply@Base 2.26.0 + g_dbus_message_new_signal@Base 2.26.0 + g_dbus_message_print@Base 2.26.0 + g_dbus_message_set_body@Base 2.26.0 + g_dbus_message_set_byte_order@Base 2.26.0 + g_dbus_message_set_destination@Base 2.26.0 + g_dbus_message_set_error_name@Base 2.26.0 + g_dbus_message_set_flags@Base 2.26.0 + g_dbus_message_set_header@Base 2.26.0 + g_dbus_message_set_interface@Base 2.26.0 + g_dbus_message_set_member@Base 2.26.0 + g_dbus_message_set_message_type@Base 2.26.0 + g_dbus_message_set_num_unix_fds@Base 2.26.0 + g_dbus_message_set_path@Base 2.26.0 + g_dbus_message_set_reply_serial@Base 2.26.0 + g_dbus_message_set_sender@Base 2.26.0 + g_dbus_message_set_serial@Base 2.26.0 + g_dbus_message_set_signature@Base 2.26.0 + g_dbus_message_set_unix_fd_list@Base 2.26.0 + g_dbus_message_to_blob@Base 2.26.0 + g_dbus_message_to_gerror@Base 2.26.0 + g_dbus_message_type_get_type@Base 2.26.0 + g_dbus_method_info_get_type@Base 2.26.0 + g_dbus_method_info_ref@Base 2.26.0 + g_dbus_method_info_unref@Base 2.26.0 + g_dbus_method_invocation_get_connection@Base 2.26.0 + g_dbus_method_invocation_get_interface_name@Base 2.26.0 + g_dbus_method_invocation_get_message@Base 2.26.0 + g_dbus_method_invocation_get_method_info@Base 2.26.0 + g_dbus_method_invocation_get_method_name@Base 2.26.0 + g_dbus_method_invocation_get_object_path@Base 2.26.0 + g_dbus_method_invocation_get_parameters@Base 2.26.0 + g_dbus_method_invocation_get_property_info@Base 2.37.3 + g_dbus_method_invocation_get_sender@Base 2.26.0 + g_dbus_method_invocation_get_type@Base 2.26.0 + g_dbus_method_invocation_get_user_data@Base 2.26.0 + g_dbus_method_invocation_return_dbus_error@Base 2.26.0 + g_dbus_method_invocation_return_error@Base 2.26.0 + g_dbus_method_invocation_return_error_literal@Base 2.26.0 + g_dbus_method_invocation_return_error_valist@Base 2.26.0 + g_dbus_method_invocation_return_gerror@Base 2.26.0 + g_dbus_method_invocation_return_value@Base 2.26.0 + g_dbus_method_invocation_return_value_with_unix_fd_list@Base 2.30.0 + g_dbus_method_invocation_take_error@Base 2.30.0 + g_dbus_node_info_generate_xml@Base 2.26.0 + g_dbus_node_info_get_type@Base 2.26.0 + g_dbus_node_info_lookup_interface@Base 2.26.0 + g_dbus_node_info_new_for_xml@Base 2.26.0 + g_dbus_node_info_ref@Base 2.26.0 + g_dbus_node_info_unref@Base 2.26.0 + g_dbus_object_get_interface@Base 2.30.0 + g_dbus_object_get_interfaces@Base 2.30.0 + g_dbus_object_get_object_path@Base 2.30.0 + g_dbus_object_get_type@Base 2.30.0 + g_dbus_object_manager_client_flags_get_type@Base 2.30.0 + g_dbus_object_manager_client_get_connection@Base 2.30.0 + g_dbus_object_manager_client_get_flags@Base 2.30.0 + g_dbus_object_manager_client_get_name@Base 2.30.0 + g_dbus_object_manager_client_get_name_owner@Base 2.30.0 + g_dbus_object_manager_client_get_type@Base 2.30.0 + g_dbus_object_manager_client_new@Base 2.30.0 + g_dbus_object_manager_client_new_finish@Base 2.30.0 + g_dbus_object_manager_client_new_for_bus@Base 2.30.0 + g_dbus_object_manager_client_new_for_bus_finish@Base 2.30.0 + g_dbus_object_manager_client_new_for_bus_sync@Base 2.30.0 + g_dbus_object_manager_client_new_sync@Base 2.30.0 + g_dbus_object_manager_get_interface@Base 2.30.0 + g_dbus_object_manager_get_object@Base 2.30.0 + g_dbus_object_manager_get_object_path@Base 2.30.0 + g_dbus_object_manager_get_objects@Base 2.30.0 + g_dbus_object_manager_get_type@Base 2.30.0 + g_dbus_object_manager_server_export@Base 2.30.0 + g_dbus_object_manager_server_export_uniquely@Base 2.30.0 + g_dbus_object_manager_server_get_connection@Base 2.30.0 + g_dbus_object_manager_server_get_type@Base 2.30.0 + g_dbus_object_manager_server_is_exported@Base 2.33.14 + g_dbus_object_manager_server_new@Base 2.30.0 + g_dbus_object_manager_server_set_connection@Base 2.30.0 + g_dbus_object_manager_server_unexport@Base 2.30.0 + g_dbus_object_proxy_get_connection@Base 2.30.0 + g_dbus_object_proxy_get_type@Base 2.30.0 + g_dbus_object_proxy_new@Base 2.30.0 + g_dbus_object_skeleton_add_interface@Base 2.30.0 + g_dbus_object_skeleton_flush@Base 2.30.0 + g_dbus_object_skeleton_get_type@Base 2.30.0 + g_dbus_object_skeleton_new@Base 2.30.0 + g_dbus_object_skeleton_remove_interface@Base 2.30.0 + g_dbus_object_skeleton_remove_interface_by_name@Base 2.30.0 + g_dbus_object_skeleton_set_object_path@Base 2.30.0 + g_dbus_property_info_flags_get_type@Base 2.26.0 + g_dbus_property_info_get_type@Base 2.26.0 + g_dbus_property_info_ref@Base 2.26.0 + g_dbus_property_info_unref@Base 2.26.0 + g_dbus_proxy_call@Base 2.26.0 + g_dbus_proxy_call_finish@Base 2.26.0 + g_dbus_proxy_call_sync@Base 2.26.0 + g_dbus_proxy_call_with_unix_fd_list@Base 2.30.0 + g_dbus_proxy_call_with_unix_fd_list_finish@Base 2.30.0 + g_dbus_proxy_call_with_unix_fd_list_sync@Base 2.30.0 + g_dbus_proxy_flags_get_type@Base 2.26.0 + g_dbus_proxy_get_cached_property@Base 2.26.0 + g_dbus_proxy_get_cached_property_names@Base 2.26.0 + g_dbus_proxy_get_connection@Base 2.26.0 + g_dbus_proxy_get_default_timeout@Base 2.26.0 + g_dbus_proxy_get_flags@Base 2.26.0 + g_dbus_proxy_get_interface_info@Base 2.26.0 + g_dbus_proxy_get_interface_name@Base 2.26.0 + g_dbus_proxy_get_name@Base 2.26.0 + g_dbus_proxy_get_name_owner@Base 2.26.0 + g_dbus_proxy_get_object_path@Base 2.26.0 + g_dbus_proxy_get_type@Base 2.26.0 + g_dbus_proxy_new@Base 2.26.0 + g_dbus_proxy_new_finish@Base 2.26.0 + g_dbus_proxy_new_for_bus@Base 2.26.0 + g_dbus_proxy_new_for_bus_finish@Base 2.26.0 + g_dbus_proxy_new_for_bus_sync@Base 2.26.0 + g_dbus_proxy_new_sync@Base 2.26.0 + g_dbus_proxy_set_cached_property@Base 2.26.0 + g_dbus_proxy_set_default_timeout@Base 2.26.0 + g_dbus_proxy_set_interface_info@Base 2.26.0 + g_dbus_send_message_flags_get_type@Base 2.26.0 + g_dbus_server_flags_get_type@Base 2.26.0 + g_dbus_server_get_client_address@Base 2.26.0 + g_dbus_server_get_flags@Base 2.26.0 + g_dbus_server_get_guid@Base 2.26.0 + g_dbus_server_get_type@Base 2.26.0 + g_dbus_server_is_active@Base 2.26.0 + g_dbus_server_new_sync@Base 2.68.0 + g_dbus_server_start@Base 2.26.0 + g_dbus_server_stop@Base 2.26.0 + g_dbus_signal_flags_get_type@Base 2.26.0 + g_dbus_signal_info_get_type@Base 2.26.0 + g_dbus_signal_info_ref@Base 2.26.0 + g_dbus_signal_info_unref@Base 2.26.0 + g_dbus_subtree_flags_get_type@Base 2.26.0 + g_dbus_unescape_object_path@Base 2.67.3 + g_debug_controller_dbus_get_type@Base 2.71.1 + g_debug_controller_dbus_new@Base 2.71.1 + g_debug_controller_dbus_stop@Base 2.71.2 + g_debug_controller_get_debug_enabled@Base 2.71.1 + g_debug_controller_get_type@Base 2.71.1 + g_debug_controller_set_debug_enabled@Base 2.71.1 + g_desktop_app_info_get_action_name@Base 2.37.5 + g_desktop_app_info_get_boolean@Base 2.35.8 + g_desktop_app_info_get_categories@Base 2.30.0 + g_desktop_app_info_get_filename@Base 2.24.0 + g_desktop_app_info_get_generic_name@Base 2.30.0 + g_desktop_app_info_get_implementations@Base 2.41.0 + g_desktop_app_info_get_is_hidden@Base 2.16.0 + g_desktop_app_info_get_keywords@Base 2.31.8 + g_desktop_app_info_get_locale_string@Base 2.55.1 + g_desktop_app_info_get_nodisplay@Base 2.30.0 + g_desktop_app_info_get_show_in@Base 2.30.0 + g_desktop_app_info_get_startup_wm_class@Base 2.33.14 + g_desktop_app_info_get_string@Base 2.35.8 + g_desktop_app_info_get_string_list@Base 2.59.0 + g_desktop_app_info_get_type@Base 2.16.0 + g_desktop_app_info_has_key@Base 2.35.8 + g_desktop_app_info_launch_action@Base 2.37.5 + g_desktop_app_info_launch_uris_as_manager@Base 2.28.0 + g_desktop_app_info_launch_uris_as_manager_with_fds@Base 2.57.2 + g_desktop_app_info_list_actions@Base 2.37.5 + g_desktop_app_info_lookup_get_default_for_uri_scheme@Base 2.28.0 + g_desktop_app_info_lookup_get_type@Base 2.28.0 + g_desktop_app_info_new@Base 2.16.0 + g_desktop_app_info_new_from_filename@Base 2.16.0 + g_desktop_app_info_new_from_keyfile@Base 2.18.0 + g_desktop_app_info_search@Base 2.39.4 + g_desktop_app_info_set_desktop_env@Base 2.16.0 + g_drive_can_eject@Base 2.16.0 + g_drive_can_poll_for_media@Base 2.16.0 + g_drive_can_start@Base 2.22.0 + g_drive_can_start_degraded@Base 2.22.0 + g_drive_can_stop@Base 2.22.0 + g_drive_eject@Base 2.16.0 + g_drive_eject_finish@Base 2.16.0 + g_drive_eject_with_operation@Base 2.22.0 + g_drive_eject_with_operation_finish@Base 2.22.0 + g_drive_enumerate_identifiers@Base 2.16.0 + g_drive_get_icon@Base 2.16.0 + g_drive_get_identifier@Base 2.16.0 + g_drive_get_name@Base 2.16.0 + g_drive_get_sort_key@Base 2.31.8 + g_drive_get_start_stop_type@Base 2.22.0 + g_drive_get_symbolic_icon@Base 2.33.14 + g_drive_get_type@Base 2.16.0 + g_drive_get_volumes@Base 2.16.0 + g_drive_has_media@Base 2.16.0 + g_drive_has_volumes@Base 2.16.0 + g_drive_is_media_check_automatic@Base 2.16.0 + g_drive_is_media_removable@Base 2.16.0 + g_drive_is_removable@Base 2.49.2 + g_drive_poll_for_media@Base 2.16.0 + g_drive_poll_for_media_finish@Base 2.16.0 + g_drive_start@Base 2.22.0 + g_drive_start_finish@Base 2.22.0 + g_drive_start_flags_get_type@Base 2.22.0 + g_drive_start_stop_type_get_type@Base 2.22.0 + g_drive_stop@Base 2.22.0 + g_drive_stop_finish@Base 2.22.0 + g_dtls_client_connection_get_accepted_cas@Base 2.47.5 + g_dtls_client_connection_get_server_identity@Base 2.47.5 + g_dtls_client_connection_get_type@Base 2.47.5 + g_dtls_client_connection_get_validation_flags@Base 2.47.5 + g_dtls_client_connection_new@Base 2.47.5 + g_dtls_client_connection_set_server_identity@Base 2.47.5 + g_dtls_client_connection_set_validation_flags@Base 2.47.5 + g_dtls_connection_close@Base 2.47.5 + g_dtls_connection_close_async@Base 2.47.5 + g_dtls_connection_close_finish@Base 2.47.5 + g_dtls_connection_emit_accept_certificate@Base 2.47.5 + g_dtls_connection_get_certificate@Base 2.47.5 + g_dtls_connection_get_channel_binding_data@Base 2.65.1 + g_dtls_connection_get_ciphersuite_name@Base 2.70.0 + g_dtls_connection_get_database@Base 2.47.5 + g_dtls_connection_get_interaction@Base 2.47.5 + g_dtls_connection_get_negotiated_protocol@Base 2.59.0 + g_dtls_connection_get_peer_certificate@Base 2.47.5 + g_dtls_connection_get_peer_certificate_errors@Base 2.47.5 + g_dtls_connection_get_protocol_version@Base 2.70.0 + g_dtls_connection_get_rehandshake_mode@Base 2.47.5 + g_dtls_connection_get_require_close_notify@Base 2.47.5 + g_dtls_connection_get_type@Base 2.47.5 + g_dtls_connection_handshake@Base 2.47.5 + g_dtls_connection_handshake_async@Base 2.47.5 + g_dtls_connection_handshake_finish@Base 2.47.5 + g_dtls_connection_set_advertised_protocols@Base 2.59.0 + g_dtls_connection_set_certificate@Base 2.47.5 + g_dtls_connection_set_database@Base 2.47.5 + g_dtls_connection_set_interaction@Base 2.47.5 + g_dtls_connection_set_rehandshake_mode@Base 2.47.5 + g_dtls_connection_set_require_close_notify@Base 2.47.5 + g_dtls_connection_shutdown@Base 2.47.5 + g_dtls_connection_shutdown_async@Base 2.47.5 + g_dtls_connection_shutdown_finish@Base 2.47.5 + g_dtls_server_connection_get_type@Base 2.47.5 + g_dtls_server_connection_new@Base 2.47.5 + g_emblem_get_icon@Base 2.18.0 + g_emblem_get_origin@Base 2.18.0 + g_emblem_get_type@Base 2.18.0 + g_emblem_new@Base 2.18.0 + g_emblem_new_with_origin@Base 2.18.0 + g_emblem_origin_get_type@Base 2.18.0 + g_emblemed_icon_add_emblem@Base 2.18.0 + g_emblemed_icon_clear_emblems@Base 2.28.0 + g_emblemed_icon_get_emblems@Base 2.18.0 + g_emblemed_icon_get_icon@Base 2.18.0 + g_emblemed_icon_get_type@Base 2.18.0 + g_emblemed_icon_new@Base 2.18.0 + g_file_append_to@Base 2.16.0 + g_file_append_to_async@Base 2.16.0 + g_file_append_to_finish@Base 2.16.0 + g_file_attribute_info_flags_get_type@Base 2.16.0 + g_file_attribute_info_list_add@Base 2.16.0 + g_file_attribute_info_list_dup@Base 2.16.0 + g_file_attribute_info_list_get_type@Base 2.20.0 + g_file_attribute_info_list_lookup@Base 2.16.0 + g_file_attribute_info_list_new@Base 2.16.0 + g_file_attribute_info_list_ref@Base 2.16.0 + g_file_attribute_info_list_unref@Base 2.16.0 + g_file_attribute_matcher_enumerate_namespace@Base 2.16.0 + g_file_attribute_matcher_enumerate_next@Base 2.16.0 + g_file_attribute_matcher_get_type@Base 2.26.0 + g_file_attribute_matcher_matches@Base 2.16.0 + g_file_attribute_matcher_matches_only@Base 2.16.0 + g_file_attribute_matcher_new@Base 2.16.0 + g_file_attribute_matcher_ref@Base 2.16.0 + g_file_attribute_matcher_subtract@Base 2.31.8 + g_file_attribute_matcher_to_string@Base 2.31.8 + g_file_attribute_matcher_unref@Base 2.16.0 + g_file_attribute_status_get_type@Base 2.16.0 + g_file_attribute_type_get_type@Base 2.16.0 + g_file_build_attribute_list_for_copy@Base 2.67.1 + g_file_copy@Base 2.16.0 + g_file_copy_async@Base 2.16.0 + g_file_copy_attributes@Base 2.16.0 + g_file_copy_finish@Base 2.16.0 + g_file_copy_flags_get_type@Base 2.16.0 + g_file_create@Base 2.16.0 + g_file_create_async@Base 2.16.0 + g_file_create_finish@Base 2.16.0 + g_file_create_flags_get_type@Base 2.16.0 + g_file_create_readwrite@Base 2.22.0 + g_file_create_readwrite_async@Base 2.22.0 + g_file_create_readwrite_finish@Base 2.22.0 + g_file_delete@Base 2.16.0 + g_file_delete_async@Base 2.33.14 + g_file_delete_finish@Base 2.33.14 + g_file_descriptor_based_get_fd@Base 2.24.0 + g_file_descriptor_based_get_type@Base 2.24.0 + g_file_dup@Base 2.16.0 + g_file_eject_mountable@Base 2.16.0 + g_file_eject_mountable_finish@Base 2.16.0 + g_file_eject_mountable_with_operation@Base 2.22.0 + g_file_eject_mountable_with_operation_finish@Base 2.22.0 + g_file_enumerate_children@Base 2.16.0 + g_file_enumerate_children_async@Base 2.16.0 + g_file_enumerate_children_finish@Base 2.16.0 + g_file_enumerator_close@Base 2.16.0 + g_file_enumerator_close_async@Base 2.16.0 + g_file_enumerator_close_finish@Base 2.16.0 + g_file_enumerator_get_child@Base 2.35.8 + g_file_enumerator_get_container@Base 2.18.0 + g_file_enumerator_get_type@Base 2.16.0 + g_file_enumerator_has_pending@Base 2.16.0 + g_file_enumerator_is_closed@Base 2.16.0 + g_file_enumerator_iterate@Base 2.43.91 + g_file_enumerator_next_file@Base 2.16.0 + g_file_enumerator_next_files_async@Base 2.16.0 + g_file_enumerator_next_files_finish@Base 2.16.0 + g_file_enumerator_set_pending@Base 2.16.0 + g_file_equal@Base 2.16.0 + g_file_find_enclosing_mount@Base 2.16.0 + g_file_find_enclosing_mount_async@Base 2.16.0 + g_file_find_enclosing_mount_finish@Base 2.16.0 + g_file_get_basename@Base 2.16.0 + g_file_get_child@Base 2.16.0 + g_file_get_child_for_display_name@Base 2.16.0 + g_file_get_parent@Base 2.16.0 + g_file_get_parse_name@Base 2.16.0 + g_file_get_path@Base 2.16.0 + g_file_get_relative_path@Base 2.16.0 + g_file_get_type@Base 2.16.0 + g_file_get_uri@Base 2.16.0 + g_file_get_uri_scheme@Base 2.16.0 + g_file_has_parent@Base 2.24.0 + g_file_has_prefix@Base 2.16.0 + g_file_has_uri_scheme@Base 2.16.0 + g_file_hash@Base 2.16.0 + g_file_icon_get_file@Base 2.16.0 + g_file_icon_get_type@Base 2.16.0 + g_file_icon_new@Base 2.16.0 + g_file_info_clear_status@Base 2.16.0 + g_file_info_copy_into@Base 2.16.0 + g_file_info_dup@Base 2.16.0 + g_file_info_get_access_date_time@Base 2.70.0 + g_file_info_get_attribute_as_string@Base 2.16.0 + g_file_info_get_attribute_boolean@Base 2.16.0 + g_file_info_get_attribute_byte_string@Base 2.16.0 + g_file_info_get_attribute_data@Base 2.16.0 + g_file_info_get_attribute_int32@Base 2.16.0 + g_file_info_get_attribute_int64@Base 2.16.0 + g_file_info_get_attribute_object@Base 2.16.0 + g_file_info_get_attribute_status@Base 2.16.0 + g_file_info_get_attribute_string@Base 2.16.0 + g_file_info_get_attribute_stringv@Base 2.22.0 + g_file_info_get_attribute_type@Base 2.16.0 + g_file_info_get_attribute_uint32@Base 2.16.0 + g_file_info_get_attribute_uint64@Base 2.16.0 + g_file_info_get_content_type@Base 2.16.0 + g_file_info_get_creation_date_time@Base 2.70.0 + g_file_info_get_deletion_date@Base 2.35.8 + g_file_info_get_display_name@Base 2.16.0 + g_file_info_get_edit_name@Base 2.16.0 + g_file_info_get_etag@Base 2.16.0 + g_file_info_get_file_type@Base 2.16.0 + g_file_info_get_icon@Base 2.16.0 + g_file_info_get_is_backup@Base 2.16.0 + g_file_info_get_is_hidden@Base 2.16.0 + g_file_info_get_is_symlink@Base 2.16.0 + g_file_info_get_modification_date_time@Base 2.61.2 + g_file_info_get_modification_time@Base 2.16.0 + g_file_info_get_name@Base 2.16.0 + g_file_info_get_size@Base 2.16.0 + g_file_info_get_sort_order@Base 2.16.0 + g_file_info_get_symbolic_icon@Base 2.33.14 + g_file_info_get_symlink_target@Base 2.16.0 + g_file_info_get_type@Base 2.16.0 + g_file_info_has_attribute@Base 2.16.0 + g_file_info_has_namespace@Base 2.22.0 + g_file_info_list_attributes@Base 2.16.0 + g_file_info_new@Base 2.16.0 + g_file_info_remove_attribute@Base 2.16.0 + g_file_info_set_access_date_time@Base 2.70.0 + g_file_info_set_attribute@Base 2.16.0 + g_file_info_set_attribute_boolean@Base 2.16.0 + g_file_info_set_attribute_byte_string@Base 2.16.0 + g_file_info_set_attribute_int32@Base 2.16.0 + g_file_info_set_attribute_int64@Base 2.16.0 + g_file_info_set_attribute_mask@Base 2.16.0 + g_file_info_set_attribute_object@Base 2.16.0 + g_file_info_set_attribute_status@Base 2.22.0 + g_file_info_set_attribute_string@Base 2.16.0 + g_file_info_set_attribute_stringv@Base 2.22.0 + g_file_info_set_attribute_uint32@Base 2.16.0 + g_file_info_set_attribute_uint64@Base 2.16.0 + g_file_info_set_content_type@Base 2.16.0 + g_file_info_set_creation_date_time@Base 2.70.0 + g_file_info_set_display_name@Base 2.16.0 + g_file_info_set_edit_name@Base 2.16.0 + g_file_info_set_file_type@Base 2.16.0 + g_file_info_set_icon@Base 2.16.0 + g_file_info_set_is_hidden@Base 2.16.0 + g_file_info_set_is_symlink@Base 2.16.0 + g_file_info_set_modification_date_time@Base 2.61.2 + g_file_info_set_modification_time@Base 2.16.0 + g_file_info_set_name@Base 2.16.0 + g_file_info_set_size@Base 2.16.0 + g_file_info_set_sort_order@Base 2.16.0 + g_file_info_set_symbolic_icon@Base 2.33.14 + g_file_info_set_symlink_target@Base 2.16.0 + g_file_info_unset_attribute_mask@Base 2.16.0 + g_file_input_stream_get_type@Base 2.16.0 + g_file_input_stream_query_info@Base 2.16.0 + g_file_input_stream_query_info_async@Base 2.16.0 + g_file_input_stream_query_info_finish@Base 2.16.0 + g_file_io_stream_get_etag@Base 2.22.0 + g_file_io_stream_get_type@Base 2.22.0 + g_file_io_stream_query_info@Base 2.22.0 + g_file_io_stream_query_info_async@Base 2.22.0 + g_file_io_stream_query_info_finish@Base 2.22.0 + g_file_is_native@Base 2.16.0 + g_file_load_bytes@Base 2.55.1 + g_file_load_bytes_async@Base 2.55.1 + g_file_load_bytes_finish@Base 2.55.1 + g_file_load_contents@Base 2.16.0 + g_file_load_contents_async@Base 2.16.0 + g_file_load_contents_finish@Base 2.16.0 + g_file_load_partial_contents_async@Base 2.16.0 + g_file_load_partial_contents_finish@Base 2.16.0 + g_file_make_directory@Base 2.16.0 + g_file_make_directory_async@Base 2.37.0 + g_file_make_directory_finish@Base 2.37.0 + g_file_make_directory_with_parents@Base 2.18.0 + g_file_make_symbolic_link@Base 2.16.0 + g_file_measure_disk_usage@Base 2.37.93 + g_file_measure_disk_usage_async@Base 2.37.93 + g_file_measure_disk_usage_finish@Base 2.37.93 + g_file_measure_flags_get_type@Base 2.37.93 + g_file_monitor@Base 2.18.0 + g_file_monitor_cancel@Base 2.16.0 + g_file_monitor_directory@Base 2.16.0 + g_file_monitor_emit_event@Base 2.16.0 + g_file_monitor_event_get_type@Base 2.16.0 + g_file_monitor_file@Base 2.16.0 + g_file_monitor_flags_get_type@Base 2.16.0 + g_file_monitor_get_type@Base 2.16.0 + g_file_monitor_is_cancelled@Base 2.16.0 + g_file_monitor_set_rate_limit@Base 2.16.0 + g_file_monitor_source_handle_event@Base 2.45.1 + g_file_mount_enclosing_volume@Base 2.16.0 + g_file_mount_enclosing_volume_finish@Base 2.16.0 + g_file_mount_mountable@Base 2.16.0 + g_file_mount_mountable_finish@Base 2.16.0 + g_file_move@Base 2.16.0 + g_file_move_async@Base 2.71.2 + g_file_move_finish@Base 2.71.2 + g_file_new_build_filename@Base 2.55.1 + g_file_new_for_commandline_arg@Base 2.16.0 + g_file_new_for_commandline_arg_and_cwd@Base 2.35.8 + g_file_new_for_path@Base 2.16.0 + g_file_new_for_uri@Base 2.16.0 + g_file_new_tmp@Base 2.31.8 + g_file_open_readwrite@Base 2.22.0 + g_file_open_readwrite_async@Base 2.22.0 + g_file_open_readwrite_finish@Base 2.22.0 + g_file_output_stream_get_etag@Base 2.16.0 + g_file_output_stream_get_type@Base 2.16.0 + g_file_output_stream_query_info@Base 2.16.0 + g_file_output_stream_query_info_async@Base 2.16.0 + g_file_output_stream_query_info_finish@Base 2.16.0 + g_file_parse_name@Base 2.16.0 + g_file_peek_path@Base 2.55.2 + g_file_poll_mountable@Base 2.22.0 + g_file_poll_mountable_finish@Base 2.22.0 + g_file_query_default_handler@Base 2.16.0 + g_file_query_default_handler_async@Base 2.59.2 + g_file_query_default_handler_finish@Base 2.59.2 + g_file_query_exists@Base 2.16.0 + g_file_query_file_type@Base 2.18.0 + g_file_query_filesystem_info@Base 2.16.0 + g_file_query_filesystem_info_async@Base 2.16.0 + g_file_query_filesystem_info_finish@Base 2.16.0 + g_file_query_info@Base 2.16.0 + g_file_query_info_async@Base 2.16.0 + g_file_query_info_finish@Base 2.16.0 + g_file_query_info_flags_get_type@Base 2.16.0 + g_file_query_settable_attributes@Base 2.16.0 + g_file_query_writable_namespaces@Base 2.16.0 + g_file_read@Base 2.16.0 + g_file_read_async@Base 2.16.0 + g_file_read_finish@Base 2.16.0 + g_file_replace@Base 2.16.0 + g_file_replace_async@Base 2.16.0 + g_file_replace_contents@Base 2.16.0 + g_file_replace_contents_async@Base 2.16.0 + g_file_replace_contents_bytes_async@Base 2.39.4 + g_file_replace_contents_finish@Base 2.16.0 + g_file_replace_finish@Base 2.16.0 + g_file_replace_readwrite@Base 2.22.0 + g_file_replace_readwrite_async@Base 2.22.0 + g_file_replace_readwrite_finish@Base 2.22.0 + g_file_resolve_relative_path@Base 2.16.0 + g_file_set_attribute@Base 2.16.0 + g_file_set_attribute_byte_string@Base 2.16.0 + g_file_set_attribute_int32@Base 2.16.0 + g_file_set_attribute_int64@Base 2.16.0 + g_file_set_attribute_string@Base 2.16.0 + g_file_set_attribute_uint32@Base 2.16.0 + g_file_set_attribute_uint64@Base 2.16.0 + g_file_set_attributes_async@Base 2.16.0 + g_file_set_attributes_finish@Base 2.16.0 + g_file_set_attributes_from_info@Base 2.16.0 + g_file_set_display_name@Base 2.16.0 + g_file_set_display_name_async@Base 2.16.0 + g_file_set_display_name_finish@Base 2.16.0 + g_file_start_mountable@Base 2.22.0 + g_file_start_mountable_finish@Base 2.22.0 + g_file_stop_mountable@Base 2.22.0 + g_file_stop_mountable_finish@Base 2.22.0 + g_file_supports_thread_contexts@Base 2.22.0 + g_file_trash@Base 2.16.0 + g_file_trash_async@Base 2.37.0 + g_file_trash_finish@Base 2.37.0 + g_file_type_get_type@Base 2.16.0 + g_file_unmount_mountable@Base 2.16.0 + g_file_unmount_mountable_finish@Base 2.16.0 + g_file_unmount_mountable_with_operation@Base 2.22.0 + g_file_unmount_mountable_with_operation_finish@Base 2.22.0 + g_filename_completer_get_completion_suffix@Base 2.16.0 + g_filename_completer_get_completions@Base 2.16.0 + g_filename_completer_get_type@Base 2.16.0 + g_filename_completer_new@Base 2.16.0 + g_filename_completer_set_dirs_only@Base 2.16.0 + g_filesystem_preview_type_get_type@Base 2.16.0 + g_filter_input_stream_get_base_stream@Base 2.16.0 + g_filter_input_stream_get_close_base_stream@Base 2.20.0 + g_filter_input_stream_get_type@Base 2.16.0 + g_filter_input_stream_set_close_base_stream@Base 2.20.0 + g_filter_output_stream_get_base_stream@Base 2.16.0 + g_filter_output_stream_get_close_base_stream@Base 2.20.0 + g_filter_output_stream_get_type@Base 2.16.0 + g_filter_output_stream_set_close_base_stream@Base 2.20.0 + g_icon_deserialize@Base 2.37.0 + g_icon_equal@Base 2.16.0 + g_icon_get_type@Base 2.16.0 + g_icon_hash@Base 2.16.0 + g_icon_new_for_string@Base 2.20.0 + g_icon_serialize@Base 2.37.0 + g_icon_to_string@Base 2.20.0 + g_inet_address_equal@Base 2.30.0 + g_inet_address_get_family@Base 2.22.0 + g_inet_address_get_is_any@Base 2.22.0 + g_inet_address_get_is_link_local@Base 2.22.0 + g_inet_address_get_is_loopback@Base 2.22.0 + g_inet_address_get_is_mc_global@Base 2.22.0 + g_inet_address_get_is_mc_link_local@Base 2.22.0 + g_inet_address_get_is_mc_node_local@Base 2.22.0 + g_inet_address_get_is_mc_org_local@Base 2.22.0 + g_inet_address_get_is_mc_site_local@Base 2.22.0 + g_inet_address_get_is_multicast@Base 2.22.0 + g_inet_address_get_is_site_local@Base 2.22.0 + g_inet_address_get_native_size@Base 2.22.0 + g_inet_address_get_type@Base 2.22.0 + g_inet_address_mask_equal@Base 2.31.8 + g_inet_address_mask_get_address@Base 2.31.8 + g_inet_address_mask_get_family@Base 2.31.8 + g_inet_address_mask_get_length@Base 2.31.8 + g_inet_address_mask_get_type@Base 2.31.8 + g_inet_address_mask_matches@Base 2.31.8 + g_inet_address_mask_new@Base 2.31.8 + g_inet_address_mask_new_from_string@Base 2.31.8 + g_inet_address_mask_to_string@Base 2.31.8 + g_inet_address_new_any@Base 2.22.0 + g_inet_address_new_from_bytes@Base 2.22.0 + g_inet_address_new_from_string@Base 2.22.0 + g_inet_address_new_loopback@Base 2.22.0 + g_inet_address_to_bytes@Base 2.22.0 + g_inet_address_to_string@Base 2.22.0 + g_inet_socket_address_get_address@Base 2.22.0 + g_inet_socket_address_get_flowinfo@Base 2.31.18 + g_inet_socket_address_get_port@Base 2.22.0 + g_inet_socket_address_get_scope_id@Base 2.31.18 + g_inet_socket_address_get_type@Base 2.22.0 + g_inet_socket_address_new@Base 2.22.0 + g_inet_socket_address_new_from_string@Base 2.39.90 + g_initable_get_type@Base 2.22.0 + g_initable_init@Base 2.22.0 + g_initable_new@Base 2.22.0 + g_initable_new_valist@Base 2.22.0 + g_initable_newv@Base 2.22.0 + g_input_stream_clear_pending@Base 2.16.0 + g_input_stream_close@Base 2.16.0 + g_input_stream_close_async@Base 2.16.0 + g_input_stream_close_finish@Base 2.16.0 + g_input_stream_get_type@Base 2.16.0 + g_input_stream_has_pending@Base 2.16.0 + g_input_stream_is_closed@Base 2.16.0 + g_input_stream_read@Base 2.16.0 + g_input_stream_read_all@Base 2.16.0 + g_input_stream_read_all_async@Base 2.43.1 + g_input_stream_read_all_finish@Base 2.43.1 + g_input_stream_read_async@Base 2.16.0 + g_input_stream_read_bytes@Base 2.33.14 + g_input_stream_read_bytes_async@Base 2.33.14 + g_input_stream_read_bytes_finish@Base 2.33.14 + g_input_stream_read_finish@Base 2.16.0 + g_input_stream_set_pending@Base 2.16.0 + g_input_stream_skip@Base 2.16.0 + g_input_stream_skip_async@Base 2.16.0 + g_input_stream_skip_finish@Base 2.16.0 + g_io_error_enum_get_type@Base 2.16.0 + g_io_error_from_errno@Base 2.16.0 + g_io_error_quark@Base 2.16.0 + g_io_extension_get_name@Base 2.16.0 + g_io_extension_get_priority@Base 2.16.0 + g_io_extension_get_type@Base 2.16.0 + g_io_extension_point_get_extension_by_name@Base 2.16.0 + g_io_extension_point_get_extensions@Base 2.16.0 + g_io_extension_point_get_required_type@Base 2.16.0 + g_io_extension_point_implement@Base 2.16.0 + g_io_extension_point_lookup@Base 2.16.0 + g_io_extension_point_register@Base 2.16.0 + g_io_extension_point_set_required_type@Base 2.16.0 + g_io_extension_ref_class@Base 2.16.0 + g_io_module_get_type@Base 2.16.0 + g_io_module_new@Base 2.16.0 + g_io_module_scope_block@Base 2.30.0 + g_io_module_scope_flags_get_type@Base 2.30.0 + g_io_module_scope_free@Base 2.30.0 + g_io_module_scope_new@Base 2.30.0 + g_io_modules_load_all_in_directory@Base 2.16.0 + g_io_modules_load_all_in_directory_with_scope@Base 2.30.0 + g_io_modules_scan_all_in_directory@Base 2.24.0 + g_io_modules_scan_all_in_directory_with_scope@Base 2.30.0 + g_io_scheduler_cancel_all_jobs@Base 2.16.0 + g_io_scheduler_job_send_to_mainloop@Base 2.16.0 + g_io_scheduler_job_send_to_mainloop_async@Base 2.16.0 + g_io_scheduler_push_job@Base 2.16.0 + g_io_stream_clear_pending@Base 2.22.0 + g_io_stream_close@Base 2.22.0 + g_io_stream_close_async@Base 2.22.0 + g_io_stream_close_finish@Base 2.22.0 + g_io_stream_get_input_stream@Base 2.22.0 + g_io_stream_get_output_stream@Base 2.22.0 + g_io_stream_get_type@Base 2.22.0 + g_io_stream_has_pending@Base 2.22.0 + g_io_stream_is_closed@Base 2.22.0 + g_io_stream_set_pending@Base 2.22.0 + g_io_stream_splice_async@Base 2.28.0 + g_io_stream_splice_finish@Base 2.28.0 + g_io_stream_splice_flags_get_type@Base 2.28.0 + g_keyfile_settings_backend_new@Base 2.26.0 + g_list_model_get_item@Base 2.43.4 + g_list_model_get_item_type@Base 2.43.4 + g_list_model_get_n_items@Base 2.43.4 + g_list_model_get_object@Base 2.43.4 + g_list_model_get_type@Base 2.43.4 + g_list_model_items_changed@Base 2.43.4 + g_list_store_append@Base 2.43.4 + g_list_store_find@Base 2.63.3 + g_list_store_find_with_equal_func@Base 2.63.3 + g_list_store_get_type@Base 2.43.4 + g_list_store_insert@Base 2.43.4 + g_list_store_insert_sorted@Base 2.43.4 + g_list_store_new@Base 2.43.4 + g_list_store_remove@Base 2.43.4 + g_list_store_remove_all@Base 2.43.4 + g_list_store_sort@Base 2.45.7 + g_list_store_splice@Base 2.43.4 + g_loadable_icon_get_type@Base 2.16.0 + g_loadable_icon_load@Base 2.16.0 + g_loadable_icon_load_async@Base 2.16.0 + g_loadable_icon_load_finish@Base 2.16.0 + g_local_file_monitor_get_type@Base 2.16.0 + g_memory_input_stream_add_bytes@Base 2.33.14 + g_memory_input_stream_add_data@Base 2.16.0 + g_memory_input_stream_get_type@Base 2.16.0 + g_memory_input_stream_new@Base 2.16.0 + g_memory_input_stream_new_from_bytes@Base 2.33.14 + g_memory_input_stream_new_from_data@Base 2.16.0 + g_memory_monitor_dup_default@Base 2.63.3 + g_memory_monitor_get_type@Base 2.63.3 + g_memory_monitor_warning_level_get_type@Base 2.63.3 + g_memory_output_stream_get_data@Base 2.16.0 + g_memory_output_stream_get_data_size@Base 2.18.0 + g_memory_output_stream_get_size@Base 2.16.0 + g_memory_output_stream_get_type@Base 2.16.0 + g_memory_output_stream_new@Base 2.16.0 + g_memory_output_stream_new_resizable@Base 2.35.8 + g_memory_output_stream_steal_as_bytes@Base 2.33.14 + g_memory_output_stream_steal_data@Base 2.26.0 + g_memory_settings_backend_new@Base 2.28.0 + g_menu_append@Base 2.31.8 + g_menu_append_item@Base 2.31.8 + g_menu_append_section@Base 2.31.8 + g_menu_append_submenu@Base 2.31.8 + g_menu_attribute_iter_get_name@Base 2.31.8 + g_menu_attribute_iter_get_next@Base 2.31.8 + g_menu_attribute_iter_get_type@Base 2.31.8 + g_menu_attribute_iter_get_value@Base 2.31.8 + g_menu_attribute_iter_next@Base 2.31.8 + g_menu_freeze@Base 2.31.8 + g_menu_get_type@Base 2.31.8 + g_menu_insert@Base 2.31.8 + g_menu_insert_item@Base 2.31.8 + g_menu_insert_section@Base 2.31.8 + g_menu_insert_submenu@Base 2.31.8 + g_menu_item_get_attribute@Base 2.33.14 + g_menu_item_get_attribute_value@Base 2.33.14 + g_menu_item_get_link@Base 2.33.14 + g_menu_item_get_type@Base 2.31.8 + g_menu_item_new@Base 2.31.8 + g_menu_item_new_from_model@Base 2.33.14 + g_menu_item_new_section@Base 2.31.8 + g_menu_item_new_submenu@Base 2.31.8 + g_menu_item_set_action_and_target@Base 2.31.8 + g_menu_item_set_action_and_target_value@Base 2.31.8 + g_menu_item_set_attribute@Base 2.31.8 + g_menu_item_set_attribute_value@Base 2.31.8 + g_menu_item_set_detailed_action@Base 2.31.8 + g_menu_item_set_icon@Base 2.37.0 + g_menu_item_set_label@Base 2.31.8 + g_menu_item_set_link@Base 2.31.8 + g_menu_item_set_section@Base 2.31.8 + g_menu_item_set_submenu@Base 2.31.8 + g_menu_link_iter_get_name@Base 2.31.8 + g_menu_link_iter_get_next@Base 2.31.8 + g_menu_link_iter_get_type@Base 2.31.8 + g_menu_link_iter_get_value@Base 2.31.8 + g_menu_link_iter_next@Base 2.31.8 + g_menu_model_get_item_attribute@Base 2.31.8 + g_menu_model_get_item_attribute_value@Base 2.31.8 + g_menu_model_get_item_link@Base 2.31.8 + g_menu_model_get_n_items@Base 2.31.8 + g_menu_model_get_type@Base 2.31.8 + g_menu_model_is_mutable@Base 2.31.8 + g_menu_model_items_changed@Base 2.31.8 + g_menu_model_iterate_item_attributes@Base 2.31.8 + g_menu_model_iterate_item_links@Base 2.31.8 + g_menu_new@Base 2.31.8 + g_menu_prepend@Base 2.31.8 + g_menu_prepend_item@Base 2.31.8 + g_menu_prepend_section@Base 2.31.8 + g_menu_prepend_submenu@Base 2.31.8 + g_menu_remove@Base 2.31.8 + g_menu_remove_all@Base 2.37.0 + g_mount_can_eject@Base 2.16.0 + g_mount_can_unmount@Base 2.16.0 + g_mount_eject@Base 2.16.0 + g_mount_eject_finish@Base 2.16.0 + g_mount_eject_with_operation@Base 2.22.0 + g_mount_eject_with_operation_finish@Base 2.22.0 + g_mount_get_default_location@Base 2.24.0 + g_mount_get_drive@Base 2.16.0 + g_mount_get_icon@Base 2.16.0 + g_mount_get_name@Base 2.16.0 + g_mount_get_root@Base 2.16.0 + g_mount_get_sort_key@Base 2.31.8 + g_mount_get_symbolic_icon@Base 2.33.14 + g_mount_get_type@Base 2.16.0 + g_mount_get_uuid@Base 2.16.0 + g_mount_get_volume@Base 2.16.0 + g_mount_guess_content_type@Base 2.18.0 + g_mount_guess_content_type_finish@Base 2.18.0 + g_mount_guess_content_type_sync@Base 2.18.0 + g_mount_is_shadowed@Base 2.20.0 + g_mount_mount_flags_get_type@Base 2.16.0 + g_mount_operation_get_anonymous@Base 2.16.0 + g_mount_operation_get_choice@Base 2.16.0 + g_mount_operation_get_domain@Base 2.16.0 + g_mount_operation_get_is_tcrypt_hidden_volume@Base 2.57.2 + g_mount_operation_get_is_tcrypt_system_volume@Base 2.57.2 + g_mount_operation_get_password@Base 2.16.0 + g_mount_operation_get_password_save@Base 2.16.0 + g_mount_operation_get_pim@Base 2.57.2 + g_mount_operation_get_type@Base 2.16.0 + g_mount_operation_get_username@Base 2.16.0 + g_mount_operation_new@Base 2.16.0 + g_mount_operation_reply@Base 2.16.0 + g_mount_operation_result_get_type@Base 2.16.0 + g_mount_operation_set_anonymous@Base 2.16.0 + g_mount_operation_set_choice@Base 2.16.0 + g_mount_operation_set_domain@Base 2.16.0 + g_mount_operation_set_is_tcrypt_hidden_volume@Base 2.57.2 + g_mount_operation_set_is_tcrypt_system_volume@Base 2.57.2 + g_mount_operation_set_password@Base 2.16.0 + g_mount_operation_set_password_save@Base 2.16.0 + g_mount_operation_set_pim@Base 2.57.2 + g_mount_operation_set_username@Base 2.16.0 + g_mount_remount@Base 2.16.0 + g_mount_remount_finish@Base 2.16.0 + g_mount_shadow@Base 2.20.0 + g_mount_unmount@Base 2.16.0 + g_mount_unmount_finish@Base 2.16.0 + g_mount_unmount_flags_get_type@Base 2.16.0 + g_mount_unmount_with_operation@Base 2.22.0 + g_mount_unmount_with_operation_finish@Base 2.22.0 + g_mount_unshadow@Base 2.20.0 + g_native_socket_address_get_type@Base 2.45.3 + g_native_socket_address_new@Base 2.45.3 + g_native_volume_monitor_get_type@Base 2.16.0 + g_network_address_get_hostname@Base 2.22.0 + g_network_address_get_port@Base 2.22.0 + g_network_address_get_scheme@Base 2.26.0 + g_network_address_get_type@Base 2.22.0 + g_network_address_new@Base 2.22.0 + g_network_address_new_loopback@Base 2.43.2 + g_network_address_parse@Base 2.22.0 + g_network_address_parse_uri@Base 2.26.0 + g_network_connectivity_get_type@Base 2.43.2 + g_network_monitor_base_add_network@Base 2.31.8 + g_network_monitor_base_get_type@Base 2.31.8 + g_network_monitor_base_remove_network@Base 2.31.8 + g_network_monitor_base_set_networks@Base 2.31.8 + g_network_monitor_can_reach@Base 2.31.8 + g_network_monitor_can_reach_async@Base 2.31.8 + g_network_monitor_can_reach_finish@Base 2.31.8 + g_network_monitor_get_connectivity@Base 2.43.2 + g_network_monitor_get_default@Base 2.31.8 + g_network_monitor_get_network_available@Base 2.31.8 + g_network_monitor_get_network_metered@Base 2.45.6 + g_network_monitor_get_type@Base 2.31.8 + g_network_service_get_domain@Base 2.22.0 + g_network_service_get_protocol@Base 2.22.0 + g_network_service_get_scheme@Base 2.26.0 + g_network_service_get_service@Base 2.22.0 + g_network_service_get_type@Base 2.22.0 + g_network_service_new@Base 2.22.0 + g_network_service_set_scheme@Base 2.26.0 + g_networking_init@Base 2.35.8 + g_notification_add_button@Base 2.39.4 + g_notification_add_button_with_target@Base 2.39.4 + g_notification_add_button_with_target_value@Base 2.39.4 + g_notification_get_type@Base 2.39.4 + g_notification_new@Base 2.39.4 + g_notification_priority_get_type@Base 2.41.2 + g_notification_set_body@Base 2.39.4 + g_notification_set_category@Base 2.70.0 + g_notification_set_default_action@Base 2.39.4 + g_notification_set_default_action_and_target@Base 2.39.4 + g_notification_set_default_action_and_target_value@Base 2.39.4 + g_notification_set_icon@Base 2.39.4 + g_notification_set_priority@Base 2.41.2 + g_notification_set_title@Base 2.39.4 + g_notification_set_urgent@Base 2.39.4 + g_null_settings_backend_new@Base 2.28.0 + g_output_stream_clear_pending@Base 2.16.0 + g_output_stream_close@Base 2.16.0 + g_output_stream_close_async@Base 2.16.0 + g_output_stream_close_finish@Base 2.16.0 + g_output_stream_flush@Base 2.16.0 + g_output_stream_flush_async@Base 2.16.0 + g_output_stream_flush_finish@Base 2.16.0 + g_output_stream_get_type@Base 2.16.0 + g_output_stream_has_pending@Base 2.16.0 + g_output_stream_is_closed@Base 2.16.0 + g_output_stream_is_closing@Base 2.24.0 + g_output_stream_printf@Base 2.39.4 + g_output_stream_set_pending@Base 2.16.0 + g_output_stream_splice@Base 2.16.0 + g_output_stream_splice_async@Base 2.16.0 + g_output_stream_splice_finish@Base 2.16.0 + g_output_stream_splice_flags_get_type@Base 2.16.0 + g_output_stream_vprintf@Base 2.39.4 + g_output_stream_write@Base 2.16.0 + g_output_stream_write_all@Base 2.16.0 + g_output_stream_write_all_async@Base 2.43.1 + g_output_stream_write_all_finish@Base 2.43.1 + g_output_stream_write_async@Base 2.16.0 + g_output_stream_write_bytes@Base 2.33.14 + g_output_stream_write_bytes_async@Base 2.33.14 + g_output_stream_write_bytes_finish@Base 2.33.14 + g_output_stream_write_finish@Base 2.16.0 + g_output_stream_writev@Base 2.59.2 + g_output_stream_writev_all@Base 2.59.2 + g_output_stream_writev_all_async@Base 2.59.2 + g_output_stream_writev_all_finish@Base 2.59.2 + g_output_stream_writev_async@Base 2.59.2 + g_output_stream_writev_finish@Base 2.59.2 + g_password_save_get_type@Base 2.16.0 + g_permission_acquire@Base 2.26.0 + g_permission_acquire_async@Base 2.26.0 + g_permission_acquire_finish@Base 2.26.0 + g_permission_get_allowed@Base 2.26.0 + g_permission_get_can_acquire@Base 2.26.0 + g_permission_get_can_release@Base 2.26.0 + g_permission_get_type@Base 2.26.0 + g_permission_impl_update@Base 2.26.0 + g_permission_release@Base 2.26.0 + g_permission_release_async@Base 2.26.0 + g_permission_release_finish@Base 2.26.0 + g_pollable_input_stream_can_poll@Base 2.28.0 + g_pollable_input_stream_create_source@Base 2.28.0 + g_pollable_input_stream_get_type@Base 2.28.0 + g_pollable_input_stream_is_readable@Base 2.28.0 + g_pollable_input_stream_read_nonblocking@Base 2.28.0 + g_pollable_output_stream_can_poll@Base 2.28.0 + g_pollable_output_stream_create_source@Base 2.28.0 + g_pollable_output_stream_get_type@Base 2.28.0 + g_pollable_output_stream_is_writable@Base 2.28.0 + g_pollable_output_stream_write_nonblocking@Base 2.28.0 + g_pollable_output_stream_writev_nonblocking@Base 2.59.2 + g_pollable_return_get_type@Base 2.59.2 + g_pollable_source_new@Base 2.28.0 + g_pollable_source_new_full@Base 2.33.14 + g_pollable_stream_read@Base 2.33.14 + g_pollable_stream_write@Base 2.33.14 + g_pollable_stream_write_all@Base 2.33.14 + g_power_profile_monitor_dup_default@Base 2.70.0 + g_power_profile_monitor_get_power_saver_enabled@Base 2.70.0 + g_power_profile_monitor_get_type@Base 2.70.0 + g_property_action_get_type@Base 2.37.5 + g_property_action_new@Base 2.37.5 + g_proxy_address_enumerator_get_type@Base 2.26.0 + g_proxy_address_get_destination_hostname@Base 2.26.0 + g_proxy_address_get_destination_port@Base 2.26.0 + g_proxy_address_get_destination_protocol@Base 2.33.14 + g_proxy_address_get_password@Base 2.26.0 + g_proxy_address_get_protocol@Base 2.26.0 + g_proxy_address_get_type@Base 2.26.0 + g_proxy_address_get_uri@Base 2.33.14 + g_proxy_address_get_username@Base 2.26.0 + g_proxy_address_new@Base 2.26.0 + g_proxy_connect@Base 2.26.0 + g_proxy_connect_async@Base 2.26.0 + g_proxy_connect_finish@Base 2.26.0 + g_proxy_get_default_for_protocol@Base 2.26.0 + g_proxy_get_type@Base 2.26.0 + g_proxy_resolver_get_default@Base 2.26.0 + g_proxy_resolver_get_type@Base 2.26.0 + g_proxy_resolver_is_supported@Base 2.26.0 + g_proxy_resolver_lookup@Base 2.26.0 + g_proxy_resolver_lookup_async@Base 2.26.0 + g_proxy_resolver_lookup_finish@Base 2.26.0 + g_proxy_supports_hostname@Base 2.26.0 + g_remote_action_group_activate_action_full@Base 2.31.8 + g_remote_action_group_change_action_state_full@Base 2.31.8 + g_remote_action_group_get_type@Base 2.31.8 + g_resolver_error_get_type@Base 2.22.0 + g_resolver_error_quark@Base 2.22.0 + g_resolver_free_addresses@Base 2.22.0 + g_resolver_free_targets@Base 2.22.0 + g_resolver_get_default@Base 2.22.0 + g_resolver_get_type@Base 2.22.0 + g_resolver_lookup_by_address@Base 2.22.0 + g_resolver_lookup_by_address_async@Base 2.22.0 + g_resolver_lookup_by_address_finish@Base 2.22.0 + g_resolver_lookup_by_name@Base 2.22.0 + g_resolver_lookup_by_name_async@Base 2.22.0 + g_resolver_lookup_by_name_finish@Base 2.22.0 + g_resolver_lookup_by_name_with_flags@Base 2.59.0 + g_resolver_lookup_by_name_with_flags_async@Base 2.59.0 + g_resolver_lookup_by_name_with_flags_finish@Base 2.59.0 + g_resolver_lookup_records@Base 2.33.14 + g_resolver_lookup_records_async@Base 2.33.14 + g_resolver_lookup_records_finish@Base 2.33.14 + g_resolver_lookup_service@Base 2.22.0 + g_resolver_lookup_service_async@Base 2.22.0 + g_resolver_lookup_service_finish@Base 2.22.0 + g_resolver_name_lookup_flags_get_type@Base 2.59.0 + g_resolver_record_type_get_type@Base 2.33.14 + g_resolver_record_type_to_rrtype@Base 2.72.1 + g_resolver_records_from_res_query@Base 2.71.0 + g_resolver_set_default@Base 2.22.0 + g_resource_enumerate_children@Base 2.31.18 + g_resource_error_get_type@Base 2.31.18 + g_resource_error_quark@Base 2.31.18 + g_resource_flags_get_type@Base 2.31.18 + g_resource_get_info@Base 2.31.18 + g_resource_get_type@Base 2.31.18 + g_resource_load@Base 2.31.18 + g_resource_lookup_data@Base 2.31.18 + g_resource_lookup_flags_get_type@Base 2.31.18 + g_resource_new_from_data@Base 2.31.18 + g_resource_open_stream@Base 2.31.18 + g_resource_ref@Base 2.31.18 + g_resource_unref@Base 2.31.18 + g_resources_enumerate_children@Base 2.31.18 + g_resources_get_info@Base 2.31.18 + g_resources_lookup_data@Base 2.31.18 + g_resources_open_stream@Base 2.31.18 + g_resources_register@Base 2.31.18 + g_resources_unregister@Base 2.31.18 + g_seekable_can_seek@Base 2.16.0 + g_seekable_can_truncate@Base 2.16.0 + g_seekable_get_type@Base 2.16.0 + g_seekable_seek@Base 2.16.0 + g_seekable_tell@Base 2.16.0 + g_seekable_truncate@Base 2.16.0 + g_settings_apply@Base 2.26.0 + g_settings_backend_changed@Base 2.26.0 + g_settings_backend_changed_tree@Base 2.26.0 + g_settings_backend_flatten_tree@Base 2.26.0 + g_settings_backend_get_default@Base 2.28.0 + g_settings_backend_get_type@Base 2.26.0 + g_settings_backend_keys_changed@Base 2.26.0 + g_settings_backend_path_changed@Base 2.26.0 + g_settings_backend_path_writable_changed@Base 2.26.0 + g_settings_backend_writable_changed@Base 2.26.0 + g_settings_bind@Base 2.26.0 + g_settings_bind_flags_get_type@Base 2.26.0 + g_settings_bind_with_mapping@Base 2.26.0 + g_settings_bind_writable@Base 2.26.0 + g_settings_create_action@Base 2.31.18 + g_settings_delay@Base 2.26.0 + g_settings_get@Base 2.26.0 + g_settings_get_boolean@Base 2.26.0 + g_settings_get_child@Base 2.26.0 + g_settings_get_default_value@Base 2.39.4 + g_settings_get_double@Base 2.26.0 + g_settings_get_enum@Base 2.26.0 + g_settings_get_flags@Base 2.26.0 + g_settings_get_has_unapplied@Base 2.26.0 + g_settings_get_int64@Base 2.49.2 + g_settings_get_int@Base 2.26.0 + g_settings_get_mapped@Base 2.26.0 + g_settings_get_range@Base 2.28.0 + g_settings_get_string@Base 2.26.0 + g_settings_get_strv@Base 2.26.0 + g_settings_get_type@Base 2.26.0 + g_settings_get_uint64@Base 2.49.2 + g_settings_get_uint@Base 2.30.0 + g_settings_get_user_value@Base 2.39.4 + g_settings_get_value@Base 2.26.0 + g_settings_is_writable@Base 2.26.0 + g_settings_list_children@Base 2.26.0 + g_settings_list_keys@Base 2.26.0 + g_settings_list_relocatable_schemas@Base 2.28.0 + g_settings_list_schemas@Base 2.26.0 + g_settings_new@Base 2.26.0 + g_settings_new_full@Base 2.31.8 + g_settings_new_with_backend@Base 2.26.0 + g_settings_new_with_backend_and_path@Base 2.26.0 + g_settings_new_with_path@Base 2.26.0 + g_settings_range_check@Base 2.28.0 + g_settings_reset@Base 2.26.0 + g_settings_revert@Base 2.26.0 + g_settings_schema_get_id@Base 2.31.8 + g_settings_schema_get_key@Base 2.39.4 + g_settings_schema_get_path@Base 2.31.8 + g_settings_schema_get_type@Base 2.31.8 + g_settings_schema_has_key@Base 2.39.4 + g_settings_schema_key_get_default_value@Base 2.39.4 + g_settings_schema_key_get_description@Base 2.39.4 + g_settings_schema_key_get_name@Base 2.43.4 + g_settings_schema_key_get_range@Base 2.39.4 + g_settings_schema_key_get_summary@Base 2.39.4 + g_settings_schema_key_get_type@Base 2.39.4 + g_settings_schema_key_get_value_type@Base 2.39.4 + g_settings_schema_key_range_check@Base 2.39.4 + g_settings_schema_key_ref@Base 2.39.4 + g_settings_schema_key_unref@Base 2.39.4 + g_settings_schema_list_children@Base 2.43.4 + g_settings_schema_list_keys@Base 2.45.3 + g_settings_schema_ref@Base 2.31.8 + g_settings_schema_source_get_default@Base 2.31.8 + g_settings_schema_source_get_type@Base 2.31.8 + g_settings_schema_source_list_schemas@Base 2.39.4 + g_settings_schema_source_lookup@Base 2.31.8 + g_settings_schema_source_new_from_directory@Base 2.31.8 + g_settings_schema_source_ref@Base 2.31.8 + g_settings_schema_source_unref@Base 2.31.8 + g_settings_schema_unref@Base 2.31.8 + g_settings_set@Base 2.26.0 + g_settings_set_boolean@Base 2.26.0 + g_settings_set_double@Base 2.26.0 + g_settings_set_enum@Base 2.26.0 + g_settings_set_flags@Base 2.26.0 + g_settings_set_int64@Base 2.49.2 + g_settings_set_int@Base 2.26.0 + g_settings_set_string@Base 2.26.0 + g_settings_set_strv@Base 2.26.0 + g_settings_set_uint64@Base 2.49.2 + g_settings_set_uint@Base 2.30.0 + g_settings_set_value@Base 2.26.0 + g_settings_sync@Base 2.26.0 + g_settings_unbind@Base 2.26.0 + g_simple_action_get_type@Base 2.28.0 + g_simple_action_group_add_entries@Base 2.30.0 + g_simple_action_group_get_type@Base 2.28.0 + g_simple_action_group_insert@Base 2.28.0 + g_simple_action_group_lookup@Base 2.28.0 + g_simple_action_group_new@Base 2.28.0 + g_simple_action_group_remove@Base 2.28.0 + g_simple_action_new@Base 2.28.0 + g_simple_action_new_stateful@Base 2.28.0 + g_simple_action_set_enabled@Base 2.28.0 + g_simple_action_set_state@Base 2.30.0 + g_simple_action_set_state_hint@Base 2.43.4 + g_simple_async_report_error_in_idle@Base 2.16.0 + g_simple_async_report_gerror_in_idle@Base 2.16.0 + g_simple_async_report_take_gerror_in_idle@Base 2.28.0 + g_simple_async_result_complete@Base 2.16.0 + g_simple_async_result_complete_in_idle@Base 2.16.0 + g_simple_async_result_get_op_res_gboolean@Base 2.16.0 + g_simple_async_result_get_op_res_gpointer@Base 2.16.0 + g_simple_async_result_get_op_res_gssize@Base 2.16.0 + g_simple_async_result_get_source_tag@Base 2.16.0 + g_simple_async_result_get_type@Base 2.16.0 + g_simple_async_result_is_valid@Base 2.20.0 + g_simple_async_result_new@Base 2.16.0 + g_simple_async_result_new_error@Base 2.16.0 + g_simple_async_result_new_from_error@Base 2.16.0 + g_simple_async_result_new_take_error@Base 2.28.0 + g_simple_async_result_propagate_error@Base 2.16.0 + g_simple_async_result_run_in_thread@Base 2.16.0 + g_simple_async_result_set_check_cancellable@Base 2.31.22 + g_simple_async_result_set_error@Base 2.16.0 + g_simple_async_result_set_error_va@Base 2.16.0 + g_simple_async_result_set_from_error@Base 2.16.0 + g_simple_async_result_set_handle_cancellation@Base 2.16.0 + g_simple_async_result_set_op_res_gboolean@Base 2.16.0 + g_simple_async_result_set_op_res_gpointer@Base 2.16.0 + g_simple_async_result_set_op_res_gssize@Base 2.16.0 + g_simple_async_result_take_error@Base 2.28.0 + g_simple_io_stream_get_type@Base 2.43.90 + g_simple_io_stream_new@Base 2.43.90 + g_simple_permission_get_type@Base 2.26.0 + g_simple_permission_new@Base 2.26.0 + g_simple_proxy_resolver_get_type@Base 2.35.8 + g_simple_proxy_resolver_new@Base 2.35.8 + g_simple_proxy_resolver_set_default_proxy@Base 2.35.8 + g_simple_proxy_resolver_set_ignore_hosts@Base 2.35.8 + g_simple_proxy_resolver_set_uri_proxy@Base 2.35.8 + g_socket_accept@Base 2.22.0 + g_socket_address_enumerator_get_type@Base 2.22.0 + g_socket_address_enumerator_next@Base 2.22.0 + g_socket_address_enumerator_next_async@Base 2.22.0 + g_socket_address_enumerator_next_finish@Base 2.22.0 + g_socket_address_get_family@Base 2.22.0 + g_socket_address_get_native_size@Base 2.22.0 + g_socket_address_get_type@Base 2.22.0 + g_socket_address_new_from_native@Base 2.22.0 + g_socket_address_to_native@Base 2.22.0 + g_socket_bind@Base 2.22.0 + g_socket_check_connect_result@Base 2.22.0 + g_socket_client_add_application_proxy@Base 2.26.0 + g_socket_client_connect@Base 2.22.0 + g_socket_client_connect_async@Base 2.22.0 + g_socket_client_connect_finish@Base 2.22.0 + g_socket_client_connect_to_host@Base 2.22.0 + g_socket_client_connect_to_host_async@Base 2.22.0 + g_socket_client_connect_to_host_finish@Base 2.22.0 + g_socket_client_connect_to_service@Base 2.22.0 + g_socket_client_connect_to_service_async@Base 2.22.0 + g_socket_client_connect_to_service_finish@Base 2.22.0 + g_socket_client_connect_to_uri@Base 2.26.0 + g_socket_client_connect_to_uri_async@Base 2.26.0 + g_socket_client_connect_to_uri_finish@Base 2.26.0 + g_socket_client_event_get_type@Base 2.31.8 + g_socket_client_get_enable_proxy@Base 2.26.0 + g_socket_client_get_family@Base 2.22.0 + g_socket_client_get_local_address@Base 2.22.0 + g_socket_client_get_protocol@Base 2.22.0 + g_socket_client_get_proxy_resolver@Base 2.35.8 + g_socket_client_get_socket_type@Base 2.22.0 + g_socket_client_get_timeout@Base 2.26.0 + g_socket_client_get_tls@Base 2.28.0 + g_socket_client_get_tls_validation_flags@Base 2.28.0 + g_socket_client_get_type@Base 2.22.0 + g_socket_client_new@Base 2.22.0 + g_socket_client_set_enable_proxy@Base 2.26.0 + g_socket_client_set_family@Base 2.22.0 + g_socket_client_set_local_address@Base 2.22.0 + g_socket_client_set_protocol@Base 2.22.0 + g_socket_client_set_proxy_resolver@Base 2.35.8 + g_socket_client_set_socket_type@Base 2.22.0 + g_socket_client_set_timeout@Base 2.26.0 + g_socket_client_set_tls@Base 2.28.0 + g_socket_client_set_tls_validation_flags@Base 2.28.0 + g_socket_close@Base 2.22.0 + g_socket_condition_check@Base 2.22.0 + g_socket_condition_timed_wait@Base 2.31.18 + g_socket_condition_wait@Base 2.22.0 + g_socket_connect@Base 2.22.0 + g_socket_connectable_enumerate@Base 2.22.0 + g_socket_connectable_get_type@Base 2.22.0 + g_socket_connectable_proxy_enumerate@Base 2.26.0 + g_socket_connectable_to_string@Base 2.47.1 + g_socket_connection_connect@Base 2.31.8 + g_socket_connection_connect_async@Base 2.31.8 + g_socket_connection_connect_finish@Base 2.31.8 + g_socket_connection_factory_create_connection@Base 2.22.0 + g_socket_connection_factory_lookup_type@Base 2.22.0 + g_socket_connection_factory_register_type@Base 2.22.0 + g_socket_connection_get_local_address@Base 2.22.0 + g_socket_connection_get_remote_address@Base 2.22.0 + g_socket_connection_get_socket@Base 2.22.0 + g_socket_connection_get_type@Base 2.22.0 + g_socket_connection_is_connected@Base 2.31.8 + g_socket_control_message_deserialize@Base 2.22.0 + g_socket_control_message_get_level@Base 2.22.0 + g_socket_control_message_get_msg_type@Base 2.22.0 + g_socket_control_message_get_size@Base 2.22.0 + g_socket_control_message_get_type@Base 2.22.0 + g_socket_control_message_serialize@Base 2.22.0 + g_socket_create_source@Base 2.22.0 + g_socket_family_get_type@Base 2.22.0 + g_socket_get_available_bytes@Base 2.31.18 + g_socket_get_blocking@Base 2.22.0 + g_socket_get_broadcast@Base 2.31.18 + g_socket_get_credentials@Base 2.26.0 + g_socket_get_family@Base 2.22.0 + g_socket_get_fd@Base 2.22.0 + g_socket_get_keepalive@Base 2.22.0 + g_socket_get_listen_backlog@Base 2.22.0 + g_socket_get_local_address@Base 2.22.0 + g_socket_get_multicast_loopback@Base 2.31.18 + g_socket_get_multicast_ttl@Base 2.31.18 + g_socket_get_option@Base 2.35.8 + g_socket_get_protocol@Base 2.22.0 + g_socket_get_remote_address@Base 2.22.0 + g_socket_get_socket_type@Base 2.22.0 + g_socket_get_timeout@Base 2.26.0 + g_socket_get_ttl@Base 2.31.18 + g_socket_get_type@Base 2.22.0 + g_socket_is_closed@Base 2.22.0 + g_socket_is_connected@Base 2.22.0 + g_socket_join_multicast_group@Base 2.31.18 + g_socket_join_multicast_group_ssm@Base 2.55.1 + g_socket_leave_multicast_group@Base 2.31.18 + g_socket_leave_multicast_group_ssm@Base 2.55.1 + g_socket_listen@Base 2.22.0 + g_socket_listener_accept@Base 2.22.0 + g_socket_listener_accept_async@Base 2.22.0 + g_socket_listener_accept_finish@Base 2.22.0 + g_socket_listener_accept_socket@Base 2.22.0 + g_socket_listener_accept_socket_async@Base 2.22.0 + g_socket_listener_accept_socket_finish@Base 2.22.0 + g_socket_listener_add_address@Base 2.22.0 + g_socket_listener_add_any_inet_port@Base 2.24.0 + g_socket_listener_add_inet_port@Base 2.22.0 + g_socket_listener_add_socket@Base 2.22.0 + g_socket_listener_close@Base 2.22.0 + g_socket_listener_event_get_type@Base 2.45.1 + g_socket_listener_get_type@Base 2.22.0 + g_socket_listener_new@Base 2.22.0 + g_socket_listener_set_backlog@Base 2.22.0 + g_socket_msg_flags_get_type@Base 2.22.0 + g_socket_new@Base 2.22.0 + g_socket_new_from_fd@Base 2.22.0 + g_socket_protocol_get_type@Base 2.22.0 + g_socket_receive@Base 2.22.0 + g_socket_receive_from@Base 2.22.0 + g_socket_receive_message@Base 2.22.0 + g_socket_receive_messages@Base 2.47.1 + g_socket_receive_with_blocking@Base 2.26.0 + g_socket_send@Base 2.22.0 + g_socket_send_message@Base 2.22.0 + g_socket_send_message_with_timeout@Base 2.59.2 + g_socket_send_messages@Base 2.43.2 + g_socket_send_to@Base 2.22.0 + g_socket_send_with_blocking@Base 2.26.0 + g_socket_service_get_type@Base 2.22.0 + g_socket_service_is_active@Base 2.22.0 + g_socket_service_new@Base 2.22.0 + g_socket_service_start@Base 2.22.0 + g_socket_service_stop@Base 2.22.0 + g_socket_set_blocking@Base 2.22.0 + g_socket_set_broadcast@Base 2.31.18 + g_socket_set_keepalive@Base 2.22.0 + g_socket_set_listen_backlog@Base 2.22.0 + g_socket_set_multicast_loopback@Base 2.31.18 + g_socket_set_multicast_ttl@Base 2.31.18 + g_socket_set_option@Base 2.35.8 + g_socket_set_timeout@Base 2.26.0 + g_socket_set_ttl@Base 2.31.18 + g_socket_shutdown@Base 2.22.0 + g_socket_speaks_ipv4@Base 2.22.0 + g_socket_type_get_type@Base 2.22.0 + g_srv_target_copy@Base 2.22.0 + g_srv_target_free@Base 2.22.0 + g_srv_target_get_hostname@Base 2.22.0 + g_srv_target_get_port@Base 2.22.0 + g_srv_target_get_priority@Base 2.22.0 + g_srv_target_get_type@Base 2.22.0 + g_srv_target_get_weight@Base 2.22.0 + g_srv_target_list_sort@Base 2.22.0 + g_srv_target_new@Base 2.22.0 + g_static_resource_fini@Base 2.31.18 + g_static_resource_get_resource@Base 2.31.18 + g_static_resource_init@Base 2.31.18 + g_subprocess_communicate@Base 2.39.4 + g_subprocess_communicate_async@Base 2.39.4 + g_subprocess_communicate_finish@Base 2.39.4 + g_subprocess_communicate_utf8@Base 2.39.4 + g_subprocess_communicate_utf8_async@Base 2.39.4 + g_subprocess_communicate_utf8_finish@Base 2.39.4 + g_subprocess_flags_get_type@Base 2.39.4 + g_subprocess_force_exit@Base 2.39.4 + g_subprocess_get_exit_status@Base 2.39.4 + g_subprocess_get_identifier@Base 2.39.4 + g_subprocess_get_if_exited@Base 2.39.4 + g_subprocess_get_if_signaled@Base 2.39.4 + g_subprocess_get_status@Base 2.39.4 + g_subprocess_get_stderr_pipe@Base 2.39.4 + g_subprocess_get_stdin_pipe@Base 2.39.4 + g_subprocess_get_stdout_pipe@Base 2.39.4 + g_subprocess_get_successful@Base 2.39.4 + g_subprocess_get_term_sig@Base 2.39.4 + g_subprocess_get_type@Base 2.39.4 + g_subprocess_launcher_close@Base 2.67.1 + g_subprocess_launcher_get_type@Base 2.39.4 + g_subprocess_launcher_getenv@Base 2.39.4 + g_subprocess_launcher_new@Base 2.39.4 + g_subprocess_launcher_set_child_setup@Base 2.39.4 + g_subprocess_launcher_set_cwd@Base 2.39.4 + g_subprocess_launcher_set_environ@Base 2.39.4 + g_subprocess_launcher_set_flags@Base 2.39.4 + g_subprocess_launcher_set_stderr_file_path@Base 2.39.4 + g_subprocess_launcher_set_stdin_file_path@Base 2.39.4 + g_subprocess_launcher_set_stdout_file_path@Base 2.39.4 + g_subprocess_launcher_setenv@Base 2.39.4 + g_subprocess_launcher_spawn@Base 2.39.4 + g_subprocess_launcher_spawnv@Base 2.39.4 + g_subprocess_launcher_take_fd@Base 2.39.4 + g_subprocess_launcher_take_stderr_fd@Base 2.39.4 + g_subprocess_launcher_take_stdin_fd@Base 2.39.4 + g_subprocess_launcher_take_stdout_fd@Base 2.39.4 + g_subprocess_launcher_unsetenv@Base 2.39.4 + g_subprocess_new@Base 2.39.4 + g_subprocess_newv@Base 2.39.4 + g_subprocess_send_signal@Base 2.39.4 + g_subprocess_wait@Base 2.39.4 + g_subprocess_wait_async@Base 2.39.4 + g_subprocess_wait_check@Base 2.39.4 + g_subprocess_wait_check_async@Base 2.39.4 + g_subprocess_wait_check_finish@Base 2.39.4 + g_subprocess_wait_finish@Base 2.39.4 + g_task_attach_source@Base 2.35.8 + g_task_get_cancellable@Base 2.35.8 + g_task_get_check_cancellable@Base 2.35.8 + g_task_get_completed@Base 2.43.92 + g_task_get_context@Base 2.35.8 + g_task_get_name@Base 2.59.0 + g_task_get_priority@Base 2.35.8 + g_task_get_return_on_cancel@Base 2.35.8 + g_task_get_source_object@Base 2.35.8 + g_task_get_source_tag@Base 2.35.8 + g_task_get_task_data@Base 2.35.8 + g_task_get_type@Base 2.35.8 + g_task_had_error@Base 2.35.8 + g_task_is_valid@Base 2.35.8 + g_task_new@Base 2.35.8 + g_task_propagate_boolean@Base 2.35.8 + g_task_propagate_int@Base 2.35.8 + g_task_propagate_pointer@Base 2.35.8 + g_task_propagate_value@Base 2.63.2 + g_task_report_error@Base 2.35.8 + g_task_report_new_error@Base 2.35.8 + g_task_return_boolean@Base 2.35.8 + g_task_return_error@Base 2.35.8 + g_task_return_error_if_cancelled@Base 2.35.8 + g_task_return_int@Base 2.35.8 + g_task_return_new_error@Base 2.35.8 + g_task_return_pointer@Base 2.35.8 + g_task_return_value@Base 2.63.2 + g_task_run_in_thread@Base 2.35.8 + g_task_run_in_thread_sync@Base 2.35.8 + g_task_set_check_cancellable@Base 2.35.8 + g_task_set_name@Base 2.59.0 + g_task_set_priority@Base 2.35.8 + g_task_set_return_on_cancel@Base 2.35.8 + g_task_set_source_tag@Base 2.35.8 + g_task_set_task_data@Base 2.35.8 + g_tcp_connection_get_graceful_disconnect@Base 2.22.0 + g_tcp_connection_get_type@Base 2.22.0 + g_tcp_connection_set_graceful_disconnect@Base 2.22.0 + g_tcp_wrapper_connection_get_base_io_stream@Base 2.28.0 + g_tcp_wrapper_connection_get_type@Base 2.28.0 + g_tcp_wrapper_connection_new@Base 2.28.0 + g_test_dbus_add_service_dir@Base 2.33.14 + g_test_dbus_down@Base 2.33.14 + g_test_dbus_flags_get_type@Base 2.33.14 + g_test_dbus_get_bus_address@Base 2.33.14 + g_test_dbus_get_flags@Base 2.33.14 + g_test_dbus_get_type@Base 2.33.14 + g_test_dbus_new@Base 2.33.14 + g_test_dbus_stop@Base 2.33.14 + g_test_dbus_unset@Base 2.33.14 + g_test_dbus_up@Base 2.33.14 + g_themed_icon_append_name@Base 2.16.0 + g_themed_icon_get_names@Base 2.16.0 + g_themed_icon_get_type@Base 2.16.0 + g_themed_icon_new@Base 2.16.0 + g_themed_icon_new_from_names@Base 2.16.0 + g_themed_icon_new_with_default_fallbacks@Base 2.16.0 + g_themed_icon_prepend_name@Base 2.18.0 + g_threaded_resolver_get_type@Base 2.22.0 + g_threaded_socket_service_get_type@Base 2.22.0 + g_threaded_socket_service_new@Base 2.22.0 + g_tls_authentication_mode_get_type@Base 2.28.0 + g_tls_backend_get_certificate_type@Base 2.28.0 + g_tls_backend_get_client_connection_type@Base 2.28.0 + g_tls_backend_get_default@Base 2.28.0 + g_tls_backend_get_default_database@Base 2.30.0 + g_tls_backend_get_dtls_client_connection_type@Base 2.47.5 + g_tls_backend_get_dtls_server_connection_type@Base 2.47.5 + g_tls_backend_get_file_database_type@Base 2.30.0 + g_tls_backend_get_server_connection_type@Base 2.28.0 + g_tls_backend_get_type@Base 2.28.0 + g_tls_backend_set_default_database@Base 2.59.0 + g_tls_backend_supports_dtls@Base 2.47.5 + g_tls_backend_supports_tls@Base 2.28.0 + g_tls_certificate_flags_get_type@Base 2.28.0 + g_tls_certificate_get_dns_names@Base 2.70.0 + g_tls_certificate_get_ip_addresses@Base 2.70.0 + g_tls_certificate_get_issuer@Base 2.28.0 + g_tls_certificate_get_issuer_name@Base 2.70.0 + g_tls_certificate_get_not_valid_after@Base 2.70.0 + g_tls_certificate_get_not_valid_before@Base 2.70.0 + g_tls_certificate_get_subject_name@Base 2.70.0 + g_tls_certificate_get_type@Base 2.28.0 + g_tls_certificate_is_same@Base 2.33.14 + g_tls_certificate_list_new_from_file@Base 2.28.0 + g_tls_certificate_new_from_file@Base 2.28.0 + g_tls_certificate_new_from_file_with_password@Base 2.71.1 + g_tls_certificate_new_from_files@Base 2.28.0 + g_tls_certificate_new_from_pem@Base 2.28.0 + g_tls_certificate_new_from_pkcs11_uris@Base 2.67.1 + g_tls_certificate_new_from_pkcs12@Base 2.71.1 + g_tls_certificate_request_flags_get_type@Base 2.39.4 + g_tls_certificate_verify@Base 2.28.0 + g_tls_channel_binding_error_get_type@Base 2.65.1 + g_tls_channel_binding_error_quark@Base 2.65.1 + g_tls_channel_binding_type_get_type@Base 2.65.1 + g_tls_client_connection_copy_session_state@Base 2.45.1 + g_tls_client_connection_get_accepted_cas@Base 2.28.0 + g_tls_client_connection_get_server_identity@Base 2.28.0 + g_tls_client_connection_get_type@Base 2.28.0 + g_tls_client_connection_get_use_ssl3@Base 2.28.0 + g_tls_client_connection_get_validation_flags@Base 2.28.0 + g_tls_client_connection_new@Base 2.28.0 + g_tls_client_connection_set_server_identity@Base 2.28.0 + g_tls_client_connection_set_use_ssl3@Base 2.28.0 + g_tls_client_connection_set_validation_flags@Base 2.28.0 + g_tls_connection_emit_accept_certificate@Base 2.28.0 + g_tls_connection_get_certificate@Base 2.28.0 + g_tls_connection_get_channel_binding_data@Base 2.65.1 + g_tls_connection_get_ciphersuite_name@Base 2.70.0 + g_tls_connection_get_database@Base 2.30.0 + g_tls_connection_get_interaction@Base 2.30.0 + g_tls_connection_get_negotiated_protocol@Base 2.59.0 + g_tls_connection_get_peer_certificate@Base 2.28.0 + g_tls_connection_get_peer_certificate_errors@Base 2.28.0 + g_tls_connection_get_protocol_version@Base 2.70.0 + g_tls_connection_get_rehandshake_mode@Base 2.28.0 + g_tls_connection_get_require_close_notify@Base 2.28.0 + g_tls_connection_get_type@Base 2.28.0 + g_tls_connection_get_use_system_certdb@Base 2.28.0 + g_tls_connection_handshake@Base 2.28.0 + g_tls_connection_handshake_async@Base 2.28.0 + g_tls_connection_handshake_finish@Base 2.28.0 + g_tls_connection_set_advertised_protocols@Base 2.59.0 + g_tls_connection_set_certificate@Base 2.28.0 + g_tls_connection_set_database@Base 2.30.0 + g_tls_connection_set_interaction@Base 2.30.0 + g_tls_connection_set_rehandshake_mode@Base 2.28.0 + g_tls_connection_set_require_close_notify@Base 2.28.0 + g_tls_connection_set_use_system_certdb@Base 2.28.0 + g_tls_database_create_certificate_handle@Base 2.30.0 + g_tls_database_get_type@Base 2.30.0 + g_tls_database_lookup_certificate_for_handle@Base 2.30.0 + g_tls_database_lookup_certificate_for_handle_async@Base 2.30.0 + g_tls_database_lookup_certificate_for_handle_finish@Base 2.30.0 + g_tls_database_lookup_certificate_issuer@Base 2.30.0 + g_tls_database_lookup_certificate_issuer_async@Base 2.30.0 + g_tls_database_lookup_certificate_issuer_finish@Base 2.30.0 + g_tls_database_lookup_certificates_issued_by@Base 2.30.0 + g_tls_database_lookup_certificates_issued_by_async@Base 2.30.0 + g_tls_database_lookup_certificates_issued_by_finish@Base 2.30.0 + g_tls_database_lookup_flags_get_type@Base 2.30.0 + g_tls_database_verify_chain@Base 2.30.0 + g_tls_database_verify_chain_async@Base 2.30.0 + g_tls_database_verify_chain_finish@Base 2.30.0 + g_tls_database_verify_flags_get_type@Base 2.30.0 + g_tls_error_get_type@Base 2.28.0 + g_tls_error_quark@Base 2.28.0 + g_tls_file_database_get_type@Base 2.30.0 + g_tls_file_database_new@Base 2.30.0 + g_tls_interaction_ask_password@Base 2.30.0 + g_tls_interaction_ask_password_async@Base 2.30.0 + g_tls_interaction_ask_password_finish@Base 2.30.0 + g_tls_interaction_get_type@Base 2.30.0 + g_tls_interaction_invoke_ask_password@Base 2.30.0 + g_tls_interaction_invoke_request_certificate@Base 2.39.4 + g_tls_interaction_request_certificate@Base 2.39.4 + g_tls_interaction_request_certificate_async@Base 2.39.4 + g_tls_interaction_request_certificate_finish@Base 2.39.4 + g_tls_interaction_result_get_type@Base 2.30.0 + g_tls_password_flags_get_type@Base 2.30.0 + g_tls_password_get_description@Base 2.30.0 + g_tls_password_get_flags@Base 2.30.0 + g_tls_password_get_type@Base 2.30.0 + g_tls_password_get_value@Base 2.30.0 + g_tls_password_get_warning@Base 2.30.0 + g_tls_password_new@Base 2.30.0 + g_tls_password_set_description@Base 2.30.0 + g_tls_password_set_flags@Base 2.30.0 + g_tls_password_set_value@Base 2.30.0 + g_tls_password_set_value_full@Base 2.30.0 + g_tls_password_set_warning@Base 2.30.0 + g_tls_protocol_version_get_type@Base 2.70.0 + g_tls_rehandshake_mode_get_type@Base 2.28.0 + g_tls_server_connection_get_type@Base 2.28.0 + g_tls_server_connection_new@Base 2.28.0 + g_unix_connection_get_type@Base 2.22.0 + g_unix_connection_receive_credentials@Base 2.26.0 + g_unix_connection_receive_credentials_async@Base 2.31.18 + g_unix_connection_receive_credentials_finish@Base 2.31.18 + g_unix_connection_receive_fd@Base 2.22.0 + g_unix_connection_send_credentials@Base 2.26.0 + g_unix_connection_send_credentials_async@Base 2.31.18 + g_unix_connection_send_credentials_finish@Base 2.31.18 + g_unix_connection_send_fd@Base 2.22.0 + g_unix_credentials_message_get_credentials@Base 2.26.0 + g_unix_credentials_message_get_type@Base 2.26.0 + g_unix_credentials_message_is_supported@Base 2.26.0 + g_unix_credentials_message_new@Base 2.26.0 + g_unix_credentials_message_new_with_credentials@Base 2.26.0 + g_unix_fd_list_append@Base 2.24.0 + g_unix_fd_list_get@Base 2.24.0 + g_unix_fd_list_get_length@Base 2.24.0 + g_unix_fd_list_get_type@Base 2.24.0 + g_unix_fd_list_new@Base 2.24.0 + g_unix_fd_list_new_from_array@Base 2.24.0 + g_unix_fd_list_peek_fds@Base 2.24.0 + g_unix_fd_list_steal_fds@Base 2.24.0 + g_unix_fd_message_append_fd@Base 2.22.0 + g_unix_fd_message_get_fd_list@Base 2.24.0 + g_unix_fd_message_get_type@Base 2.22.0 + g_unix_fd_message_new@Base 2.22.0 + g_unix_fd_message_new_with_fd_list@Base 2.24.0 + g_unix_fd_message_steal_fds@Base 2.22.0 + g_unix_input_stream_get_close_fd@Base 2.20.0 + g_unix_input_stream_get_fd@Base 2.20.0 + g_unix_input_stream_get_type@Base 2.16.0 + g_unix_input_stream_new@Base 2.16.0 + g_unix_input_stream_set_close_fd@Base 2.20.0 + g_unix_is_mount_path_system_internal@Base 2.16.0 + g_unix_is_system_device_path@Base 2.55.1 + g_unix_is_system_fs_type@Base 2.55.1 + g_unix_mount_at@Base 2.16.0 + g_unix_mount_compare@Base 2.16.0 + g_unix_mount_copy@Base 2.53.1 + g_unix_mount_entry_get_type@Base 2.53.1 + g_unix_mount_for@Base 2.51.0 + g_unix_mount_free@Base 2.16.0 + g_unix_mount_get_device_path@Base 2.16.0 + g_unix_mount_get_fs_type@Base 2.16.0 + g_unix_mount_get_mount_path@Base 2.16.0 + g_unix_mount_get_options@Base 2.57.2 + g_unix_mount_get_root_path@Base 2.59.0 + g_unix_mount_guess_can_eject@Base 2.16.0 + g_unix_mount_guess_icon@Base 2.16.0 + g_unix_mount_guess_name@Base 2.16.0 + g_unix_mount_guess_should_display@Base 2.16.0 + g_unix_mount_guess_symbolic_icon@Base 2.33.14 + g_unix_mount_is_readonly@Base 2.16.0 + g_unix_mount_is_system_internal@Base 2.16.0 + g_unix_mount_monitor_get@Base 2.43.92 + g_unix_mount_monitor_get_type@Base 2.16.0 + g_unix_mount_monitor_new@Base 2.16.0 + g_unix_mount_monitor_set_rate_limit@Base 2.18.0 + g_unix_mount_point_at@Base 2.65.1 + g_unix_mount_point_compare@Base 2.16.0 + g_unix_mount_point_copy@Base 2.53.1 + g_unix_mount_point_free@Base 2.16.0 + g_unix_mount_point_get_device_path@Base 2.16.0 + g_unix_mount_point_get_fs_type@Base 2.16.0 + g_unix_mount_point_get_mount_path@Base 2.16.0 + g_unix_mount_point_get_options@Base 2.31.8 + g_unix_mount_point_get_type@Base 2.53.1 + g_unix_mount_point_guess_can_eject@Base 2.16.0 + g_unix_mount_point_guess_icon@Base 2.16.0 + g_unix_mount_point_guess_name@Base 2.16.0 + g_unix_mount_point_guess_symbolic_icon@Base 2.33.14 + g_unix_mount_point_is_loopback@Base 2.16.0 + g_unix_mount_point_is_readonly@Base 2.16.0 + g_unix_mount_point_is_user_mountable@Base 2.16.0 + g_unix_mount_points_changed_since@Base 2.16.0 + g_unix_mount_points_get@Base 2.16.0 + g_unix_mounts_changed_since@Base 2.16.0 + g_unix_mounts_get@Base 2.16.0 + g_unix_output_stream_get_close_fd@Base 2.20.0 + g_unix_output_stream_get_fd@Base 2.20.0 + g_unix_output_stream_get_type@Base 2.16.0 + g_unix_output_stream_new@Base 2.16.0 + g_unix_output_stream_set_close_fd@Base 2.20.0 + g_unix_socket_address_abstract_names_supported@Base 2.22.0 + g_unix_socket_address_get_address_type@Base 2.26.0 + g_unix_socket_address_get_is_abstract@Base 2.22.0 + g_unix_socket_address_get_path@Base 2.22.0 + g_unix_socket_address_get_path_len@Base 2.22.0 + g_unix_socket_address_get_type@Base 2.22.0 + g_unix_socket_address_new@Base 2.22.0 + g_unix_socket_address_new_abstract@Base 2.22.0 + g_unix_socket_address_new_with_type@Base 2.26.0 + g_unix_socket_address_type_get_type@Base 2.26.0 + g_vfs_get_default@Base 2.16.0 + g_vfs_get_file_for_path@Base 2.16.0 + g_vfs_get_file_for_uri@Base 2.16.0 + g_vfs_get_local@Base 2.16.0 + g_vfs_get_supported_uri_schemes@Base 2.16.0 + g_vfs_get_type@Base 2.16.0 + g_vfs_is_active@Base 2.16.0 + g_vfs_parse_name@Base 2.16.0 + g_vfs_register_uri_scheme@Base 2.49.3 + g_vfs_unregister_uri_scheme@Base 2.49.3 + g_volume_can_eject@Base 2.16.0 + g_volume_can_mount@Base 2.16.0 + g_volume_eject@Base 2.16.0 + g_volume_eject_finish@Base 2.16.0 + g_volume_eject_with_operation@Base 2.22.0 + g_volume_eject_with_operation_finish@Base 2.22.0 + g_volume_enumerate_identifiers@Base 2.16.0 + g_volume_get_activation_root@Base 2.18.0 + g_volume_get_drive@Base 2.16.0 + g_volume_get_icon@Base 2.16.0 + g_volume_get_identifier@Base 2.16.0 + g_volume_get_mount@Base 2.16.0 + g_volume_get_name@Base 2.16.0 + g_volume_get_sort_key@Base 2.31.8 + g_volume_get_symbolic_icon@Base 2.33.14 + g_volume_get_type@Base 2.16.0 + g_volume_get_uuid@Base 2.16.0 + g_volume_monitor_adopt_orphan_mount@Base 2.16.0 + g_volume_monitor_get@Base 2.16.0 + g_volume_monitor_get_connected_drives@Base 2.16.0 + g_volume_monitor_get_mount_for_uuid@Base 2.16.0 + g_volume_monitor_get_mounts@Base 2.16.0 + g_volume_monitor_get_type@Base 2.16.0 + g_volume_monitor_get_volume_for_uuid@Base 2.16.0 + g_volume_monitor_get_volumes@Base 2.16.0 + g_volume_mount@Base 2.16.0 + g_volume_mount_finish@Base 2.16.0 + g_volume_should_automount@Base 2.16.0 + g_zlib_compressor_format_get_type@Base 2.24.0 + g_zlib_compressor_get_file_info@Base 2.26.0 + g_zlib_compressor_get_type@Base 2.24.0 + g_zlib_compressor_new@Base 2.24.0 + g_zlib_compressor_set_file_info@Base 2.26.0 + g_zlib_decompressor_get_file_info@Base 2.26.0 + g_zlib_decompressor_get_type@Base 2.24.0 + g_zlib_decompressor_new@Base 2.24.0 +libglib-2.0.so.0 libglib2.0-0 #MINVER# +* Build-Depends-Package: libglib2.0-dev + __glib_assert_msg@Base 2.37.6 + g_access@Base 2.12.0 + g_aligned_alloc@Base 2.71.2 + g_aligned_alloc0@Base 2.71.2 + g_aligned_free@Base 2.71.2 + g_allocator_free@Base 2.12.0 + g_allocator_new@Base 2.12.0 + g_array_append_vals@Base 2.12.0 + g_array_binary_search@Base 2.61.2 + g_array_copy@Base 2.61.2 + g_array_free@Base 2.12.0 + g_array_get_element_size@Base 2.22.0 + g_array_insert_vals@Base 2.12.0 + g_array_new@Base 2.12.0 + g_array_prepend_vals@Base 2.12.0 + g_array_ref@Base 2.22.0 + g_array_remove_index@Base 2.12.0 + g_array_remove_index_fast@Base 2.12.0 + g_array_remove_range@Base 2.12.0 + g_array_set_clear_func@Base 2.31.18 + g_array_set_size@Base 2.12.0 + g_array_sized_new@Base 2.12.0 + g_array_sort@Base 2.12.0 + g_array_sort_with_data@Base 2.12.0 + g_array_steal@Base 2.63.1 + g_array_unref@Base 2.22.0 + g_ascii_digit_value@Base 2.12.0 + g_ascii_dtostr@Base 2.12.0 + g_ascii_formatd@Base 2.12.0 + g_ascii_strcasecmp@Base 2.12.0 + g_ascii_strdown@Base 2.12.0 + g_ascii_string_to_signed@Base 2.53.2 + g_ascii_string_to_unsigned@Base 2.53.2 + g_ascii_strncasecmp@Base 2.12.0 + g_ascii_strtod@Base 2.12.0 + g_ascii_strtoll@Base 2.12.0 + g_ascii_strtoull@Base 2.12.0 + g_ascii_strup@Base 2.12.0 + g_ascii_table@Base 2.12.0 + g_ascii_tolower@Base 2.12.0 + g_ascii_toupper@Base 2.12.0 + g_ascii_xdigit_value@Base 2.12.0 + g_assert_warning@Base 2.12.0 + g_assertion_message@Base 2.16.0 + g_assertion_message_cmpnum@Base 2.16.0 + g_assertion_message_cmpstr@Base 2.16.0 + g_assertion_message_cmpstrv@Base 2.67.1 + g_assertion_message_error@Base 2.20.0 + g_assertion_message_expr@Base 2.16.0 + g_async_queue_length@Base 2.12.0 + g_async_queue_length_unlocked@Base 2.12.0 + g_async_queue_lock@Base 2.12.0 + g_async_queue_new@Base 2.12.0 + g_async_queue_new_full@Base 2.16.0 + g_async_queue_pop@Base 2.12.0 + g_async_queue_pop_unlocked@Base 2.12.0 + g_async_queue_push@Base 2.12.0 + g_async_queue_push_front@Base 2.45.4 + g_async_queue_push_front_unlocked@Base 2.45.4 + g_async_queue_push_sorted@Base 2.12.0 + g_async_queue_push_sorted_unlocked@Base 2.12.0 + g_async_queue_push_unlocked@Base 2.12.0 + g_async_queue_ref@Base 2.12.0 + g_async_queue_ref_unlocked@Base 2.12.0 + g_async_queue_remove@Base 2.45.4 + g_async_queue_remove_unlocked@Base 2.45.4 + g_async_queue_sort@Base 2.12.0 + g_async_queue_sort_unlocked@Base 2.12.0 + g_async_queue_timed_pop@Base 2.12.0 + g_async_queue_timed_pop_unlocked@Base 2.12.0 + g_async_queue_timeout_pop@Base 2.31.18 + g_async_queue_timeout_pop_unlocked@Base 2.31.18 + g_async_queue_try_pop@Base 2.12.0 + g_async_queue_try_pop_unlocked@Base 2.12.0 + g_async_queue_unlock@Base 2.12.0 + g_async_queue_unref@Base 2.12.0 + g_async_queue_unref_and_unlock@Base 2.12.0 + g_atexit@Base 2.12.0 + g_atomic_int_add@Base 2.12.0 + g_atomic_int_and@Base 2.30.0 + g_atomic_int_compare_and_exchange@Base 2.12.0 + g_atomic_int_dec_and_test@Base 2.30.0 + g_atomic_int_exchange_and_add@Base 2.12.0 + g_atomic_int_get@Base 2.12.0 + g_atomic_int_inc@Base 2.30.0 + g_atomic_int_or@Base 2.30.0 + g_atomic_int_set@Base 2.12.0 + g_atomic_int_xor@Base 2.30.0 + g_atomic_pointer_add@Base 2.30.0 + g_atomic_pointer_and@Base 2.30.0 + g_atomic_pointer_compare_and_exchange@Base 2.12.0 + g_atomic_pointer_get@Base 2.12.0 + g_atomic_pointer_or@Base 2.30.0 + g_atomic_pointer_set@Base 2.12.0 + g_atomic_pointer_xor@Base 2.30.0 + g_atomic_rc_box_acquire@Base 2.57.2 + g_atomic_rc_box_alloc@Base 2.57.2 + g_atomic_rc_box_alloc0@Base 2.57.2 + g_atomic_rc_box_dup@Base 2.57.2 + g_atomic_rc_box_get_size@Base 2.57.2 + g_atomic_rc_box_release@Base 2.57.2 + g_atomic_rc_box_release_full@Base 2.57.2 + g_atomic_ref_count_compare@Base 2.57.2 + g_atomic_ref_count_dec@Base 2.57.2 + g_atomic_ref_count_inc@Base 2.57.2 + g_atomic_ref_count_init@Base 2.57.2 + g_base64_decode@Base 2.12.0 + g_base64_decode_inplace@Base 2.20.0 + g_base64_decode_step@Base 2.12.0 + g_base64_encode@Base 2.12.0 + g_base64_encode_close@Base 2.12.0 + g_base64_encode_step@Base 2.12.0 + g_basename@Base 2.12.0 + g_bit_lock@Base 2.24.0 + g_bit_nth_lsf@Base 2.12.0 + g_bit_nth_msf@Base 2.12.0 + g_bit_storage@Base 2.12.0 + g_bit_trylock@Base 2.24.0 + g_bit_unlock@Base 2.24.0 + g_blow_chunks@Base 2.12.0 + g_bookmark_file_add_application@Base 2.12.0 + g_bookmark_file_add_group@Base 2.12.0 + g_bookmark_file_error_quark@Base 2.12.0 + g_bookmark_file_free@Base 2.12.0 + g_bookmark_file_get_added@Base 2.12.0 + g_bookmark_file_get_added_date_time@Base 2.65.1 + g_bookmark_file_get_app_info@Base 2.12.0 + g_bookmark_file_get_application_info@Base 2.65.1 + g_bookmark_file_get_applications@Base 2.12.0 + g_bookmark_file_get_description@Base 2.12.0 + g_bookmark_file_get_groups@Base 2.12.0 + g_bookmark_file_get_icon@Base 2.12.0 + g_bookmark_file_get_is_private@Base 2.12.0 + g_bookmark_file_get_mime_type@Base 2.12.0 + g_bookmark_file_get_modified@Base 2.12.0 + g_bookmark_file_get_modified_date_time@Base 2.65.1 + g_bookmark_file_get_size@Base 2.12.0 + g_bookmark_file_get_title@Base 2.12.0 + g_bookmark_file_get_uris@Base 2.12.0 + g_bookmark_file_get_visited@Base 2.12.0 + g_bookmark_file_get_visited_date_time@Base 2.65.1 + g_bookmark_file_has_application@Base 2.12.0 + g_bookmark_file_has_group@Base 2.12.0 + g_bookmark_file_has_item@Base 2.12.0 + g_bookmark_file_load_from_data@Base 2.12.0 + g_bookmark_file_load_from_data_dirs@Base 2.12.0 + g_bookmark_file_load_from_file@Base 2.12.0 + g_bookmark_file_move_item@Base 2.12.0 + g_bookmark_file_new@Base 2.12.0 + g_bookmark_file_remove_application@Base 2.12.0 + g_bookmark_file_remove_group@Base 2.12.0 + g_bookmark_file_remove_item@Base 2.12.0 + g_bookmark_file_set_added@Base 2.12.0 + g_bookmark_file_set_added_date_time@Base 2.65.1 + g_bookmark_file_set_app_info@Base 2.12.0 + g_bookmark_file_set_application_info@Base 2.65.1 + g_bookmark_file_set_description@Base 2.12.0 + g_bookmark_file_set_groups@Base 2.12.0 + g_bookmark_file_set_icon@Base 2.12.0 + g_bookmark_file_set_is_private@Base 2.12.0 + g_bookmark_file_set_mime_type@Base 2.12.0 + g_bookmark_file_set_modified@Base 2.12.0 + g_bookmark_file_set_modified_date_time@Base 2.65.1 + g_bookmark_file_set_title@Base 2.12.0 + g_bookmark_file_set_visited@Base 2.12.0 + g_bookmark_file_set_visited_date_time@Base 2.65.1 + g_bookmark_file_to_data@Base 2.12.0 + g_bookmark_file_to_file@Base 2.12.0 + g_build_filename@Base 2.12.0 + g_build_filename_valist@Base 2.55.1 + g_build_filenamev@Base 2.12.0 + g_build_path@Base 2.12.0 + g_build_pathv@Base 2.12.0 + g_byte_array_append@Base 2.12.0 + g_byte_array_free@Base 2.12.0 + g_byte_array_free_to_bytes@Base 2.31.8 + g_byte_array_new@Base 2.12.0 + g_byte_array_new_take@Base 2.31.8 + g_byte_array_prepend@Base 2.12.0 + g_byte_array_ref@Base 2.22.0 + g_byte_array_remove_index@Base 2.12.0 + g_byte_array_remove_index_fast@Base 2.12.0 + g_byte_array_remove_range@Base 2.12.0 + g_byte_array_set_size@Base 2.12.0 + g_byte_array_sized_new@Base 2.12.0 + g_byte_array_sort@Base 2.12.0 + g_byte_array_sort_with_data@Base 2.12.0 + g_byte_array_steal@Base 2.63.1 + g_byte_array_unref@Base 2.22.0 + g_bytes_compare@Base 2.31.8 + g_bytes_equal@Base 2.31.8 + g_bytes_get_data@Base 2.31.8 + g_bytes_get_region@Base 2.70.0 + g_bytes_get_size@Base 2.31.8 + g_bytes_hash@Base 2.31.8 + g_bytes_new@Base 2.31.8 + g_bytes_new_from_bytes@Base 2.31.8 + g_bytes_new_static@Base 2.31.8 + g_bytes_new_take@Base 2.31.8 + g_bytes_new_with_free_func@Base 2.31.8 + g_bytes_ref@Base 2.31.8 + g_bytes_unref@Base 2.31.8 + g_bytes_unref_to_array@Base 2.31.8 + g_bytes_unref_to_data@Base 2.31.8 + g_cache_destroy@Base 2.12.0 + g_cache_insert@Base 2.12.0 + g_cache_key_foreach@Base 2.12.0 + g_cache_new@Base 2.12.0 + g_cache_remove@Base 2.12.0 + g_cache_value_foreach@Base 2.12.0 + g_canonicalize_filename@Base 2.57.2 + g_chdir@Base 2.12.0 + g_checksum_copy@Base 2.16.0 + g_checksum_free@Base 2.16.0 + g_checksum_get_digest@Base 2.16.0 + g_checksum_get_string@Base 2.16.0 + g_checksum_new@Base 2.16.0 + g_checksum_reset@Base 2.18.0 + g_checksum_type_get_length@Base 2.16.0 + g_checksum_update@Base 2.16.0 + g_child_watch_add@Base 2.12.0 + g_child_watch_add_full@Base 2.12.0 + g_child_watch_funcs@Base 2.12.0 + g_child_watch_source_new@Base 2.12.0 + g_chmod@Base 2.12.0 + g_clear_error@Base 2.12.0 + g_clear_handle_id@Base 2.55.1 + g_clear_list@Base 2.63.3 + g_clear_pointer@Base 2.33.14 + g_clear_slist@Base 2.63.3 + g_close@Base 2.35.8 + g_completion_add_items@Base 2.12.0 + g_completion_clear_items@Base 2.12.0 + g_completion_complete@Base 2.12.0 + g_completion_complete_utf8@Base 2.12.0 + g_completion_free@Base 2.12.0 + g_completion_new@Base 2.12.0 + g_completion_remove_items@Base 2.12.0 + g_completion_set_compare@Base 2.12.0 + g_compute_checksum_for_bytes@Base 2.33.14 + g_compute_checksum_for_data@Base 2.16.0 + g_compute_checksum_for_string@Base 2.16.0 + g_compute_hmac_for_bytes@Base 2.49.3 + g_compute_hmac_for_data@Base 2.30.0 + g_compute_hmac_for_string@Base 2.30.0 + g_cond_broadcast@Base 2.31.8 + g_cond_clear@Base 2.31.8 + g_cond_free@Base 2.31.8 + g_cond_init@Base 2.31.8 + g_cond_new@Base 2.31.8 + g_cond_signal@Base 2.31.8 + g_cond_timed_wait@Base 2.31.8 + g_cond_wait@Base 2.31.8 + g_cond_wait_until@Base 2.31.8 + g_convert@Base 2.12.0 + g_convert_error_quark@Base 2.12.0 + g_convert_with_fallback@Base 2.12.0 + g_convert_with_iconv@Base 2.12.0 + g_creat@Base 2.12.0 + g_datalist_clear@Base 2.12.0 + g_datalist_foreach@Base 2.12.0 + g_datalist_get_data@Base 2.30.0 + g_datalist_get_flags@Base 2.12.0 + g_datalist_id_dup_data@Base 2.33.14 + g_datalist_id_get_data@Base 2.12.0 + g_datalist_id_remove_no_notify@Base 2.12.0 + g_datalist_id_replace_data@Base 2.33.14 + g_datalist_id_set_data_full@Base 2.12.0 + g_datalist_init@Base 2.12.0 + g_datalist_set_flags@Base 2.12.0 + g_datalist_unset_flags@Base 2.12.0 + g_dataset_destroy@Base 2.12.0 + g_dataset_foreach@Base 2.12.0 + g_dataset_id_get_data@Base 2.12.0 + g_dataset_id_remove_no_notify@Base 2.12.0 + g_dataset_id_set_data_full@Base 2.12.0 + g_date_add_days@Base 2.12.0 + g_date_add_months@Base 2.12.0 + g_date_add_years@Base 2.12.0 + g_date_clamp@Base 2.12.0 + g_date_clear@Base 2.12.0 + g_date_compare@Base 2.12.0 + g_date_copy@Base 2.55.1 + g_date_days_between@Base 2.12.0 + g_date_free@Base 2.12.0 + g_date_get_day@Base 2.12.0 + g_date_get_day_of_year@Base 2.12.0 + g_date_get_days_in_month@Base 2.12.0 + g_date_get_iso8601_week_of_year@Base 2.12.0 + g_date_get_julian@Base 2.12.0 + g_date_get_monday_week_of_year@Base 2.12.0 + g_date_get_monday_weeks_in_year@Base 2.12.0 + g_date_get_month@Base 2.12.0 + g_date_get_sunday_week_of_year@Base 2.12.0 + g_date_get_sunday_weeks_in_year@Base 2.12.0 + g_date_get_weekday@Base 2.12.0 + g_date_get_year@Base 2.12.0 + g_date_is_first_of_month@Base 2.12.0 + g_date_is_last_of_month@Base 2.12.0 + g_date_is_leap_year@Base 2.12.0 + g_date_new@Base 2.12.0 + g_date_new_dmy@Base 2.12.0 + g_date_new_julian@Base 2.12.0 + g_date_order@Base 2.12.0 + g_date_set_day@Base 2.12.0 + g_date_set_dmy@Base 2.12.0 + g_date_set_julian@Base 2.12.0 + g_date_set_month@Base 2.12.0 + g_date_set_parse@Base 2.12.0 + g_date_set_time@Base 2.12.0 + g_date_set_time_t@Base 2.12.0 + g_date_set_time_val@Base 2.12.0 + g_date_set_year@Base 2.12.0 + g_date_strftime@Base 2.12.0 + g_date_subtract_days@Base 2.12.0 + g_date_subtract_months@Base 2.12.0 + g_date_subtract_years@Base 2.12.0 + g_date_time_add@Base 2.26.0 + g_date_time_add_days@Base 2.26.0 + g_date_time_add_full@Base 2.26.0 + g_date_time_add_hours@Base 2.26.0 + g_date_time_add_minutes@Base 2.26.0 + g_date_time_add_months@Base 2.26.0 + g_date_time_add_seconds@Base 2.26.0 + g_date_time_add_weeks@Base 2.26.0 + g_date_time_add_years@Base 2.26.0 + g_date_time_compare@Base 2.26.0 + g_date_time_difference@Base 2.26.0 + g_date_time_equal@Base 2.26.0 + g_date_time_format@Base 2.26.0 + g_date_time_format_iso8601@Base 2.61.2 + g_date_time_get_day_of_month@Base 2.26.0 + g_date_time_get_day_of_week@Base 2.26.0 + g_date_time_get_day_of_year@Base 2.26.0 + g_date_time_get_hour@Base 2.26.0 + g_date_time_get_microsecond@Base 2.26.0 + g_date_time_get_minute@Base 2.26.0 + g_date_time_get_month@Base 2.26.0 + g_date_time_get_second@Base 2.26.0 + g_date_time_get_seconds@Base 2.26.0 + g_date_time_get_timezone@Base 2.57.2 + g_date_time_get_timezone_abbreviation@Base 2.26.0 + g_date_time_get_utc_offset@Base 2.26.0 + g_date_time_get_week_numbering_year@Base 2.28.0 + g_date_time_get_week_of_year@Base 2.26.0 + g_date_time_get_year@Base 2.26.0 + g_date_time_get_ymd@Base 2.26.0 + g_date_time_hash@Base 2.26.0 + g_date_time_is_daylight_savings@Base 2.26.0 + g_date_time_new@Base 2.26.0 + g_date_time_new_from_iso8601@Base 2.55.1 + g_date_time_new_from_timeval_local@Base 2.26.0 + g_date_time_new_from_timeval_utc@Base 2.26.0 + g_date_time_new_from_unix_local@Base 2.26.0 + g_date_time_new_from_unix_utc@Base 2.26.0 + g_date_time_new_local@Base 2.26.0 + g_date_time_new_now@Base 2.26.0 + g_date_time_new_now_local@Base 2.26.0 + g_date_time_new_now_utc@Base 2.26.0 + g_date_time_new_utc@Base 2.26.0 + g_date_time_ref@Base 2.26.0 + g_date_time_to_local@Base 2.26.0 + g_date_time_to_timeval@Base 2.26.0 + g_date_time_to_timezone@Base 2.26.0 + g_date_time_to_unix@Base 2.26.0 + g_date_time_to_utc@Base 2.26.0 + g_date_time_unref@Base 2.26.0 + g_date_to_struct_tm@Base 2.12.0 + g_date_valid@Base 2.12.0 + g_date_valid_day@Base 2.12.0 + g_date_valid_dmy@Base 2.12.0 + g_date_valid_julian@Base 2.12.0 + g_date_valid_month@Base 2.12.0 + g_date_valid_weekday@Base 2.12.0 + g_date_valid_year@Base 2.12.0 + g_dcgettext@Base 2.26.0 + g_dgettext@Base 2.18.0 + g_dir_close@Base 2.12.0 + g_dir_make_tmp@Base 2.30.0 + g_dir_open@Base 2.12.0 + g_dir_read_name@Base 2.12.0 + g_dir_rewind@Base 2.12.0 + g_direct_equal@Base 2.12.0 + g_direct_hash@Base 2.12.0 + g_dngettext@Base 2.18.0 + g_double_equal@Base 2.22.0 + g_double_hash@Base 2.22.0 + g_dpgettext2@Base 2.18.0 + g_dpgettext@Base 2.16.0 + g_environ_getenv@Base 2.31.8 + g_environ_setenv@Base 2.31.8 + g_environ_unsetenv@Base 2.31.8 + g_error_copy@Base 2.12.0 + g_error_domain_register@Base 2.67.2 + g_error_domain_register_static@Base 2.67.2 + g_error_free@Base 2.12.0 + g_error_matches@Base 2.12.0 + g_error_new@Base 2.12.0 + g_error_new_literal@Base 2.12.0 + g_error_new_valist@Base 2.22.0 + g_file_error_from_errno@Base 2.12.0 + g_file_error_quark@Base 2.12.0 + g_file_get_contents@Base 2.12.0 + g_file_open_tmp@Base 2.12.0 + g_file_read_link@Base 2.12.0 + g_file_set_contents@Base 2.12.0 + g_file_set_contents_full@Base 2.65.1 + g_file_test@Base 2.12.0 + g_filename_display_basename@Base 2.12.0 + g_filename_display_name@Base 2.12.0 + g_filename_from_uri@Base 2.12.0 + g_filename_from_utf8@Base 2.12.0 + g_filename_to_uri@Base 2.12.0 + g_filename_to_utf8@Base 2.12.0 + g_find_program_in_path@Base 2.12.0 + g_fopen@Base 2.12.0 + g_format_size@Base 2.30.0 + g_format_size_for_display@Base 2.16.0 + g_format_size_full@Base 2.30.0 + g_fprintf@Base 2.12.0 + g_free@Base 2.12.0 + g_freopen@Base 2.12.0 + g_fsync@Base 2.63.1 + g_get_application_name@Base 2.12.0 + g_get_charset@Base 2.12.0 + g_get_codeset@Base 2.12.0 + g_get_console_charset@Base 2.61.2 + g_get_current_dir@Base 2.12.0 + g_get_current_time@Base 2.12.0 + g_get_environ@Base 2.28.0 + g_get_filename_charsets@Base 2.12.0 + g_get_home_dir@Base 2.35.9 + g_get_host_name@Base 2.12.0 + g_get_language_names@Base 2.12.0 + g_get_language_names_with_category@Base 2.57.2 + g_get_locale_variants@Base 2.28.0 + g_get_monotonic_time@Base 2.28.0 + g_get_num_processors@Base 2.35.8 + g_get_os_info@Base 2.63.1 + g_get_prgname@Base 2.12.0 + g_get_real_name@Base 2.12.0 + g_get_real_time@Base 2.28.0 + g_get_system_config_dirs@Base 2.12.0 + g_get_system_data_dirs@Base 2.12.0 + g_get_tmp_dir@Base 2.12.0 + g_get_user_cache_dir@Base 2.12.0 + g_get_user_config_dir@Base 2.12.0 + g_get_user_data_dir@Base 2.12.0 + g_get_user_name@Base 2.12.0 + g_get_user_runtime_dir@Base 2.28.0 + g_get_user_special_dir@Base 2.14.0 + g_get_user_state_dir@Base 2.71.1 + g_getenv@Base 2.12.0 + g_hash_table_add@Base 2.31.8 + g_hash_table_contains@Base 2.31.8 + g_hash_table_destroy@Base 2.12.0 + g_hash_table_find@Base 2.12.0 + g_hash_table_foreach@Base 2.12.0 + g_hash_table_foreach_remove@Base 2.12.0 + g_hash_table_foreach_steal@Base 2.12.0 + g_hash_table_get_keys@Base 2.14.0 + g_hash_table_get_keys_as_array@Base 2.39.4 + g_hash_table_get_values@Base 2.14.0 + g_hash_table_insert@Base 2.12.0 + g_hash_table_iter_get_hash_table@Base 2.16.0 + g_hash_table_iter_init@Base 2.16.0 + g_hash_table_iter_next@Base 2.16.0 + g_hash_table_iter_remove@Base 2.16.0 + g_hash_table_iter_replace@Base 2.30.0 + g_hash_table_iter_steal@Base 2.16.0 + g_hash_table_lookup@Base 2.12.0 + g_hash_table_lookup_extended@Base 2.12.0 + g_hash_table_new@Base 2.12.0 + g_hash_table_new_full@Base 2.12.0 + g_hash_table_new_similar@Base 2.71.1 + g_hash_table_ref@Base 2.12.0 + g_hash_table_remove@Base 2.12.0 + g_hash_table_remove_all@Base 2.12.0 + g_hash_table_replace@Base 2.12.0 + g_hash_table_size@Base 2.12.0 + g_hash_table_steal@Base 2.12.0 + g_hash_table_steal_all@Base 2.12.0 + g_hash_table_steal_extended@Base 2.57.2 + g_hash_table_unref@Base 2.12.0 + g_hmac_copy@Base 2.30.0 + g_hmac_get_digest@Base 2.30.0 + g_hmac_get_string@Base 2.30.0 + g_hmac_new@Base 2.30.0 + g_hmac_ref@Base 2.30.0 + g_hmac_unref@Base 2.30.0 + g_hmac_update@Base 2.30.0 + g_hook_alloc@Base 2.12.0 + g_hook_compare_ids@Base 2.12.0 + g_hook_destroy@Base 2.12.0 + g_hook_destroy_link@Base 2.12.0 + g_hook_find@Base 2.12.0 + g_hook_find_data@Base 2.12.0 + g_hook_find_func@Base 2.12.0 + g_hook_find_func_data@Base 2.12.0 + g_hook_first_valid@Base 2.12.0 + g_hook_free@Base 2.12.0 + g_hook_get@Base 2.12.0 + g_hook_insert_before@Base 2.12.0 + g_hook_insert_sorted@Base 2.12.0 + g_hook_list_clear@Base 2.12.0 + g_hook_list_init@Base 2.12.0 + g_hook_list_invoke@Base 2.12.0 + g_hook_list_invoke_check@Base 2.12.0 + g_hook_list_marshal@Base 2.12.0 + g_hook_list_marshal_check@Base 2.12.0 + g_hook_next_valid@Base 2.12.0 + g_hook_prepend@Base 2.12.0 + g_hook_ref@Base 2.12.0 + g_hook_unref@Base 2.12.0 + g_hostname_is_ascii_encoded@Base 2.22.0 + g_hostname_is_ip_address@Base 2.22.0 + g_hostname_is_non_ascii@Base 2.22.0 + g_hostname_to_ascii@Base 2.22.0 + g_hostname_to_unicode@Base 2.22.0 + g_iconv@Base 2.12.0 + g_iconv_close@Base 2.12.0 + g_iconv_open@Base 2.12.0 + g_idle_add@Base 2.12.0 + g_idle_add_full@Base 2.12.0 + g_idle_funcs@Base 2.12.0 + g_idle_remove_by_data@Base 2.12.0 + g_idle_source_new@Base 2.12.0 + g_int64_equal@Base 2.22.0 + g_int64_hash@Base 2.22.0 + g_int_equal@Base 2.12.0 + g_int_hash@Base 2.12.0 + g_intern_static_string@Base 2.12.0 + g_intern_string@Base 2.12.0 + g_io_add_watch@Base 2.12.0 + g_io_add_watch_full@Base 2.12.0 + g_io_channel_close@Base 2.12.0 + g_io_channel_error_from_errno@Base 2.12.0 + g_io_channel_error_quark@Base 2.12.0 + g_io_channel_flush@Base 2.12.0 + g_io_channel_get_buffer_condition@Base 2.12.0 + g_io_channel_get_buffer_size@Base 2.12.0 + g_io_channel_get_buffered@Base 2.12.0 + g_io_channel_get_close_on_unref@Base 2.12.0 + g_io_channel_get_encoding@Base 2.12.0 + g_io_channel_get_flags@Base 2.12.0 + g_io_channel_get_line_term@Base 2.12.0 + g_io_channel_init@Base 2.12.0 + g_io_channel_new_file@Base 2.12.0 + g_io_channel_read@Base 2.12.0 + g_io_channel_read_chars@Base 2.12.0 + g_io_channel_read_line@Base 2.12.0 + g_io_channel_read_line_string@Base 2.12.0 + g_io_channel_read_to_end@Base 2.12.0 + g_io_channel_read_unichar@Base 2.12.0 + g_io_channel_ref@Base 2.12.0 + g_io_channel_seek@Base 2.12.0 + g_io_channel_seek_position@Base 2.12.0 + g_io_channel_set_buffer_size@Base 2.12.0 + g_io_channel_set_buffered@Base 2.12.0 + g_io_channel_set_close_on_unref@Base 2.12.0 + g_io_channel_set_encoding@Base 2.12.0 + g_io_channel_set_flags@Base 2.12.0 + g_io_channel_set_line_term@Base 2.12.0 + g_io_channel_shutdown@Base 2.12.0 + g_io_channel_unix_get_fd@Base 2.12.0 + g_io_channel_unix_new@Base 2.12.0 + g_io_channel_unref@Base 2.12.0 + g_io_channel_write@Base 2.12.0 + g_io_channel_write_chars@Base 2.12.0 + g_io_channel_write_unichar@Base 2.12.0 + g_io_create_watch@Base 2.12.0 + g_io_watch_funcs@Base 2.12.0 + g_key_file_error_quark@Base 2.12.0 + g_key_file_free@Base 2.12.0 + g_key_file_get_boolean@Base 2.12.0 + g_key_file_get_boolean_list@Base 2.12.0 + g_key_file_get_comment@Base 2.12.0 + g_key_file_get_double@Base 2.12.0 + g_key_file_get_double_list@Base 2.12.0 + g_key_file_get_groups@Base 2.12.0 + g_key_file_get_int64@Base 2.26.0 + g_key_file_get_integer@Base 2.12.0 + g_key_file_get_integer_list@Base 2.12.0 + g_key_file_get_keys@Base 2.12.0 + g_key_file_get_locale_for_key@Base 2.55.2 + g_key_file_get_locale_string@Base 2.12.0 + g_key_file_get_locale_string_list@Base 2.12.0 + g_key_file_get_start_group@Base 2.12.0 + g_key_file_get_string@Base 2.12.0 + g_key_file_get_string_list@Base 2.12.0 + g_key_file_get_uint64@Base 2.26.0 + g_key_file_get_value@Base 2.12.0 + g_key_file_has_group@Base 2.12.0 + g_key_file_has_key@Base 2.12.0 + g_key_file_load_from_bytes@Base 2.49.3 + g_key_file_load_from_data@Base 2.12.0 + g_key_file_load_from_data_dirs@Base 2.12.0 + g_key_file_load_from_dirs@Base 2.14.0 + g_key_file_load_from_file@Base 2.12.0 + g_key_file_new@Base 2.12.0 + g_key_file_ref@Base 2.31.8 + g_key_file_remove_comment@Base 2.12.0 + g_key_file_remove_group@Base 2.12.0 + g_key_file_remove_key@Base 2.12.0 + g_key_file_save_to_file@Base 2.39.4 + g_key_file_set_boolean@Base 2.12.0 + g_key_file_set_boolean_list@Base 2.12.0 + g_key_file_set_comment@Base 2.12.0 + g_key_file_set_double@Base 2.12.0 + g_key_file_set_double_list@Base 2.12.0 + g_key_file_set_int64@Base 2.26.0 + g_key_file_set_integer@Base 2.12.0 + g_key_file_set_integer_list@Base 2.12.0 + g_key_file_set_list_separator@Base 2.12.0 + g_key_file_set_locale_string@Base 2.12.0 + g_key_file_set_locale_string_list@Base 2.12.0 + g_key_file_set_string@Base 2.12.0 + g_key_file_set_string_list@Base 2.12.0 + g_key_file_set_uint64@Base 2.26.0 + g_key_file_set_value@Base 2.12.0 + g_key_file_to_data@Base 2.12.0 + g_key_file_unref@Base 2.31.8 + g_list_alloc@Base 2.12.0 + g_list_append@Base 2.12.0 + g_list_concat@Base 2.12.0 + g_list_copy@Base 2.12.0 + g_list_copy_deep@Base 2.33.14 + g_list_delete_link@Base 2.12.0 + g_list_find@Base 2.12.0 + g_list_find_custom@Base 2.12.0 + g_list_first@Base 2.12.0 + g_list_foreach@Base 2.12.0 + g_list_free@Base 2.12.0 + g_list_free_1@Base 2.12.0 + g_list_free_full@Base 2.28.0 + g_list_index@Base 2.12.0 + g_list_insert@Base 2.12.0 + g_list_insert_before@Base 2.12.0 + g_list_insert_before_link@Base 2.61.1 + g_list_insert_sorted@Base 2.12.0 + g_list_insert_sorted_with_data@Base 2.12.0 + g_list_last@Base 2.12.0 + g_list_length@Base 2.12.0 + g_list_nth@Base 2.12.0 + g_list_nth_data@Base 2.12.0 + g_list_nth_prev@Base 2.12.0 + g_list_pop_allocator@Base 2.12.0 + g_list_position@Base 2.12.0 + g_list_prepend@Base 2.12.0 + g_list_push_allocator@Base 2.12.0 + g_list_remove@Base 2.12.0 + g_list_remove_all@Base 2.12.0 + g_list_remove_link@Base 2.12.0 + g_list_reverse@Base 2.12.0 + g_list_sort@Base 2.12.0 + g_list_sort_with_data@Base 2.12.0 + g_listenv@Base 2.12.0 + g_locale_from_utf8@Base 2.12.0 + g_locale_to_utf8@Base 2.12.0 + g_log@Base 2.12.0 + g_log_default_handler@Base 2.12.0 + g_log_get_debug_enabled@Base 2.71.1 + g_log_remove_handler@Base 2.12.0 + g_log_set_always_fatal@Base 2.12.0 + g_log_set_debug_enabled@Base 2.71.1 + g_log_set_default_handler@Base 2.12.0 + g_log_set_fatal_mask@Base 2.12.0 + g_log_set_handler@Base 2.12.0 + g_log_set_handler_full@Base 2.45.3 + g_log_set_writer_func@Base 2.49.3 + g_log_structured@Base 2.49.3 + g_log_structured_array@Base 2.49.3 + g_log_structured_standard@Base 2.55.2 + g_log_variant@Base 2.49.7 + g_log_writer_default@Base 2.49.3 + g_log_writer_default_set_use_stderr@Base 2.67.1 + g_log_writer_default_would_drop@Base 2.67.1 + g_log_writer_format_fields@Base 2.49.3 + g_log_writer_is_journald@Base 2.49.3 + g_log_writer_journald@Base 2.49.3 + g_log_writer_standard_streams@Base 2.49.3 + g_log_writer_supports_color@Base 2.49.3 + g_logv@Base 2.12.0 + g_lstat@Base 2.12.0 + g_main_context_acquire@Base 2.12.0 + g_main_context_add_poll@Base 2.12.0 + g_main_context_check@Base 2.12.0 + g_main_context_default@Base 2.12.0 + g_main_context_dispatch@Base 2.12.0 + g_main_context_find_source_by_funcs_user_data@Base 2.12.0 + g_main_context_find_source_by_id@Base 2.12.0 + g_main_context_find_source_by_user_data@Base 2.12.0 + g_main_context_get_poll_func@Base 2.12.0 + g_main_context_get_thread_default@Base 2.22.0 + g_main_context_invoke@Base 2.28.0 + g_main_context_invoke_full@Base 2.28.0 + g_main_context_is_owner@Base 2.12.0 + g_main_context_iteration@Base 2.12.0 + g_main_context_new@Base 2.12.0 + g_main_context_new_with_flags@Base 2.71.0 + g_main_context_pending@Base 2.12.0 + g_main_context_pop_thread_default@Base 2.22.0 + g_main_context_prepare@Base 2.12.0 + g_main_context_push_thread_default@Base 2.22.0 + g_main_context_query@Base 2.12.0 + g_main_context_ref@Base 2.12.0 + g_main_context_ref_thread_default@Base 2.31.8 + g_main_context_release@Base 2.12.0 + g_main_context_remove_poll@Base 2.12.0 + g_main_context_set_poll_func@Base 2.12.0 + g_main_context_unref@Base 2.12.0 + g_main_context_wait@Base 2.12.0 + g_main_context_wakeup@Base 2.12.0 + g_main_current_source@Base 2.12.0 + g_main_depth@Base 2.12.0 + g_main_loop_get_context@Base 2.12.0 + g_main_loop_is_running@Base 2.12.0 + g_main_loop_new@Base 2.12.0 + g_main_loop_quit@Base 2.12.0 + g_main_loop_ref@Base 2.12.0 + g_main_loop_run@Base 2.12.0 + g_main_loop_unref@Base 2.12.0 + g_malloc0@Base 2.12.0 + g_malloc0_n@Base 2.24.0 + g_malloc@Base 2.12.0 + g_malloc_n@Base 2.24.0 + g_mapped_file_free@Base 2.12.0 + g_mapped_file_get_bytes@Base 2.33.14 + g_mapped_file_get_contents@Base 2.12.0 + g_mapped_file_get_length@Base 2.12.0 + g_mapped_file_new@Base 2.12.0 + g_mapped_file_new_from_fd@Base 2.31.8 + g_mapped_file_ref@Base 2.22.0 + g_mapped_file_unref@Base 2.22.0 + g_markup_collect_attributes@Base 2.16.0 + g_markup_error_quark@Base 2.12.0 + g_markup_escape_text@Base 2.12.0 + g_markup_parse_context_end_parse@Base 2.12.0 + g_markup_parse_context_free@Base 2.12.0 + g_markup_parse_context_get_element@Base 2.12.0 + g_markup_parse_context_get_element_stack@Base 2.16.0 + g_markup_parse_context_get_position@Base 2.12.0 + g_markup_parse_context_get_user_data@Base 2.18.0 + g_markup_parse_context_new@Base 2.12.0 + g_markup_parse_context_parse@Base 2.12.0 + g_markup_parse_context_pop@Base 2.18.0 + g_markup_parse_context_push@Base 2.18.0 + g_markup_parse_context_ref@Base 2.35.8 + g_markup_parse_context_unref@Base 2.35.8 + g_markup_printf_escaped@Base 2.12.0 + g_markup_vprintf_escaped@Base 2.12.0 + g_match_info_expand_references@Base 2.14.0 + g_match_info_fetch@Base 2.14.0 + g_match_info_fetch_all@Base 2.14.0 + g_match_info_fetch_named@Base 2.14.0 + g_match_info_fetch_named_pos@Base 2.14.0 + g_match_info_fetch_pos@Base 2.14.0 + g_match_info_free@Base 2.14.0 + g_match_info_get_match_count@Base 2.14.0 + g_match_info_get_regex@Base 2.14.0 + g_match_info_get_string@Base 2.14.0 + g_match_info_is_partial_match@Base 2.14.0 + g_match_info_matches@Base 2.14.0 + g_match_info_next@Base 2.14.0 + g_match_info_ref@Base 2.30.0 + g_match_info_unref@Base 2.30.0 + g_mem_chunk_alloc0@Base 2.12.0 + g_mem_chunk_alloc@Base 2.12.0 + g_mem_chunk_clean@Base 2.12.0 + g_mem_chunk_destroy@Base 2.12.0 + g_mem_chunk_free@Base 2.12.0 + g_mem_chunk_info@Base 2.12.0 + g_mem_chunk_new@Base 2.12.0 + g_mem_chunk_print@Base 2.12.0 + g_mem_chunk_reset@Base 2.12.0 + g_mem_gc_friendly@Base 2.12.0 + g_mem_is_system_malloc@Base 2.12.0 + g_mem_profile@Base 2.12.0 + g_mem_set_vtable@Base 2.12.0 + g_memdup2@Base 2.67.3 + g_memdup@Base 2.12.0 + g_mkdir@Base 2.12.0 + g_mkdir_with_parents@Base 2.12.0 + g_mkdtemp@Base 2.30.0 + g_mkdtemp_full@Base 2.30.0 + g_mkstemp@Base 2.12.0 + g_mkstemp_full@Base 2.22.0 + g_mutex_clear@Base 2.31.8 + g_mutex_free@Base 2.31.8 + g_mutex_init@Base 2.31.8 + g_mutex_lock@Base 2.31.8 + g_mutex_new@Base 2.31.8 + g_mutex_trylock@Base 2.31.8 + g_mutex_unlock@Base 2.31.8 + g_node_child_index@Base 2.12.0 + g_node_child_position@Base 2.12.0 + g_node_children_foreach@Base 2.12.0 + g_node_copy@Base 2.12.0 + g_node_copy_deep@Base 2.12.0 + g_node_depth@Base 2.12.0 + g_node_destroy@Base 2.12.0 + g_node_find@Base 2.12.0 + g_node_find_child@Base 2.12.0 + g_node_first_sibling@Base 2.12.0 + g_node_get_root@Base 2.12.0 + g_node_insert@Base 2.12.0 + g_node_insert_after@Base 2.12.0 + g_node_insert_before@Base 2.12.0 + g_node_is_ancestor@Base 2.12.0 + g_node_last_child@Base 2.12.0 + g_node_last_sibling@Base 2.12.0 + g_node_max_height@Base 2.12.0 + g_node_n_children@Base 2.12.0 + g_node_n_nodes@Base 2.12.0 + g_node_new@Base 2.12.0 + g_node_nth_child@Base 2.12.0 + g_node_pop_allocator@Base 2.12.0 + g_node_prepend@Base 2.12.0 + g_node_push_allocator@Base 2.12.0 + g_node_reverse_children@Base 2.12.0 + g_node_traverse@Base 2.12.0 + g_node_unlink@Base 2.12.0 + g_nullify_pointer@Base 2.12.0 + g_number_parser_error_quark@Base 2.53.2 + g_on_error_query@Base 2.12.0 + g_on_error_stack_trace@Base 2.12.0 + g_once_impl@Base 2.12.0 + g_once_init_enter@Base 2.14.0 + g_once_init_enter_impl@Base 2.14.0 + g_once_init_leave@Base 2.14.0 + g_open@Base 2.12.0 + g_option_context_add_group@Base 2.12.0 + g_option_context_add_main_entries@Base 2.12.0 + g_option_context_free@Base 2.12.0 + g_option_context_get_description@Base 2.12.0 + g_option_context_get_help@Base 2.14.0 + g_option_context_get_help_enabled@Base 2.12.0 + g_option_context_get_ignore_unknown_options@Base 2.12.0 + g_option_context_get_main_group@Base 2.12.0 + g_option_context_get_strict_posix@Base 2.43.1 + g_option_context_get_summary@Base 2.12.0 + g_option_context_new@Base 2.12.0 + g_option_context_parse@Base 2.12.0 + g_option_context_parse_strv@Base 2.39.4 + g_option_context_set_description@Base 2.12.0 + g_option_context_set_help_enabled@Base 2.12.0 + g_option_context_set_ignore_unknown_options@Base 2.12.0 + g_option_context_set_main_group@Base 2.12.0 + g_option_context_set_strict_posix@Base 2.43.1 + g_option_context_set_summary@Base 2.12.0 + g_option_context_set_translate_func@Base 2.12.0 + g_option_context_set_translation_domain@Base 2.12.0 + g_option_error_quark@Base 2.12.0 + g_option_group_add_entries@Base 2.12.0 + g_option_group_free@Base 2.12.0 + g_option_group_new@Base 2.12.0 + g_option_group_ref@Base 2.43.90 + g_option_group_set_error_hook@Base 2.12.0 + g_option_group_set_parse_hooks@Base 2.12.0 + g_option_group_set_translate_func@Base 2.12.0 + g_option_group_set_translation_domain@Base 2.12.0 + g_option_group_unref@Base 2.43.90 + g_parse_debug_string@Base 2.12.0 + g_path_get_basename@Base 2.12.0 + g_path_get_dirname@Base 2.12.0 + g_path_is_absolute@Base 2.12.0 + g_path_skip_root@Base 2.12.0 + g_pattern_match@Base 2.12.0 + g_pattern_match_simple@Base 2.12.0 + g_pattern_match_string@Base 2.12.0 + g_pattern_spec_copy@Base 2.70.0 + g_pattern_spec_equal@Base 2.12.0 + g_pattern_spec_free@Base 2.12.0 + g_pattern_spec_match@Base 2.70.0 + g_pattern_spec_match_string@Base 2.70.0 + g_pattern_spec_new@Base 2.12.0 + g_pointer_bit_lock@Base 2.30.0 + g_pointer_bit_trylock@Base 2.30.0 + g_pointer_bit_unlock@Base 2.30.0 + g_poll@Base 2.20.0 + g_prefix_error@Base 2.16.0 + g_prefix_error_literal@Base 2.70.0 + g_print@Base 2.12.0 + g_printerr@Base 2.12.0 + g_printf@Base 2.12.0 + g_printf_string_upper_bound@Base 2.12.0 + g_private_get@Base 2.31.8 + g_private_new@Base 2.31.8 + g_private_replace@Base 2.31.8 + g_private_set@Base 2.31.8 + g_propagate_error@Base 2.12.0 + g_propagate_prefixed_error@Base 2.16.0 + g_ptr_array_add@Base 2.12.0 + g_ptr_array_copy@Base 2.61.2 + g_ptr_array_extend@Base 2.61.2 + g_ptr_array_extend_and_steal@Base 2.61.2 + g_ptr_array_find@Base 2.53.2 + g_ptr_array_find_with_equal_func@Base 2.53.2 + g_ptr_array_foreach@Base 2.12.0 + g_ptr_array_free@Base 2.12.0 + g_ptr_array_insert@Base 2.39.4 + g_ptr_array_new@Base 2.12.0 + g_ptr_array_new_full@Base 2.30.0 + g_ptr_array_new_with_free_func@Base 2.22.0 + g_ptr_array_ref@Base 2.22.0 + g_ptr_array_remove@Base 2.12.0 + g_ptr_array_remove_fast@Base 2.12.0 + g_ptr_array_remove_index@Base 2.12.0 + g_ptr_array_remove_index_fast@Base 2.12.0 + g_ptr_array_remove_range@Base 2.12.0 + g_ptr_array_set_free_func@Base 2.22.0 + g_ptr_array_set_size@Base 2.12.0 + g_ptr_array_sized_new@Base 2.12.0 + g_ptr_array_sort@Base 2.12.0 + g_ptr_array_sort_with_data@Base 2.12.0 + g_ptr_array_steal@Base 2.63.1 + g_ptr_array_steal_index@Base 2.57.2 + g_ptr_array_steal_index_fast@Base 2.57.2 + g_ptr_array_unref@Base 2.22.0 + g_qsort_with_data@Base 2.12.0 + g_quark_from_static_string@Base 2.12.0 + g_quark_from_string@Base 2.12.0 + g_quark_to_string@Base 2.12.0 + g_quark_try_string@Base 2.12.0 + g_queue_clear@Base 2.14.0 + g_queue_clear_full@Base 2.59.2 + g_queue_copy@Base 2.12.0 + g_queue_delete_link@Base 2.12.0 + g_queue_find@Base 2.12.0 + g_queue_find_custom@Base 2.12.0 + g_queue_foreach@Base 2.12.0 + g_queue_free@Base 2.12.0 + g_queue_free_full@Base 2.31.8 + g_queue_get_length@Base 2.12.0 + g_queue_index@Base 2.12.0 + g_queue_init@Base 2.14.0 + g_queue_insert_after@Base 2.12.0 + g_queue_insert_after_link@Base 2.61.1 + g_queue_insert_before@Base 2.12.0 + g_queue_insert_before_link@Base 2.61.1 + g_queue_insert_sorted@Base 2.12.0 + g_queue_is_empty@Base 2.12.0 + g_queue_link_index@Base 2.12.0 + g_queue_new@Base 2.12.0 + g_queue_peek_head@Base 2.12.0 + g_queue_peek_head_link@Base 2.12.0 + g_queue_peek_nth@Base 2.12.0 + g_queue_peek_nth_link@Base 2.12.0 + g_queue_peek_tail@Base 2.12.0 + g_queue_peek_tail_link@Base 2.12.0 + g_queue_pop_head@Base 2.12.0 + g_queue_pop_head_link@Base 2.12.0 + g_queue_pop_nth@Base 2.12.0 + g_queue_pop_nth_link@Base 2.12.0 + g_queue_pop_tail@Base 2.12.0 + g_queue_pop_tail_link@Base 2.12.0 + g_queue_push_head@Base 2.12.0 + g_queue_push_head_link@Base 2.12.0 + g_queue_push_nth@Base 2.12.0 + g_queue_push_nth_link@Base 2.12.0 + g_queue_push_tail@Base 2.12.0 + g_queue_push_tail_link@Base 2.12.0 + g_queue_remove@Base 2.12.0 + g_queue_remove_all@Base 2.12.0 + g_queue_reverse@Base 2.12.0 + g_queue_sort@Base 2.12.0 + g_queue_unlink@Base 2.12.0 + g_rand_copy@Base 2.12.0 + g_rand_double@Base 2.12.0 + g_rand_double_range@Base 2.12.0 + g_rand_free@Base 2.12.0 + g_rand_int@Base 2.12.0 + g_rand_int_range@Base 2.12.0 + g_rand_new@Base 2.12.0 + g_rand_new_with_seed@Base 2.12.0 + g_rand_new_with_seed_array@Base 2.12.0 + g_rand_set_seed@Base 2.12.0 + g_rand_set_seed_array@Base 2.12.0 + g_random_double@Base 2.12.0 + g_random_double_range@Base 2.12.0 + g_random_int@Base 2.12.0 + g_random_int_range@Base 2.12.0 + g_random_set_seed@Base 2.12.0 + g_rc_box_acquire@Base 2.57.2 + g_rc_box_alloc@Base 2.57.2 + g_rc_box_alloc0@Base 2.57.2 + g_rc_box_dup@Base 2.57.2 + g_rc_box_get_size@Base 2.57.2 + g_rc_box_release@Base 2.57.2 + g_rc_box_release_full@Base 2.57.2 + g_realloc@Base 2.12.0 + g_realloc_n@Base 2.24.0 + g_rec_mutex_clear@Base 2.31.8 + g_rec_mutex_init@Base 2.31.8 + g_rec_mutex_lock@Base 2.31.8 + g_rec_mutex_trylock@Base 2.31.8 + g_rec_mutex_unlock@Base 2.31.8 + g_ref_count_compare@Base 2.57.2 + g_ref_count_dec@Base 2.57.2 + g_ref_count_inc@Base 2.57.2 + g_ref_count_init@Base 2.57.2 + g_ref_string_acquire@Base 2.57.2 + g_ref_string_length@Base 2.57.2 + g_ref_string_new@Base 2.57.2 + g_ref_string_new_intern@Base 2.57.2 + g_ref_string_new_len@Base 2.57.2 + g_ref_string_release@Base 2.57.2 + g_regex_check_replacement@Base 2.14.0 + g_regex_error_quark@Base 2.14.0 + g_regex_escape_nul@Base 2.30.0 + g_regex_escape_string@Base 2.14.0 + g_regex_get_capture_count@Base 2.14.0 + g_regex_get_compile_flags@Base 2.26.0 + g_regex_get_has_cr_or_lf@Base 2.33.14 + g_regex_get_match_flags@Base 2.26.0 + g_regex_get_max_backref@Base 2.14.0 + g_regex_get_max_lookbehind@Base 2.37.5 + g_regex_get_pattern@Base 2.14.0 + g_regex_get_string_number@Base 2.14.0 + g_regex_match@Base 2.14.0 + g_regex_match_all@Base 2.14.0 + g_regex_match_all_full@Base 2.14.0 + g_regex_match_full@Base 2.14.0 + g_regex_match_simple@Base 2.14.0 + g_regex_new@Base 2.14.0 + g_regex_ref@Base 2.14.0 + g_regex_replace@Base 2.14.0 + g_regex_replace_eval@Base 2.14.0 + g_regex_replace_literal@Base 2.14.0 + g_regex_split@Base 2.14.0 + g_regex_split_full@Base 2.14.0 + g_regex_split_simple@Base 2.14.0 + g_regex_unref@Base 2.14.0 + g_relation_count@Base 2.12.0 + g_relation_delete@Base 2.12.0 + g_relation_destroy@Base 2.12.0 + g_relation_exists@Base 2.12.0 + g_relation_index@Base 2.12.0 + g_relation_insert@Base 2.12.0 + g_relation_new@Base 2.12.0 + g_relation_print@Base 2.12.0 + g_relation_select@Base 2.12.0 + g_reload_user_special_dirs_cache@Base 2.22.0 + g_remove@Base 2.12.0 + g_rename@Base 2.12.0 + g_return_if_fail_warning@Base 2.12.0 + g_rmdir@Base 2.12.0 + g_rw_lock_clear@Base 2.31.8 + g_rw_lock_init@Base 2.31.8 + g_rw_lock_reader_lock@Base 2.31.8 + g_rw_lock_reader_trylock@Base 2.31.8 + g_rw_lock_reader_unlock@Base 2.31.8 + g_rw_lock_writer_lock@Base 2.31.8 + g_rw_lock_writer_trylock@Base 2.31.8 + g_rw_lock_writer_unlock@Base 2.31.8 + g_scanner_cur_line@Base 2.12.0 + g_scanner_cur_position@Base 2.12.0 + g_scanner_cur_token@Base 2.12.0 + g_scanner_cur_value@Base 2.12.0 + g_scanner_destroy@Base 2.12.0 + g_scanner_eof@Base 2.12.0 + g_scanner_error@Base 2.12.0 + g_scanner_get_next_token@Base 2.12.0 + g_scanner_input_file@Base 2.12.0 + g_scanner_input_text@Base 2.12.0 + g_scanner_lookup_symbol@Base 2.12.0 + g_scanner_new@Base 2.12.0 + g_scanner_peek_next_token@Base 2.12.0 + g_scanner_scope_add_symbol@Base 2.12.0 + g_scanner_scope_foreach_symbol@Base 2.12.0 + g_scanner_scope_lookup_symbol@Base 2.12.0 + g_scanner_scope_remove_symbol@Base 2.12.0 + g_scanner_set_scope@Base 2.12.0 + g_scanner_sync_file_offset@Base 2.12.0 + g_scanner_unexp_token@Base 2.12.0 + g_scanner_warn@Base 2.12.0 + g_sequence_append@Base 2.14.0 + g_sequence_foreach@Base 2.14.0 + g_sequence_foreach_range@Base 2.14.0 + g_sequence_free@Base 2.14.0 + g_sequence_get@Base 2.14.0 + g_sequence_get_begin_iter@Base 2.14.0 + g_sequence_get_end_iter@Base 2.14.0 + g_sequence_get_iter_at_pos@Base 2.14.0 + g_sequence_get_length@Base 2.14.0 + g_sequence_insert_before@Base 2.14.0 + g_sequence_insert_sorted@Base 2.14.0 + g_sequence_insert_sorted_iter@Base 2.14.0 + g_sequence_is_empty@Base 2.47.1 + g_sequence_iter_compare@Base 2.14.0 + g_sequence_iter_get_position@Base 2.14.0 + g_sequence_iter_get_sequence@Base 2.14.0 + g_sequence_iter_is_begin@Base 2.14.0 + g_sequence_iter_is_end@Base 2.14.0 + g_sequence_iter_move@Base 2.14.0 + g_sequence_iter_next@Base 2.14.0 + g_sequence_iter_prev@Base 2.14.0 + g_sequence_lookup@Base 2.28.0 + g_sequence_lookup_iter@Base 2.28.0 + g_sequence_move@Base 2.14.0 + g_sequence_move_range@Base 2.14.0 + g_sequence_new@Base 2.14.0 + g_sequence_prepend@Base 2.14.0 + g_sequence_range_get_midpoint@Base 2.14.0 + g_sequence_remove@Base 2.14.0 + g_sequence_remove_range@Base 2.14.0 + g_sequence_search@Base 2.14.0 + g_sequence_search_iter@Base 2.14.0 + g_sequence_set@Base 2.14.0 + g_sequence_sort@Base 2.14.0 + g_sequence_sort_changed@Base 2.14.0 + g_sequence_sort_changed_iter@Base 2.14.0 + g_sequence_sort_iter@Base 2.14.0 + g_sequence_swap@Base 2.14.0 + g_set_application_name@Base 2.12.0 + g_set_error@Base 2.12.0 + g_set_error_literal@Base 2.18.0 + g_set_prgname@Base 2.12.0 + g_set_print_handler@Base 2.12.0 + g_set_printerr_handler@Base 2.12.0 + g_set_user_dirs@Base 2.59.0 + g_setenv@Base 2.12.0 + g_shell_error_quark@Base 2.12.0 + g_shell_parse_argv@Base 2.12.0 + g_shell_quote@Base 2.12.0 + g_shell_unquote@Base 2.12.0 + g_slice_alloc0@Base 2.12.0 + g_slice_alloc@Base 2.12.0 + g_slice_copy@Base 2.14.0 + g_slice_free1@Base 2.12.0 + g_slice_free_chain_with_offset@Base 2.12.0 + g_slice_get_config@Base 2.12.0 + g_slice_get_config_state@Base 2.12.0 + g_slice_set_config@Base 2.12.0 + g_slist_alloc@Base 2.12.0 + g_slist_append@Base 2.12.0 + g_slist_concat@Base 2.12.0 + g_slist_copy@Base 2.12.0 + g_slist_copy_deep@Base 2.33.14 + g_slist_delete_link@Base 2.12.0 + g_slist_find@Base 2.12.0 + g_slist_find_custom@Base 2.12.0 + g_slist_foreach@Base 2.12.0 + g_slist_free@Base 2.12.0 + g_slist_free_1@Base 2.12.0 + g_slist_free_full@Base 2.28.0 + g_slist_index@Base 2.12.0 + g_slist_insert@Base 2.12.0 + g_slist_insert_before@Base 2.12.0 + g_slist_insert_sorted@Base 2.12.0 + g_slist_insert_sorted_with_data@Base 2.12.0 + g_slist_last@Base 2.12.0 + g_slist_length@Base 2.12.0 + g_slist_nth@Base 2.12.0 + g_slist_nth_data@Base 2.12.0 + g_slist_pop_allocator@Base 2.12.0 + g_slist_position@Base 2.12.0 + g_slist_prepend@Base 2.12.0 + g_slist_push_allocator@Base 2.12.0 + g_slist_remove@Base 2.12.0 + g_slist_remove_all@Base 2.12.0 + g_slist_remove_link@Base 2.12.0 + g_slist_reverse@Base 2.12.0 + g_slist_sort@Base 2.12.0 + g_slist_sort_with_data@Base 2.12.0 + g_snprintf@Base 2.12.0 + g_source_add_child_source@Base 2.28.0 + g_source_add_poll@Base 2.12.0 + g_source_add_unix_fd@Base 2.35.8 + g_source_attach@Base 2.12.0 + g_source_destroy@Base 2.12.0 + g_source_get_can_recurse@Base 2.12.0 + g_source_get_context@Base 2.12.0 + g_source_get_current_time@Base 2.12.0 + g_source_get_id@Base 2.12.0 + g_source_get_name@Base 2.26.0 + g_source_get_priority@Base 2.12.0 + g_source_get_ready_time@Base 2.35.8 + g_source_get_time@Base 2.28.0 + g_source_is_destroyed@Base 2.12.0 + g_source_modify_unix_fd@Base 2.35.8 + g_source_new@Base 2.12.0 + g_source_query_unix_fd@Base 2.35.8 + g_source_ref@Base 2.12.0 + g_source_remove@Base 2.12.0 + g_source_remove_by_funcs_user_data@Base 2.12.0 + g_source_remove_by_user_data@Base 2.12.0 + g_source_remove_child_source@Base 2.28.0 + g_source_remove_poll@Base 2.12.0 + g_source_remove_unix_fd@Base 2.35.8 + g_source_set_callback@Base 2.12.0 + g_source_set_callback_indirect@Base 2.12.0 + g_source_set_can_recurse@Base 2.12.0 + g_source_set_dispose_function@Base 2.63.3 + g_source_set_funcs@Base 2.12.0 + g_source_set_name@Base 2.26.0 + g_source_set_name_by_id@Base 2.26.0 + g_source_set_priority@Base 2.12.0 + g_source_set_ready_time@Base 2.35.8 + g_source_set_static_name@Base 2.70.0 + g_source_unref@Base 2.12.0 + g_spaced_primes_closest@Base 2.12.0 + g_spawn_async@Base 2.12.0 + g_spawn_async_with_fds@Base 2.57.2 + g_spawn_async_with_pipes@Base 2.12.0 + g_spawn_async_with_pipes_and_fds@Base 2.67.4 + g_spawn_check_exit_status@Base 2.33.14 + g_spawn_check_wait_status@Base 2.70.0 + g_spawn_close_pid@Base 2.12.0 + g_spawn_command_line_async@Base 2.12.0 + g_spawn_command_line_sync@Base 2.12.0 + g_spawn_error_quark@Base 2.12.0 + g_spawn_exit_error_quark@Base 2.33.14 + g_spawn_sync@Base 2.12.0 + g_sprintf@Base 2.12.0 + g_stat@Base 2.12.0 + g_static_mutex_free@Base 2.12.0 + g_static_mutex_get_mutex_impl@Base 2.12.0 + g_static_mutex_init@Base 2.12.0 + g_static_private_free@Base 2.12.0 + g_static_private_get@Base 2.12.0 + g_static_private_init@Base 2.12.0 + g_static_private_set@Base 2.12.0 + g_static_rec_mutex_free@Base 2.12.0 + g_static_rec_mutex_init@Base 2.12.0 + g_static_rec_mutex_lock@Base 2.12.0 + g_static_rec_mutex_lock_full@Base 2.12.0 + g_static_rec_mutex_trylock@Base 2.12.0 + g_static_rec_mutex_unlock@Base 2.12.0 + g_static_rec_mutex_unlock_full@Base 2.12.0 + g_static_rw_lock_free@Base 2.12.0 + g_static_rw_lock_init@Base 2.12.0 + g_static_rw_lock_reader_lock@Base 2.12.0 + g_static_rw_lock_reader_trylock@Base 2.12.0 + g_static_rw_lock_reader_unlock@Base 2.12.0 + g_static_rw_lock_writer_lock@Base 2.12.0 + g_static_rw_lock_writer_trylock@Base 2.12.0 + g_static_rw_lock_writer_unlock@Base 2.12.0 + g_stpcpy@Base 2.12.0 + g_str_equal@Base 2.12.0 + g_str_has_prefix@Base 2.12.0 + g_str_has_suffix@Base 2.12.0 + g_str_hash@Base 2.12.0 + g_str_is_ascii@Base 2.39.4 + g_str_match_string@Base 2.39.4 + g_str_to_ascii@Base 2.39.91 + g_str_tokenize_and_fold@Base 2.39.4 + g_strcanon@Base 2.12.0 + g_strcasecmp@Base 2.12.0 + g_strchomp@Base 2.12.0 + g_strchug@Base 2.12.0 + g_strcmp0@Base 2.16.0 + g_strcompress@Base 2.12.0 + g_strconcat@Base 2.12.0 + g_strdelimit@Base 2.12.0 + g_strdown@Base 2.12.0 + g_strdup@Base 2.12.0 + g_strdup_printf@Base 2.12.0 + g_strdup_vprintf@Base 2.12.0 + g_strdupv@Base 2.12.0 + g_strerror@Base 2.12.0 + g_strescape@Base 2.12.0 + g_strfreev@Base 2.12.0 + g_string_append@Base 2.12.0 + g_string_append_c@Base 2.12.0 + g_string_append_len@Base 2.12.0 + g_string_append_printf@Base 2.12.0 + g_string_append_unichar@Base 2.12.0 + g_string_append_uri_escaped@Base 2.16.0 + g_string_append_vprintf@Base 2.14.0 + g_string_ascii_down@Base 2.12.0 + g_string_ascii_up@Base 2.12.0 + g_string_assign@Base 2.12.0 + g_string_chunk_clear@Base 2.14.0 + g_string_chunk_free@Base 2.12.0 + g_string_chunk_insert@Base 2.12.0 + g_string_chunk_insert_const@Base 2.12.0 + g_string_chunk_insert_len@Base 2.12.0 + g_string_chunk_new@Base 2.12.0 + g_string_down@Base 2.12.0 + g_string_equal@Base 2.12.0 + g_string_erase@Base 2.12.0 + g_string_free@Base 2.12.0 + g_string_free_to_bytes@Base 2.33.14 + g_string_hash@Base 2.12.0 + g_string_insert@Base 2.12.0 + g_string_insert_c@Base 2.12.0 + g_string_insert_len@Base 2.12.0 + g_string_insert_unichar@Base 2.12.0 + g_string_new@Base 2.12.0 + g_string_new_len@Base 2.12.0 + g_string_overwrite@Base 2.14.0 + g_string_overwrite_len@Base 2.14.0 + g_string_prepend@Base 2.12.0 + g_string_prepend_c@Base 2.12.0 + g_string_prepend_len@Base 2.12.0 + g_string_prepend_unichar@Base 2.12.0 + g_string_printf@Base 2.12.0 + g_string_replace@Base 2.67.3+git20210214 + g_string_set_size@Base 2.12.0 + g_string_sized_new@Base 2.12.0 + g_string_truncate@Base 2.12.0 + g_string_up@Base 2.12.0 + g_string_vprintf@Base 2.14.0 + g_strip_context@Base 2.12.0 + g_strjoin@Base 2.12.0 + g_strjoinv@Base 2.12.0 + g_strlcat@Base 2.12.0 + g_strlcpy@Base 2.12.0 + g_strncasecmp@Base 2.12.0 + g_strndup@Base 2.12.0 + g_strnfill@Base 2.12.0 + g_strreverse@Base 2.12.0 + g_strrstr@Base 2.12.0 + g_strrstr_len@Base 2.12.0 + g_strsignal@Base 2.12.0 + g_strsplit@Base 2.12.0 + g_strsplit_set@Base 2.12.0 + g_strstr_len@Base 2.12.0 + g_strtod@Base 2.12.0 + g_strup@Base 2.12.0 + g_strv_builder_add@Base 2.67.1 + g_strv_builder_add_many@Base 2.70.0 + g_strv_builder_addv@Base 2.70.0 + g_strv_builder_end@Base 2.67.1 + g_strv_builder_new@Base 2.67.1 + g_strv_builder_ref@Base 2.67.1 + g_strv_builder_unref@Base 2.67.1 + g_strv_contains@Base 2.43.2 + g_strv_equal@Base 2.59.0 + g_strv_length@Base 2.12.0 + g_test_add_data_func@Base 2.16.0 + g_test_add_data_func_full@Base 2.33.14 + g_test_add_func@Base 2.16.0 + g_test_add_vtable@Base 2.16.0 + g_test_assert_expected_messages_internal@Base 2.33.14 + g_test_bug@Base 2.16.0 + g_test_bug_base@Base 2.16.0 + g_test_build_filename@Base 2.37.2 + g_test_case_free@Base 2.70.0 + g_test_config_vars@Base 2.16.0 + g_test_create_case@Base 2.16.0 + g_test_create_suite@Base 2.16.0 + g_test_expect_message@Base 2.33.14 + g_test_fail@Base 2.30.0 + g_test_fail_printf@Base 2.70.0 + g_test_failed@Base 2.37.6 + g_test_get_dir@Base 2.37.2 + g_test_get_filename@Base 2.37.2 + g_test_get_path@Base 2.67.3 + g_test_get_root@Base 2.16.0 + g_test_incomplete@Base 2.37.6 + g_test_incomplete_printf@Base 2.70.0 + g_test_init@Base 2.16.0 + g_test_log_buffer_free@Base 2.16.0 + g_test_log_buffer_new@Base 2.16.0 + g_test_log_buffer_pop@Base 2.16.0 + g_test_log_buffer_push@Base 2.16.0 + g_test_log_msg_free@Base 2.16.0 + g_test_log_set_fatal_handler@Base 2.22.0 + g_test_log_type_name@Base 2.16.0 + g_test_maximized_result@Base 2.16.0 + g_test_message@Base 2.16.0 + g_test_minimized_result@Base 2.16.0 + g_test_queue_destroy@Base 2.16.0 + g_test_queue_free@Base 2.16.0 + g_test_rand_double@Base 2.16.0 + g_test_rand_double_range@Base 2.16.0 + g_test_rand_int@Base 2.16.0 + g_test_rand_int_range@Base 2.16.0 + g_test_run@Base 2.16.0 + g_test_run_suite@Base 2.16.0 + g_test_set_nonfatal_assertions@Base 2.37.6 + g_test_skip@Base 2.37.6 + g_test_skip_printf@Base 2.70.0 + g_test_subprocess@Base 2.37.1 + g_test_suite_add@Base 2.16.0 + g_test_suite_add_suite@Base 2.16.0 + g_test_suite_free@Base 2.70.0 + g_test_summary@Base 2.61.1 + g_test_timer_elapsed@Base 2.16.0 + g_test_timer_last@Base 2.16.0 + g_test_timer_start@Base 2.16.0 + g_test_trap_assertions@Base 2.16.0 + g_test_trap_fork@Base 2.16.0 + g_test_trap_has_passed@Base 2.16.0 + g_test_trap_reached_timeout@Base 2.16.0 + g_test_trap_subprocess@Base 2.37.1 + g_thread_create@Base 2.31.8 + g_thread_create_full@Base 2.12.0 + g_thread_error_quark@Base 2.12.0 + g_thread_exit@Base 2.12.0 + g_thread_foreach@Base 2.12.0 + g_thread_functions_for_glib_use@Base 2.12.0 + g_thread_get_initialized@Base 2.20.0 + g_thread_gettime@Base 2.14.0 + g_thread_init_glib@Base 2.12.0 + g_thread_join@Base 2.12.0 + g_thread_new@Base 2.31.8 + g_thread_pool_free@Base 2.12.0 + g_thread_pool_get_max_idle_time@Base 2.12.0 + g_thread_pool_get_max_threads@Base 2.12.0 + g_thread_pool_get_max_unused_threads@Base 2.12.0 + g_thread_pool_get_num_threads@Base 2.12.0 + g_thread_pool_get_num_unused_threads@Base 2.12.0 + g_thread_pool_move_to_front@Base 2.45.4 + g_thread_pool_new@Base 2.12.0 + g_thread_pool_new_full@Base 2.70.0 + g_thread_pool_push@Base 2.12.0 + g_thread_pool_set_max_idle_time@Base 2.12.0 + g_thread_pool_set_max_threads@Base 2.12.0 + g_thread_pool_set_max_unused_threads@Base 2.12.0 + g_thread_pool_set_sort_function@Base 2.12.0 + g_thread_pool_stop_unused_threads@Base 2.12.0 + g_thread_pool_unprocessed@Base 2.12.0 + g_thread_ref@Base 2.31.8 + g_thread_self@Base 2.12.0 + g_thread_set_priority@Base 2.12.0 + g_thread_try_new@Base 2.31.8 + g_thread_unref@Base 2.31.8 + g_thread_use_default_impl@Base 2.12.0 + g_thread_yield@Base 2.31.8 + g_threads_got_initialized@Base 2.12.0 + g_time_val_add@Base 2.12.0 + g_time_val_from_iso8601@Base 2.12.0 + g_time_val_to_iso8601@Base 2.12.0 + g_time_zone_adjust_time@Base 2.28.0 + g_time_zone_find_interval@Base 2.28.0 + g_time_zone_get_abbreviation@Base 2.28.0 + g_time_zone_get_identifier@Base 2.57.2 + g_time_zone_get_offset@Base 2.28.0 + g_time_zone_is_dst@Base 2.28.0 + g_time_zone_new@Base 2.26.0 + g_time_zone_new_identifier@Base 2.67.1 + g_time_zone_new_local@Base 2.26.0 + g_time_zone_new_offset@Base 2.57.2 + g_time_zone_new_utc@Base 2.26.0 + g_time_zone_ref@Base 2.26.0 + g_time_zone_unref@Base 2.26.0 + g_timeout_add@Base 2.12.0 + g_timeout_add_full@Base 2.12.0 + g_timeout_add_seconds@Base 2.14.0 + g_timeout_add_seconds_full@Base 2.14.0 + g_timeout_funcs@Base 2.12.0 + g_timeout_source_new@Base 2.12.0 + g_timeout_source_new_seconds@Base 2.14.0 + g_timer_continue@Base 2.12.0 + g_timer_destroy@Base 2.12.0 + g_timer_elapsed@Base 2.12.0 + g_timer_is_active@Base 2.61.2 + g_timer_new@Base 2.12.0 + g_timer_reset@Base 2.12.0 + g_timer_start@Base 2.12.0 + g_timer_stop@Base 2.12.0 + g_trash_stack_height@Base 2.12.0 + g_trash_stack_peek@Base 2.12.0 + g_trash_stack_pop@Base 2.12.0 + g_trash_stack_push@Base 2.12.0 + g_tree_destroy@Base 2.12.0 + g_tree_foreach@Base 2.12.0 + g_tree_foreach_node@Base 2.67.1 + g_tree_height@Base 2.12.0 + g_tree_insert@Base 2.12.0 + g_tree_insert_node@Base 2.67.1 + g_tree_lookup@Base 2.12.0 + g_tree_lookup_extended@Base 2.12.0 + g_tree_lookup_node@Base 2.67.1 + g_tree_lower_bound@Base 2.67.1 + g_tree_new@Base 2.12.0 + g_tree_new_full@Base 2.12.0 + g_tree_new_with_data@Base 2.12.0 + g_tree_nnodes@Base 2.12.0 + g_tree_node_first@Base 2.67.1 + g_tree_node_key@Base 2.67.1 + g_tree_node_last@Base 2.67.1 + g_tree_node_next@Base 2.67.1 + g_tree_node_previous@Base 2.67.1 + g_tree_node_value@Base 2.67.1 + g_tree_ref@Base 2.22.0 + g_tree_remove@Base 2.12.0 + g_tree_remove_all@Base 2.70.0 + g_tree_replace@Base 2.12.0 + g_tree_replace_node@Base 2.67.1 + g_tree_search@Base 2.12.0 + g_tree_search_node@Base 2.67.1 + g_tree_steal@Base 2.12.0 + g_tree_traverse@Base 2.12.0 + g_tree_unref@Base 2.22.0 + g_tree_upper_bound@Base 2.67.1 + g_try_malloc0@Base 2.12.0 + g_try_malloc0_n@Base 2.24.0 + g_try_malloc@Base 2.12.0 + g_try_malloc_n@Base 2.24.0 + g_try_realloc@Base 2.12.0 + g_try_realloc_n@Base 2.24.0 + g_tuples_destroy@Base 2.12.0 + g_tuples_index@Base 2.12.0 + g_ucs4_to_utf16@Base 2.12.0 + g_ucs4_to_utf8@Base 2.12.0 + g_unichar_break_type@Base 2.12.0 + g_unichar_combining_class@Base 2.14.0 + g_unichar_compose@Base 2.30.0 + g_unichar_decompose@Base 2.30.0 + g_unichar_digit_value@Base 2.12.0 + g_unichar_fully_decompose@Base 2.30.0 + g_unichar_get_mirror_char@Base 2.12.0 + g_unichar_get_script@Base 2.14.0 + g_unichar_isalnum@Base 2.12.0 + g_unichar_isalpha@Base 2.12.0 + g_unichar_iscntrl@Base 2.12.0 + g_unichar_isdefined@Base 2.12.0 + g_unichar_isdigit@Base 2.12.0 + g_unichar_isgraph@Base 2.12.0 + g_unichar_islower@Base 2.12.0 + g_unichar_ismark@Base 2.14.0 + g_unichar_isprint@Base 2.12.0 + g_unichar_ispunct@Base 2.12.0 + g_unichar_isspace@Base 2.12.0 + g_unichar_istitle@Base 2.12.0 + g_unichar_isupper@Base 2.12.0 + g_unichar_iswide@Base 2.12.0 + g_unichar_iswide_cjk@Base 2.12.0 + g_unichar_isxdigit@Base 2.12.0 + g_unichar_iszerowidth@Base 2.14.0 + g_unichar_to_utf8@Base 2.12.0 + g_unichar_tolower@Base 2.12.0 + g_unichar_totitle@Base 2.12.0 + g_unichar_toupper@Base 2.12.0 + g_unichar_type@Base 2.12.0 + g_unichar_validate@Base 2.12.0 + g_unichar_xdigit_value@Base 2.12.0 + g_unicode_canonical_decomposition@Base 2.12.0 + g_unicode_canonical_ordering@Base 2.12.0 + g_unicode_script_from_iso15924@Base 2.30.0 + g_unicode_script_to_iso15924@Base 2.30.0 + g_unix_error_quark@Base 2.30.0 + g_unix_fd_add@Base 2.35.8 + g_unix_fd_add_full@Base 2.35.8 + g_unix_fd_source_funcs@Base 2.37.5 + g_unix_fd_source_new@Base 2.35.8 + g_unix_get_passwd_entry@Base 2.63.3 + g_unix_open_pipe@Base 2.30.0 + g_unix_set_fd_nonblocking@Base 2.30.0 + g_unix_signal_add@Base 2.30.0 + g_unix_signal_add_full@Base 2.30.0 + g_unix_signal_funcs@Base 2.37.5 + g_unix_signal_source_new@Base 2.30.0 + g_unlink@Base 2.12.0 + g_unsetenv@Base 2.12.0 + g_uri_build@Base 2.65.1 + g_uri_build_with_user@Base 2.65.1 + g_uri_error_quark@Base 2.65.1 + g_uri_escape_bytes@Base 2.65.1 + g_uri_escape_string@Base 2.16.0 + g_uri_get_auth_params@Base 2.65.1 + g_uri_get_flags@Base 2.65.1 + g_uri_get_fragment@Base 2.65.1 + g_uri_get_host@Base 2.65.1 + g_uri_get_password@Base 2.65.1 + g_uri_get_path@Base 2.65.1 + g_uri_get_port@Base 2.65.1 + g_uri_get_query@Base 2.65.1 + g_uri_get_scheme@Base 2.65.1 + g_uri_get_user@Base 2.65.1 + g_uri_get_userinfo@Base 2.65.1 + g_uri_is_valid@Base 2.65.1 + g_uri_join@Base 2.65.1 + g_uri_join_with_user@Base 2.65.1 + g_uri_list_extract_uris@Base 2.12.0 + g_uri_params_iter_init@Base 2.65.1 + g_uri_params_iter_next@Base 2.65.1 + g_uri_parse@Base 2.65.1 + g_uri_parse_params@Base 2.65.1 + g_uri_parse_relative@Base 2.65.1 + g_uri_parse_scheme@Base 2.16.0 + g_uri_peek_scheme@Base 2.65.1 + g_uri_ref@Base 2.65.1 + g_uri_resolve_relative@Base 2.65.1 + g_uri_split@Base 2.65.1 + g_uri_split_network@Base 2.65.1 + g_uri_split_with_user@Base 2.65.1 + g_uri_to_string@Base 2.65.1 + g_uri_to_string_partial@Base 2.65.1 + g_uri_unescape_bytes@Base 2.65.1 + g_uri_unescape_segment@Base 2.16.0 + g_uri_unescape_string@Base 2.16.0 + g_uri_unref@Base 2.65.1 + g_usleep@Base 2.12.0 + g_utf16_to_ucs4@Base 2.12.0 + g_utf16_to_utf8@Base 2.12.0 + g_utf8_casefold@Base 2.12.0 + g_utf8_collate@Base 2.12.0 + g_utf8_collate_key@Base 2.12.0 + g_utf8_collate_key_for_filename@Base 2.12.0 + g_utf8_find_next_char@Base 2.12.0 + g_utf8_find_prev_char@Base 2.12.0 + g_utf8_get_char@Base 2.12.0 + g_utf8_get_char_validated@Base 2.12.0 + g_utf8_make_valid@Base 2.51.0 + g_utf8_normalize@Base 2.12.0 + g_utf8_offset_to_pointer@Base 2.12.0 + g_utf8_pointer_to_offset@Base 2.12.0 + g_utf8_prev_char@Base 2.12.0 + g_utf8_skip@Base 2.12.0 + g_utf8_strchr@Base 2.12.0 + g_utf8_strdown@Base 2.12.0 + g_utf8_strlen@Base 2.12.0 + g_utf8_strncpy@Base 2.12.0 + g_utf8_strrchr@Base 2.12.0 + g_utf8_strreverse@Base 2.12.0 + g_utf8_strup@Base 2.12.0 + g_utf8_substring@Base 2.30.0 + g_utf8_to_ucs4@Base 2.12.0 + g_utf8_to_ucs4_fast@Base 2.12.0 + g_utf8_to_utf16@Base 2.12.0 + g_utf8_validate@Base 2.12.0 + g_utf8_validate_len@Base 2.59.0 + g_utime@Base 2.18.0 + g_uuid_string_is_valid@Base 2.51.2 + g_uuid_string_random@Base 2.51.2 + g_variant_builder_add@Base 2.24.0 + g_variant_builder_add_parsed@Base 2.26.0 + g_variant_builder_add_value@Base 2.24.0 + g_variant_builder_clear@Base 2.24.0 + g_variant_builder_close@Base 2.24.0 + g_variant_builder_end@Base 2.24.0 + g_variant_builder_init@Base 2.24.0 + g_variant_builder_new@Base 2.24.0 + g_variant_builder_open@Base 2.24.0 + g_variant_builder_ref@Base 2.24.0 + g_variant_builder_unref@Base 2.24.0 + g_variant_byteswap@Base 2.24.0 + g_variant_check_format_string@Base 2.33.14 + g_variant_classify@Base 2.24.0 + g_variant_compare@Base 2.26.0 + g_variant_dict_clear@Base 2.39.90 + g_variant_dict_contains@Base 2.39.90 + g_variant_dict_end@Base 2.39.90 + g_variant_dict_init@Base 2.39.90 + g_variant_dict_insert@Base 2.39.90 + g_variant_dict_insert_value@Base 2.39.90 + g_variant_dict_lookup@Base 2.39.90 + g_variant_dict_lookup_value@Base 2.39.90 + g_variant_dict_new@Base 2.39.90 + g_variant_dict_ref@Base 2.39.90 + g_variant_dict_remove@Base 2.39.90 + g_variant_dict_unref@Base 2.39.90 + g_variant_dup_bytestring@Base 2.26.0 + g_variant_dup_bytestring_array@Base 2.26.0 + g_variant_dup_objv@Base 2.30.0 + g_variant_dup_string@Base 2.24.0 + g_variant_dup_strv@Base 2.24.0 + g_variant_equal@Base 2.24.0 + g_variant_format_string_scan@Base 2.24.0 + g_variant_format_string_scan_type@Base 2.24.0 + g_variant_get@Base 2.24.0 + g_variant_get_boolean@Base 2.24.0 + g_variant_get_byte@Base 2.24.0 + g_variant_get_bytestring@Base 2.26.0 + g_variant_get_bytestring_array@Base 2.26.0 + g_variant_get_child@Base 2.24.0 + g_variant_get_child_value@Base 2.24.0 + g_variant_get_data@Base 2.24.0 + g_variant_get_data_as_bytes@Base 2.35.8 + g_variant_get_double@Base 2.24.0 + g_variant_get_fixed_array@Base 2.24.0 + g_variant_get_handle@Base 2.24.0 + g_variant_get_int16@Base 2.24.0 + g_variant_get_int32@Base 2.24.0 + g_variant_get_int64@Base 2.24.0 + g_variant_get_maybe@Base 2.24.0 + g_variant_get_normal_form@Base 2.24.0 + g_variant_get_objv@Base 2.30.0 + g_variant_get_size@Base 2.24.0 + g_variant_get_string@Base 2.24.0 + g_variant_get_strv@Base 2.24.0 + g_variant_get_type@Base 2.24.0 + g_variant_get_type_string@Base 2.24.0 + g_variant_get_uint16@Base 2.24.0 + g_variant_get_uint32@Base 2.24.0 + g_variant_get_uint64@Base 2.24.0 + g_variant_get_va@Base 2.24.0 + g_variant_get_variant@Base 2.24.0 + g_variant_hash@Base 2.24.0 + g_variant_is_container@Base 2.24.0 + g_variant_is_floating@Base 2.26.0 + g_variant_is_normal_form@Base 2.24.0 + g_variant_is_object_path@Base 2.24.0 + g_variant_is_of_type@Base 2.24.0 + g_variant_is_signature@Base 2.24.0 + g_variant_iter_copy@Base 2.24.0 + g_variant_iter_free@Base 2.24.0 + g_variant_iter_init@Base 2.24.0 + g_variant_iter_loop@Base 2.24.0 + g_variant_iter_n_children@Base 2.24.0 + g_variant_iter_new@Base 2.24.0 + g_variant_iter_next@Base 2.24.0 + g_variant_iter_next_value@Base 2.24.0 + g_variant_lookup@Base 2.28.0 + g_variant_lookup_value@Base 2.28.0 + g_variant_n_children@Base 2.24.0 + g_variant_new@Base 2.24.0 + g_variant_new_array@Base 2.24.0 + g_variant_new_boolean@Base 2.24.0 + g_variant_new_byte@Base 2.24.0 + g_variant_new_bytestring@Base 2.26.0 + g_variant_new_bytestring_array@Base 2.26.0 + g_variant_new_dict_entry@Base 2.24.0 + g_variant_new_double@Base 2.24.0 + g_variant_new_fixed_array@Base 2.31.8 + g_variant_new_from_bytes@Base 2.35.8 + g_variant_new_from_data@Base 2.24.0 + g_variant_new_handle@Base 2.24.0 + g_variant_new_int16@Base 2.24.0 + g_variant_new_int32@Base 2.24.0 + g_variant_new_int64@Base 2.24.0 + g_variant_new_maybe@Base 2.24.0 + g_variant_new_object_path@Base 2.24.0 + g_variant_new_objv@Base 2.30.0 + g_variant_new_parsed@Base 2.24.0 + g_variant_new_parsed_va@Base 2.24.0 + g_variant_new_printf@Base 2.37.5 + g_variant_new_signature@Base 2.24.0 + g_variant_new_string@Base 2.24.0 + g_variant_new_strv@Base 2.24.0 + g_variant_new_take_string@Base 2.37.0 + g_variant_new_tuple@Base 2.24.0 + g_variant_new_uint16@Base 2.24.0 + g_variant_new_uint32@Base 2.24.0 + g_variant_new_uint64@Base 2.24.0 + g_variant_new_va@Base 2.24.0 + g_variant_new_variant@Base 2.24.0 + g_variant_parse@Base 2.24.0 + g_variant_parse_error_print_context@Base 2.39.4 + g_variant_parse_error_quark@Base 2.39.4 + g_variant_parser_get_error_quark@Base 2.24.0 + g_variant_print@Base 2.24.0 + g_variant_print_string@Base 2.24.0 + g_variant_ref@Base 2.24.0 + g_variant_ref_sink@Base 2.24.0 + g_variant_serialised_byteswap@Base 2.24.0 + g_variant_serialised_check@Base 2.59.0 + g_variant_serialised_get_child@Base 2.24.0 + g_variant_serialised_is_normal@Base 2.24.0 + g_variant_serialised_n_children@Base 2.24.0 + g_variant_serialiser_is_object_path@Base 2.24.0 + g_variant_serialiser_is_signature@Base 2.24.0 + g_variant_serialiser_is_string@Base 2.24.0 + g_variant_serialiser_needed_size@Base 2.24.0 + g_variant_serialiser_serialise@Base 2.24.0 + g_variant_store@Base 2.24.0 + g_variant_take_ref@Base 2.30.0 + g_variant_type_checked_@Base 2.24.0 + g_variant_type_copy@Base 2.24.0 + g_variant_type_dup_string@Base 2.24.0 + g_variant_type_element@Base 2.24.0 + g_variant_type_equal@Base 2.24.0 + g_variant_type_first@Base 2.24.0 + g_variant_type_free@Base 2.24.0 + g_variant_type_get_string_length@Base 2.24.0 + g_variant_type_hash@Base 2.24.0 + g_variant_type_info_assert_no_infos@Base 2.24.0 + g_variant_type_info_element@Base 2.24.0 + g_variant_type_info_get@Base 2.24.0 + g_variant_type_info_get_type_string@Base 2.24.0 + g_variant_type_info_member_info@Base 2.24.0 + g_variant_type_info_n_members@Base 2.24.0 + g_variant_type_info_query@Base 2.24.0 + g_variant_type_info_query_depth@Base 2.58.2 + g_variant_type_info_query_element@Base 2.24.0 + g_variant_type_info_ref@Base 2.24.0 + g_variant_type_info_unref@Base 2.24.0 + g_variant_type_is_array@Base 2.24.0 + g_variant_type_is_basic@Base 2.24.0 + g_variant_type_is_container@Base 2.24.0 + g_variant_type_is_definite@Base 2.24.0 + g_variant_type_is_dict_entry@Base 2.24.0 + g_variant_type_is_maybe@Base 2.24.0 + g_variant_type_is_subtype_of@Base 2.24.0 + g_variant_type_is_tuple@Base 2.24.0 + g_variant_type_is_variant@Base 2.24.0 + g_variant_type_key@Base 2.24.0 + g_variant_type_n_items@Base 2.24.0 + g_variant_type_new@Base 2.24.0 + g_variant_type_new_array@Base 2.24.0 + g_variant_type_new_dict_entry@Base 2.24.0 + g_variant_type_new_maybe@Base 2.24.0 + g_variant_type_new_tuple@Base 2.24.0 + g_variant_type_next@Base 2.24.0 + g_variant_type_peek_string@Base 2.24.0 + g_variant_type_string_get_depth_@Base 2.58.2 + g_variant_type_string_is_valid@Base 2.24.0 + g_variant_type_string_scan@Base 2.24.0 + g_variant_type_value@Base 2.24.0 + g_variant_unref@Base 2.24.0 + g_vasprintf@Base 2.12.0 + g_vfprintf@Base 2.12.0 + g_vprintf@Base 2.12.0 + g_vsnprintf@Base 2.12.0 + g_vsprintf@Base 2.12.0 + g_warn_message@Base 2.16.0 + glib__private__@Base 2.31.8 + glib_binary_age@Base 2.12.0 + glib_check_version@Base 2.12.0 + glib_gettext@Base 2.16.0 + glib_interface_age@Base 2.12.0 + glib_major_version@Base 2.12.0 + glib_mem_profiler_table@Base 2.12.0 + glib_micro_version@Base 2.12.0 + glib_minor_version@Base 2.12.0 + glib_on_error_halt@Base 2.12.0 + glib_pgettext@Base 2.28.3 +libgmodule-2.0.so.0 libglib2.0-0 #MINVER# +* Build-Depends-Package: libglib2.0-dev + g_module_build_path@Base 2.12.0 + g_module_close@Base 2.12.0 + g_module_error@Base 2.12.0 + g_module_error_quark@Base 2.70.0 + g_module_make_resident@Base 2.12.0 + g_module_name@Base 2.12.0 + g_module_open@Base 2.12.0 + g_module_open_full@Base 2.70.0 + g_module_supported@Base 2.12.0 + g_module_symbol@Base 2.12.0 +libgobject-2.0.so.0 libglib2.0-0 #MINVER# +* Build-Depends-Package: libglib2.0-dev + g_array_get_type@Base 2.22.0 + g_binding_dup_source@Base 2.67.1 + g_binding_dup_target@Base 2.67.1 + g_binding_flags_get_type@Base 2.26.0 + g_binding_get_flags@Base 2.26.0 + g_binding_get_source@Base 2.26.0 + g_binding_get_source_property@Base 2.26.0 + g_binding_get_target@Base 2.26.0 + g_binding_get_target_property@Base 2.26.0 + g_binding_get_type@Base 2.26.0 + g_binding_group_bind@Base 2.71.2 + g_binding_group_bind_full@Base 2.71.2 + g_binding_group_bind_with_closures@Base 2.71.2 + g_binding_group_dup_source@Base 2.71.2 + g_binding_group_get_type@Base 2.71.2 + g_binding_group_new@Base 2.71.2 + g_binding_group_set_source@Base 2.71.2 + g_binding_unbind@Base 2.37.1 + g_boxed_copy@Base 2.12.0 + g_boxed_free@Base 2.12.0 + g_boxed_type_register_static@Base 2.12.0 + g_byte_array_get_type@Base 2.22.0 + g_bytes_get_type@Base 2.31.8 + g_cclosure_marshal_BOOLEAN__BOXED_BOXED@Base 2.26.0 + g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv@Base 2.31.20 + g_cclosure_marshal_BOOLEAN__FLAGS@Base 2.12.0 + g_cclosure_marshal_BOOLEAN__FLAGSv@Base 2.31.20 + g_cclosure_marshal_STRING__OBJECT_POINTER@Base 2.12.0 + g_cclosure_marshal_STRING__OBJECT_POINTERv@Base 2.31.20 + g_cclosure_marshal_VOID__BOOLEAN@Base 2.12.0 + g_cclosure_marshal_VOID__BOOLEANv@Base 2.31.20 + g_cclosure_marshal_VOID__BOXED@Base 2.12.0 + g_cclosure_marshal_VOID__BOXEDv@Base 2.31.20 + g_cclosure_marshal_VOID__CHAR@Base 2.12.0 + g_cclosure_marshal_VOID__CHARv@Base 2.31.20 + g_cclosure_marshal_VOID__DOUBLE@Base 2.12.0 + g_cclosure_marshal_VOID__DOUBLEv@Base 2.31.20 + g_cclosure_marshal_VOID__ENUM@Base 2.12.0 + g_cclosure_marshal_VOID__ENUMv@Base 2.31.20 + g_cclosure_marshal_VOID__FLAGS@Base 2.12.0 + g_cclosure_marshal_VOID__FLAGSv@Base 2.31.20 + g_cclosure_marshal_VOID__FLOAT@Base 2.12.0 + g_cclosure_marshal_VOID__FLOATv@Base 2.31.20 + g_cclosure_marshal_VOID__INT@Base 2.12.0 + g_cclosure_marshal_VOID__INTv@Base 2.31.20 + g_cclosure_marshal_VOID__LONG@Base 2.12.0 + g_cclosure_marshal_VOID__LONGv@Base 2.31.20 + g_cclosure_marshal_VOID__OBJECT@Base 2.12.0 + g_cclosure_marshal_VOID__OBJECTv@Base 2.31.20 + g_cclosure_marshal_VOID__PARAM@Base 2.12.0 + g_cclosure_marshal_VOID__PARAMv@Base 2.31.20 + g_cclosure_marshal_VOID__POINTER@Base 2.12.0 + g_cclosure_marshal_VOID__POINTERv@Base 2.31.20 + g_cclosure_marshal_VOID__STRING@Base 2.12.0 + g_cclosure_marshal_VOID__STRINGv@Base 2.31.20 + g_cclosure_marshal_VOID__UCHAR@Base 2.12.0 + g_cclosure_marshal_VOID__UCHARv@Base 2.31.20 + g_cclosure_marshal_VOID__UINT@Base 2.12.0 + g_cclosure_marshal_VOID__UINT_POINTER@Base 2.12.0 + g_cclosure_marshal_VOID__UINT_POINTERv@Base 2.31.20 + g_cclosure_marshal_VOID__UINTv@Base 2.31.20 + g_cclosure_marshal_VOID__ULONG@Base 2.12.0 + g_cclosure_marshal_VOID__ULONGv@Base 2.31.20 + g_cclosure_marshal_VOID__VARIANT@Base 2.26.0 + g_cclosure_marshal_VOID__VARIANTv@Base 2.31.20 + g_cclosure_marshal_VOID__VOID@Base 2.12.0 + g_cclosure_marshal_VOID__VOIDv@Base 2.31.20 + g_cclosure_marshal_generic@Base 2.30.0 + g_cclosure_marshal_generic_va@Base 2.31.20 + g_cclosure_new@Base 2.12.0 + g_cclosure_new_object@Base 2.12.0 + g_cclosure_new_object_swap@Base 2.12.0 + g_cclosure_new_swap@Base 2.12.0 + g_checksum_get_type@Base 2.35.8 + g_clear_object@Base 2.28.0 + g_clear_signal_handler@Base 2.61.1 + g_closure_add_finalize_notifier@Base 2.12.0 + g_closure_add_invalidate_notifier@Base 2.12.0 + g_closure_add_marshal_guards@Base 2.12.0 + g_closure_get_type@Base 2.12.0 + g_closure_invalidate@Base 2.12.0 + g_closure_invoke@Base 2.12.0 + g_closure_new_object@Base 2.12.0 + g_closure_new_simple@Base 2.12.0 + g_closure_ref@Base 2.12.0 + g_closure_remove_finalize_notifier@Base 2.12.0 + g_closure_remove_invalidate_notifier@Base 2.12.0 + g_closure_set_marshal@Base 2.12.0 + g_closure_set_meta_marshal@Base 2.12.0 + g_closure_sink@Base 2.12.0 + g_closure_unref@Base 2.12.0 + g_date_get_type@Base 2.12.0 + g_date_time_get_type@Base 2.26.0 + g_enum_complete_type_info@Base 2.12.0 + g_enum_get_value@Base 2.12.0 + g_enum_get_value_by_name@Base 2.12.0 + g_enum_get_value_by_nick@Base 2.12.0 + g_enum_register_static@Base 2.12.0 + g_enum_to_string@Base 2.53.1 + g_error_get_type@Base 2.26.0 + g_flags_complete_type_info@Base 2.12.0 + g_flags_get_first_value@Base 2.12.0 + g_flags_get_value_by_name@Base 2.12.0 + g_flags_get_value_by_nick@Base 2.12.0 + g_flags_register_static@Base 2.12.0 + g_flags_to_string@Base 2.53.1 + g_gstring_get_type@Base 2.12.0 + g_gtype_get_type@Base 2.12.0 + g_hash_table_get_type@Base 2.12.0 + g_initially_unowned_get_type@Base 2.12.0 + g_io_channel_get_type@Base 2.12.0 + g_io_condition_get_type@Base 2.12.0 + g_key_file_get_type@Base 2.31.8 + g_main_context_get_type@Base 2.30.0 + g_main_loop_get_type@Base 2.30.0 + g_mapped_file_get_type@Base 2.39.4 + g_markup_parse_context_get_type@Base 2.35.8 + g_match_info_get_type@Base 2.30.0 + g_normalize_mode_get_type@Base 2.59.2 + g_object_add_toggle_ref@Base 2.12.0 + g_object_add_weak_pointer@Base 2.12.0 + g_object_bind_property@Base 2.26.0 + g_object_bind_property_full@Base 2.26.0 + g_object_bind_property_with_closures@Base 2.26.0 + g_object_class_find_property@Base 2.12.0 + g_object_class_install_properties@Base 2.26.0 + g_object_class_install_property@Base 2.12.0 + g_object_class_list_properties@Base 2.12.0 + g_object_class_override_property@Base 2.12.0 + g_object_compat_control@Base 2.12.0 + g_object_connect@Base 2.12.0 + g_object_disconnect@Base 2.12.0 + g_object_dup_data@Base 2.33.14 + g_object_dup_qdata@Base 2.33.14 + g_object_force_floating@Base 2.12.0 + g_object_freeze_notify@Base 2.12.0 + g_object_get@Base 2.12.0 + g_object_get_data@Base 2.12.0 + g_object_get_property@Base 2.12.0 + g_object_get_qdata@Base 2.12.0 + g_object_get_type@Base 2.18.0 + g_object_get_valist@Base 2.12.0 + g_object_getv@Base 2.53.1 + g_object_interface_find_property@Base 2.12.0 + g_object_interface_install_property@Base 2.12.0 + g_object_interface_list_properties@Base 2.12.0 + g_object_is_floating@Base 2.12.0 + g_object_new@Base 2.12.0 + g_object_new_valist@Base 2.12.0 + g_object_newv@Base 2.12.0 + g_object_new_with_properties@Base 2.53.1 + g_object_notify@Base 2.12.0 + g_object_notify_by_pspec@Base 2.26.0 + g_object_ref@Base 2.12.0 + g_object_ref_sink@Base 2.12.0 + g_object_take_ref@Base 2.70.0 + g_object_remove_toggle_ref@Base 2.12.0 + g_object_remove_weak_pointer@Base 2.12.0 + g_object_replace_data@Base 2.33.14 + g_object_replace_qdata@Base 2.33.14 + g_object_run_dispose@Base 2.12.0 + g_object_set@Base 2.12.0 + g_object_set_data@Base 2.12.0 + g_object_set_data_full@Base 2.12.0 + g_object_set_property@Base 2.12.0 + g_object_set_qdata@Base 2.12.0 + g_object_set_qdata_full@Base 2.12.0 + g_object_set_valist@Base 2.12.0 + g_object_setv@Base 2.53.1 + g_object_steal_data@Base 2.12.0 + g_object_steal_qdata@Base 2.12.0 + g_object_thaw_notify@Base 2.12.0 + g_object_unref@Base 2.12.0 + g_object_watch_closure@Base 2.12.0 + g_object_weak_ref@Base 2.12.0 + g_object_weak_unref@Base 2.12.0 + g_option_group_get_type@Base 2.43.90 + g_param_spec_boolean@Base 2.12.0 + g_param_spec_boxed@Base 2.12.0 + g_param_spec_char@Base 2.12.0 + g_param_spec_double@Base 2.12.0 + g_param_spec_enum@Base 2.12.0 + g_param_spec_flags@Base 2.12.0 + g_param_spec_float@Base 2.12.0 + g_param_spec_get_blurb@Base 2.12.0 + g_param_spec_get_default_value@Base 2.37.0 + g_param_spec_get_name@Base 2.12.0 + g_param_spec_get_name_quark@Base 2.45.8 + g_param_spec_get_nick@Base 2.12.0 + g_param_spec_get_qdata@Base 2.12.0 + g_param_spec_get_redirect_target@Base 2.12.0 + g_param_spec_gtype@Base 2.12.0 + g_param_spec_int64@Base 2.12.0 + g_param_spec_int@Base 2.12.0 + g_param_spec_internal@Base 2.12.0 + g_param_spec_is_valid_name@Base 2.65.1 + g_param_spec_long@Base 2.12.0 + g_param_spec_object@Base 2.12.0 + g_param_spec_override@Base 2.12.0 + g_param_spec_param@Base 2.12.0 + g_param_spec_pointer@Base 2.12.0 + g_param_spec_pool_insert@Base 2.12.0 + g_param_spec_pool_list@Base 2.12.0 + g_param_spec_pool_list_owned@Base 2.12.0 + g_param_spec_pool_lookup@Base 2.12.0 + g_param_spec_pool_new@Base 2.12.0 + g_param_spec_pool_remove@Base 2.12.0 + g_param_spec_ref@Base 2.12.0 + g_param_spec_ref_sink@Base 2.12.0 + g_param_spec_set_qdata@Base 2.12.0 + g_param_spec_set_qdata_full@Base 2.12.0 + g_param_spec_sink@Base 2.12.0 + g_param_spec_steal_qdata@Base 2.12.0 + g_param_spec_string@Base 2.12.0 + g_param_spec_types@Base 2.12.0 + g_param_spec_uchar@Base 2.12.0 + g_param_spec_uint64@Base 2.12.0 + g_param_spec_uint@Base 2.12.0 + g_param_spec_ulong@Base 2.12.0 + g_param_spec_unichar@Base 2.12.0 + g_param_spec_unref@Base 2.12.0 + g_param_spec_value_array@Base 2.12.0 + g_param_spec_variant@Base 2.26.0 + g_param_type_register_static@Base 2.12.0 + g_param_value_convert@Base 2.12.0 + g_param_value_defaults@Base 2.12.0 + g_param_value_set_default@Base 2.12.0 + g_param_value_validate@Base 2.12.0 + g_param_values_cmp@Base 2.12.0 + g_pattern_spec_get_type@Base 2.70.0 + g_pointer_type_register_static@Base 2.12.0 + g_pollfd_get_type@Base 2.35.8 + g_ptr_array_get_type@Base 2.22.0 + g_regex_get_type@Base 2.14.0 + g_signal_accumulator_first_wins@Base 2.28.0 + g_signal_accumulator_true_handled@Base 2.12.0 + g_signal_add_emission_hook@Base 2.12.0 + g_signal_chain_from_overridden@Base 2.12.0 + g_signal_chain_from_overridden_handler@Base 2.18.0 + g_signal_connect_closure@Base 2.12.0 + g_signal_connect_closure_by_id@Base 2.12.0 + g_signal_connect_data@Base 2.12.0 + g_signal_connect_object@Base 2.12.0 + g_signal_emit@Base 2.12.0 + g_signal_emit_by_name@Base 2.12.0 + g_signal_emit_valist@Base 2.12.0 + g_signal_emitv@Base 2.12.0 + g_signal_get_invocation_hint@Base 2.12.0 + g_signal_group_block@Base 2.71.2 + g_signal_group_connect@Base 2.71.2 + g_signal_group_connect_after@Base 2.71.2 + g_signal_group_connect_data@Base 2.71.2 + g_signal_group_connect_object@Base 2.71.2 + g_signal_group_connect_swapped@Base 2.71.2 + g_signal_group_dup_target@Base 2.71.2 + g_signal_group_get_type@Base 2.71.2 + g_signal_group_new@Base 2.71.2 + g_signal_group_set_target@Base 2.71.2 + g_signal_group_unblock@Base 2.71.2 + g_signal_handler_block@Base 2.12.0 + g_signal_handler_disconnect@Base 2.12.0 + g_signal_handler_find@Base 2.12.0 + g_signal_handler_is_connected@Base 2.12.0 + g_signal_handler_unblock@Base 2.12.0 + g_signal_handlers_block_matched@Base 2.12.0 + g_signal_handlers_destroy@Base 2.12.0 + g_signal_handlers_disconnect_matched@Base 2.12.0 + g_signal_handlers_unblock_matched@Base 2.12.0 + g_signal_has_handler_pending@Base 2.12.0 + g_signal_is_valid_name@Base 2.65.1 + g_signal_list_ids@Base 2.12.0 + g_signal_lookup@Base 2.12.0 + g_signal_name@Base 2.12.0 + g_signal_new@Base 2.12.0 + g_signal_new_class_handler@Base 2.18.0 + g_signal_new_valist@Base 2.12.0 + g_signal_newv@Base 2.12.0 + g_signal_override_class_closure@Base 2.12.0 + g_signal_override_class_handler@Base 2.18.0 + g_signal_parse_name@Base 2.12.0 + g_signal_query@Base 2.12.0 + g_signal_remove_emission_hook@Base 2.12.0 + g_signal_set_va_marshaller@Base 2.31.20 + g_signal_stop_emission@Base 2.12.0 + g_signal_stop_emission_by_name@Base 2.12.0 + g_signal_type_cclosure_new@Base 2.12.0 + g_source_get_type@Base 2.30.0 + g_source_set_closure@Base 2.12.0 + g_source_set_dummy_callback@Base 2.28.0 + g_strdup_value_contents@Base 2.12.0 + g_strv_get_type@Base 2.12.0 + g_thread_get_type@Base 2.35.8 + g_time_zone_get_type@Base 2.33.14 + g_tree_get_type@Base 2.67.1 + g_type_add_class_cache_func@Base 2.12.0 + g_type_add_class_private@Base 2.24.0 + g_type_add_instance_private@Base 2.37.3 + g_type_add_interface_check@Base 2.12.0 + g_type_add_interface_dynamic@Base 2.12.0 + g_type_add_interface_static@Base 2.12.0 + g_type_check_class_cast@Base 2.12.0 + g_type_check_class_is_a@Base 2.12.0 + g_type_check_instance@Base 2.12.0 + g_type_check_instance_cast@Base 2.12.0 + g_type_check_instance_is_a@Base 2.12.0 + g_type_check_instance_is_fundamentally_a@Base 2.41.1 + g_type_check_is_value_type@Base 2.12.0 + g_type_check_value@Base 2.12.0 + g_type_check_value_holds@Base 2.12.0 + g_type_children@Base 2.12.0 + g_type_class_add_private@Base 2.12.0 + g_type_class_adjust_private_offset@Base 2.37.3 + g_type_class_get_instance_private_offset@Base 2.37.0 + g_type_class_get_private@Base 2.24.0 + g_type_class_peek@Base 2.12.0 + g_type_class_peek_parent@Base 2.12.0 + g_type_class_peek_static@Base 2.12.0 + g_type_class_ref@Base 2.12.0 + g_type_class_unref@Base 2.12.0 + g_type_class_unref_uncached@Base 2.12.0 + g_type_create_instance@Base 2.12.0 + g_type_default_interface_peek@Base 2.12.0 + g_type_default_interface_ref@Base 2.12.0 + g_type_default_interface_unref@Base 2.12.0 + g_type_depth@Base 2.12.0 + g_type_ensure@Base 2.33.14 + g_type_free_instance@Base 2.12.0 + g_type_from_name@Base 2.12.0 + g_type_fundamental@Base 2.12.0 + g_type_fundamental_next@Base 2.12.0 + g_type_get_instance_count@Base 2.43.1 + g_type_get_plugin@Base 2.12.0 + g_type_get_qdata@Base 2.12.0 + g_type_get_type_registration_serial@Base 2.35.8 + g_type_init@Base 2.12.0 + g_type_init_with_debug_flags@Base 2.12.0 + g_type_instance_get_private@Base 2.12.0 + g_type_interface_add_prerequisite@Base 2.12.0 + g_type_interface_get_plugin@Base 2.12.0 + g_type_interface_instantiatable_prerequisite@Base 2.67.1 + g_type_interface_peek@Base 2.12.0 + g_type_interface_peek_parent@Base 2.12.0 + g_type_interface_prerequisites@Base 2.12.0 + g_type_interfaces@Base 2.12.0 + g_type_is_a@Base 2.12.0 + g_type_module_add_interface@Base 2.12.0 + g_type_module_get_type@Base 2.12.0 + g_type_module_register_enum@Base 2.12.0 + g_type_module_register_flags@Base 2.12.0 + g_type_module_register_type@Base 2.12.0 + g_type_module_set_name@Base 2.12.0 + g_type_module_unuse@Base 2.12.0 + g_type_module_use@Base 2.12.0 + g_type_name@Base 2.12.0 + g_type_name_from_class@Base 2.12.0 + g_type_name_from_instance@Base 2.12.0 + g_type_next_base@Base 2.12.0 + g_type_parent@Base 2.12.0 + g_type_plugin_complete_interface_info@Base 2.12.0 + g_type_plugin_complete_type_info@Base 2.12.0 + g_type_plugin_get_type@Base 2.12.0 + g_type_plugin_unuse@Base 2.12.0 + g_type_plugin_use@Base 2.12.0 + g_type_qname@Base 2.12.0 + g_type_query@Base 2.12.0 + g_type_register_dynamic@Base 2.12.0 + g_type_register_fundamental@Base 2.12.0 + g_type_register_static@Base 2.12.0 + g_type_register_static_simple@Base 2.12.0 + g_type_remove_class_cache_func@Base 2.12.0 + g_type_remove_interface_check@Base 2.12.0 + g_type_set_qdata@Base 2.12.0 + g_type_test_flags@Base 2.12.0 + g_type_value_table_peek@Base 2.12.0 + g_unicode_break_type_get_type@Base 2.59.2 + g_unicode_script_get_type@Base 2.59.2 + g_unicode_type_get_type@Base 2.59.2 + g_uri_get_type@Base 2.65.1 + g_value_array_append@Base 2.12.0 + g_value_array_copy@Base 2.12.0 + g_value_array_free@Base 2.12.0 + g_value_array_get_nth@Base 2.12.0 + g_value_array_get_type@Base 2.12.0 + g_value_array_insert@Base 2.12.0 + g_value_array_new@Base 2.12.0 + g_value_array_prepend@Base 2.12.0 + g_value_array_remove@Base 2.12.0 + g_value_array_sort@Base 2.12.0 + g_value_array_sort_with_data@Base 2.12.0 + g_value_copy@Base 2.12.0 + g_value_dup_boxed@Base 2.12.0 + g_value_dup_object@Base 2.12.0 + g_value_dup_param@Base 2.12.0 + g_value_dup_string@Base 2.12.0 + g_value_dup_variant@Base 2.26.0 + g_value_fits_pointer@Base 2.12.0 + g_value_get_boolean@Base 2.12.0 + g_value_get_boxed@Base 2.12.0 + g_value_get_char@Base 2.12.0 + g_value_get_double@Base 2.12.0 + g_value_get_enum@Base 2.12.0 + g_value_get_flags@Base 2.12.0 + g_value_get_float@Base 2.12.0 + g_value_get_gtype@Base 2.12.0 + g_value_get_int64@Base 2.12.0 + g_value_get_int@Base 2.12.0 + g_value_get_long@Base 2.12.0 + g_value_get_object@Base 2.12.0 + g_value_get_param@Base 2.12.0 + g_value_get_pointer@Base 2.12.0 + g_value_get_schar@Base 2.31.8 + g_value_get_string@Base 2.12.0 + g_value_get_type@Base 2.12.0 + g_value_get_uchar@Base 2.12.0 + g_value_get_uint64@Base 2.12.0 + g_value_get_uint@Base 2.12.0 + g_value_get_ulong@Base 2.12.0 + g_value_get_variant@Base 2.26.0 + g_value_init@Base 2.12.0 + g_value_init_from_instance@Base 2.41.2 + g_value_peek_pointer@Base 2.12.0 + g_value_register_transform_func@Base 2.12.0 + g_value_reset@Base 2.12.0 + g_value_set_boolean@Base 2.12.0 + g_value_set_boxed@Base 2.12.0 + g_value_set_boxed_take_ownership@Base 2.12.0 + g_value_set_char@Base 2.12.0 + g_value_set_double@Base 2.12.0 + g_value_set_enum@Base 2.12.0 + g_value_set_flags@Base 2.12.0 + g_value_set_float@Base 2.12.0 + g_value_set_gtype@Base 2.12.0 + g_value_set_instance@Base 2.12.0 + g_value_set_int64@Base 2.12.0 + g_value_set_int@Base 2.12.0 + g_value_set_interned_string@Base 2.65.1 + g_value_set_long@Base 2.12.0 + g_value_set_object@Base 2.12.0 + g_value_set_object_take_ownership@Base 2.12.0 + g_value_set_param@Base 2.12.0 + g_value_set_param_take_ownership@Base 2.12.0 + g_value_set_pointer@Base 2.12.0 + g_value_set_schar@Base 2.31.8 + g_value_set_static_boxed@Base 2.12.0 + g_value_set_static_string@Base 2.12.0 + g_value_set_string@Base 2.12.0 + g_value_set_string_take_ownership@Base 2.12.0 + g_value_set_uchar@Base 2.12.0 + g_value_set_uint64@Base 2.12.0 + g_value_set_uint@Base 2.12.0 + g_value_set_ulong@Base 2.12.0 + g_value_set_variant@Base 2.26.0 + g_value_take_boxed@Base 2.12.0 + g_value_take_object@Base 2.12.0 + g_value_take_param@Base 2.12.0 + g_value_take_string@Base 2.12.0 + g_value_take_variant@Base 2.26.0 + g_value_transform@Base 2.12.0 + g_value_type_compatible@Base 2.12.0 + g_value_type_transformable@Base 2.12.0 + g_value_unset@Base 2.12.0 + g_variant_builder_get_type@Base 2.30.0 + g_variant_dict_get_type@Base 2.39.90 + g_variant_get_gtype@Base 2.24.0 + g_variant_type_get_gtype@Base 2.24.0 + g_weak_ref_clear@Base 2.31.8 + g_weak_ref_get@Base 2.31.8 + g_weak_ref_init@Base 2.31.8 + g_weak_ref_set@Base 2.31.8 +libgthread-2.0.so.0 libglib2.0-0 #MINVER# +* Build-Depends-Package: libglib2.0-dev + g_thread_init@Base 2.12.0 + g_thread_init_with_errorcheck_mutexes@Base 2.12.0 diff --git a/debian/libglib2.0-0.triggers.in b/debian/libglib2.0-0.triggers.in new file mode 100644 index 0000000..b365a66 --- /dev/null +++ b/debian/libglib2.0-0.triggers.in @@ -0,0 +1,2 @@ +interest-noawait /usr/lib/#MULTIARCH#/gio/modules +interest-await /usr/share/glib-2.0/schemas diff --git a/debian/libglib2.0-bin.install b/debian/libglib2.0-bin.install new file mode 100644 index 0000000..1c406ca --- /dev/null +++ b/debian/libglib2.0-bin.install @@ -0,0 +1,13 @@ +usr/bin/gapplication +usr/bin/gdbus +usr/bin/gio +usr/bin/gresource +usr/bin/gsettings +usr/share/bash-completion +usr/share/man/man1/gapplication.1* +usr/share/man/man1/gdbus.1* +usr/share/man/man1/gio-querymodules.1* +usr/share/man/man1/gio.1* +usr/share/man/man1/glib-compile-schemas.1* +usr/share/man/man1/gresource.1* +usr/share/man/man1/gsettings.1* diff --git a/debian/libglib2.0-bin.links b/debian/libglib2.0-bin.links new file mode 100644 index 0000000..3ccceac --- /dev/null +++ b/debian/libglib2.0-bin.links @@ -0,0 +1,2 @@ +/usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0/gio-querymodules /usr/bin/gio-querymodules +/usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0/glib-compile-schemas /usr/bin/glib-compile-schemas diff --git a/debian/libglib2.0-bin.lintian-overrides b/debian/libglib2.0-bin.lintian-overrides new file mode 100644 index 0000000..3b4f46b --- /dev/null +++ b/debian/libglib2.0-bin.lintian-overrides @@ -0,0 +1,2 @@ +# GLib programs normally use GLib functions instead of using libc directly +libglib2.0-bin: hardening-no-fortify-functions [usr/bin/gio] diff --git a/debian/libglib2.0-data.install b/debian/libglib2.0-data.install new file mode 100644 index 0000000..3635480 --- /dev/null +++ b/debian/libglib2.0-data.install @@ -0,0 +1 @@ +usr/share/locale diff --git a/debian/libglib2.0-dev-bin.install b/debian/libglib2.0-dev-bin.install new file mode 100644 index 0000000..84156be --- /dev/null +++ b/debian/libglib2.0-dev-bin.install @@ -0,0 +1,19 @@ +usr/bin/gdbus-codegen +usr/bin/glib-compile-resources +usr/bin/glib-genmarshal +usr/bin/glib-gettextize +usr/bin/glib-mkenums +usr/bin/gobject-query +usr/bin/gtester +usr/bin/gtester-report +usr/share/aclocal +usr/share/glib-2.0/codegen/*.py +usr/share/glib-2.0/gettext +usr/share/man/man1/gdbus-codegen.1* +usr/share/man/man1/glib-compile-resources.1* +usr/share/man/man1/glib-genmarshal.1* +usr/share/man/man1/glib-gettextize.1* +usr/share/man/man1/glib-mkenums.1* +usr/share/man/man1/gobject-query.1* +usr/share/man/man1/gtester-report.1* +usr/share/man/man1/gtester.1* diff --git a/debian/libglib2.0-dev.README.Debian b/debian/libglib2.0-dev.README.Debian new file mode 100644 index 0000000..b36c218 --- /dev/null +++ b/debian/libglib2.0-dev.README.Debian @@ -0,0 +1,15 @@ +GLib2.0 for Debian +------------------- + +Static libraries issue: +Right now glib2.0 provides some static libraries. If your application +uses g_module* functions or other libraries uses g_module* functions and +your application link it, Please don't statically link this libraries. +You may get some strange proglem between static-linked application and +dynamic-loaded modules, g_module* provides the feature for dynamically +loading some modules. +This is well-known bug, so please don't file a bug report. + + + -- Akira TAGOH , Thu, 11 Apr 2002 19:28:50 +0900 + diff --git a/debian/libglib2.0-dev.install b/debian/libglib2.0-dev.install new file mode 100644 index 0000000..0bb46ef --- /dev/null +++ b/debian/libglib2.0-dev.install @@ -0,0 +1,14 @@ +usr/include/* +usr/lib/*/glib-2.0 +usr/lib/*/lib*.a +usr/lib/*/libgio*.so +usr/lib/*/libglib*.so +usr/lib/*/libgmodule*.so +usr/lib/*/libgobject*.so +usr/lib/*/libgthread*.so +usr/lib/*/pkgconfig +usr/share/gdb +usr/share/gettext/its +usr/share/glib-2.0/gdb +usr/share/glib-2.0/schemas +usr/share/glib-2.0/valgrind diff --git a/debian/libglib2.0-doc.doc-base.gio b/debian/libglib2.0-doc.doc-base.gio new file mode 100644 index 0000000..72ffc95 --- /dev/null +++ b/debian/libglib2.0-doc.doc-base.gio @@ -0,0 +1,14 @@ +Document: gio +Title: GIO (GLib) Reference Manual +Author: Damon Chaplin et al. +Abstract: GIO is striving to provide a modern, easy-to-use VFS API that sits at + the right level in the library stack. The goal is to overcome the shortcomings + of GnomeVFS and provide an API that is so good that developers prefer it over + raw POSIX calls. Among other things that means using GObject. It also means + not cloning the POSIX API, but providing higher-level, document-centric + interfaces. +Section: Programming/C + +Format: HTML +Index: /usr/share/doc/libglib2.0-doc/gio/index.html +Files: /usr/share/doc/libglib2.0-doc/gio/*.html diff --git a/debian/libglib2.0-doc.doc-base.glib b/debian/libglib2.0-doc.doc-base.glib new file mode 100644 index 0000000..d611198 --- /dev/null +++ b/debian/libglib2.0-doc.doc-base.glib @@ -0,0 +1,12 @@ +Document: glib +Title: GLib Reference Manual +Author: Damon Chaplin et al. +Abstract: The GLib C library is used in GTK+ and GNOME + programs as a general-purpose set of functions for hash, tree, list, + and string operations, which C is oddly lacking whatsoever in any + of its standard libraries. +Section: Programming/C + +Format: HTML +Index: /usr/share/doc/libglib2.0-doc/glib/index.html +Files: /usr/share/doc/libglib2.0-doc/glib/*.html diff --git a/debian/libglib2.0-doc.doc-base.gobject b/debian/libglib2.0-doc.doc-base.gobject new file mode 100644 index 0000000..adcc6f0 --- /dev/null +++ b/debian/libglib2.0-doc.doc-base.gobject @@ -0,0 +1,15 @@ +Document: gobject +Title: GObject (GLib) Reference Manual +Author: Damon Chaplin et al. +Abstract: Most modern programming languages come with their own native object + systems and additional fundamental algorithmic language constructs. + Just as GLib serves as an implementation of such fundamental + types and algorithms (linked lists, hash tables and so forth), the + GLib Object System provides the required implementations of a + flexible extensible and intentionally easy to map (into other + languages) object oriented framework for C. +Section: Programming/C + +Format: HTML +Index: /usr/share/doc/libglib2.0-doc/gobject/index.html +Files: /usr/share/doc/libglib2.0-doc/gobject/*.html diff --git a/debian/libglib2.0-doc.install b/debian/libglib2.0-doc.install new file mode 100644 index 0000000..a5f4974 --- /dev/null +++ b/debian/libglib2.0-doc.install @@ -0,0 +1,3 @@ +usr/share/gtk-doc/html/gio +usr/share/gtk-doc/html/glib +usr/share/gtk-doc/html/gobject diff --git a/debian/libglib2.0-doc.links b/debian/libglib2.0-doc.links new file mode 100644 index 0000000..a979f87 --- /dev/null +++ b/debian/libglib2.0-doc.links @@ -0,0 +1,3 @@ +usr/share/gtk-doc/html/gio usr/share/doc/libglib2.0-doc/gio +usr/share/gtk-doc/html/glib usr/share/doc/libglib2.0-doc/glib +usr/share/gtk-doc/html/gobject usr/share/doc/libglib2.0-doc/gobject diff --git a/debian/libglib2.0-doc.lintian-overrides b/debian/libglib2.0-doc.lintian-overrides new file mode 100644 index 0000000..48af548 --- /dev/null +++ b/debian/libglib2.0-doc.lintian-overrides @@ -0,0 +1,2 @@ +# https://bugs.debian.org/970275 +package-contains-documentation-outside-usr-share-doc usr/share/gtk-doc/html/* diff --git a/debian/libglib2.0-doc.maintscript b/debian/libglib2.0-doc.maintscript new file mode 100644 index 0000000..807786b --- /dev/null +++ b/debian/libglib2.0-doc.maintscript @@ -0,0 +1,6 @@ +dir_to_symlink /usr/share/doc/libglib2.0-doc/gio ../../gtk-doc/html/gio 2.58.0-4~ +dir_to_symlink /usr/share/doc/libglib2.0-doc/glib ../../gtk-doc/html/glib 2.58.0-4~ +dir_to_symlink /usr/share/doc/libglib2.0-doc/gobject ../../gtk-doc/html/gobject 2.58.0-4~ +symlink_to_dir /usr/share/gtk-doc/html/gio ../../doc/libglib2.0-doc/gio 2.58.0-4~ +symlink_to_dir /usr/share/gtk-doc/html/glib ../../doc/libglib2.0-doc/glib 2.58.0-4~ +symlink_to_dir /usr/share/gtk-doc/html/gobject ../../doc/libglib2.0-doc/gobject 2.58.0-4~ diff --git a/debian/libglib2.0-tests.install b/debian/libglib2.0-tests.install new file mode 100644 index 0000000..e2a2951 --- /dev/null +++ b/debian/libglib2.0-tests.install @@ -0,0 +1,2 @@ +usr/libexec/installed-tests +usr/share/installed-tests diff --git a/debian/libglib2.0-tests.lintian-overrides b/debian/libglib2.0-tests.lintian-overrides new file mode 100644 index 0000000..e5e79f4 --- /dev/null +++ b/debian/libglib2.0-tests.lintian-overrides @@ -0,0 +1,12 @@ +# Lots of tests don't use libc functions +libglib2.0-tests: hardening-no-fortify-functions [usr/libexec/installed-tests/glib/*] +# Some are deliberately not well-formed UTF-8 +libglib2.0-tests: national-encoding usr/libexec/installed-tests/glib/markups/fail* +# Not every .txt file is documentation +libglib2.0-tests: package-contains-documentation-outside-usr-share-doc usr/libexec/installed-tests/glib/*.txt +# Test data for content-type sniffing, never actually executed +libglib2.0-tests: script-not-executable [usr/libexec/installed-tests/glib/x-content/unix-software/autorun.sh] +# This is lorem ipsum in a test-case, nothing to do with the Debian Free Software Guidelines +libglib2.0-tests: spelling-error-in-binary usr/libexec/installed-tests/glib/utf8-pointer dsfg dfsg +# Depends on a private test-only library +libglib2.0-tests: custom-library-search-path RUNPATH /usr/libexec/installed-tests/glib [usr/libexec/installed-tests/glib/gdbus-peer] diff --git a/debian/libglib2.0-udeb.install b/debian/libglib2.0-udeb.install new file mode 100644 index 0000000..d484cc1 --- /dev/null +++ b/debian/libglib2.0-udeb.install @@ -0,0 +1,2 @@ +usr/lib/*/lib*.so.* +usr/share/locale diff --git a/debian/libglib2.0-udeb.lintian-overrides b/debian/libglib2.0-udeb.lintian-overrides new file mode 100644 index 0000000..e60fe9e --- /dev/null +++ b/debian/libglib2.0-udeb.lintian-overrides @@ -0,0 +1,2 @@ +# It's a deliberate choice of bundling them together +libglib2.0-udeb udeb: package-name-doesnt-match-sonames libgio-2.0-0 libglib-2.0-0 libgmodule-2.0-0 libgobject-2.0-0 libgthread-2.0-0 diff --git a/debian/patches/0001-gio-Make-portal-support-aware-of-snaps.patch b/debian/patches/0001-gio-Make-portal-support-aware-of-snaps.patch new file mode 100644 index 0000000..80f2b7a --- /dev/null +++ b/debian/patches/0001-gio-Make-portal-support-aware-of-snaps.patch @@ -0,0 +1,1136 @@ +From 3cfd08a16c3d9424d37ef71756e4471930c32598 Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Mon, 31 Oct 2022 12:07:52 +0100 +Subject: [PATCH] gio: Make portal support aware of snaps + +--- + docs/reference/gio/meson.build | 1 + + gio/gportalsupport.c | 155 ++++++++++++------ + gio/gsandbox.c | 126 ++++++++++++++ + gio/gsandbox.h | 47 ++++++ + gio/meson.build | 3 +- + gio/tests/meson.build | 22 +++ + gio/tests/portal-support-env-var.c | 45 +++++ + gio/tests/portal-support-none.c | 43 +++++ + gio/tests/portal-support-snap-classic.c | 119 ++++++++++++++ + gio/tests/portal-support-snap.c | 208 ++++++++++++++++++++++++ + gio/tests/portal-support-utils.c | 87 ++++++++++ + gio/tests/portal-support-utils.h | 30 ++++ + gio/tests/sandbox.c | 80 +++++++++ + 13 files changed, 919 insertions(+), 47 deletions(-) + create mode 100644 gio/gsandbox.c + create mode 100644 gio/gsandbox.h + create mode 100644 gio/tests/portal-support-env-var.c + create mode 100644 gio/tests/portal-support-none.c + create mode 100644 gio/tests/portal-support-snap-classic.c + create mode 100644 gio/tests/portal-support-snap.c + create mode 100644 gio/tests/portal-support-utils.c + create mode 100644 gio/tests/portal-support-utils.h + create mode 100644 gio/tests/sandbox.c + +diff --git a/docs/reference/gio/meson.build b/docs/reference/gio/meson.build +index bb14e6923..fe32a2ad3 100644 +--- a/docs/reference/gio/meson.build ++++ b/docs/reference/gio/meson.build +@@ -71,6 +71,7 @@ if get_option('gtk_doc') + 'gproxyresolverportal.h', + 'gregistrysettingsbackend.h', + 'gresourcefile.h', ++ 'gsandbox.h', + 'gsettingsbackendinternal.h', + 'gsettings-mapping.h', + 'gsettingsschema-internal.h', +diff --git a/gio/gportalsupport.c b/gio/gportalsupport.c +index 233f6af45..0742b9beb 100644 +--- a/gio/gportalsupport.c ++++ b/gio/gportalsupport.c +@@ -18,84 +18,147 @@ + + #include "config.h" + ++#include "glib-private.h" + #include "gportalsupport.h" ++#include "gsandbox.h" + ++static GSandboxType sandbox_type = G_SANDBOX_TYPE_UNKNOWN; + static gboolean use_portal; + static gboolean network_available; + static gboolean dconf_access; + ++#ifdef G_PORTAL_SUPPORT_TEST ++static const char *snapctl = "snapctl"; ++#else ++static const char *snapctl = "/usr/bin/snapctl"; ++#endif ++ ++static gboolean ++snap_plug_is_connected (const gchar *plug_name) ++{ ++ gint wait_status; ++ const gchar *argv[] = { snapctl, "is-connected", plug_name, NULL }; ++ ++ /* Bail out if our process is privileged - we don't want to pass those ++ * privileges to snapctl. It could be overridden and this would ++ * allow arbitrary code execution. ++ */ ++ if (GLIB_PRIVATE_CALL (g_check_setuid) ()) ++ return FALSE; ++ ++ if (!g_spawn_sync (NULL, (gchar **) argv, NULL, ++#ifdef G_PORTAL_SUPPORT_TEST ++ G_SPAWN_SEARCH_PATH | ++#endif ++ G_SPAWN_STDOUT_TO_DEV_NULL | ++ G_SPAWN_STDERR_TO_DEV_NULL, ++ NULL, NULL, NULL, NULL, &wait_status, ++ NULL)) ++ return FALSE; ++ ++ return g_spawn_check_wait_status (wait_status, NULL); ++} ++ + static void +-read_flatpak_info (void) ++sandbox_info_read (void) + { +- static gsize flatpak_info_read = 0; +- const gchar *path = "/.flatpak-info"; ++ static gsize sandbox_info_is_read = 0; + +- if (!g_once_init_enter (&flatpak_info_read)) ++ /* Sandbox type and Flatpak info is static, so only read once */ ++ if (!g_once_init_enter (&sandbox_info_is_read)) + return; + +- if (g_file_test (path, G_FILE_TEST_EXISTS)) +- { +- GKeyFile *keyfile; +- +- use_portal = TRUE; +- network_available = FALSE; +- dconf_access = FALSE; +- +- keyfile = g_key_file_new (); +- if (g_key_file_load_from_file (keyfile, path, G_KEY_FILE_NONE, NULL)) +- { +- char **shared = NULL; +- char *dconf_policy = NULL; +- +- shared = g_key_file_get_string_list (keyfile, "Context", "shared", NULL, NULL); +- if (shared) +- { +- network_available = g_strv_contains ((const char * const *)shared, "network"); +- g_strfreev (shared); +- } +- +- dconf_policy = g_key_file_get_string (keyfile, "Session Bus Policy", "ca.desrt.dconf", NULL); +- if (dconf_policy) +- { +- if (strcmp (dconf_policy, "talk") == 0) +- dconf_access = TRUE; +- g_free (dconf_policy); +- } +- } +- +- g_key_file_unref (keyfile); +- } +- else ++ sandbox_type = glib_get_sandbox_type (); ++ ++ switch (sandbox_type) + { +- const char *var; ++ case G_SANDBOX_TYPE_FLATPAK: ++ { ++ GKeyFile *keyfile; + +- var = g_getenv ("GTK_USE_PORTAL"); +- if (var && var[0] == '1') + use_portal = TRUE; +- network_available = TRUE; +- dconf_access = TRUE; ++ network_available = FALSE; ++ dconf_access = FALSE; ++ ++ keyfile = g_key_file_new (); ++ if (g_key_file_load_from_file (keyfile, "/.flatpak-info", G_KEY_FILE_NONE, NULL)) ++ { ++ char **shared = NULL; ++ char *dconf_policy = NULL; ++ ++ shared = g_key_file_get_string_list (keyfile, "Context", "shared", NULL, NULL); ++ if (shared) ++ { ++ network_available = g_strv_contains ((const char * const *)shared, "network"); ++ g_strfreev (shared); ++ } ++ ++ dconf_policy = g_key_file_get_string (keyfile, "Session Bus Policy", "ca.desrt.dconf", NULL); ++ if (dconf_policy) ++ { ++ if (strcmp (dconf_policy, "talk") == 0) ++ dconf_access = TRUE; ++ g_free (dconf_policy); ++ } ++ } ++ ++ g_key_file_unref (keyfile); ++ } ++ break; ++ case G_SANDBOX_TYPE_SNAP: ++ break; ++ case G_SANDBOX_TYPE_UNKNOWN: ++ { ++ const char *var; ++ ++ var = g_getenv ("GTK_USE_PORTAL"); ++ if (var && var[0] == '1') ++ use_portal = TRUE; ++ network_available = TRUE; ++ dconf_access = TRUE; ++ } ++ break; + } + +- g_once_init_leave (&flatpak_info_read, 1); ++ g_once_init_leave (&sandbox_info_is_read, 1); + } + + gboolean + glib_should_use_portal (void) + { +- read_flatpak_info (); ++ sandbox_info_read (); ++ ++ if (sandbox_type == G_SANDBOX_TYPE_SNAP) ++ return snap_plug_is_connected ("desktop"); ++ + return use_portal; + } + + gboolean + glib_network_available_in_sandbox (void) + { +- read_flatpak_info (); ++ sandbox_info_read (); ++ ++ if (sandbox_type == G_SANDBOX_TYPE_SNAP) ++ { ++ /* FIXME: This is inefficient doing multiple calls to check connections. ++ * See https://github.com/snapcore/snapd/pull/12301 for a proposed ++ * improvement to snapd for this. ++ */ ++ return snap_plug_is_connected ("desktop") || ++ snap_plug_is_connected ("network-status"); ++ } ++ + return network_available; + } + + gboolean + glib_has_dconf_access_in_sandbox (void) + { +- read_flatpak_info (); ++ sandbox_info_read (); ++ ++ if (sandbox_type == G_SANDBOX_TYPE_SNAP) ++ return snap_plug_is_connected ("gsettings"); ++ + return dconf_access; + } +diff --git a/gio/gsandbox.c b/gio/gsandbox.c +new file mode 100644 +index 000000000..34f680b5a +--- /dev/null ++++ b/gio/gsandbox.c +@@ -0,0 +1,126 @@ ++/* GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright 2022 Canonical Ltd ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ */ ++ ++#include "config.h" ++ ++#include "gsandbox.h" ++ ++#include ++ ++#define SNAP_CONFINEMENT_PREFIX "confinement:" ++ ++static gboolean ++is_flatpak (void) ++{ ++ return g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS); ++} ++ ++static gchar * ++get_snap_confinement (const char *snap_yaml, ++ GError **error) ++{ ++ char *confinement = NULL; ++ char *yaml_contents; ++ ++ if (g_file_get_contents (snap_yaml, &yaml_contents, NULL, error)) ++ { ++ const char *line = yaml_contents; ++ ++ do ++ { ++ if (g_str_has_prefix (line, SNAP_CONFINEMENT_PREFIX)) ++ break; ++ ++ line = strchr (line, '\n'); ++ if (line) ++ line += 1; ++ } ++ while (line != NULL); ++ ++ if (line) ++ { ++ const char *start = line + strlen (SNAP_CONFINEMENT_PREFIX); ++ const char *end = strchr (start, '\n'); ++ ++ confinement = ++ g_strstrip (end ? g_strndup (start, end-start) : g_strdup (start)); ++ } ++ ++ g_free (yaml_contents); ++ } ++ ++ return g_steal_pointer (&confinement); ++} ++ ++static gboolean ++is_snap (void) ++{ ++ GError *error = NULL; ++ const gchar *snap_path; ++ gchar *yaml_path; ++ char *confinement; ++ gboolean result; ++ ++ snap_path = g_getenv ("SNAP"); ++ if (snap_path == NULL) ++ return FALSE; ++ ++ result = FALSE; ++ yaml_path = g_build_filename (snap_path, "meta", "snap.yaml", NULL); ++ confinement = get_snap_confinement (yaml_path, &error); ++ g_free (yaml_path); ++ ++ /* Classic snaps are de-facto no sandboxed apps, so we can ignore them */ ++ if (!error && g_strcmp0 (confinement, "classic") != 0) ++ result = TRUE; ++ ++ g_clear_error (&error); ++ g_free (confinement); ++ ++ return result; ++} ++ ++/* ++ * glib_get_sandbox_type: ++ * ++ * Gets the type of sandbox this process is running inside. ++ * ++ * Checking for sandboxes may involve doing blocking I/O calls, but should not take ++ * any significant time. ++ * ++ * The sandbox will not change over the lifetime of the process, so calling this ++ * function once and reusing the result is valid. ++ * ++ * If this process is not sandboxed then @G_SANDBOX_TYPE_UNKNOWN will be returned. ++ * This is because this function only detects known sandbox types in #GSandboxType. ++ * It may be updated in the future if new sandboxes come into use. ++ * ++ * Returns: a #GSandboxType. ++ */ ++GSandboxType ++glib_get_sandbox_type (void) ++{ ++ if (is_flatpak ()) ++ return G_SANDBOX_TYPE_FLATPAK; ++ else if (is_snap ()) ++ return G_SANDBOX_TYPE_SNAP; ++ else ++ return G_SANDBOX_TYPE_UNKNOWN; ++} +diff --git a/gio/gsandbox.h b/gio/gsandbox.h +new file mode 100644 +index 000000000..7861b2756 +--- /dev/null ++++ b/gio/gsandbox.h +@@ -0,0 +1,47 @@ ++/* GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright 2022 Canonical Ltd ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ */ ++ ++#ifndef __G_SANDBOX_H__ ++#define __G_SANDBOX_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++ ++/* ++ * GSandboxType: ++ * @G_SANDBOX_TYPE_UNKNOWN: process is running inside an unknown or no sandbox. ++ * @G_SANDBOX_TYPE_FLATPAK: process is running inside a flatpak sandbox. ++ * @G_SANDBOX_TYPE_SNAP: process is running inside a snap sandbox. ++ * ++ * The type of sandbox that processes can be running inside. ++ */ ++typedef enum ++{ ++ G_SANDBOX_TYPE_UNKNOWN, ++ G_SANDBOX_TYPE_FLATPAK, ++ G_SANDBOX_TYPE_SNAP ++} GSandboxType; ++ ++GSandboxType glib_get_sandbox_type (void); ++ ++G_END_DECLS ++ ++#endif +diff --git a/gio/meson.build b/gio/meson.build +index 9019104a4..ad4bc47ee 100644 +--- a/gio/meson.build ++++ b/gio/meson.build +@@ -375,7 +375,8 @@ if host_system != 'windows' + 'gproxyresolverportal.c', + 'gtrashportal.c', + 'gportalsupport.c', +- 'gportalnotificationbackend.c'), ++ 'gportalnotificationbackend.c', ++ 'gsandbox.c'), + xdp_dbus_generated + ] + +diff --git a/gio/tests/meson.build b/gio/tests/meson.build +index 383d84319..f1345189a 100644 +--- a/gio/tests/meson.build ++++ b/gio/tests/meson.build +@@ -94,6 +94,9 @@ gio_tests = { + 'power-profile-monitor' : {}, + 'proxy-test' : {}, + 'readwrite' : {}, ++ 'sandbox' : { ++ 'extra_sources': ['../gsandbox.c', 'portal-support-utils.c'], ++ }, + 'simple-async-result' : {}, + 'simple-proxy' : {}, + 'sleepy-stream' : {}, +@@ -198,6 +201,25 @@ if host_machine.system() != 'windows' + }, + 'gdbus-peer-object-manager' : {}, + 'live-g-file' : {}, ++ 'portal-support-none' : { ++ 'extra_sources': ['../gportalsupport.c', '../gsandbox.c'], ++ 'c_args': ['-DG_PORTAL_SUPPORT_TEST'], ++ 'suite': ['portal-support'], ++ }, ++ 'portal-support-env-var' : { ++ 'extra_sources': ['../gportalsupport.c', '../gsandbox.c'], ++ 'suite': ['portal-support'], ++ }, ++ 'portal-support-snap' : { ++ 'extra_sources': ['../gportalsupport.c', '../gsandbox.c', 'portal-support-utils.c'], ++ 'c_args': ['-DG_PORTAL_SUPPORT_TEST'], ++ 'suite': ['portal-support'], ++ }, ++ 'portal-support-snap-classic' : { ++ 'extra_sources': ['../gportalsupport.c', '../gsandbox.c', 'portal-support-utils.c'], ++ 'c_args': ['-DG_PORTAL_SUPPORT_TEST'], ++ 'suite': ['portal-support'], ++ }, + 'resolver-parsing' : {'dependencies' : [network_libs]}, + 'socket-address' : {}, + 'stream-rw_all' : {}, +diff --git a/gio/tests/portal-support-env-var.c b/gio/tests/portal-support-env-var.c +new file mode 100644 +index 000000000..b1d3fd3c3 +--- /dev/null ++++ b/gio/tests/portal-support-env-var.c +@@ -0,0 +1,45 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include "../gportalsupport.h" ++#include ++ ++static void ++test_portal_support_env_var (void) ++{ ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ g_test_init (&argc, &argv, NULL); ++ ++ g_setenv ("GTK_USE_PORTAL", "1", TRUE); ++ ++ g_test_add_func ("/portal-support/env-var", test_portal_support_env_var); ++ ++ return g_test_run (); ++} +diff --git a/gio/tests/portal-support-none.c b/gio/tests/portal-support-none.c +new file mode 100644 +index 000000000..1bc0a9391 +--- /dev/null ++++ b/gio/tests/portal-support-none.c +@@ -0,0 +1,43 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include "../gportalsupport.h" ++#include ++ ++static void ++test_portal_support_none (void) ++{ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ g_test_init (&argc, &argv, NULL); ++ ++ g_test_add_func ("/portal-support/none", test_portal_support_none); ++ ++ return g_test_run (); ++} +diff --git a/gio/tests/portal-support-snap-classic.c b/gio/tests/portal-support-snap-classic.c +new file mode 100644 +index 000000000..8c0ed90c2 +--- /dev/null ++++ b/gio/tests/portal-support-snap-classic.c +@@ -0,0 +1,119 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include "portal-support-utils.h" ++ ++#include "../gportalsupport.h" ++#include ++ ++typedef struct ++{ ++ char *old_path; ++ char *old_snap; ++ ++ const char *bin_path; ++ const char *snap_path; ++} SetupData; ++ ++static void ++tests_setup (SetupData *setup_data, ++ gconstpointer data) ++{ ++ setup_data->old_path = g_strdup (g_getenv ("PATH")); ++ setup_data->old_snap = g_strdup (g_getenv ("SNAP")); ++ ++ setup_data->bin_path = g_get_user_runtime_dir (); ++ setup_data->snap_path = g_getenv ("G_TEST_TMPDIR"); ++ ++ g_assert_nonnull (setup_data->bin_path); ++ g_assert_nonnull (setup_data->snap_path); ++ ++ g_setenv ("PATH", setup_data->bin_path, TRUE); ++ g_setenv ("SNAP", setup_data->snap_path, TRUE); ++} ++ ++static void ++tests_teardown (SetupData *setup_data, ++ gconstpointer data) ++{ ++ if (setup_data->old_path) ++ g_setenv ("PATH", setup_data->old_path, TRUE); ++ else ++ g_unsetenv ("PATH"); ++ ++ if (setup_data->old_snap) ++ g_setenv ("SNAP", setup_data->old_snap, TRUE); ++ else ++ g_unsetenv ("SNAP"); ++ ++ g_clear_pointer (&setup_data->old_path, g_free); ++ g_clear_pointer (&setup_data->old_snap, g_free); ++} ++ ++static void ++test_portal_support_snap_no_snapctl (SetupData *setup, ++ gconstpointer data) ++{ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_none (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, TRUE); ++ create_fake_snapctl (setup->bin_path, NULL); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_all (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, TRUE); ++ create_fake_snapctl (setup->bin_path, "desktop|network-status|gsettings"); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL); ++ ++ g_test_add ("/portal-support/snap-classic/no-snapctl", SetupData, NULL, ++ tests_setup, test_portal_support_snap_no_snapctl, tests_teardown); ++ g_test_add ("/portal-support/snap-classic/none", SetupData, NULL, ++ tests_setup, test_portal_support_snap_none, tests_teardown); ++ g_test_add ("/portal-support/snap-classic/all", SetupData, NULL, ++ tests_setup, test_portal_support_snap_all, tests_teardown); ++ ++ return g_test_run (); ++} +diff --git a/gio/tests/portal-support-snap.c b/gio/tests/portal-support-snap.c +new file mode 100644 +index 000000000..7dd14d82f +--- /dev/null ++++ b/gio/tests/portal-support-snap.c +@@ -0,0 +1,208 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include "portal-support-utils.h" ++ ++#include "../gportalsupport.h" ++#include ++#include ++ ++typedef struct ++{ ++ char *old_path; ++ char *old_snap; ++ ++ const char *bin_path; ++ const char *snap_path; ++} SetupData; ++ ++static void ++tests_setup (SetupData *setup_data, ++ gconstpointer data) ++{ ++ setup_data->old_path = g_strdup (g_getenv ("PATH")); ++ setup_data->old_snap = g_strdup (g_getenv ("SNAP")); ++ ++ setup_data->bin_path = g_get_user_runtime_dir (); ++ setup_data->snap_path = g_getenv ("G_TEST_TMPDIR"); ++ ++ g_assert_nonnull (setup_data->bin_path); ++ g_assert_nonnull (setup_data->snap_path); ++ ++ g_setenv ("PATH", setup_data->bin_path, TRUE); ++ g_setenv ("SNAP", setup_data->snap_path, TRUE); ++} ++ ++static void ++tests_teardown (SetupData *setup_data, ++ gconstpointer data) ++{ ++ if (setup_data->old_path) ++ g_setenv ("PATH", setup_data->old_path, TRUE); ++ else ++ g_unsetenv ("PATH"); ++ ++ if (setup_data->old_snap) ++ g_setenv ("SNAP", setup_data->old_snap, TRUE); ++ else ++ g_unsetenv ("SNAP"); ++ ++ g_clear_pointer (&setup_data->old_path, g_free); ++ g_clear_pointer (&setup_data->old_snap, g_free); ++} ++ ++static void ++test_portal_support_snap_no_snapctl (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_none (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, NULL); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_all (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, "desktop|network-status|gsettings"); ++ ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_desktop_only (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, "desktop"); ++ ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_network_only (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, "network-status"); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_gsettings_only (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, "gsettings"); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++} ++ ++static void ++test_portal_support_snap_updates_dynamically (SetupData *setup, ++ gconstpointer data) ++{ ++ create_fake_snap_yaml (setup->snap_path, FALSE); ++ create_fake_snapctl (setup->bin_path, NULL); ++ ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, "desktop"); ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, "network-status|gsettings"); ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, "desktop|network-status|gsettings"); ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, "desktop|gsettings"); ++ g_assert_true (glib_should_use_portal ()); ++ g_assert_true (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, "gsettings"); ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_true (glib_has_dconf_access_in_sandbox ()); ++ ++ create_fake_snapctl (setup->bin_path, NULL); ++ g_assert_false (glib_should_use_portal ()); ++ g_assert_false (glib_network_available_in_sandbox ()); ++ g_assert_false (glib_has_dconf_access_in_sandbox ()); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL); ++ ++ g_test_add ("/portal-support/snap/no-snapctl", SetupData, NULL, ++ tests_setup, test_portal_support_snap_no_snapctl, tests_teardown); ++ g_test_add ("/portal-support/snap/none", SetupData, NULL, ++ tests_setup, test_portal_support_snap_none, tests_teardown); ++ g_test_add ("/portal-support/snap/all", SetupData, NULL, ++ tests_setup, test_portal_support_snap_all, tests_teardown); ++ g_test_add ("/portal-support/snap/desktop-only", SetupData, NULL, ++ tests_setup, test_portal_support_snap_desktop_only, tests_teardown); ++ g_test_add ("/portal-support/snap/network-only", SetupData, NULL, ++ tests_setup, test_portal_support_snap_network_only, tests_teardown); ++ g_test_add ("/portal-support/snap/gsettings-only", SetupData, NULL, ++ tests_setup, test_portal_support_snap_gsettings_only, tests_teardown); ++ g_test_add ("/portal-support/snap/updates-dynamically", SetupData, NULL, ++ tests_setup, test_portal_support_snap_updates_dynamically, tests_teardown); ++ ++ return g_test_run (); ++} +diff --git a/gio/tests/portal-support-utils.c b/gio/tests/portal-support-utils.c +new file mode 100644 +index 000000000..9fb69287a +--- /dev/null ++++ b/gio/tests/portal-support-utils.c +@@ -0,0 +1,87 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include "portal-support-utils.h" ++ ++#include ++#include ++ ++void ++create_fake_snapctl (const char *path, ++ const char *supported_op) ++{ ++ GError *error = NULL; ++ char *snapctl_content; ++ char *snapctl; ++ ++ snapctl = g_build_filename (path, "snapctl", NULL); ++ snapctl_content = g_strdup_printf ("#!/bin/sh\n" \ ++ "[ \"$1\" != 'is-connected' ] && exit 2\n" ++ "[ -z \"$2\" ] && exit 3\n" ++ "[ -n \"$3\" ] && exit 4\n" ++ "case \"$2\" in\n" ++ " %s) exit 0;;\n" ++ " *) exit 1;;\n" ++ "esac\n", ++ supported_op ? supported_op : ""); ++ ++ g_file_set_contents (snapctl, snapctl_content, -1, &error); ++ g_assert_no_error (error); ++ g_assert_cmpint (g_chmod (snapctl, 0500), ==, 0); ++ ++ g_test_message ("Created snapctl in %s", snapctl); ++ ++ g_clear_error (&error); ++ g_free (snapctl_content); ++ g_free (snapctl); ++} ++ ++void ++create_fake_snap_yaml (const char *snap_path, ++ gboolean is_classic) ++{ ++ char *meta_path; ++ char *yaml_path; ++ char *yaml_contents; ++ ++ g_assert_nonnull (snap_path); ++ ++ yaml_contents = g_strconcat ("name: glib-test-portal-support\n" ++ "title: GLib Portal Support Test\n" ++ "version: 2.76\n" ++ "summary: Test it works\n", ++ is_classic ? ++ "confinement: classic\n" : NULL, NULL); ++ ++ meta_path = g_build_filename (snap_path, "meta", NULL); ++ g_assert_cmpint (g_mkdir_with_parents (meta_path, 0700), ==, 0); ++ ++ yaml_path = g_build_filename (meta_path, "snap.yaml", NULL); ++ g_file_set_contents (yaml_path, yaml_contents, -1, NULL); ++ ++ g_test_message ("Created snap.yaml in %s", yaml_path); ++ ++ g_free (meta_path); ++ g_free (yaml_path); ++ g_free (yaml_contents); ++} +diff --git a/gio/tests/portal-support-utils.h b/gio/tests/portal-support-utils.h +new file mode 100644 +index 000000000..bb5a31c6e +--- /dev/null ++++ b/gio/tests/portal-support-utils.h +@@ -0,0 +1,30 @@ ++/* ++ * GIO - GLib Input, Output and Streaming Library ++ * ++ * Copyright (C) 2022 Canonical Ltd. ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ * ++ * Author: Marco Trevisan ++ */ ++ ++#include ++ ++void create_fake_snap_yaml (const char *snap_path, ++ gboolean is_classic); ++ ++void create_fake_snapctl (const char *path, ++ const char *supported_op); +diff --git a/gio/tests/sandbox.c b/gio/tests/sandbox.c +new file mode 100644 +index 000000000..a432556dd +--- /dev/null ++++ b/gio/tests/sandbox.c +@@ -0,0 +1,80 @@ ++/* ++ * Copyright 2022 Canonical Ltd ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ * ++ * 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 . ++ */ ++ ++#include "portal-support-utils.h" ++ ++#include "../gsandbox.h" ++#include ++#include ++ ++static void ++test_sandbox_none (void) ++{ ++ g_assert_cmpint (glib_get_sandbox_type (), ==, G_SANDBOX_TYPE_UNKNOWN); ++} ++ ++static void ++test_sandbox_snap (void) ++{ ++ const char *temp_dir; ++ gchar *snap_path; ++ ++ temp_dir = g_getenv ("G_TEST_TMPDIR"); ++ g_assert_nonnull (temp_dir); ++ ++ snap_path = g_build_filename (temp_dir, "snap", "current", NULL); ++ create_fake_snap_yaml (snap_path, FALSE); ++ g_setenv ("SNAP", snap_path, TRUE); ++ ++ g_assert_cmpint (glib_get_sandbox_type (), ==, G_SANDBOX_TYPE_SNAP); ++ ++ g_unsetenv ("SNAP"); ++ g_free (snap_path); ++} ++ ++static void ++test_sandbox_snap_classic (void) ++{ ++ const char *temp_dir; ++ char *snap_path; ++ ++ temp_dir = g_getenv ("G_TEST_TMPDIR"); ++ g_assert_nonnull (temp_dir); ++ ++ snap_path = g_build_filename (temp_dir, "snap", "current", NULL); ++ create_fake_snap_yaml (snap_path, TRUE); ++ g_setenv ("SNAP", snap_path, TRUE); ++ ++ g_assert_cmpint (glib_get_sandbox_type (), ==, G_SANDBOX_TYPE_UNKNOWN); ++ ++ g_unsetenv ("SNAP"); ++ g_free (snap_path); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL); ++ ++ g_test_add_func ("/sandbox/none", test_sandbox_none); ++ g_test_add_func ("/sandbox/snap", test_sandbox_snap); ++ g_test_add_func ("/sandbox/classic-snap", test_sandbox_snap_classic); ++ ++ return g_test_run (); ++} +-- +2.39.2 + diff --git a/debian/patches/0001-timer-test-use-volatile-for-locals.patch b/debian/patches/0001-timer-test-use-volatile-for-locals.patch new file mode 100644 index 0000000..1bf63f8 --- /dev/null +++ b/debian/patches/0001-timer-test-use-volatile-for-locals.patch @@ -0,0 +1,38 @@ +From: Ryan Lortie +Date: Tue, 4 Mar 2014 09:20:38 -0500 +Subject: timer test: use 'volatile' for locals + +GCC seems to be failing to follow the letter of the C spec by allowing extra +precision in floating point values to persist across assignments which are +optimised away. + +Force its hand by using 'volatile' on the locals in question. + +Bug: https://gitlab.gnome.org/GNOME/glib/issues/820 +Forwarded: yes +--- + glib/tests/timer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/glib/tests/timer.c b/glib/tests/timer.c +index 102406e..8ea5c1f 100644 +--- a/glib/tests/timer.c ++++ b/glib/tests/timer.c +@@ -30,7 +30,7 @@ static void + test_timer_basic (void) + { + GTimer *timer; +- gdouble elapsed; ++ volatile gdouble elapsed; + gulong micros; + + timer = g_timer_new (); +@@ -65,7 +65,7 @@ static void + test_timer_stop (void) + { + GTimer *timer; +- gdouble elapsed, elapsed2; ++ volatile gdouble elapsed, elapsed2; + + timer = g_timer_new (); + diff --git a/debian/patches/01_gettext-desktopfiles.patch b/debian/patches/01_gettext-desktopfiles.patch new file mode 100644 index 0000000..95163b6 --- /dev/null +++ b/debian/patches/01_gettext-desktopfiles.patch @@ -0,0 +1,167 @@ +From: Philip Withnall +Date: Thu, 23 Nov 2017 18:48:58 +0000 +Subject: Call gettext if .desktop file does not have inline translations + +Patch from OpenSUSE via Ubuntu, original author unknown. Martin Pitt and +Vincent Untz appear to be the main authors. + +Reworked slightly by Philip Withnall to avoid exposing new public API +for the non-standard keys. + +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=569829 +Bug-Ubuntu: https://launchpad.net/bugs/3935 +Applied-upstream: no, rejected because "this will be solved soon" (in 2013) +--- + glib/gkeyfile.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 83 insertions(+) + +diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c +index 6460970..762dfef 100644 +--- a/glib/gkeyfile.c ++++ b/glib/gkeyfile.c +@@ -489,6 +489,17 @@ + * Since: 2.14 + */ + ++/* Downstream Debian defines for calling gettext() if a .desktop file doesn’t ++ * contain translations. These are not standardised. ++ * ++ * See: https://launchpad.net/bugs/3935 ++ * See:http://bugzilla.gnome.org/show_bug.cgi?id=569829 ++ */ ++#define G_KEY_FILE_DESKTOP_ACTION_GROUP_PREFIX "Desktop Action" ++#define G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN "X-GNOME-Gettext-Domain" ++#define G_KEY_FILE_DESKTOP_KEY_FULLNAME "X-GNOME-FullName" ++#define G_KEY_FILE_DESKTOP_KEY_KEYWORDS "Keywords" ++ + typedef struct _GKeyFileGroup GKeyFileGroup; + + /** +@@ -513,6 +524,7 @@ struct _GKeyFile + + gboolean checked_locales; /* TRUE if @locales has been initialised */ + gchar **locales; /* (nullable) */ ++ gchar *gettext_domain; + + gint ref_count; /* (atomic) */ + }; +@@ -639,6 +651,7 @@ g_key_file_init (GKeyFile *key_file) + key_file->parse_buffer = NULL; + key_file->list_separator = ';'; + key_file->flags = 0; ++ key_file->gettext_domain = NULL; + } + + static void +@@ -659,6 +672,12 @@ g_key_file_clear (GKeyFile *key_file) + key_file->parse_buffer = NULL; + } + ++ if (key_file->gettext_domain) ++ { ++ g_free (key_file->gettext_domain); ++ key_file->gettext_domain = NULL; ++ } ++ + tmp = key_file->groups; + while (tmp != NULL) + { +@@ -879,6 +898,11 @@ g_key_file_load_from_fd (GKeyFile *key_file, + return FALSE; + } + ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, ++ NULL); ++ + return TRUE; + } + +@@ -991,6 +1015,11 @@ g_key_file_load_from_data (GKeyFile *key_file, + return FALSE; + } + ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, ++ NULL); ++ + return TRUE; + } + +@@ -2240,6 +2269,8 @@ g_key_file_get_locale_string (GKeyFile *key_file, + GError *key_file_error; + gchar **languages; + gboolean free_languages = FALSE; ++ gboolean try_gettext = FALSE; ++ const gchar *msg_locale; + gint i; + + g_return_val_if_fail (key_file != NULL, NULL); +@@ -2261,6 +2292,25 @@ g_key_file_get_locale_string (GKeyFile *key_file, + free_languages = FALSE; + } + ++ /* we're only interested in gettext translation if we don't have a ++ * translation in the .desktop file itself and if the key is one of the keys ++ * we know we want to translate: Name, GenericName, Comment, Keywords. ++ * Blindly doing this for all keys can give strange result for the icons, ++ * since the Icon is a locale string in the spec, eg. We also only get ++ * translation in the mo file if the requested locale is the LC_MESSAGES one. ++ * Ideally, we should do more and change LC_MESSAGES to use the requested ++ * locale, but there's no guarantee it's installed on the system and it might ++ * have some side-effects. Since this is a corner case, let's ignore it. */ ++ msg_locale = setlocale (LC_MESSAGES, NULL); ++ try_gettext = msg_locale && key_file->gettext_domain && ++ (strcmp (group_name, G_KEY_FILE_DESKTOP_GROUP) == 0 || ++ g_str_has_prefix (group_name, G_KEY_FILE_DESKTOP_ACTION_GROUP_PREFIX)) && ++ (strcmp (key, G_KEY_FILE_DESKTOP_KEY_NAME) == 0 || ++ strcmp (key, G_KEY_FILE_DESKTOP_KEY_FULLNAME) == 0 || ++ strcmp (key, G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME) == 0 || ++ strcmp (key, G_KEY_FILE_DESKTOP_KEY_KEYWORDS) == 0 || ++ strcmp (key, G_KEY_FILE_DESKTOP_KEY_COMMENT) == 0); ++ + for (i = 0; languages[i]; i++) + { + candidate_key = g_strdup_printf ("%s[%s]", key, languages[i]); +@@ -2274,6 +2324,39 @@ g_key_file_get_locale_string (GKeyFile *key_file, + break; + } + ++ /* Fallback to gettext */ ++ if (try_gettext && !translated_value) ++ { ++ gchar *orig_value = g_key_file_get_string (key_file, group_name, key, NULL); ++ ++ if (orig_value) ++ { ++ gboolean codeset_set; ++ const gchar *translated; ++ gboolean has_gettext; ++ ++ codeset_set = bind_textdomain_codeset (key_file->gettext_domain, "UTF-8") != NULL; ++ translated = NULL; ++ ++ translated = g_dgettext (key_file->gettext_domain, ++ orig_value); ++ has_gettext = translated != orig_value; ++ ++ g_free (orig_value); ++ ++ if (has_gettext) ++ { ++ if (codeset_set) ++ translated_value = g_strdup (translated); ++ else ++ translated_value = g_locale_to_utf8 (translated, ++ -1, NULL, NULL, NULL); ++ } ++ else ++ translated_value = NULL; ++ } ++ } ++ + /* Fallback to untranslated key + */ + if (!translated_value) diff --git a/debian/patches/debian/02_gettext-desktopfiles-ubuntu.patch b/debian/patches/debian/02_gettext-desktopfiles-ubuntu.patch new file mode 100644 index 0000000..fa5ae60 --- /dev/null +++ b/debian/patches/debian/02_gettext-desktopfiles-ubuntu.patch @@ -0,0 +1,51 @@ +From: Martin Pitt +Date: Tue, 24 Feb 2009 16:08:05 +0100 +Subject: Provide backwards compatibility for 01_gettext-desktopfiles.patch + for X-{Debian,Ubuntu}-Gettext-Domain + +Ubuntu-specific. 01_gettext-desktopfiles.patch was changed to use +X-GNOME-, so this is necessary until all our .desktop files are converted. + +Forwarded: no +--- + glib/gkeyfile.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c +index 762dfef..6b9f45b 100644 +--- a/glib/gkeyfile.c ++++ b/glib/gkeyfile.c +@@ -902,6 +902,16 @@ g_key_file_load_from_fd (GKeyFile *key_file, + G_KEY_FILE_DESKTOP_GROUP, + G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, + NULL); ++ if (!key_file->gettext_domain) ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ "X-Ubuntu-Gettext-Domain", ++ NULL); ++ if (!key_file->gettext_domain) ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ "X-Debian-Gettext-Domain", ++ NULL); + + return TRUE; + } +@@ -1019,6 +1029,16 @@ g_key_file_load_from_data (GKeyFile *key_file, + G_KEY_FILE_DESKTOP_GROUP, + G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, + NULL); ++ if (!key_file->gettext_domain) ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ "X-Ubuntu-Gettext-Domain", ++ NULL); ++ if (!key_file->gettext_domain) ++ key_file->gettext_domain = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ "X-Debian-Gettext-Domain", ++ NULL); + + return TRUE; + } diff --git a/debian/patches/debian/03_disble_glib_compile_schemas_warning.patch b/debian/patches/debian/03_disble_glib_compile_schemas_warning.patch new file mode 100644 index 0000000..bf2a4de --- /dev/null +++ b/debian/patches/debian/03_disble_glib_compile_schemas_warning.patch @@ -0,0 +1,36 @@ +From: Iain Lane +Date: Mon, 10 Sep 2012 16:25:18 +0100 +Subject: Disable confusing (to users) warning about deprecated schema paths + +Disable a warning when compiling schemas which are installed +into 'deprecated' locations. Users see this very often due to +glib-compile-schemas being called from libglib2.0-0's trigger and it is +not very useful for them. + +Forwarded: not-needed +--- + gio/glib-compile-schemas.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c +index 7e1152f..57f6b96 100644 +--- a/gio/glib-compile-schemas.c ++++ b/gio/glib-compile-schemas.c +@@ -1232,6 +1232,9 @@ parse_state_start_schema (ParseState *state, + return; + } + ++ // Disable this warning: it confuses users and there is unlikely to be much ++ // progress towards fixing ++ /* + if (path && (g_str_has_prefix (path, "/apps/") || + g_str_has_prefix (path, "/desktop/") || + g_str_has_prefix (path, "/system/"))) +@@ -1244,6 +1247,7 @@ parse_state_start_schema (ParseState *state, + g_printerr ("%s\n", message); + g_free (message); + } ++ */ + + state->schema_state = schema_state_new (path, gettext_domain, + extends, extends_name, list_of); diff --git a/debian/patches/debian/06_thread_test_ignore_prctl_fail.patch b/debian/patches/debian/06_thread_test_ignore_prctl_fail.patch new file mode 100644 index 0000000..f416084 --- /dev/null +++ b/debian/patches/debian/06_thread_test_ignore_prctl_fail.patch @@ -0,0 +1,33 @@ +From: Martin Pitt +Date: Tue, 26 Jun 2012 19:28:14 +0200 +Subject: Do not fail the /thread/thread4 test if prlimit() fails + +This happens on the Debian buildds. + +[smcv: Use g_test_skip()] + +Forwarded: no, Debian buildd specific +--- + glib/tests/thread.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/glib/tests/thread.c b/glib/tests/thread.c +index 2bae96c..d2a91bf 100644 +--- a/glib/tests/thread.c ++++ b/glib/tests/thread.c +@@ -146,7 +146,14 @@ test_thread4 (void) + nl.rlim_cur = 1; + + if ((ret = prlimit (getpid (), RLIMIT_NPROC, &nl, &ol)) != 0) +- g_error ("prlimit failed: %s", g_strerror (errno)); ++ { ++ gchar *message = g_strdup_printf ("setting PRLIMIT_NPROC to {cur=%d,max=%d} failed: %s", ++ (int) nl.rlim_cur, (int) nl.rlim_max, ++ g_strerror (errno)); ++ g_test_skip (message); ++ g_free (message); ++ return; ++ } + + error = NULL; + thread = g_thread_try_new ("a", thread1_func, NULL, &error); diff --git a/debian/patches/debian/Add-extra-debug-to-memory-monitor-dbus-test.patch b/debian/patches/debian/Add-extra-debug-to-memory-monitor-dbus-test.patch new file mode 100644 index 0000000..3dc4a85 --- /dev/null +++ b/debian/patches/debian/Add-extra-debug-to-memory-monitor-dbus-test.patch @@ -0,0 +1,70 @@ +From: Simon McVittie +Date: Sun, 24 Oct 2021 22:40:11 +0100 +Subject: Add extra debug to memory-monitor-dbus test + +Hopefully this will give us the necessary information to find out why +this test isn't reliable. + +Bug-Debian: https://bugs.debian.org/995178 +Forwarded: no +--- + gio/tests/memory-monitor-dbus.py.in | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/gio/tests/memory-monitor-dbus.py.in b/gio/tests/memory-monitor-dbus.py.in +index 17862e3..61e6f94 100755 +--- a/gio/tests/memory-monitor-dbus.py.in ++++ b/gio/tests/memory-monitor-dbus.py.in +@@ -74,18 +74,29 @@ try: + Timeout is in deciseconds, defaulting to 50 (5 seconds). message is + printed on failure. + ''' ++ print('Waiting up to {}/10 seconds for {!r} to be true'.format(timeout, condition)) ++ orig_timeout = timeout ++ + while timeout >= 0: ++ print('Loop iteration') + context = GLib.MainContext.default() + while context.iteration(False): ++ print('Iterating main loop') + pass + if condition(): ++ print('Condition reached') + break + timeout -= 1 + time.sleep(0.1) + else: ++ print('Condition not reached in {}/10 seconds'.format(orig_timeout)) + self.fail(message or 'timed out waiting for ' + str(condition)) + + def memory_warning_cb(self, monitor, level): ++ print('low-memory-warning: monitor {!r} reports level {}'.format( ++ monitor, ++ level, ++ )) + self.last_warning = level + self.main_context.wakeup() + +@@ -95,17 +106,20 @@ try: + # Wait 2 seconds + timeout = 2 + while timeout > 0: ++ print('Waiting 0.5s for stray events...') + time.sleep(0.5) + timeout -= 0.5 + self.main_context.iteration(False) + ++ print('Emitting mock low-memory warning, level 100: try to free memory') + self.dbusmock.EmitWarning(100) + # Wait 2 seconds or until warning +- self.assertEventually(lambda: self.last_warning == 100, "'100' low-memory warning not received", 20) ++ self.assertEventually(lambda: self.last_warning == 100, "'100' low-memory warning not received", 100) + ++ print('Emitting mock low-memory warning, level 255: OOM imminent') + self.dbusmock.EmitWarning(255) + # Wait 2 seconds or until warning +- self.assertEventually(lambda: self.last_warning == 255, "'255' low-memory warning not received", 20) ++ self.assertEventually(lambda: self.last_warning == 255, "'255' low-memory warning not received", 100) + + except ImportError as e: + @unittest.skip("Cannot import %s" % e.name) diff --git a/debian/patches/debian/Disable-some-tests-on-slow-architectures-which-keep-faili.patch b/debian/patches/debian/Disable-some-tests-on-slow-architectures-which-keep-faili.patch new file mode 100644 index 0000000..8df9442 --- /dev/null +++ b/debian/patches/debian/Disable-some-tests-on-slow-architectures-which-keep-faili.patch @@ -0,0 +1,70 @@ +From: Martin Pitt +Date: Thu, 27 Sep 2012 11:22:56 +0200 +Subject: Disable some tests on slow architectures which keep failing the + tests + +[smcv: Modified to use g_test_skip() instead of omitting those test cases +completely, and allow them to be re-enabled with a Debian-specific +environment variable] + +Co-authored-by: Simon McVittie +Forwarded: no +--- + glib/tests/mainloop.c | 16 ++++++++++++++++ + glib/tests/timeout.c | 9 +++++++++ + 2 files changed, 25 insertions(+) + +diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c +index 2bbb3d8..d6220a6 100644 +--- a/glib/tests/mainloop.c ++++ b/glib/tests/mainloop.c +@@ -520,6 +520,14 @@ test_child_sources (void) + GMainLoop *loop; + GSource *parent, *child_b, *child_c, *end; + ++#if defined(__arm__) ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Not reliable on older ARM hardware"); ++ return; ++ } ++#endif ++ + ctx = g_main_context_new (); + loop = g_main_loop_new (ctx, FALSE); + +@@ -598,6 +606,14 @@ test_recursive_child_sources (void) + GMainLoop *loop; + GSource *parent, *child_b, *child_c, *end; + ++#if defined(__arm__) ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Not reliable on older ARM hardware"); ++ return; ++ } ++#endif ++ + ctx = g_main_context_new (); + loop = g_main_loop_new (ctx, FALSE); + +diff --git a/glib/tests/timeout.c b/glib/tests/timeout.c +index 9e4d047..1ab8845 100644 +--- a/glib/tests/timeout.c ++++ b/glib/tests/timeout.c +@@ -179,6 +179,15 @@ test_func (gpointer data) + static void + test_rounding (void) + { ++ ++#if defined(__arm__) ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Not reliable on older ARM hardware"); ++ return; ++ } ++#endif ++ + loop = g_main_loop_new (NULL, FALSE); + + last_time = g_get_monotonic_time (); diff --git a/debian/patches/debian/Skip-memory-monitor-dbus-test-if-not-specifically-request.patch b/debian/patches/debian/Skip-memory-monitor-dbus-test-if-not-specifically-request.patch new file mode 100644 index 0000000..b692f9f --- /dev/null +++ b/debian/patches/debian/Skip-memory-monitor-dbus-test-if-not-specifically-request.patch @@ -0,0 +1,25 @@ +From: Simon McVittie +Date: Sun, 24 Oct 2021 22:38:20 +0100 +Subject: Skip memory-monitor-dbus test if not specifically requested + +This seems to be unreliable, particularly on non-x86. + +Bug-Debian: https://bugs.debian.org/995178 +Forwarded: no +--- + gio/tests/memory-monitor-dbus.py.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gio/tests/memory-monitor-dbus.py.in b/gio/tests/memory-monitor-dbus.py.in +index bf32918..17862e3 100755 +--- a/gio/tests/memory-monitor-dbus.py.in ++++ b/gio/tests/memory-monitor-dbus.py.in +@@ -39,6 +39,8 @@ try: + klass.start_system_bus() + klass.dbus_con = klass.get_dbus(True) + ++ @unittest.skipIf('DEB_ALLOW_FLAKY_TESTS' not in os.environ, ++ 'https://bugs.debian.org/995178') + def setUp(self): + try: + Gio.MemoryMonitor diff --git a/debian/patches/debian/Skip-test-which-performs-some-unreliable-floating-point-c.patch b/debian/patches/debian/Skip-test-which-performs-some-unreliable-floating-point-c.patch new file mode 100644 index 0000000..d2ff7b7 --- /dev/null +++ b/debian/patches/debian/Skip-test-which-performs-some-unreliable-floating-point-c.patch @@ -0,0 +1,32 @@ +From: Iain Lane +Date: Tue, 18 Mar 2014 15:43:35 +0000 +Subject: Skip test which performs some unreliable floating point comparisons + +[smcv: Modified to use g_test_skip() instead of omitting those test cases +completely, and allow them to be re-enabled with a Debian-specific +environment variable] + +Co-authored-by: Simon McVittie +Bug: https://gitlab.gnome.org/GNOME/glib/issues/820 +Forwarded: no +--- + glib/tests/timer.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/glib/tests/timer.c b/glib/tests/timer.c +index 8ea5c1f..a4c1095 100644 +--- a/glib/tests/timer.c ++++ b/glib/tests/timer.c +@@ -33,6 +33,12 @@ test_timer_basic (void) + volatile gdouble elapsed; + gulong micros; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Not reliable due to floating-point rounding (glib#820)"); ++ return; ++ } ++ + timer = g_timer_new (); + + g_timer_start (timer); diff --git a/debian/patches/debian/Skip-unreliable-gdbus-threading-tests--by-default.patch b/debian/patches/debian/Skip-unreliable-gdbus-threading-tests--by-default.patch new file mode 100644 index 0000000..1130f93 --- /dev/null +++ b/debian/patches/debian/Skip-unreliable-gdbus-threading-tests--by-default.patch @@ -0,0 +1,48 @@ +From: Simon McVittie +Date: Fri, 4 Jan 2019 08:37:20 +0000 +Subject: Skip unreliable gdbus-threading tests by default + +test_threaded_singleton() test to reproduce a race condition between +last-unref of the global singleton GDBusConnection and g_bus_get_sync(). + +test_method_calls_in_thread() checks that multiple threads can all make +method calls to the same proxy. + +However, test setup intermittently times out with: + + # GLib-GIO-DEBUG: run 0: refcount is 2, sleeping + Bail out! GLib-GIO-FATAL-ERROR: connection had too many refs + +The current theory upstream is that this might be a reference leak in +test_delivery_in_thread(). + +Furthermore, test teardown is now often failing when destroying the test +bus. + +Demote these tests to be run as part of the "flaky" autopkgtests, but +not at build time or in the part of the autopkgtest run that gates +progress into testing. + +Bug: https://gitlab.gnome.org/GNOME/glib/issues/1515 +Forwarded: no +--- + gio/tests/gdbus-threading.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/gio/tests/gdbus-threading.c b/gio/tests/gdbus-threading.c +index 9f3abc4..ec8867e 100644 +--- a/gio/tests/gdbus-threading.c ++++ b/gio/tests/gdbus-threading.c +@@ -649,6 +649,12 @@ main (int argc, + + g_test_init (&argc, &argv, NULL); + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_print("ok 1 # SKIP all gdbus-threading tests skipped because they are too unreliable (glib#1515)\n"); ++ return 77; ++ } ++ + session_bus_up (); + + /* this is safe; testserver will exit once the bus goes away */ diff --git a/debian/patches/debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch b/debian/patches/debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch new file mode 100644 index 0000000..54b67f8 --- /dev/null +++ b/debian/patches/debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch @@ -0,0 +1,37 @@ +From: Simon McVittie +Date: Thu, 3 Jan 2019 09:01:03 +0000 +Subject: closures test: Skip on arm* unless flaky tests are allowed + +Choosing the right number of iterations to avoid either taking literally +hours on some hardware, or getting spurious failures when one thread +starves another, seems to be too hard to get right in practice. +Make this test opt-in so that its failures aren't release-critical. +We can run it as a separate autopkgtest that is marked flaky. + +Signed-off-by: Simon McVittie +Bug-Debian: https://bugs.debian.org/880883 +Bug-Debian: https://bugs.debian.org/917983 +Forwarded: not-needed +--- + gobject/tests/closure-refcount.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gobject/tests/closure-refcount.c b/gobject/tests/closure-refcount.c +index 5a92005..73185f0 100644 +--- a/gobject/tests/closure-refcount.c ++++ b/gobject/tests/closure-refcount.c +@@ -260,6 +260,14 @@ test_closure_refcount (void) + GTest *object; + guint i, n_iterations; + ++#if defined(__aarch64__) || defined(__arm__) ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") != NULL) ++ { ++ g_print ("SKIP: Test is known to be flaky on arm* (#880883, #917983)\n"); ++ return 0; ++ } ++#endif ++ + object = g_object_new (G_TYPE_TEST, NULL); + closure = g_cclosure_new (G_CALLBACK (test_signal_handler), &test_data, destroy_data); + diff --git a/debian/patches/debian/gdbus-server-auth-Normally-skip-flaky-DBUS_COOKIE_SHA1-te.patch b/debian/patches/debian/gdbus-server-auth-Normally-skip-flaky-DBUS_COOKIE_SHA1-te.patch new file mode 100644 index 0000000..43d2196 --- /dev/null +++ b/debian/patches/debian/gdbus-server-auth-Normally-skip-flaky-DBUS_COOKIE_SHA1-te.patch @@ -0,0 +1,35 @@ +From: Simon McVittie +Date: Thu, 19 Nov 2020 10:44:39 +0000 +Subject: gdbus-server-auth: Normally skip flaky DBUS_COOKIE_SHA1 tests + +These intermittently fail on the buildds, but the failure cannot be +reproduced in a debugging environment. + +We do not expect to use D-Bus over TCP on non-Windows platforms: we use +an AF_UNIX socket, which is much more robust and secure. However, when +using AF_UNIX, DBUS_COOKIE_SHA1 is unnecessary, because we can use the +more reliable EXTERNAL authentication. + +Forwarded: not-needed +--- + gio/tests/gdbus-server-auth.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/gio/tests/gdbus-server-auth.c b/gio/tests/gdbus-server-auth.c +index bd1443e..a231b0c 100644 +--- a/gio/tests/gdbus-server-auth.c ++++ b/gio/tests/gdbus-server-auth.c +@@ -324,6 +324,13 @@ do_test_server_auth (InteropFlags flags) + } + #endif + ++ if ((flags & (INTEROP_FLAGS_TCP | INTEROP_FLAGS_SHA1)) && ++ g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/glib/-/issues/2206"); ++ goto out; ++ } ++ + if (flags & INTEROP_FLAGS_ANONYMOUS) + server_flags |= G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS; + if (flags & INTEROP_FLAGS_REQUIRE_SAME_USER) diff --git a/debian/patches/debian/gdesktopappinfo-Recognize-gnome-console-as-a-terminal-app.patch b/debian/patches/debian/gdesktopappinfo-Recognize-gnome-console-as-a-terminal-app.patch new file mode 100644 index 0000000..206643a --- /dev/null +++ b/debian/patches/debian/gdesktopappinfo-Recognize-gnome-console-as-a-terminal-app.patch @@ -0,0 +1,29 @@ +From: Jeremy Bicha +Date: Wed, 23 Mar 2022 14:40:16 -0400 +Subject: gdesktopappinfo: Recognize gnome-console as a terminal app + +GNOME Console (installed as /usr/bin/kgx ) is the default +GNOME terminal app as of GNOME 42 + +Related to: https://gitlab.gnome.org/GNOME/glib/-/issues/338 + +But see https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/46 +for a more comprehensive way of handling issues around the default +terminal app +--- + gio/gdesktopappinfo.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c +index 60d6deb..4a0b019 100644 +--- a/gio/gdesktopappinfo.c ++++ b/gio/gdesktopappinfo.c +@@ -2672,6 +2672,8 @@ prepend_terminal_to_vector (int *argc, + } + else + { ++ if (check == NULL) ++ check = g_find_program_in_path ("kgx"); + if (check == NULL) + check = g_find_program_in_path ("tilix"); + if (check == NULL) diff --git a/debian/patches/debian/gmenumodel-test-Mark-as-flaky.patch b/debian/patches/debian/gmenumodel-test-Mark-as-flaky.patch new file mode 100644 index 0000000..13c3fba --- /dev/null +++ b/debian/patches/debian/gmenumodel-test-Mark-as-flaky.patch @@ -0,0 +1,30 @@ +From: Simon McVittie +Date: Fri, 26 Jul 2019 23:49:03 +0100 +Subject: gmenumodel test: Mark as flaky + +This test has not had a great history of reliability. + +Signed-off-by: Simon McVittie +Bug-Debian: https://bugs.debian.org/932678 +Forwarded: no +--- + gio/tests/gmenumodel.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/gio/tests/gmenumodel.c b/gio/tests/gmenumodel.c +index 492daf8..ed8828d 100644 +--- a/gio/tests/gmenumodel.c ++++ b/gio/tests/gmenumodel.c +@@ -1160,6 +1160,12 @@ test_dbus_peer_subscriptions (void) + #else + PeerConnection peer; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Not reliable? #932678"); ++ return; ++ } ++ + peer_connection_up (&peer); + do_subscriptions (peer.server_connection, peer.client_connection); + peer_connection_down (&peer); diff --git a/debian/patches/debian/gvariant-test-Don-t-run-at-build-time-on-mips.patch b/debian/patches/debian/gvariant-test-Don-t-run-at-build-time-on-mips.patch new file mode 100644 index 0000000..e94e5d2 --- /dev/null +++ b/debian/patches/debian/gvariant-test-Don-t-run-at-build-time-on-mips.patch @@ -0,0 +1,36 @@ +From: Simon McVittie +Date: Fri, 26 Jul 2019 23:51:39 +0100 +Subject: gvariant test: Don't run at build-time on mips + +DEB_ALLOW_FLAKY_TESTS is not quite right here, because we don't know +that the test would fail if left for long enough - the problem is that +it doesn't get there, because generating random floating-point numbers +is very slow on some of our mips hardware. However, it has the right +practical effect. + +Signed-off-by: Simon McVittie +Bug: https://bugs.debian.org/932678 +Forwarded: no +--- + glib/tests/gvariant.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c +index 0110f26..1f30d23 100644 +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -2401,6 +2401,14 @@ test_fuzzes (gpointer data) + gdouble fuzziness; + int i; + ++#ifdef __mips__ ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("Extremely slow on some mips CPUs: #932678"); ++ return; ++ } ++#endif ++ + fuzziness = GPOINTER_TO_INT (data) / 100.; + + for (i = 0; i < 200; i++) diff --git a/debian/patches/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch b/debian/patches/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch new file mode 100644 index 0000000..a89306f --- /dev/null +++ b/debian/patches/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch @@ -0,0 +1,117 @@ +From: Simon McVittie +Date: Tue, 25 Feb 2020 10:45:07 +0000 +Subject: testfilemonitor: Skip if we are avoiding flaky tests + +See https://gitlab.gnome.org/GNOME/glib/issues/1634 + +Signed-off-by: Simon McVittie +Forwarded: no +--- + gio/tests/testfilemonitor.c | 38 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 37 insertions(+), 1 deletion(-) + +diff --git a/gio/tests/testfilemonitor.c b/gio/tests/testfilemonitor.c +index 082f0db..7e7db90 100644 +--- a/gio/tests/testfilemonitor.c ++++ b/gio/tests/testfilemonitor.c +@@ -32,6 +32,12 @@ setup (Fixture *fixture, + gchar *path = NULL; + GError *local_error = NULL; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/glib/issues/1634"); ++ return; ++ } ++ + path = g_dir_make_tmp ("gio-test-testfilemonitor_XXXXXX", &local_error); + g_assert_no_error (local_error); + +@@ -48,7 +54,9 @@ teardown (Fixture *fixture, + { + GError *local_error = NULL; + +- g_file_delete (fixture->tmp_dir, NULL, &local_error); ++ if (fixture->tmp_dir != NULL) ++ g_file_delete (fixture->tmp_dir, NULL, &local_error); ++ + g_assert_no_error (local_error); + g_clear_object (&fixture->tmp_dir); + } +@@ -375,6 +383,10 @@ test_atomic_replace (Fixture *fixture, + if (skip_win32 ()) + return; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + data.step = 0; + data.events = NULL; + +@@ -483,6 +495,10 @@ test_file_changes (Fixture *fixture, + if (skip_win32 ()) + return; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + data.step = 0; + data.events = NULL; + +@@ -603,6 +619,10 @@ test_dir_monitor (Fixture *fixture, + if (skip_win32 ()) + return; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + data.step = 0; + data.events = NULL; + +@@ -703,6 +723,10 @@ test_dir_non_existent (Fixture *fixture, + if (skip_win32 ()) + return; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + data.step = 0; + data.events = NULL; + +@@ -815,6 +839,10 @@ test_cross_dir_moves (Fixture *fixture, + if (skip_win32 ()) + return; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + data[0].step = 0; + data[0].events = NULL; + +@@ -984,6 +1012,10 @@ test_file_hard_links (Fixture *fixture, + GError *error = NULL; + TestData data; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=755721"); + + if (skip_win32 ()) +@@ -1043,6 +1075,10 @@ test_finalize_in_callback (Fixture *fixture, + GFile *file = NULL; + guint i; + ++ /* respect g_test_skip() during setup() */ ++ if (g_test_failed ()) ++ return; ++ + g_test_summary ("Test that finalization of a GFileMonitor in one of its " + "callbacks doesn’t cause a deadlock."); + g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/1941"); diff --git a/debian/patches/debian/tests-Skip-debugcontroller-test.patch b/debian/patches/debian/tests-Skip-debugcontroller-test.patch new file mode 100644 index 0000000..0b7eb8a --- /dev/null +++ b/debian/patches/debian/tests-Skip-debugcontroller-test.patch @@ -0,0 +1,28 @@ +From: Simon McVittie +Date: Tue, 15 Feb 2022 20:42:53 +0000 +Subject: tests: Skip debugcontroller test + +This is known to be flaky upstream. + +Forwarded: not-needed +--- + gio/tests/debugcontroller.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/gio/tests/debugcontroller.c b/gio/tests/debugcontroller.c +index c20acd6..9c7216e 100644 +--- a/gio/tests/debugcontroller.c ++++ b/gio/tests/debugcontroller.c +@@ -189,6 +189,12 @@ test_dbus_properties (void) + + g_test_summary ("Test getting and setting properties on a #GDebugControllerDBus."); + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2486#note_1384102"); ++ return; ++ } ++ + /* Set up a test session bus and connection. Set up a separate second + * connection to simulate a remote peer. */ + bus = g_test_dbus_new (G_TEST_DBUS_NONE); diff --git a/debian/patches/disable-setting-ACL-attributes-see-https-code.evin.team-e.patch b/debian/patches/disable-setting-ACL-attributes-see-https-code.evin.team-e.patch new file mode 100644 index 0000000..d7b357c --- /dev/null +++ b/debian/patches/disable-setting-ACL-attributes-see-https-code.evin.team-e.patch @@ -0,0 +1,36 @@ +From: Alexis Cruz +Date: Tue, 4 Jul 2023 11:27:19 +0200 +Subject: disable setting ACL attributes, + see https://code.evin.team/evin/ansible-managed-servers/issues/5 + +--- + gio/gfile.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/gio/gfile.c b/gio/gfile.c +index 1810e36..42ea204 100644 +--- a/gio/gfile.c ++++ b/gio/gfile.c +@@ -3426,14 +3426,14 @@ file_copy_fallback (GFile *source, + + /* Ignore errors here. Failure to copy metadata is not a hard error */ + /* TODO: set these attributes /before/ we do the rename() on Unix */ +- if (ret && do_set_attributes) +- { +- g_file_set_attributes_from_info (destination, +- info, +- G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, +- cancellable, +- NULL); +- } ++ //if (ret && do_set_attributes) ++ // { ++ // g_file_set_attributes_from_info (destination, ++ // info, ++ // G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, ++ // cancellable, ++ // NULL); ++ // } + + g_clear_object (&info); + diff --git a/debian/patches/gvariant-security-1-01.patch b/debian/patches/gvariant-security-1-01.patch new file mode 100644 index 0000000..7fa3682 --- /dev/null +++ b/debian/patches/gvariant-security-1-01.patch @@ -0,0 +1,94 @@ +From 590f7a6b76b5a3695aa562c9c3ab244433b6624b Mon Sep 17 00:00:00 2001 +From: William Manley +Date: Tue, 23 Jun 2020 22:59:58 +0100 +Subject: [PATCH 01/18] gvariant-core: Consolidate construction of + `GVariantSerialised` + +So I only need to change it in one place. + +This introduces no functional changes. + +Helps: #2121 +--- + glib/gvariant-core.c | 49 ++++++++++++++++++++++---------------------- + 1 file changed, 25 insertions(+), 24 deletions(-) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -350,6 +350,27 @@ g_variant_ensure_size (GVariant *value) + } + + /* < private > ++ * g_variant_to_serialised: ++ * @value: a #GVariant ++ * ++ * Gets a GVariantSerialised for a GVariant in state STATE_SERIALISED. ++ */ ++inline static GVariantSerialised ++g_variant_to_serialised (GVariant *value) ++{ ++ g_assert (value->state & STATE_SERIALISED); ++ { ++ GVariantSerialised serialised = { ++ value->type_info, ++ (gpointer) value->contents.serialised.data, ++ value->size, ++ value->depth, ++ }; ++ return serialised; ++ } ++} ++ ++/* < private > + * g_variant_serialise: + * @value: a #GVariant + * @data: an appropriately-sized buffer +@@ -1007,16 +1028,8 @@ g_variant_n_children (GVariant *value) + g_variant_lock (value); + + if (value->state & STATE_SERIALISED) +- { +- GVariantSerialised serialised = { +- value->type_info, +- (gpointer) value->contents.serialised.data, +- value->size, +- value->depth, +- }; +- +- n_children = g_variant_serialised_n_children (serialised); +- } ++ n_children = g_variant_serialised_n_children ( ++ g_variant_to_serialised (value)); + else + n_children = value->contents.tree.n_children; + +@@ -1083,12 +1096,7 @@ g_variant_get_child_value (GVariant *val + } + + { +- GVariantSerialised serialised = { +- value->type_info, +- (gpointer) value->contents.serialised.data, +- value->size, +- value->depth, +- }; ++ GVariantSerialised serialised = g_variant_to_serialised (value); + GVariantSerialised s_child; + GVariant *child; + +@@ -1201,14 +1209,7 @@ g_variant_is_normal_form (GVariant *valu + + if (value->state & STATE_SERIALISED) + { +- GVariantSerialised serialised = { +- value->type_info, +- (gpointer) value->contents.serialised.data, +- value->size, +- value->depth +- }; +- +- if (g_variant_serialised_is_normal (serialised)) ++ if (g_variant_serialised_is_normal (g_variant_to_serialised (value))) + value->state |= STATE_TRUSTED; + } + else diff --git a/debian/patches/gvariant-security-1-02.patch b/debian/patches/gvariant-security-1-02.patch new file mode 100644 index 0000000..86547dd --- /dev/null +++ b/debian/patches/gvariant-security-1-02.patch @@ -0,0 +1,201 @@ +From f8f5d8eefa06008aa8fe684069193dc3b1ae1b58 Mon Sep 17 00:00:00 2001 +From: William Manley +Date: Thu, 25 Jun 2020 17:08:21 +0100 +Subject: [PATCH 02/18] gvariant-serialiser: Factor out functions for dealing + with framing offsets + +This introduces no functional changes. + +Helps: #2121 +--- + glib/gvariant-serialiser.c | 108 +++++++++++++++++++------------------ + 1 file changed, 57 insertions(+), 51 deletions(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -633,30 +633,62 @@ gvs_calculate_total_size (gsize body_siz + return body_size + 8 * offsets; + } + ++struct Offsets ++{ ++ gsize data_size; ++ ++ guchar *array; ++ gsize length; ++ guint offset_size; ++ ++ gboolean is_normal; ++}; ++ + static gsize +-gvs_variable_sized_array_n_children (GVariantSerialised value) ++gvs_offsets_get_offset_n (struct Offsets *offsets, ++ gsize n) + { ++ return gvs_read_unaligned_le ( ++ offsets->array + (offsets->offset_size * n), offsets->offset_size); ++} ++ ++static struct Offsets ++gvs_variable_sized_array_get_frame_offsets (GVariantSerialised value) ++{ ++ struct Offsets out = { 0, }; + gsize offsets_array_size; +- gsize offset_size; + gsize last_end; + + if (value.size == 0) +- return 0; +- +- offset_size = gvs_get_offset_size (value.size); ++ { ++ out.is_normal = TRUE; ++ return out; ++ } + +- last_end = gvs_read_unaligned_le (value.data + value.size - +- offset_size, offset_size); ++ out.offset_size = gvs_get_offset_size (value.size); ++ last_end = gvs_read_unaligned_le (value.data + value.size - out.offset_size, ++ out.offset_size); + + if (last_end > value.size) +- return 0; ++ return out; /* offsets not normal */ + + offsets_array_size = value.size - last_end; + +- if (offsets_array_size % offset_size) +- return 0; ++ if (offsets_array_size % out.offset_size) ++ return out; /* offsets not normal */ + +- return offsets_array_size / offset_size; ++ out.data_size = last_end; ++ out.array = value.data + last_end; ++ out.length = offsets_array_size / out.offset_size; ++ out.is_normal = TRUE; ++ ++ return out; ++} ++ ++static gsize ++gvs_variable_sized_array_n_children (GVariantSerialised value) ++{ ++ return gvs_variable_sized_array_get_frame_offsets (value).length; + } + + static GVariantSerialised +@@ -664,8 +696,9 @@ gvs_variable_sized_array_get_child (GVar + gsize index_) + { + GVariantSerialised child = { 0, }; +- gsize offset_size; +- gsize last_end; ++ ++ struct Offsets offsets = gvs_variable_sized_array_get_frame_offsets (value); ++ + gsize start; + gsize end; + +@@ -673,18 +706,11 @@ gvs_variable_sized_array_get_child (GVar + g_variant_type_info_ref (child.type_info); + child.depth = value.depth + 1; + +- offset_size = gvs_get_offset_size (value.size); +- +- last_end = gvs_read_unaligned_le (value.data + value.size - +- offset_size, offset_size); +- + if (index_ > 0) + { + guint alignment; + +- start = gvs_read_unaligned_le (value.data + last_end + +- (offset_size * (index_ - 1)), +- offset_size); ++ start = gvs_offsets_get_offset_n (&offsets, index_ - 1); + + g_variant_type_info_query (child.type_info, &alignment, NULL); + start += (-start) & alignment; +@@ -692,11 +718,9 @@ gvs_variable_sized_array_get_child (GVar + else + start = 0; + +- end = gvs_read_unaligned_le (value.data + last_end + +- (offset_size * index_), +- offset_size); ++ end = gvs_offsets_get_offset_n (&offsets, index_); + +- if (start < end && end <= value.size && end <= last_end) ++ if (start < end && end <= value.size && end <= offsets.data_size) + { + child.data = value.data + start; + child.size = end - start; +@@ -768,34 +792,16 @@ static gboolean + gvs_variable_sized_array_is_normal (GVariantSerialised value) + { + GVariantSerialised child = { 0, }; +- gsize offsets_array_size; +- guchar *offsets_array; +- guint offset_size; + guint alignment; +- gsize last_end; +- gsize length; + gsize offset; + gsize i; + +- if (value.size == 0) +- return TRUE; +- +- offset_size = gvs_get_offset_size (value.size); +- last_end = gvs_read_unaligned_le (value.data + value.size - +- offset_size, offset_size); ++ struct Offsets offsets = gvs_variable_sized_array_get_frame_offsets (value); + +- if (last_end > value.size) ++ if (!offsets.is_normal) + return FALSE; + +- offsets_array_size = value.size - last_end; +- +- if (offsets_array_size % offset_size) +- return FALSE; +- +- offsets_array = value.data + value.size - offsets_array_size; +- length = offsets_array_size / offset_size; +- +- if (length == 0) ++ if (value.size != 0 && offsets.length == 0) + return FALSE; + + child.type_info = g_variant_type_info_element (value.type_info); +@@ -803,14 +809,14 @@ gvs_variable_sized_array_is_normal (GVar + child.depth = value.depth + 1; + offset = 0; + +- for (i = 0; i < length; i++) ++ for (i = 0; i < offsets.length; i++) + { + gsize this_end; + +- this_end = gvs_read_unaligned_le (offsets_array + offset_size * i, +- offset_size); ++ this_end = gvs_read_unaligned_le (offsets.array + offsets.offset_size * i, ++ offsets.offset_size); + +- if (this_end < offset || this_end > last_end) ++ if (this_end < offset || this_end > offsets.data_size) + return FALSE; + + while (offset & alignment) +@@ -832,7 +838,7 @@ gvs_variable_sized_array_is_normal (GVar + offset = this_end; + } + +- g_assert (offset == last_end); ++ g_assert (offset == offsets.data_size); + + return TRUE; + } diff --git a/debian/patches/gvariant-security-1-03.patch b/debian/patches/gvariant-security-1-03.patch new file mode 100644 index 0000000..55a459d --- /dev/null +++ b/debian/patches/gvariant-security-1-03.patch @@ -0,0 +1,87 @@ +From 5c27f22aff636766fbc5e49927fd28213629e840 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 25 Oct 2022 18:05:52 +0100 +Subject: [PATCH 03/18] gvariant: Zero-initialise various GVariantSerialised + objects + +The following few commits will add a couple of new fields to +`GVariantSerialised`, and they should be zero-filled by default. + +Try and pre-empt that a bit by zero-filling `GVariantSerialised` by +default in a few places. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/gvariant.c | 2 +- + glib/tests/gvariant.c | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5988,7 +5988,7 @@ g_variant_byteswap (GVariant *value) + if (alignment) + /* (potentially) contains multi-byte numeric data */ + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + GVariant *trusted; + GBytes *bytes; + +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -1438,7 +1438,7 @@ test_maybe (void) + + for (flavour = 0; flavour < 8; flavour += alignment) + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + GVariantSerialised child; + + serialised.type_info = type_info; +@@ -1562,7 +1562,7 @@ test_array (void) + + for (flavour = 0; flavour < 8; flavour += alignment) + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + + serialised.type_info = array_info; + serialised.data = flavoured_malloc (needed_size, flavour); +@@ -1726,7 +1726,7 @@ test_tuple (void) + + for (flavour = 0; flavour < 8; flavour += alignment) + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + + serialised.type_info = type_info; + serialised.data = flavoured_malloc (needed_size, flavour); +@@ -1821,7 +1821,7 @@ test_variant (void) + + for (flavour = 0; flavour < 8; flavour += alignment) + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + GVariantSerialised child; + + serialised.type_info = type_info; +@@ -2268,7 +2268,7 @@ serialise_tree (TreeInstance *tree + static void + test_byteswap (void) + { +- GVariantSerialised one, two; ++ GVariantSerialised one = { 0, }, two = { 0, }; + TreeInstance *tree; + + tree = tree_instance_new (NULL, 3); +@@ -2342,7 +2342,7 @@ test_serialiser_children (void) + static void + test_fuzz (gdouble *fuzziness) + { +- GVariantSerialised serialised; ++ GVariantSerialised serialised = { 0, }; + TreeInstance *tree; + + /* make an instance */ diff --git a/debian/patches/gvariant-security-1-04.patch b/debian/patches/gvariant-security-1-04.patch new file mode 100644 index 0000000..3c1b85b --- /dev/null +++ b/debian/patches/gvariant-security-1-04.patch @@ -0,0 +1,406 @@ +From c8067857f7c8fb369ecb30bb534b018b2e2b8f87 Mon Sep 17 00:00:00 2001 +From: William Manley +Date: Mon, 29 Jun 2020 16:59:44 +0100 +Subject: [PATCH 04/18] =?UTF-8?q?gvariant:=20Don=E2=80=99t=20allow=20child?= + =?UTF-8?q?=20elements=20to=20overlap=20with=20each=20other?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If different elements of a variable sized array can overlap with each +other then we can cause a `GVariant` to normalise to a much larger type. + +This commit changes the behaviour of `GVariant` with non-normal form data. If +an invalid frame offset is found all subsequent elements are given their +default value. + +When retrieving an element at index `n` we scan the frame offsets up to index +`n` and if they are not in order we return an element with the default value +for that type. This guarantees that elements don't overlap with each +other. We remember the offset we've scanned up to so we don't need to +repeat this work on subsequent accesses. We skip these checks for trusted +data. + +Unfortunately this makes random access of untrusted data O(n) — at least +on first access. It doesn't affect the algorithmic complexity of accessing +elements in order, such as when using the `GVariantIter` interface. Also: +the cost of validation will be amortised as the `GVariant` instance is +continued to be used. + +I've implemented this with 4 different functions, 1 for each element size, +rather than looping calling `gvs_read_unaligned_le` in the hope that the +compiler will find it easy to optimise and should produce fairly tight +code. + +Fixes: #2121 +--- + glib/gvariant-core.c | 35 ++++++++++++++++ + glib/gvariant-serialiser.c | 86 ++++++++++++++++++++++++++++++++++++-- + glib/gvariant-serialiser.h | 9 ++++ + glib/tests/gvariant.c | 45 ++++++++++++++++++++ + 4 files changed, 172 insertions(+), 3 deletions(-) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -65,6 +65,7 @@ struct _GVariant + { + GBytes *bytes; + gconstpointer data; ++ gsize ordered_offsets_up_to; + } serialised; + + struct +@@ -162,6 +163,24 @@ struct _GVariant + * if .data pointed to the appropriate number of nul + * bytes. + * ++ * .ordered_offsets_up_to: If ordered_offsets_up_to == n this means that all ++ * the frame offsets up to and including the frame ++ * offset determining the end of element n are in ++ * order. This guarantees that the bytes of element ++ * n don't overlap with any previous element. ++ * ++ * For trusted data this is set to G_MAXSIZE and we ++ * don't check that the frame offsets are in order. ++ * ++ * Note: This doesn't imply the offsets are good in ++ * any way apart from their ordering. In particular ++ * offsets may be out of bounds for this value or ++ * may imply that the data overlaps the frame ++ * offsets themselves. ++ * ++ * This field is only relevant for arrays of non ++ * fixed width types. ++ * + * .tree: Only valid when the instance is in tree form. + * + * Note that accesses from other threads could result in +@@ -365,6 +384,7 @@ g_variant_to_serialised (GVariant *value + (gpointer) value->contents.serialised.data, + value->size, + value->depth, ++ value->contents.serialised.ordered_offsets_up_to, + }; + return serialised; + } +@@ -396,6 +416,7 @@ g_variant_serialise (GVariant *value, + serialised.size = value->size; + serialised.data = data; + serialised.depth = value->depth; ++ serialised.ordered_offsets_up_to = 0; + + children = (gpointer *) value->contents.tree.children; + n_children = value->contents.tree.n_children; +@@ -439,6 +460,15 @@ g_variant_fill_gvs (GVariantSerialised * + g_assert (serialised->size == value->size); + serialised->depth = value->depth; + ++ if (value->state & STATE_SERIALISED) ++ { ++ serialised->ordered_offsets_up_to = value->contents.serialised.ordered_offsets_up_to; ++ } ++ else ++ { ++ serialised->ordered_offsets_up_to = 0; ++ } ++ + if (serialised->data) + /* g_variant_store() is a public API, so it + * it will reacquire the lock if it needs to. +@@ -481,6 +511,7 @@ g_variant_ensure_serialised (GVariant *v + bytes = g_bytes_new_take (data, value->size); + value->contents.serialised.data = g_bytes_get_data (bytes, NULL); + value->contents.serialised.bytes = bytes; ++ value->contents.serialised.ordered_offsets_up_to = G_MAXSIZE; + value->state |= STATE_SERIALISED; + } + } +@@ -561,6 +592,7 @@ g_variant_new_from_bytes (const GVariant + serialised.type_info = value->type_info; + serialised.data = (guchar *) g_bytes_get_data (bytes, &serialised.size); + serialised.depth = 0; ++ serialised.ordered_offsets_up_to = trusted ? G_MAXSIZE : 0; + + if (!g_variant_serialised_check (serialised)) + { +@@ -611,6 +643,8 @@ g_variant_new_from_bytes (const GVariant + value->contents.serialised.data = g_bytes_get_data (bytes, &value->size); + } + ++ value->contents.serialised.ordered_offsets_up_to = trusted ? G_MAXSIZE : 0; ++ + g_clear_pointer (&owned_bytes, g_bytes_unref); + + return value; +@@ -1130,6 +1164,7 @@ g_variant_get_child_value (GVariant *val + child->contents.serialised.bytes = + g_bytes_ref (value->contents.serialised.bytes); + child->contents.serialised.data = s_child.data; ++ child->contents.serialised.ordered_offsets_up_to = s_child.ordered_offsets_up_to; + + return child; + } +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -1,6 +1,7 @@ + /* + * Copyright © 2007, 2008 Ryan Lortie + * Copyright © 2010 Codethink Limited ++ * Copyright © 2020 William Manley + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -264,6 +265,7 @@ gvs_fixed_sized_maybe_get_child (GVarian + value.type_info = g_variant_type_info_element (value.type_info); + g_variant_type_info_ref (value.type_info); + value.depth++; ++ value.ordered_offsets_up_to = 0; + + return value; + } +@@ -295,7 +297,7 @@ gvs_fixed_sized_maybe_serialise (GVarian + { + if (n_children) + { +- GVariantSerialised child = { NULL, value.data, value.size, value.depth + 1 }; ++ GVariantSerialised child = { NULL, value.data, value.size, value.depth + 1, 0 }; + + gvs_filler (&child, children[0]); + } +@@ -317,6 +319,7 @@ gvs_fixed_sized_maybe_is_normal (GVarian + /* proper element size: "Just". recurse to the child. */ + value.type_info = g_variant_type_info_element (value.type_info); + value.depth++; ++ value.ordered_offsets_up_to = 0; + + return g_variant_serialised_is_normal (value); + } +@@ -358,6 +361,7 @@ gvs_variable_sized_maybe_get_child (GVar + value.data = NULL; + + value.depth++; ++ value.ordered_offsets_up_to = 0; + + return value; + } +@@ -388,7 +392,7 @@ gvs_variable_sized_maybe_serialise (GVar + { + if (n_children) + { +- GVariantSerialised child = { NULL, value.data, value.size - 1, value.depth + 1 }; ++ GVariantSerialised child = { NULL, value.data, value.size - 1, value.depth + 1, 0 }; + + /* write the data for the child. */ + gvs_filler (&child, children[0]); +@@ -408,6 +412,7 @@ gvs_variable_sized_maybe_is_normal (GVar + value.type_info = g_variant_type_info_element (value.type_info); + value.size--; + value.depth++; ++ value.ordered_offsets_up_to = 0; + + return g_variant_serialised_is_normal (value); + } +@@ -691,6 +696,32 @@ gvs_variable_sized_array_n_children (GVa + return gvs_variable_sized_array_get_frame_offsets (value).length; + } + ++/* Find the index of the first out-of-order element in @data, assuming that ++ * @data is an array of elements of given @type, starting at index @start and ++ * containing a further @len-@start elements. */ ++#define DEFINE_FIND_UNORDERED(type) \ ++ static gsize \ ++ find_unordered_##type (const guint8 *data, gsize start, gsize len) \ ++ { \ ++ gsize off; \ ++ type current, previous; \ ++ \ ++ memcpy (&previous, data + start * sizeof (current), sizeof (current)); \ ++ for (off = (start + 1) * sizeof (current); off < len * sizeof (current); off += sizeof (current)) \ ++ { \ ++ memcpy (¤t, data + off, sizeof (current)); \ ++ if (current < previous) \ ++ break; \ ++ previous = current; \ ++ } \ ++ return off / sizeof (current) - 1; \ ++ } ++ ++DEFINE_FIND_UNORDERED (guint8); ++DEFINE_FIND_UNORDERED (guint16); ++DEFINE_FIND_UNORDERED (guint32); ++DEFINE_FIND_UNORDERED (guint64); ++ + static GVariantSerialised + gvs_variable_sized_array_get_child (GVariantSerialised value, + gsize index_) +@@ -706,6 +737,49 @@ gvs_variable_sized_array_get_child (GVar + g_variant_type_info_ref (child.type_info); + child.depth = value.depth + 1; + ++ /* If the requested @index_ is beyond the set of indices whose framing offsets ++ * have been checked, check the remaining offsets to see whether they’re ++ * normal (in order, no overlapping array elements). */ ++ if (index_ > value.ordered_offsets_up_to) ++ { ++ switch (offsets.offset_size) ++ { ++ case 1: ++ { ++ value.ordered_offsets_up_to = find_unordered_guint8 ( ++ offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ break; ++ } ++ case 2: ++ { ++ value.ordered_offsets_up_to = find_unordered_guint16 ( ++ offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ break; ++ } ++ case 4: ++ { ++ value.ordered_offsets_up_to = find_unordered_guint32 ( ++ offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ break; ++ } ++ case 8: ++ { ++ value.ordered_offsets_up_to = find_unordered_guint64 ( ++ offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ break; ++ } ++ default: ++ /* gvs_get_offset_size() only returns maximum 8 */ ++ g_assert_not_reached (); ++ } ++ } ++ ++ if (index_ > value.ordered_offsets_up_to) ++ { ++ /* Offsets are invalid somewhere, so return an empty child. */ ++ return child; ++ } ++ + if (index_ > 0) + { + guint alignment; +@@ -840,6 +914,9 @@ gvs_variable_sized_array_is_normal (GVar + + g_assert (offset == offsets.data_size); + ++ /* All offsets have now been checked. */ ++ value.ordered_offsets_up_to = G_MAXSIZE; ++ + return TRUE; + } + +@@ -1072,7 +1149,7 @@ gvs_tuple_is_normal (GVariantSerialised + for (i = 0; i < length; i++) + { + const GVariantMemberInfo *member_info; +- GVariantSerialised child; ++ GVariantSerialised child = { 0, }; + gsize fixed_size; + guint alignment; + gsize end; +@@ -1132,6 +1209,9 @@ gvs_tuple_is_normal (GVariantSerialised + offset = end; + } + ++ /* All element bounds have been checked above. */ ++ value.ordered_offsets_up_to = G_MAXSIZE; ++ + { + gsize fixed_size; + guint alignment; +--- a/glib/gvariant-serialiser.h ++++ b/glib/gvariant-serialiser.h +@@ -29,6 +29,15 @@ typedef struct + guchar *data; + gsize size; + gsize depth; /* same semantics as GVariant.depth */ ++ ++ /* If ordered_offsets_up_to == n this means that all the frame offsets up to and ++ * including the frame offset determining the end of element n are in order. ++ * This guarantees that the bytes of element n don't overlap with any previous ++ * element. ++ * ++ * This is both read and set by g_variant_serialised_get_child for arrays of ++ * non-fixed-width types */ ++ gsize ordered_offsets_up_to; + } GVariantSerialised; + + /* deserialization */ +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -1,5 +1,6 @@ + /* + * Copyright © 2010 Codethink Limited ++ * Copyright © 2020 William Manley + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -1279,6 +1280,7 @@ random_instance_filler (GVariantSerialis + serialised->size = instance->size; + + serialised->depth = 0; ++ serialised->ordered_offsets_up_to = 0; + + g_assert_true (serialised->type_info == instance->type_info); + g_assert_cmpuint (serialised->size, ==, instance->size); +@@ -5031,6 +5033,47 @@ test_normal_checking_array_offsets (void + g_variant_unref (variant); + } + ++/* This is a regression test that we can't have non-normal values that take up ++ * significantly more space than the normal equivalent, by specifying the ++ * offset table entries so that array elements overlap. ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2121#note_832242 */ ++static void ++test_normal_checking_array_offsets2 (void) ++{ ++ const guint8 data[] = { ++ 'h', 'i', '\0', ++ 0x03, 0x00, 0x03, ++ 0x06, 0x00, 0x06, ++ 0x09, 0x00, 0x09, ++ 0x0c, 0x00, 0x0c, ++ 0x0f, 0x00, 0x0f, ++ 0x12, 0x00, 0x12, ++ 0x15, 0x00, 0x15, ++ }; ++ gsize size = sizeof (data); ++ const GVariantType *aaaaaaas = G_VARIANT_TYPE ("aaaaaaas"); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected = NULL; ++ ++ variant = g_variant_new_from_data (aaaaaaas, data, size, FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ g_assert_cmpuint (g_variant_get_size (normal_variant), <=, size * 2); ++ ++ expected = g_variant_new_parsed ( ++ "[[[[[[['hi', '', ''], [], []], [], []], [], []], [], []], [], []], [], []]"); ++ g_assert_cmpvariant (expected, variant); ++ g_assert_cmpvariant (expected, normal_variant); ++ ++ g_variant_unref (expected); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ + /* Test that a tuple with invalidly large values in its offset table is + * normalised successfully without looping infinitely. */ + static void +@@ -5197,6 +5240,8 @@ main (int argc, char **argv) + test_normal_checking_tuples); + g_test_add_func ("/gvariant/normal-checking/array-offsets", + test_normal_checking_array_offsets); ++ g_test_add_func ("/gvariant/normal-checking/array-offsets2", ++ test_normal_checking_array_offsets2); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets", + test_normal_checking_tuple_offsets); + g_test_add_func ("/gvariant/normal-checking/empty-object-path", diff --git a/debian/patches/gvariant-security-1-05.patch b/debian/patches/gvariant-security-1-05.patch new file mode 100644 index 0000000..c4666ca --- /dev/null +++ b/debian/patches/gvariant-security-1-05.patch @@ -0,0 +1,104 @@ +From 66e7c10aa1ec3102c49186f83671a5f0461ffbc0 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Fri, 7 Jan 2022 15:03:52 +0000 +Subject: [PATCH 05/18] gvariant-serialiser: Factor out code to get bounds of a + tuple member + +This introduces no functional changes. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/gvariant-serialiser.c | 73 ++++++++++++++++++++++++-------------- + 1 file changed, 46 insertions(+), 27 deletions(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -942,6 +942,51 @@ gvs_variable_sized_array_is_normal (GVar + * for the tuple. See the notes in gvarianttypeinfo.h. + */ + ++static void ++gvs_tuple_get_member_bounds (GVariantSerialised value, ++ gsize index_, ++ gsize offset_size, ++ gsize *out_member_start, ++ gsize *out_member_end) ++{ ++ const GVariantMemberInfo *member_info; ++ gsize member_start, member_end; ++ ++ member_info = g_variant_type_info_member_info (value.type_info, index_); ++ ++ if (member_info->i + 1) ++ member_start = gvs_read_unaligned_le (value.data + value.size - ++ offset_size * (member_info->i + 1), ++ offset_size); ++ else ++ member_start = 0; ++ ++ member_start += member_info->a; ++ member_start &= member_info->b; ++ member_start |= member_info->c; ++ ++ if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_LAST) ++ member_end = value.size - offset_size * (member_info->i + 1); ++ ++ else if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_FIXED) ++ { ++ gsize fixed_size; ++ ++ g_variant_type_info_query (member_info->type_info, NULL, &fixed_size); ++ member_end = member_start + fixed_size; ++ } ++ ++ else /* G_VARIANT_MEMBER_ENDING_OFFSET */ ++ member_end = gvs_read_unaligned_le (value.data + value.size - ++ offset_size * (member_info->i + 2), ++ offset_size); ++ ++ if (out_member_start != NULL) ++ *out_member_start = member_start; ++ if (out_member_end != NULL) ++ *out_member_end = member_end; ++} ++ + static gsize + gvs_tuple_n_children (GVariantSerialised value) + { +@@ -997,33 +1042,7 @@ gvs_tuple_get_child (GVariantSerialised + } + } + +- if (member_info->i + 1) +- start = gvs_read_unaligned_le (value.data + value.size - +- offset_size * (member_info->i + 1), +- offset_size); +- else +- start = 0; +- +- start += member_info->a; +- start &= member_info->b; +- start |= member_info->c; +- +- if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_LAST) +- end = value.size - offset_size * (member_info->i + 1); +- +- else if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_FIXED) +- { +- gsize fixed_size; +- +- g_variant_type_info_query (child.type_info, NULL, &fixed_size); +- end = start + fixed_size; +- child.size = fixed_size; +- } +- +- else /* G_VARIANT_MEMBER_ENDING_OFFSET */ +- end = gvs_read_unaligned_le (value.data + value.size - +- offset_size * (member_info->i + 2), +- offset_size); ++ gvs_tuple_get_member_bounds (value, index_, offset_size, &start, &end); + + /* The child should not extend into the offset table. */ + if (index_ != g_variant_type_info_n_members (value.type_info) - 1) diff --git a/debian/patches/gvariant-security-1-06.patch b/debian/patches/gvariant-security-1-06.patch new file mode 100644 index 0000000..0c18fa7 --- /dev/null +++ b/debian/patches/gvariant-security-1-06.patch @@ -0,0 +1,74 @@ +From a62a6b5d3e53b30a4628db2a077ab9ed03605748 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Fri, 7 Jan 2022 16:37:29 +0000 +Subject: [PATCH 06/18] gvariant-serialiser: Rework child size calculation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reduces a few duplicate calls to `g_variant_type_info_query()` and +explains why they’re needed. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/gvariant-serialiser.c | 31 +++++++++---------------------- + 1 file changed, 9 insertions(+), 22 deletions(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -1007,14 +1007,18 @@ gvs_tuple_get_child (GVariantSerialised + child.depth = value.depth + 1; + offset_size = gvs_get_offset_size (value.size); + ++ /* Ensure the size is set for fixed-sized children, or ++ * g_variant_serialised_check() will fail, even if we return ++ * (child.data == NULL) to indicate an error. */ ++ if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_FIXED) ++ g_variant_type_info_query (child.type_info, NULL, &child.size); ++ + /* tuples are the only (potentially) fixed-sized containers, so the + * only ones that have to deal with the possibility of having %NULL + * data with a non-zero %size if errors occurred elsewhere. + */ + if G_UNLIKELY (value.data == NULL && value.size != 0) + { +- g_variant_type_info_query (child.type_info, NULL, &child.size); +- + /* this can only happen in fixed-sized tuples, + * so the child must also be fixed sized. + */ +@@ -1032,29 +1036,12 @@ gvs_tuple_get_child (GVariantSerialised + else + { + if (offset_size * (member_info->i + 1) > value.size) +- { +- /* if the child is fixed size, return its size. +- * if child is not fixed-sized, return size = 0. +- */ +- g_variant_type_info_query (child.type_info, NULL, &child.size); +- +- return child; +- } ++ return child; + } + +- gvs_tuple_get_member_bounds (value, index_, offset_size, &start, &end); +- + /* The child should not extend into the offset table. */ +- if (index_ != g_variant_type_info_n_members (value.type_info) - 1) +- { +- GVariantSerialised last_child; +- last_child = gvs_tuple_get_child (value, +- g_variant_type_info_n_members (value.type_info) - 1); +- last_end = last_child.data + last_child.size - value.data; +- g_variant_type_info_unref (last_child.type_info); +- } +- else +- last_end = end; ++ gvs_tuple_get_member_bounds (value, index_, offset_size, &start, &end); ++ gvs_tuple_get_member_bounds (value, g_variant_type_info_n_members (value.type_info) - 1, offset_size, NULL, &last_end); + + if (start < end && end <= value.size && end <= last_end) + { diff --git a/debian/patches/gvariant-security-1-07.patch b/debian/patches/gvariant-security-1-07.patch new file mode 100644 index 0000000..cd23fbf --- /dev/null +++ b/debian/patches/gvariant-security-1-07.patch @@ -0,0 +1,382 @@ +From 2d55b3b74b1bc256e91a9d0d59120570376e6acc Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Fri, 7 Jan 2022 16:42:14 +0000 +Subject: [PATCH 07/18] =?UTF-8?q?gvariant:=20Don=E2=80=99t=20allow=20child?= + =?UTF-8?q?=20elements=20of=20a=20tuple=20to=20overlap=20each=20other?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is similar to the earlier commit which prevents child elements of a +variable-sized array from overlapping each other, but this time for +tuples. It is based heavily on ideas by William Manley. + +Tuples are slightly different from variable-sized arrays in that they +contain a mixture of fixed and variable sized elements. All but one of +the variable sized elements have an entry in the frame offsets table. +This means that if we were to just check the ordering of the frame +offsets table, the variable sized elements could still overlap +interleaving fixed sized elements, which would be bad. + +Therefore we have to check the elements rather than the frame offsets. + +The logic of checking the elements up to the index currently being +requested, and caching the result in `ordered_offsets_up_to`, means that +the algorithmic cost implications are the same for this commit as for +variable-sized arrays: an O(N) cost for these checks is amortised out +over N accesses to O(1) per access. + +Signed-off-by: Philip Withnall + +Fixes: #2121 +--- + glib/gvariant-core.c | 6 +- + glib/gvariant-serialiser.c | 40 ++++++++ + glib/gvariant-serialiser.h | 7 +- + glib/gvariant.c | 1 + + glib/tests/gvariant.c | 181 +++++++++++++++++++++++++++++++++++++ + 5 files changed, 232 insertions(+), 3 deletions(-) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -1,6 +1,7 @@ + /* + * Copyright © 2007, 2008 Ryan Lortie + * Copyright © 2010 Codethink Limited ++ * Copyright © 2022 Endless OS Foundation, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -179,7 +180,7 @@ struct _GVariant + * offsets themselves. + * + * This field is only relevant for arrays of non +- * fixed width types. ++ * fixed width types and for tuples. + * + * .tree: Only valid when the instance is in tree form. + * +@@ -1139,6 +1140,9 @@ g_variant_get_child_value (GVariant *val + */ + s_child = g_variant_serialised_get_child (serialised, index_); + ++ /* Update the cached ordered_offsets_up_to, since @serialised will be thrown away when this function exits */ ++ value->contents.serialised.ordered_offsets_up_to = MAX (value->contents.serialised.ordered_offsets_up_to, serialised.ordered_offsets_up_to); ++ + /* Check whether this would cause nesting too deep. If so, return a fake + * child. The only situation we expect this to happen in is with a variant, + * as all other deeply-nested types have a static type, and hence should +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -942,6 +942,10 @@ gvs_variable_sized_array_is_normal (GVar + * for the tuple. See the notes in gvarianttypeinfo.h. + */ + ++/* Note: This doesn’t guarantee that @out_member_end >= @out_member_start; that ++ * condition may not hold true for invalid serialised variants. The caller is ++ * responsible for checking the returned values and handling invalid ones ++ * appropriately. */ + static void + gvs_tuple_get_member_bounds (GVariantSerialised value, + gsize index_, +@@ -1028,6 +1032,42 @@ gvs_tuple_get_child (GVariantSerialised + return child; + } + ++ /* If the requested @index_ is beyond the set of indices whose framing offsets ++ * have been checked, check the remaining offsets to see whether they’re ++ * normal (in order, no overlapping tuple elements). ++ * ++ * Unlike the checks in gvs_variable_sized_array_get_child(), we have to check ++ * all the tuple *elements* here, not just all the framing offsets, since ++ * tuples contain a mix of elements which use framing offsets and ones which ++ * don’t. None of them are allowed to overlap. */ ++ if (index_ > value.ordered_offsets_up_to) ++ { ++ gsize i, prev_i_end = 0; ++ ++ if (value.ordered_offsets_up_to > 0) ++ gvs_tuple_get_member_bounds (value, value.ordered_offsets_up_to - 1, offset_size, NULL, &prev_i_end); ++ ++ for (i = value.ordered_offsets_up_to; i <= index_; i++) ++ { ++ gsize i_start, i_end; ++ ++ gvs_tuple_get_member_bounds (value, i, offset_size, &i_start, &i_end); ++ ++ if (i_start > i_end || i_start < prev_i_end || i_end > value.size) ++ break; ++ ++ prev_i_end = i_end; ++ } ++ ++ value.ordered_offsets_up_to = i - 1; ++ } ++ ++ if (index_ > value.ordered_offsets_up_to) ++ { ++ /* Offsets are invalid somewhere, so return an empty child. */ ++ return child; ++ } ++ + if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_OFFSET) + { + if (offset_size * (member_info->i + 2) > value.size) +--- a/glib/gvariant-serialiser.h ++++ b/glib/gvariant-serialiser.h +@@ -35,8 +35,11 @@ typedef struct + * This guarantees that the bytes of element n don't overlap with any previous + * element. + * +- * This is both read and set by g_variant_serialised_get_child for arrays of +- * non-fixed-width types */ ++ * This is both read and set by g_variant_serialised_get_child() for arrays of ++ * non-fixed-width types, and for tuples. ++ * ++ * Even when dealing with tuples, @ordered_offsets_up_to is an element index, ++ * rather than an index into the frame offsets. */ + gsize ordered_offsets_up_to; + } GVariantSerialised; + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5997,6 +5997,7 @@ g_variant_byteswap (GVariant *value) + serialised.size = g_variant_get_size (trusted); + serialised.data = g_malloc (serialised.size); + serialised.depth = g_variant_get_depth (trusted); ++ serialised.ordered_offsets_up_to = G_MAXSIZE; /* operating on the normal form */ + g_variant_store (trusted, serialised.data); + g_variant_unref (trusted); + +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -1,6 +1,7 @@ + /* + * Copyright © 2010 Codethink Limited + * Copyright © 2020 William Manley ++ * Copyright © 2022 Endless OS Foundation, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -1447,6 +1448,7 @@ test_maybe (void) + serialised.data = flavoured_malloc (needed_size, flavour); + serialised.size = needed_size; + serialised.depth = 0; ++ serialised.ordered_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, + random_instance_filler, +@@ -1570,6 +1572,7 @@ test_array (void) + serialised.data = flavoured_malloc (needed_size, flavour); + serialised.size = needed_size; + serialised.depth = 0; ++ serialised.ordered_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) instances, n_children); +@@ -1734,6 +1737,7 @@ test_tuple (void) + serialised.data = flavoured_malloc (needed_size, flavour); + serialised.size = needed_size; + serialised.depth = 0; ++ serialised.ordered_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) instances, n_children); +@@ -1830,6 +1834,7 @@ test_variant (void) + serialised.data = flavoured_malloc (needed_size, flavour); + serialised.size = needed_size; + serialised.depth = 0; ++ serialised.ordered_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) &instance, 1); +@@ -5098,6 +5103,176 @@ test_normal_checking_tuple_offsets (void + g_variant_unref (variant); + } + ++/* This is a regression test that we can't have non-normal values that take up ++ * significantly more space than the normal equivalent, by specifying the ++ * offset table entries so that tuple elements overlap. ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2121#note_838503 and ++ * https://gitlab.gnome.org/GNOME/glib/-/issues/2121#note_838513 */ ++static void ++test_normal_checking_tuple_offsets2 (void) ++{ ++ const GVariantType *data_type = G_VARIANT_TYPE ("(yyaiyyaiyy)"); ++ const guint8 data[] = { ++ 0x12, 0x34, 0x56, 0x78, 0x01, ++ /* ++ ^───────────────────┘ ++ ++ ^^^^^^^^^^ 1st yy ++ ^^^^^^^^^^ 2nd yy ++ ^^^^^^^^^^ 3rd yy ++ ^^^^ Framing offsets ++ */ ++ ++ /* If this variant was encoded normally, it would be something like this: ++ * 0x12, 0x34, pad, pad, [array bytes], 0x56, 0x78, pad, pad, [array bytes], 0x9A, 0xBC, 0xXX ++ * ^─────────────────────────────────────────────────────┘ ++ * ++ * ^^^^^^^^^^ 1st yy ++ * ^^^^^^^^^^ 2nd yy ++ * ^^^^^^^^^^ 3rd yy ++ * ^^^^ Framing offsets ++ */ ++ }; ++ gsize size = sizeof (data); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected = NULL; ++ ++ variant = g_variant_new_from_data (data_type, data, size, FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ g_assert_cmpuint (g_variant_get_size (normal_variant), <=, size * 3); ++ ++ expected = g_variant_new_parsed ( ++ "@(yyaiyyaiyy) (0x12, 0x34, [], 0x00, 0x00, [], 0x00, 0x00)"); ++ g_assert_cmpvariant (expected, variant); ++ g_assert_cmpvariant (expected, normal_variant); ++ ++ g_variant_unref (expected); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ ++/* This is a regression test that overlapping entries in the offset table are ++ * decoded consistently, even though they’re non-normal. ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2121#note_910935 */ ++static void ++test_normal_checking_tuple_offsets3 (void) ++{ ++ /* The expected decoding of this non-normal byte stream is complex. See ++ * section 2.7.3 (Handling Non-Normal Serialised Data) of the GVariant ++ * specification. ++ * ++ * The rule “Child Values Overlapping Framing Offsets” from the specification ++ * says that the first `ay` must be decoded as `[0x01]` even though it ++ * overlaps the first byte of the offset table. However, since commit ++ * 7eedcd76f7d5b8c98fa60013e1fe6e960bf19df3, GLib explicitly doesn’t allow ++ * this as it’s exploitable. So the first `ay` must be given a default value. ++ * ++ * The second and third `ay`s must be given default values because of rule ++ * “End Boundary Precedes Start Boundary”. ++ * ++ * The `i` must be given a default value because of rule “Start or End ++ * Boundary of a Child Falls Outside the Container”. ++ */ ++ const GVariantType *data_type = G_VARIANT_TYPE ("(ayayiay)"); ++ const guint8 data[] = { ++ 0x01, 0x00, 0x02, ++ /* ++ ^──┘ ++ ++ ^^^^^^^^^^ 1st ay, bytes 0-2 (but given a default value anyway, see above) ++ 2nd ay, bytes 2-0 ++ i, bytes 0-4 ++ 3rd ay, bytes 4-1 ++ ^^^^^^^^^^ Framing offsets ++ */ ++ }; ++ gsize size = sizeof (data); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected = NULL; ++ ++ variant = g_variant_new_from_data (data_type, data, size, FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ g_assert_false (g_variant_is_normal_form (variant)); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ g_assert_cmpuint (g_variant_get_size (normal_variant), <=, size * 3); ++ ++ expected = g_variant_new_parsed ("@(ayayiay) ([], [], 0, [])"); ++ g_assert_cmpvariant (expected, variant); ++ g_assert_cmpvariant (expected, normal_variant); ++ ++ g_variant_unref (expected); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ ++/* This is a regression test that overlapping entries in the offset table are ++ * decoded consistently, even though they’re non-normal. ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2121#note_910935 */ ++static void ++test_normal_checking_tuple_offsets4 (void) ++{ ++ /* The expected decoding of this non-normal byte stream is complex. See ++ * section 2.7.3 (Handling Non-Normal Serialised Data) of the GVariant ++ * specification. ++ * ++ * The rule “Child Values Overlapping Framing Offsets” from the specification ++ * says that the first `ay` must be decoded as `[0x01]` even though it ++ * overlaps the first byte of the offset table. However, since commit ++ * 7eedcd76f7d5b8c98fa60013e1fe6e960bf19df3, GLib explicitly doesn’t allow ++ * this as it’s exploitable. So the first `ay` must be given a default value. ++ * ++ * The second `ay` must be given a default value because of rule “End Boundary ++ * Precedes Start Boundary”. ++ * ++ * The third `ay` must be given a default value because its framing offsets ++ * overlap that of the first `ay`. ++ */ ++ const GVariantType *data_type = G_VARIANT_TYPE ("(ayayay)"); ++ const guint8 data[] = { ++ 0x01, 0x00, 0x02, ++ /* ++ ^──┘ ++ ++ ^^^^^^^^^^ 1st ay, bytes 0-2 (but given a default value anyway, see above) ++ 2nd ay, bytes 2-0 ++ 3rd ay, bytes 0-1 ++ ^^^^^^^^^^ Framing offsets ++ */ ++ }; ++ gsize size = sizeof (data); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected = NULL; ++ ++ variant = g_variant_new_from_data (data_type, data, size, FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ g_assert_false (g_variant_is_normal_form (variant)); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ g_assert_cmpuint (g_variant_get_size (normal_variant), <=, size * 3); ++ ++ expected = g_variant_new_parsed ("@(ayayay) ([], [], [])"); ++ g_assert_cmpvariant (expected, variant); ++ g_assert_cmpvariant (expected, normal_variant); ++ ++ g_variant_unref (expected); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ + /* Test that an empty object path is normalised successfully to the base object + * path, ‘/’. */ + static void +@@ -5244,6 +5419,12 @@ main (int argc, char **argv) + test_normal_checking_array_offsets2); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets", + test_normal_checking_tuple_offsets); ++ g_test_add_func ("/gvariant/normal-checking/tuple-offsets2", ++ test_normal_checking_tuple_offsets2); ++ g_test_add_func ("/gvariant/normal-checking/tuple-offsets3", ++ test_normal_checking_tuple_offsets3); ++ g_test_add_func ("/gvariant/normal-checking/tuple-offsets4", ++ test_normal_checking_tuple_offsets4); + g_test_add_func ("/gvariant/normal-checking/empty-object-path", + test_normal_checking_empty_object_path); + diff --git a/debian/patches/gvariant-security-1-08.patch b/debian/patches/gvariant-security-1-08.patch new file mode 100644 index 0000000..21485f3 --- /dev/null +++ b/debian/patches/gvariant-security-1-08.patch @@ -0,0 +1,378 @@ +From a6cb880af0a0932493ba096f01990e694e2c5b72 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 25 Oct 2022 15:14:14 +0100 +Subject: [PATCH 08/18] gvariant: Track checked and ordered offsets + independently + +The past few commits introduced the concept of known-good offsets in the +offset table (which is used for variable-width arrays and tuples). +Good offsets are ones which are non-overlapping with all the previous +offsets in the table. + +If a bad offset is encountered when indexing into the array or tuple, +the cached known-good offset index will not be increased. In this way, +all child variants at and beyond the first bad offset can be returned as +default values rather than dereferencing potentially invalid data. + +In this case, there was no information about the fact that the indexes +between the highest known-good index and the requested one had been +checked already. That could lead to a pathological case where an offset +table with an invalid first offset is repeatedly checked in full when +trying to access higher-indexed children. + +Avoid that by storing the index of the highest checked offset in the +table, as well as the index of the highest good/ordered offset. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/gvariant-core.c | 28 ++++++++++++++++++++++++ + glib/gvariant-serialiser.c | 44 +++++++++++++++++++++++++++----------- + glib/gvariant-serialiser.h | 9 ++++++++ + glib/gvariant.c | 1 + + glib/tests/gvariant.c | 5 +++++ + 5 files changed, 75 insertions(+), 12 deletions(-) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -67,6 +67,7 @@ struct _GVariant + GBytes *bytes; + gconstpointer data; + gsize ordered_offsets_up_to; ++ gsize checked_offsets_up_to; + } serialised; + + struct +@@ -182,6 +183,24 @@ struct _GVariant + * This field is only relevant for arrays of non + * fixed width types and for tuples. + * ++ * .checked_offsets_up_to: Similarly to .ordered_offsets_up_to, this stores ++ * the index of the highest element, n, whose frame ++ * offsets (and all the preceding frame offsets) ++ * have been checked for validity. ++ * ++ * It is always the case that ++ * .checked_offsets_up_to ≥ .ordered_offsets_up_to. ++ * ++ * If .checked_offsets_up_to == .ordered_offsets_up_to, ++ * then a bad offset has not been found so far. ++ * ++ * If .checked_offsets_up_to > .ordered_offsets_up_to, ++ * then a bad offset has been found at ++ * (.ordered_offsets_up_to + 1). ++ * ++ * This field is only relevant for arrays of non ++ * fixed width types and for tuples. ++ * + * .tree: Only valid when the instance is in tree form. + * + * Note that accesses from other threads could result in +@@ -386,6 +405,7 @@ g_variant_to_serialised (GVariant *value + value->size, + value->depth, + value->contents.serialised.ordered_offsets_up_to, ++ value->contents.serialised.checked_offsets_up_to, + }; + return serialised; + } +@@ -418,6 +438,7 @@ g_variant_serialise (GVariant *value, + serialised.data = data; + serialised.depth = value->depth; + serialised.ordered_offsets_up_to = 0; ++ serialised.checked_offsets_up_to = 0; + + children = (gpointer *) value->contents.tree.children; + n_children = value->contents.tree.n_children; +@@ -464,10 +485,12 @@ g_variant_fill_gvs (GVariantSerialised * + if (value->state & STATE_SERIALISED) + { + serialised->ordered_offsets_up_to = value->contents.serialised.ordered_offsets_up_to; ++ serialised->checked_offsets_up_to = value->contents.serialised.checked_offsets_up_to; + } + else + { + serialised->ordered_offsets_up_to = 0; ++ serialised->checked_offsets_up_to = 0; + } + + if (serialised->data) +@@ -513,6 +536,7 @@ g_variant_ensure_serialised (GVariant *v + value->contents.serialised.data = g_bytes_get_data (bytes, NULL); + value->contents.serialised.bytes = bytes; + value->contents.serialised.ordered_offsets_up_to = G_MAXSIZE; ++ value->contents.serialised.checked_offsets_up_to = G_MAXSIZE; + value->state |= STATE_SERIALISED; + } + } +@@ -594,6 +618,7 @@ g_variant_new_from_bytes (const GVariant + serialised.data = (guchar *) g_bytes_get_data (bytes, &serialised.size); + serialised.depth = 0; + serialised.ordered_offsets_up_to = trusted ? G_MAXSIZE : 0; ++ serialised.checked_offsets_up_to = trusted ? G_MAXSIZE : 0; + + if (!g_variant_serialised_check (serialised)) + { +@@ -645,6 +670,7 @@ g_variant_new_from_bytes (const GVariant + } + + value->contents.serialised.ordered_offsets_up_to = trusted ? G_MAXSIZE : 0; ++ value->contents.serialised.checked_offsets_up_to = trusted ? G_MAXSIZE : 0; + + g_clear_pointer (&owned_bytes, g_bytes_unref); + +@@ -1142,6 +1168,7 @@ g_variant_get_child_value (GVariant *val + + /* Update the cached ordered_offsets_up_to, since @serialised will be thrown away when this function exits */ + value->contents.serialised.ordered_offsets_up_to = MAX (value->contents.serialised.ordered_offsets_up_to, serialised.ordered_offsets_up_to); ++ value->contents.serialised.checked_offsets_up_to = MAX (value->contents.serialised.checked_offsets_up_to, serialised.checked_offsets_up_to); + + /* Check whether this would cause nesting too deep. If so, return a fake + * child. The only situation we expect this to happen in is with a variant, +@@ -1169,6 +1196,7 @@ g_variant_get_child_value (GVariant *val + g_bytes_ref (value->contents.serialised.bytes); + child->contents.serialised.data = s_child.data; + child->contents.serialised.ordered_offsets_up_to = s_child.ordered_offsets_up_to; ++ child->contents.serialised.checked_offsets_up_to = s_child.checked_offsets_up_to; + + return child; + } +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -120,6 +120,8 @@ + * + * @depth has no restrictions; the depth of a top-level serialized #GVariant is + * zero, and it increases for each level of nested child. ++ * ++ * @checked_offsets_up_to is always ≥ @ordered_offsets_up_to + */ + + /* < private > +@@ -147,6 +149,9 @@ g_variant_serialised_check (GVariantSeri + !(serialised.size == 0 || serialised.data != NULL)) + return FALSE; + ++ if (serialised.ordered_offsets_up_to > serialised.checked_offsets_up_to) ++ return FALSE; ++ + /* Depending on the native alignment requirements of the machine, the + * compiler will insert either 3 or 7 padding bytes after the char. + * This will result in the sizeof() the struct being 12 or 16. +@@ -266,6 +271,7 @@ gvs_fixed_sized_maybe_get_child (GVarian + g_variant_type_info_ref (value.type_info); + value.depth++; + value.ordered_offsets_up_to = 0; ++ value.checked_offsets_up_to = 0; + + return value; + } +@@ -297,7 +303,7 @@ gvs_fixed_sized_maybe_serialise (GVarian + { + if (n_children) + { +- GVariantSerialised child = { NULL, value.data, value.size, value.depth + 1, 0 }; ++ GVariantSerialised child = { NULL, value.data, value.size, value.depth + 1, 0, 0 }; + + gvs_filler (&child, children[0]); + } +@@ -320,6 +326,7 @@ gvs_fixed_sized_maybe_is_normal (GVarian + value.type_info = g_variant_type_info_element (value.type_info); + value.depth++; + value.ordered_offsets_up_to = 0; ++ value.checked_offsets_up_to = 0; + + return g_variant_serialised_is_normal (value); + } +@@ -362,6 +369,7 @@ gvs_variable_sized_maybe_get_child (GVar + + value.depth++; + value.ordered_offsets_up_to = 0; ++ value.checked_offsets_up_to = 0; + + return value; + } +@@ -392,7 +400,7 @@ gvs_variable_sized_maybe_serialise (GVar + { + if (n_children) + { +- GVariantSerialised child = { NULL, value.data, value.size - 1, value.depth + 1, 0 }; ++ GVariantSerialised child = { NULL, value.data, value.size - 1, value.depth + 1, 0, 0 }; + + /* write the data for the child. */ + gvs_filler (&child, children[0]); +@@ -413,6 +421,7 @@ gvs_variable_sized_maybe_is_normal (GVar + value.size--; + value.depth++; + value.ordered_offsets_up_to = 0; ++ value.checked_offsets_up_to = 0; + + return g_variant_serialised_is_normal (value); + } +@@ -739,39 +748,46 @@ gvs_variable_sized_array_get_child (GVar + + /* If the requested @index_ is beyond the set of indices whose framing offsets + * have been checked, check the remaining offsets to see whether they’re +- * normal (in order, no overlapping array elements). */ +- if (index_ > value.ordered_offsets_up_to) ++ * normal (in order, no overlapping array elements). ++ * ++ * Don’t bother checking if the highest known-good offset is lower than the ++ * highest checked offset, as that means there’s an invalid element at that ++ * index, so there’s no need to check further. */ ++ if (index_ > value.checked_offsets_up_to && ++ value.ordered_offsets_up_to == value.checked_offsets_up_to) + { + switch (offsets.offset_size) + { + case 1: + { + value.ordered_offsets_up_to = find_unordered_guint8 ( +- offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ offsets.array, value.checked_offsets_up_to, index_ + 1); + break; + } + case 2: + { + value.ordered_offsets_up_to = find_unordered_guint16 ( +- offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ offsets.array, value.checked_offsets_up_to, index_ + 1); + break; + } + case 4: + { + value.ordered_offsets_up_to = find_unordered_guint32 ( +- offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ offsets.array, value.checked_offsets_up_to, index_ + 1); + break; + } + case 8: + { + value.ordered_offsets_up_to = find_unordered_guint64 ( +- offsets.array, value.ordered_offsets_up_to, index_ + 1); ++ offsets.array, value.checked_offsets_up_to, index_ + 1); + break; + } + default: + /* gvs_get_offset_size() only returns maximum 8 */ + g_assert_not_reached (); + } ++ ++ value.checked_offsets_up_to = index_; + } + + if (index_ > value.ordered_offsets_up_to) +@@ -916,6 +932,7 @@ gvs_variable_sized_array_is_normal (GVar + + /* All offsets have now been checked. */ + value.ordered_offsets_up_to = G_MAXSIZE; ++ value.checked_offsets_up_to = G_MAXSIZE; + + return TRUE; + } +@@ -1040,14 +1057,15 @@ gvs_tuple_get_child (GVariantSerialised + * all the tuple *elements* here, not just all the framing offsets, since + * tuples contain a mix of elements which use framing offsets and ones which + * don’t. None of them are allowed to overlap. */ +- if (index_ > value.ordered_offsets_up_to) ++ if (index_ > value.checked_offsets_up_to && ++ value.ordered_offsets_up_to == value.checked_offsets_up_to) + { + gsize i, prev_i_end = 0; + +- if (value.ordered_offsets_up_to > 0) +- gvs_tuple_get_member_bounds (value, value.ordered_offsets_up_to - 1, offset_size, NULL, &prev_i_end); ++ if (value.checked_offsets_up_to > 0) ++ gvs_tuple_get_member_bounds (value, value.checked_offsets_up_to - 1, offset_size, NULL, &prev_i_end); + +- for (i = value.ordered_offsets_up_to; i <= index_; i++) ++ for (i = value.checked_offsets_up_to; i <= index_; i++) + { + gsize i_start, i_end; + +@@ -1060,6 +1078,7 @@ gvs_tuple_get_child (GVariantSerialised + } + + value.ordered_offsets_up_to = i - 1; ++ value.checked_offsets_up_to = index_; + } + + if (index_ > value.ordered_offsets_up_to) +@@ -1257,6 +1276,7 @@ gvs_tuple_is_normal (GVariantSerialised + + /* All element bounds have been checked above. */ + value.ordered_offsets_up_to = G_MAXSIZE; ++ value.checked_offsets_up_to = G_MAXSIZE; + + { + gsize fixed_size; +--- a/glib/gvariant-serialiser.h ++++ b/glib/gvariant-serialiser.h +@@ -41,6 +41,15 @@ typedef struct + * Even when dealing with tuples, @ordered_offsets_up_to is an element index, + * rather than an index into the frame offsets. */ + gsize ordered_offsets_up_to; ++ ++ /* Similar to @ordered_offsets_up_to. This gives the index of the child element ++ * whose frame offset is the highest in the offset table which has been ++ * checked so far. ++ * ++ * This is always ≥ @ordered_offsets_up_to. It is always an element index. ++ * ++ * See documentation in gvariant-core.c for `struct GVariant` for details. */ ++ gsize checked_offsets_up_to; + } GVariantSerialised; + + /* deserialization */ +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5998,6 +5998,7 @@ g_variant_byteswap (GVariant *value) + serialised.data = g_malloc (serialised.size); + serialised.depth = g_variant_get_depth (trusted); + serialised.ordered_offsets_up_to = G_MAXSIZE; /* operating on the normal form */ ++ serialised.checked_offsets_up_to = G_MAXSIZE; + g_variant_store (trusted, serialised.data); + g_variant_unref (trusted); + +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -1282,6 +1282,7 @@ random_instance_filler (GVariantSerialis + + serialised->depth = 0; + serialised->ordered_offsets_up_to = 0; ++ serialised->checked_offsets_up_to = 0; + + g_assert_true (serialised->type_info == instance->type_info); + g_assert_cmpuint (serialised->size, ==, instance->size); +@@ -1449,6 +1450,7 @@ test_maybe (void) + serialised.size = needed_size; + serialised.depth = 0; + serialised.ordered_offsets_up_to = 0; ++ serialised.checked_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, + random_instance_filler, +@@ -1573,6 +1575,7 @@ test_array (void) + serialised.size = needed_size; + serialised.depth = 0; + serialised.ordered_offsets_up_to = 0; ++ serialised.checked_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) instances, n_children); +@@ -1738,6 +1741,7 @@ test_tuple (void) + serialised.size = needed_size; + serialised.depth = 0; + serialised.ordered_offsets_up_to = 0; ++ serialised.checked_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) instances, n_children); +@@ -1835,6 +1839,7 @@ test_variant (void) + serialised.size = needed_size; + serialised.depth = 0; + serialised.ordered_offsets_up_to = 0; ++ serialised.checked_offsets_up_to = 0; + + g_variant_serialiser_serialise (serialised, random_instance_filler, + (gpointer *) &instance, 1); diff --git a/debian/patches/gvariant-security-1-09.patch b/debian/patches/gvariant-security-1-09.patch new file mode 100644 index 0000000..37db717 --- /dev/null +++ b/debian/patches/gvariant-security-1-09.patch @@ -0,0 +1,63 @@ +From 8c1a7815e7e6695c120cdedff48395c1222af6d1 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Fri, 12 Jun 2020 18:01:13 +0100 +Subject: [PATCH 09/18] tests: Add another test for overlapping offsets in + GVariant + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/tests/gvariant.c | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -5019,6 +5019,38 @@ test_recursion_limits_array_in_variant ( + g_variant_unref (wrapper_variant); + } + ++/* Test that a nested array with invalid values in its offset table (which point ++ * from the inner to the outer array) is normalised successfully without ++ * looping infinitely. */ ++static void ++test_normal_checking_array_offsets_overlapped (void) ++{ ++ const guint8 data[] = { ++ 0x01, 0x00, ++ }; ++ gsize size = sizeof (data); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected_variant = NULL; ++ ++ variant = g_variant_new_from_data (G_VARIANT_TYPE ("aay"), data, size, ++ FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ ++ expected_variant = g_variant_new_parsed ("[@ay [], []]"); ++ g_assert_cmpvariant (normal_variant, expected_variant); ++ ++ g_assert_cmpmem (g_variant_get_data (normal_variant), g_variant_get_size (normal_variant), ++ g_variant_get_data (expected_variant), g_variant_get_size (expected_variant)); ++ ++ g_variant_unref (expected_variant); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ + /* Test that an array with invalidly large values in its offset table is + * normalised successfully without looping infinitely. */ + static void +@@ -5418,6 +5450,8 @@ main (int argc, char **argv) + + g_test_add_func ("/gvariant/normal-checking/tuples", + test_normal_checking_tuples); ++ g_test_add_func ("/gvariant/normal-checking/array-offsets/overlapped", ++ test_normal_checking_array_offsets_overlapped); + g_test_add_func ("/gvariant/normal-checking/array-offsets", + test_normal_checking_array_offsets); + g_test_add_func ("/gvariant/normal-checking/array-offsets2", diff --git a/debian/patches/gvariant-security-1-10.patch b/debian/patches/gvariant-security-1-10.patch new file mode 100644 index 0000000..529d46e --- /dev/null +++ b/debian/patches/gvariant-security-1-10.patch @@ -0,0 +1,71 @@ +From 019505a7ccc32d0afa06e104dc0ac2e63e6f7189 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 24 Oct 2022 16:43:23 +0100 +Subject: [PATCH 10/18] tests: Disable some random instance tests of GVariants +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building a `GVariant` using entirely random data may result in a +non-normally-formed `GVariant`. It’s always possible to read these +`GVariant`s, but the API might return default values for some or all of +their components. + +In particular, this can easily happen when randomly generating the +offset tables for non-fixed-width container types. + +If it does happen, bytewise comparison of the parsed `GVariant` with the +original bytes will not always match. So skip those checks. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/tests/gvariant.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -1229,6 +1229,7 @@ random_instance_assert (RandomInstance * + GRand *rand; + gsize i; + ++ g_assert_true (size == 0 || buffer != NULL); + g_assert_cmpint ((gsize) buffer & ALIGN_BITS & instance->alignment, ==, 0); + g_assert_cmpint (size, ==, instance->size); + +@@ -1455,10 +1456,13 @@ test_maybe (void) + g_variant_serialiser_serialise (serialised, + random_instance_filler, + (gpointer *) &instance, 1); ++ + child = g_variant_serialised_get_child (serialised, 0); + g_assert_true (child.type_info == instance->type_info); +- random_instance_assert (instance, child.data, child.size); ++ if (child.data != NULL) /* could be NULL if element is non-normal */ ++ random_instance_assert (instance, child.data, child.size); + g_variant_type_info_unref (child.type_info); ++ + flavoured_free (serialised.data, flavour); + } + } +@@ -1591,7 +1595,8 @@ test_array (void) + + child = g_variant_serialised_get_child (serialised, i); + g_assert_true (child.type_info == instances[i]->type_info); +- random_instance_assert (instances[i], child.data, child.size); ++ if (child.data != NULL) /* could be NULL if element is non-normal */ ++ random_instance_assert (instances[i], child.data, child.size); + g_variant_type_info_unref (child.type_info); + } + +@@ -1757,7 +1762,8 @@ test_tuple (void) + + child = g_variant_serialised_get_child (serialised, i); + g_assert_true (child.type_info == instances[i]->type_info); +- random_instance_assert (instances[i], child.data, child.size); ++ if (child.data != NULL) /* could be NULL if element is non-normal */ ++ random_instance_assert (instances[i], child.data, child.size); + g_variant_type_info_unref (child.type_info); + } + diff --git a/debian/patches/gvariant-security-1-11.patch b/debian/patches/gvariant-security-1-11.patch new file mode 100644 index 0000000..ac087b0 --- /dev/null +++ b/debian/patches/gvariant-security-1-11.patch @@ -0,0 +1,26 @@ +From 9d2a142807806212a23436d0332b0209733810f2 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 24 Oct 2022 18:14:57 +0100 +Subject: [PATCH 11/18] gvariant: Clarify the docs for + g_variant_get_normal_form() + +Document how non-normal parts of the `GVariant` are handled. + +Signed-off-by: Philip Withnall +--- + glib/gvariant.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5923,7 +5923,9 @@ g_variant_deep_copy (GVariant *value) + * marked as trusted and a new reference to it is returned. + * + * If @value is found not to be in normal form then a new trusted +- * #GVariant is created with the same value as @value. ++ * #GVariant is created with the same value as @value. The non-normal parts of ++ * @value will be replaced with default values which are guaranteed to be in ++ * normal form. + * + * It makes sense to call this function if you've received #GVariant + * data from untrusted sources and you want to ensure your serialized diff --git a/debian/patches/gvariant-security-1-12.patch b/debian/patches/gvariant-security-1-12.patch new file mode 100644 index 0000000..d325ea9 --- /dev/null +++ b/debian/patches/gvariant-security-1-12.patch @@ -0,0 +1,40 @@ +From b0ccb1616688290088e49dea2dc0d7fe723136e4 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 24 Oct 2022 18:43:55 +0100 +Subject: [PATCH 12/18] gvariant: Port g_variant_deep_copy() to count its + iterations directly + +This is equivalent to what `GVariantIter` does, but it means that +`g_variant_deep_copy()` is making its own `g_variant_get_child_value()` +calls. + +This will be useful in an upcoming commit, where those child values will +be inspected a little more deeply. + +Signed-off-by: Philip Withnall + +Helps: #2121 +--- + glib/gvariant.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5850,14 +5850,13 @@ g_variant_deep_copy (GVariant *value) + case G_VARIANT_CLASS_VARIANT: + { + GVariantBuilder builder; +- GVariantIter iter; +- GVariant *child; ++ gsize i, n_children; + + g_variant_builder_init (&builder, g_variant_get_type (value)); +- g_variant_iter_init (&iter, value); + +- while ((child = g_variant_iter_next_value (&iter))) ++ for (i = 0, n_children = g_variant_n_children (value); i < n_children; i++) + { ++ GVariant *child = g_variant_get_child_value (value, i); + g_variant_builder_add_value (&builder, g_variant_deep_copy (child)); + g_variant_unref (child); + } diff --git a/debian/patches/gvariant-security-1-13.patch b/debian/patches/gvariant-security-1-13.patch new file mode 100644 index 0000000..23f4eb8 --- /dev/null +++ b/debian/patches/gvariant-security-1-13.patch @@ -0,0 +1,105 @@ +Backport of: + +From 1770e255ae6cc3f0bf5312322432bbc6524a3632 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 25 Oct 2022 13:03:22 +0100 +Subject: [PATCH 13/18] gvariant: Add internal + g_variant_maybe_get_child_value() + +This will be used in a following commit. + +Signed-off-by: Philip Withnall + +Helps: #2540 +--- + glib/gvariant-core.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ + glib/gvariant-core.h | 3 ++ + 2 files changed, 71 insertions(+) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -1203,6 +1203,74 @@ g_variant_get_child_value (GVariant *val + } + + /** ++ * g_variant_maybe_get_child_value: ++ * @value: a container #GVariant ++ * @index_: the index of the child to fetch ++ * ++ * Reads a child item out of a container #GVariant instance, if it is in normal ++ * form. If it is not in normal form, return %NULL. ++ * ++ * This function behaves the same as g_variant_get_child_value(), except that it ++ * returns %NULL if the child is not in normal form. g_variant_get_child_value() ++ * would instead return a new default value of the correct type. ++ * ++ * This is intended to be used internally to avoid unnecessary #GVariant ++ * allocations. ++ * ++ * The returned value is never floating. You should free it with ++ * g_variant_unref() when you're done with it. ++ * ++ * This function is O(1). ++ * ++ * Returns: (transfer full): the child at the specified index ++ * ++ * Since: 2.72 ++ */ ++GVariant * ++g_variant_maybe_get_child_value (GVariant *value, ++ gsize index_) ++{ ++ g_return_val_if_fail (index_ < g_variant_n_children (value), NULL); ++ g_return_val_if_fail (value->depth < G_MAXSIZE, NULL); ++ ++ if (~g_atomic_int_get (&value->state) & STATE_SERIALISED) ++ { ++ g_variant_lock (value); ++ ++ if (~value->state & STATE_SERIALISED) ++ { ++ GVariant *child; ++ ++ child = g_variant_ref (value->contents.tree.children[index_]); ++ g_variant_unlock (value); ++ ++ return child; ++ } ++ ++ g_variant_unlock (value); ++ } ++ ++ { ++ GVariantSerialised serialised = g_variant_to_serialised (value); ++ GVariantSerialised s_child; ++ ++ /* get the serializer to extract the serialized data for the child ++ * from the serialized data for the container ++ */ ++ s_child = g_variant_serialised_get_child (serialised, index_); ++ ++ if (!(value->state & STATE_TRUSTED) && s_child.data == NULL) ++ { ++ g_variant_type_info_unref (s_child.type_info); ++ return NULL; ++ } ++ ++ g_variant_type_info_unref (s_child.type_info); ++ return g_variant_get_child_value (value, index_); ++ } ++} ++ ++/** + * g_variant_store: + * @value: the #GVariant to store + * @data: (not nullable): the location to store the serialized data at +--- a/glib/gvariant-core.h ++++ b/glib/gvariant-core.h +@@ -36,4 +36,7 @@ GVariantTypeInfo * g_variant_get_ty + + gsize g_variant_get_depth (GVariant *value); + ++GVariant * g_variant_maybe_get_child_value (GVariant *value, ++ gsize index_); ++ + #endif /* __G_VARIANT_CORE_H__ */ diff --git a/debian/patches/gvariant-security-1-14.patch b/debian/patches/gvariant-security-1-14.patch new file mode 100644 index 0000000..28246a4 --- /dev/null +++ b/debian/patches/gvariant-security-1-14.patch @@ -0,0 +1,125 @@ +From 82fc15af4c84a2645343c51b18ab3528c51790ab Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 25 Oct 2022 13:03:45 +0100 +Subject: [PATCH 14/18] gvariant: Cut allocs of default values for children of + non-normal arrays +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This improves a slow case in `g_variant_get_normal_form()` where +allocating many identical default values for the children of a +variable-sized array which has a malformed offset table would take a lot +of time. + +The fix is to make all child values after the first invalid one be +references to the default value emitted for the first invalid one, +rather than identical new `GVariant`s. + +In particular, this fixes a case where an attacker could create an array +of length L of very large tuples of size T each, corrupt the offset table +so they don’t have to specify the array content, and then induce +`g_variant_get_normal_form()` into allocating L×T default values from an +input which is significantly smaller than L×T in length. + +A pre-existing workaround for this issue is for code to call +`g_variant_is_normal_form()` before calling +`g_variant_get_normal_form()`, and to skip the latter call if the former +returns false. This commit improves the behaviour in the case that +`g_variant_get_normal_form()` is called anyway. + +This fix changes the time to run the `fuzz_variant_binary` test on the +testcase from oss-fuzz#19777 from >60s (before being terminated) with +2.3GB of memory usage and 580k page faults; to 32s, 8.3MB of memory +usage and 1500 page faults (as measured by `time -v`). + +Signed-off-by: Philip Withnall + +Fixes: #2540 +oss-fuzz#19777 +--- + glib/gvariant.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 65 insertions(+), 1 deletion(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5844,7 +5844,6 @@ g_variant_deep_copy (GVariant *value) + switch (g_variant_classify (value)) + { + case G_VARIANT_CLASS_MAYBE: +- case G_VARIANT_CLASS_ARRAY: + case G_VARIANT_CLASS_TUPLE: + case G_VARIANT_CLASS_DICT_ENTRY: + case G_VARIANT_CLASS_VARIANT: +@@ -5863,6 +5862,71 @@ g_variant_deep_copy (GVariant *value) + + return g_variant_builder_end (&builder); + } ++ ++ case G_VARIANT_CLASS_ARRAY: ++ { ++ GVariantBuilder builder; ++ gsize i, n_children; ++ GVariant *first_invalid_child_deep_copy = NULL; ++ ++ /* Arrays are in theory treated the same as maybes, tuples, dict entries ++ * and variants, and could be another case in the above block of code. ++ * ++ * However, they have the property that when dealing with non-normal ++ * data (which is the only time g_variant_deep_copy() is currently ++ * called) in a variable-sized array, the code above can easily end up ++ * creating many default child values in order to return an array which ++ * is of the right length and type, but without containing non-normal ++ * data. This can happen if the offset table for the array is malformed. ++ * ++ * In this case, the code above would end up allocating the same default ++ * value for each one of the child indexes beyond the first malformed ++ * entry in the offset table. This can end up being a lot of identical ++ * allocations of default values, particularly if the non-normal array ++ * is crafted maliciously. ++ * ++ * Avoid that problem by returning a new reference to the same default ++ * value for every child after the first invalid one. This results in ++ * returning an equivalent array, in normal form and trusted — but with ++ * significantly fewer memory allocations. ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2540 */ ++ ++ g_variant_builder_init (&builder, g_variant_get_type (value)); ++ ++ for (i = 0, n_children = g_variant_n_children (value); i < n_children; i++) ++ { ++ /* Try maybe_get_child_value() first; if it returns NULL, this child ++ * is non-normal. get_child_value() would have constructed and ++ * returned a default value in that case. */ ++ GVariant *child = g_variant_maybe_get_child_value (value, i); ++ ++ if (child != NULL) ++ { ++ /* Non-normal children may not always be contiguous, as they may ++ * be non-normal for reasons other than invalid offset table ++ * entries. As they are all the same type, they will all have ++ * the same default value though, so keep that around. */ ++ g_variant_builder_add_value (&builder, g_variant_deep_copy (child)); ++ } ++ else if (child == NULL && first_invalid_child_deep_copy != NULL) ++ { ++ g_variant_builder_add_value (&builder, first_invalid_child_deep_copy); ++ } ++ else if (child == NULL) ++ { ++ child = g_variant_get_child_value (value, i); ++ first_invalid_child_deep_copy = g_variant_ref_sink (g_variant_deep_copy (child)); ++ g_variant_builder_add_value (&builder, first_invalid_child_deep_copy); ++ } ++ ++ g_clear_pointer (&child, g_variant_unref); ++ } ++ ++ g_clear_pointer (&first_invalid_child_deep_copy, g_variant_unref); ++ ++ return g_variant_builder_end (&builder); ++ } + + case G_VARIANT_CLASS_BOOLEAN: + return g_variant_new_boolean (g_variant_get_boolean (value)); diff --git a/debian/patches/gvariant-security-1-15.patch b/debian/patches/gvariant-security-1-15.patch new file mode 100644 index 0000000..a7990e9 --- /dev/null +++ b/debian/patches/gvariant-security-1-15.patch @@ -0,0 +1,21 @@ +From 935f1c200789c76ad5b51b1f403f611e3cc75318 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 25 Oct 2022 18:03:56 +0100 +Subject: [PATCH 15/18] gvariant: Fix a leak of a GVariantTypeInfo on an error + handling path + +Signed-off-by: Philip Withnall +--- + glib/gvariant-core.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -1181,6 +1181,7 @@ g_variant_get_child_value (GVariant *val + G_VARIANT_MAX_RECURSION_DEPTH - value->depth) + { + g_assert (g_variant_is_of_type (value, G_VARIANT_TYPE_VARIANT)); ++ g_variant_type_info_unref (s_child.type_info); + return g_variant_new_tuple (NULL, 0); + } + diff --git a/debian/patches/gvariant-security-1-16.patch b/debian/patches/gvariant-security-1-16.patch new file mode 100644 index 0000000..a1ca393 --- /dev/null +++ b/debian/patches/gvariant-security-1-16.patch @@ -0,0 +1,280 @@ +From f1dfc5d0c5c0486b5fccb2ceddf1db1162c7033c Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 27 Oct 2022 12:00:04 +0100 +Subject: [PATCH 16/18] gvariant-serialiser: Check offset table entry size is + minimal + +The entries in an offset table (which is used for variable sized arrays +and tuples containing variable sized members) are sized so that they can +address every byte in the overall variant. + +The specification requires that for a variant to be in normal form, its +offset table entries must be the minimum width such that they can +address every byte in the variant. + +That minimality requirement was not checked in +`g_variant_is_normal_form()`, leading to two different byte arrays being +interpreted as the normal form of a given variant tree. That kind of +confusion could potentially be exploited, and is certainly a bug. + +Fix it by adding the necessary checks on offset table entry width, and +unit tests. + +Spotted by William Manley. + +Signed-off-by: Philip Withnall + +Fixes: #2794 +--- + glib/gvariant-serialiser.c | 19 +++- + glib/tests/gvariant.c | 176 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 194 insertions(+), 1 deletion(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -694,6 +694,10 @@ gvs_variable_sized_array_get_frame_offse + out.data_size = last_end; + out.array = value.data + last_end; + out.length = offsets_array_size / out.offset_size; ++ ++ if (out.length > 0 && gvs_calculate_total_size (last_end, out.length) != value.size) ++ return out; /* offset size not minimal */ ++ + out.is_normal = TRUE; + + return out; +@@ -1201,6 +1205,7 @@ gvs_tuple_is_normal (GVariantSerialised + gsize length; + gsize offset; + gsize i; ++ gsize offset_table_size; + + /* as per the comment in gvs_tuple_get_child() */ + if G_UNLIKELY (value.data == NULL && value.size != 0) +@@ -1305,7 +1310,19 @@ gvs_tuple_is_normal (GVariantSerialised + } + } + +- return offset_ptr == offset; ++ /* @offset_ptr has been counting backwards from the end of the variant, to ++ * find the beginning of the offset table. @offset has been counting forwards ++ * from the beginning of the variant to find the end of the data. They should ++ * have met in the middle. */ ++ if (offset_ptr != offset) ++ return FALSE; ++ ++ offset_table_size = value.size - offset_ptr; ++ if (value.size > 0 && ++ gvs_calculate_total_size (offset, offset_table_size / offset_size) != value.size) ++ return FALSE; /* offset size not minimal */ ++ ++ return TRUE; + } + + /* Variants {{{2 +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -5122,6 +5122,86 @@ test_normal_checking_array_offsets2 (voi + g_variant_unref (variant); + } + ++/* Test that an otherwise-valid serialised GVariant is considered non-normal if ++ * its offset table entries are too wide. ++ * ++ * See §2.3.6 (Framing Offsets) of the GVariant specification. */ ++static void ++test_normal_checking_array_offsets_minimal_sized (void) ++{ ++ GVariantBuilder builder; ++ gsize i; ++ GVariant *aay_constructed = NULL; ++ const guint8 *data = NULL; ++ guint8 *data_owned = NULL; ++ GVariant *aay_deserialised = NULL; ++ GVariant *aay_normalised = NULL; ++ ++ /* Construct an array of type aay, consisting of 128 elements which are each ++ * an empty array, i.e. `[[] * 128]`. This is chosen because the inner ++ * elements are variable sized (making the outer array variable sized, so it ++ * must have an offset table), but they are also zero-sized when serialised. ++ * So the serialised representation of @aay_constructed consists entirely of ++ * its offset table, which is entirely zeroes. ++ * ++ * The array is chosen to be 128 elements long because that means offset ++ * table entries which are 1 byte long. If the elements in the array were ++ * non-zero-sized (to the extent that the overall array is ≥256 bytes long), ++ * the offset table entries would end up being 2 bytes long. */ ++ g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay")); ++ ++ for (i = 0; i < 128; i++) ++ g_variant_builder_add_value (&builder, g_variant_new_array (G_VARIANT_TYPE_BYTE, NULL, 0)); ++ ++ aay_constructed = g_variant_builder_end (&builder); ++ ++ /* Verify that the constructed array is in normal form, and its serialised ++ * form is `b'\0' * 128`. */ ++ g_assert_true (g_variant_is_normal_form (aay_constructed)); ++ g_assert_cmpuint (g_variant_n_children (aay_constructed), ==, 128); ++ g_assert_cmpuint (g_variant_get_size (aay_constructed), ==, 128); ++ ++ data = g_variant_get_data (aay_constructed); ++ for (i = 0; i < g_variant_get_size (aay_constructed); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ /* Construct a serialised `aay` GVariant which is `b'\0' * 256`. This has to ++ * be a non-normal form of `[[] * 128]`, with 2-byte-long offset table ++ * entries, because each offset table entry has to be able to reference all of ++ * the byte boundaries in the container. All the entries in the offset table ++ * are zero, so all the elements of the array are zero-sized. */ ++ data = data_owned = g_malloc0 (256); ++ aay_deserialised = g_variant_new_from_data (G_VARIANT_TYPE ("aay"), ++ data, ++ 256, ++ FALSE, ++ g_free, ++ g_steal_pointer (&data_owned)); ++ ++ g_assert_false (g_variant_is_normal_form (aay_deserialised)); ++ g_assert_cmpuint (g_variant_n_children (aay_deserialised), ==, 128); ++ g_assert_cmpuint (g_variant_get_size (aay_deserialised), ==, 256); ++ ++ data = g_variant_get_data (aay_deserialised); ++ for (i = 0; i < g_variant_get_size (aay_deserialised); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ /* Get its normal form. That should change the serialised size. */ ++ aay_normalised = g_variant_get_normal_form (aay_deserialised); ++ ++ g_assert_true (g_variant_is_normal_form (aay_normalised)); ++ g_assert_cmpuint (g_variant_n_children (aay_normalised), ==, 128); ++ g_assert_cmpuint (g_variant_get_size (aay_normalised), ==, 128); ++ ++ data = g_variant_get_data (aay_normalised); ++ for (i = 0; i < g_variant_get_size (aay_normalised); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ g_variant_unref (aay_normalised); ++ g_variant_unref (aay_deserialised); ++ g_variant_unref (aay_constructed); ++} ++ + /* Test that a tuple with invalidly large values in its offset table is + * normalised successfully without looping infinitely. */ + static void +@@ -5316,6 +5396,98 @@ test_normal_checking_tuple_offsets4 (voi + g_variant_unref (variant); + } + ++/* Test that an otherwise-valid serialised GVariant is considered non-normal if ++ * its offset table entries are too wide. ++ * ++ * See §2.3.6 (Framing Offsets) of the GVariant specification. */ ++static void ++test_normal_checking_tuple_offsets_minimal_sized (void) ++{ ++ GString *type_string = NULL; ++ GVariantBuilder builder; ++ gsize i; ++ GVariant *ray_constructed = NULL; ++ const guint8 *data = NULL; ++ guint8 *data_owned = NULL; ++ GVariant *ray_deserialised = NULL; ++ GVariant *ray_normalised = NULL; ++ ++ /* Construct a tuple of type (ay…ay), consisting of 129 members which are each ++ * an empty array, i.e. `([] * 129)`. This is chosen because the inner ++ * members are variable sized, so the outer tuple must have an offset table, ++ * but they are also zero-sized when serialised. So the serialised ++ * representation of @ray_constructed consists entirely of its offset table, ++ * which is entirely zeroes. ++ * ++ * The tuple is chosen to be 129 members long because that means it has 128 ++ * offset table entries which are 1 byte long each. If the members in the ++ * tuple were non-zero-sized (to the extent that the overall tuple is ≥256 ++ * bytes long), the offset table entries would end up being 2 bytes long. ++ * ++ * 129 members are used unlike 128 array elements in ++ * test_normal_checking_array_offsets_minimal_sized(), because the last member ++ * in a tuple never needs an offset table entry. */ ++ type_string = g_string_new (""); ++ g_string_append_c (type_string, '('); ++ for (i = 0; i < 129; i++) ++ g_string_append (type_string, "ay"); ++ g_string_append_c (type_string, ')'); ++ ++ g_variant_builder_init (&builder, G_VARIANT_TYPE (type_string->str)); ++ ++ for (i = 0; i < 129; i++) ++ g_variant_builder_add_value (&builder, g_variant_new_array (G_VARIANT_TYPE_BYTE, NULL, 0)); ++ ++ ray_constructed = g_variant_builder_end (&builder); ++ ++ /* Verify that the constructed tuple is in normal form, and its serialised ++ * form is `b'\0' * 128`. */ ++ g_assert_true (g_variant_is_normal_form (ray_constructed)); ++ g_assert_cmpuint (g_variant_n_children (ray_constructed), ==, 129); ++ g_assert_cmpuint (g_variant_get_size (ray_constructed), ==, 128); ++ ++ data = g_variant_get_data (ray_constructed); ++ for (i = 0; i < g_variant_get_size (ray_constructed); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ /* Construct a serialised `(ay…ay)` GVariant which is `b'\0' * 256`. This has ++ * to be a non-normal form of `([] * 129)`, with 2-byte-long offset table ++ * entries, because each offset table entry has to be able to reference all of ++ * the byte boundaries in the container. All the entries in the offset table ++ * are zero, so all the members of the tuple are zero-sized. */ ++ data = data_owned = g_malloc0 (256); ++ ray_deserialised = g_variant_new_from_data (G_VARIANT_TYPE (type_string->str), ++ data, ++ 256, ++ FALSE, ++ g_free, ++ g_steal_pointer (&data_owned)); ++ ++ g_assert_false (g_variant_is_normal_form (ray_deserialised)); ++ g_assert_cmpuint (g_variant_n_children (ray_deserialised), ==, 129); ++ g_assert_cmpuint (g_variant_get_size (ray_deserialised), ==, 256); ++ ++ data = g_variant_get_data (ray_deserialised); ++ for (i = 0; i < g_variant_get_size (ray_deserialised); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ /* Get its normal form. That should change the serialised size. */ ++ ray_normalised = g_variant_get_normal_form (ray_deserialised); ++ ++ g_assert_true (g_variant_is_normal_form (ray_normalised)); ++ g_assert_cmpuint (g_variant_n_children (ray_normalised), ==, 129); ++ g_assert_cmpuint (g_variant_get_size (ray_normalised), ==, 128); ++ ++ data = g_variant_get_data (ray_normalised); ++ for (i = 0; i < g_variant_get_size (ray_normalised); i++) ++ g_assert_cmpuint (data[i], ==, 0); ++ ++ g_variant_unref (ray_normalised); ++ g_variant_unref (ray_deserialised); ++ g_variant_unref (ray_constructed); ++ g_string_free (type_string, TRUE); ++} ++ + /* Test that an empty object path is normalised successfully to the base object + * path, ‘/’. */ + static void +@@ -5462,6 +5634,8 @@ main (int argc, char **argv) + test_normal_checking_array_offsets); + g_test_add_func ("/gvariant/normal-checking/array-offsets2", + test_normal_checking_array_offsets2); ++ g_test_add_func ("/gvariant/normal-checking/array-offsets/minimal-sized", ++ test_normal_checking_array_offsets_minimal_sized); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets", + test_normal_checking_tuple_offsets); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets2", +@@ -5470,6 +5644,8 @@ main (int argc, char **argv) + test_normal_checking_tuple_offsets3); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets4", + test_normal_checking_tuple_offsets4); ++ g_test_add_func ("/gvariant/normal-checking/tuple-offsets/minimal-sized", ++ test_normal_checking_tuple_offsets_minimal_sized); + g_test_add_func ("/gvariant/normal-checking/empty-object-path", + test_normal_checking_empty_object_path); + diff --git a/debian/patches/gvariant-security-1-17.patch b/debian/patches/gvariant-security-1-17.patch new file mode 100644 index 0000000..9f16500 --- /dev/null +++ b/debian/patches/gvariant-security-1-17.patch @@ -0,0 +1,89 @@ +From 781f05a22ef11d8a2177b4e9078978decec36dd0 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 27 Oct 2022 16:13:54 +0100 +Subject: [PATCH 17/18] gvariant: Fix g_variant_byteswap() returning non-normal + data sometimes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If `g_variant_byteswap()` was called on a non-normal variant of a type +which doesn’t need byteswapping, it would return a non-normal output. + +That contradicts the documentation, which says that the return value is +always in normal form. + +Fix the code so it matches the documentation. + +Includes a unit test. + +Signed-off-by: Philip Withnall + +Helps: #2797 +--- + glib/gvariant.c | 8 +++++--- + glib/tests/gvariant.c | 24 ++++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 3 deletions(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -6070,14 +6070,16 @@ g_variant_byteswap (GVariant *value) + g_variant_serialised_byteswap (serialised); + + bytes = g_bytes_new_take (serialised.data, serialised.size); +- new = g_variant_new_from_bytes (g_variant_get_type (value), bytes, TRUE); ++ new = g_variant_ref_sink (g_variant_new_from_bytes (g_variant_get_type (value), bytes, TRUE)); + g_bytes_unref (bytes); + } + else + /* contains no multi-byte data */ +- new = value; ++ new = g_variant_get_normal_form (value); + +- return g_variant_ref_sink (new); ++ g_assert (g_variant_is_trusted (new)); ++ ++ return g_steal_pointer (&new); + } + + /** +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -3833,6 +3833,29 @@ test_gv_byteswap (void) + } + + static void ++test_gv_byteswap_non_normal_non_aligned (void) ++{ ++ const guint8 data[] = { 0x02 }; ++ GVariant *v = NULL; ++ GVariant *v_byteswapped = NULL; ++ ++ g_test_summary ("Test that calling g_variant_byteswap() on a variant which " ++ "is in non-normal form and doesn’t need byteswapping returns " ++ "the same variant in normal form."); ++ ++ v = g_variant_new_from_data (G_VARIANT_TYPE_BOOLEAN, data, sizeof (data), FALSE, NULL, NULL); ++ g_assert_false (g_variant_is_normal_form (v)); ++ ++ v_byteswapped = g_variant_byteswap (v); ++ g_assert_true (g_variant_is_normal_form (v_byteswapped)); ++ ++ g_assert_cmpvariant (v, v_byteswapped); ++ ++ g_variant_unref (v); ++ g_variant_unref (v_byteswapped); ++} ++ ++static void + test_parser (void) + { + TreeInstance *tree; +@@ -5599,6 +5622,7 @@ main (int argc, char **argv) + g_test_add_func ("/gvariant/builder-memory", test_builder_memory); + g_test_add_func ("/gvariant/hashing", test_hashing); + g_test_add_func ("/gvariant/byteswap", test_gv_byteswap); ++ g_test_add_func ("/gvariant/byteswap/non-normal-non-aligned", test_gv_byteswap_non_normal_non_aligned); + g_test_add_func ("/gvariant/parser", test_parses); + g_test_add_func ("/gvariant/parser/integer-bounds", test_parser_integer_bounds); + g_test_add_func ("/gvariant/parser/recursion", test_parser_recursion); diff --git a/debian/patches/gvariant-security-1-18.patch b/debian/patches/gvariant-security-1-18.patch new file mode 100644 index 0000000..f633cb2 --- /dev/null +++ b/debian/patches/gvariant-security-1-18.patch @@ -0,0 +1,290 @@ +From 7d7efce1d9c379fdd7d2ff58caea88f8806fdd2e Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 27 Oct 2022 22:53:13 +0100 +Subject: [PATCH 18/18] gvariant: Allow g_variant_byteswap() to operate on + tree-form variants +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This avoids needing to always serialise a variant before byteswapping it. +With variants in non-normal forms, serialisation can result in a large +increase in size of the variant, and a lot of allocations for leaf +`GVariant`s. This can lead to a denial of service attack. + +Avoid that by changing byteswapping so that it happens on the tree form +of the variant if the input is in non-normal form. If the input is in +normal form (either serialised or in tree form), continue using the +existing code as byteswapping an already-serialised normal variant is +about 3× faster than byteswapping on the equivalent tree form. + +The existing unit tests cover byteswapping well, but need some +adaptation so that they operate on tree form variants too. + +I considered dropping the serialised byteswapping code and doing all +byteswapping on tree-form variants, as that would make maintenance +simpler (avoiding having two parallel implementations of byteswapping). +However, most inputs to `g_variant_byteswap()` are likely to be +serialised variants (coming from a byte array of input from some foreign +source) and most of them are going to be in normal form (as corruption +and malicious action are rare). So getting rid of the serialised +byteswapping code would impose quite a performance penalty on the common +case. + +Signed-off-by: Philip Withnall + +Fixes: #2797 +--- + glib/gvariant.c | 87 ++++++++++++++++++++++++++++++++----------- + glib/tests/gvariant.c | 57 ++++++++++++++++++++++++---- + 2 files changed, 115 insertions(+), 29 deletions(-) + +--- a/glib/gvariant.c ++++ b/glib/gvariant.c +@@ -5839,7 +5839,8 @@ g_variant_iter_loop (GVariantIter *iter, + + /* Serialized data {{{1 */ + static GVariant * +-g_variant_deep_copy (GVariant *value) ++g_variant_deep_copy (GVariant *value, ++ gboolean byteswap) + { + switch (g_variant_classify (value)) + { +@@ -5856,7 +5857,7 @@ g_variant_deep_copy (GVariant *value) + for (i = 0, n_children = g_variant_n_children (value); i < n_children; i++) + { + GVariant *child = g_variant_get_child_value (value, i); +- g_variant_builder_add_value (&builder, g_variant_deep_copy (child)); ++ g_variant_builder_add_value (&builder, g_variant_deep_copy (child, byteswap)); + g_variant_unref (child); + } + +@@ -5907,7 +5908,7 @@ g_variant_deep_copy (GVariant *value) + * be non-normal for reasons other than invalid offset table + * entries. As they are all the same type, they will all have + * the same default value though, so keep that around. */ +- g_variant_builder_add_value (&builder, g_variant_deep_copy (child)); ++ g_variant_builder_add_value (&builder, g_variant_deep_copy (child, byteswap)); + } + else if (child == NULL && first_invalid_child_deep_copy != NULL) + { +@@ -5916,7 +5917,7 @@ g_variant_deep_copy (GVariant *value) + else if (child == NULL) + { + child = g_variant_get_child_value (value, i); +- first_invalid_child_deep_copy = g_variant_ref_sink (g_variant_deep_copy (child)); ++ first_invalid_child_deep_copy = g_variant_ref_sink (g_variant_deep_copy (child, byteswap)); + g_variant_builder_add_value (&builder, first_invalid_child_deep_copy); + } + +@@ -5935,28 +5936,63 @@ g_variant_deep_copy (GVariant *value) + return g_variant_new_byte (g_variant_get_byte (value)); + + case G_VARIANT_CLASS_INT16: +- return g_variant_new_int16 (g_variant_get_int16 (value)); ++ if (byteswap) ++ return g_variant_new_int16 (GUINT16_SWAP_LE_BE (g_variant_get_int16 (value))); ++ else ++ return g_variant_new_int16 (g_variant_get_int16 (value)); + + case G_VARIANT_CLASS_UINT16: +- return g_variant_new_uint16 (g_variant_get_uint16 (value)); ++ if (byteswap) ++ return g_variant_new_uint16 (GUINT16_SWAP_LE_BE (g_variant_get_uint16 (value))); ++ else ++ return g_variant_new_uint16 (g_variant_get_uint16 (value)); + + case G_VARIANT_CLASS_INT32: +- return g_variant_new_int32 (g_variant_get_int32 (value)); ++ if (byteswap) ++ return g_variant_new_int32 (GUINT32_SWAP_LE_BE (g_variant_get_int32 (value))); ++ else ++ return g_variant_new_int32 (g_variant_get_int32 (value)); + + case G_VARIANT_CLASS_UINT32: +- return g_variant_new_uint32 (g_variant_get_uint32 (value)); ++ if (byteswap) ++ return g_variant_new_uint32 (GUINT32_SWAP_LE_BE (g_variant_get_uint32 (value))); ++ else ++ return g_variant_new_uint32 (g_variant_get_uint32 (value)); + + case G_VARIANT_CLASS_INT64: +- return g_variant_new_int64 (g_variant_get_int64 (value)); ++ if (byteswap) ++ return g_variant_new_int64 (GUINT64_SWAP_LE_BE (g_variant_get_int64 (value))); ++ else ++ return g_variant_new_int64 (g_variant_get_int64 (value)); + + case G_VARIANT_CLASS_UINT64: +- return g_variant_new_uint64 (g_variant_get_uint64 (value)); ++ if (byteswap) ++ return g_variant_new_uint64 (GUINT64_SWAP_LE_BE (g_variant_get_uint64 (value))); ++ else ++ return g_variant_new_uint64 (g_variant_get_uint64 (value)); + + case G_VARIANT_CLASS_HANDLE: +- return g_variant_new_handle (g_variant_get_handle (value)); ++ if (byteswap) ++ return g_variant_new_handle (GUINT32_SWAP_LE_BE (g_variant_get_handle (value))); ++ else ++ return g_variant_new_handle (g_variant_get_handle (value)); + + case G_VARIANT_CLASS_DOUBLE: +- return g_variant_new_double (g_variant_get_double (value)); ++ if (byteswap) ++ { ++ /* We have to convert the double to a uint64 here using a union, ++ * because a cast will round it numerically. */ ++ union ++ { ++ guint64 u64; ++ gdouble dbl; ++ } u1, u2; ++ u1.dbl = g_variant_get_double (value); ++ u2.u64 = GUINT64_SWAP_LE_BE (u1.u64); ++ return g_variant_new_double (u2.dbl); ++ } ++ else ++ return g_variant_new_double (g_variant_get_double (value)); + + case G_VARIANT_CLASS_STRING: + return g_variant_new_string (g_variant_get_string (value, NULL)); +@@ -6013,7 +6049,7 @@ g_variant_get_normal_form (GVariant *val + if (g_variant_is_normal_form (value)) + return g_variant_ref (value); + +- trusted = g_variant_deep_copy (value); ++ trusted = g_variant_deep_copy (value, FALSE); + g_assert (g_variant_is_trusted (trusted)); + + return g_variant_ref_sink (trusted); +@@ -6033,6 +6069,11 @@ g_variant_get_normal_form (GVariant *val + * contain multi-byte numeric data. That include strings, booleans, + * bytes and containers containing only these things (recursively). + * ++ * While this function can safely handle untrusted, non-normal data, it is ++ * recommended to check whether the input is in normal form beforehand, using ++ * g_variant_is_normal_form(), and to reject non-normal inputs if your ++ * application can be strict about what inputs it rejects. ++ * + * The returned value is always in normal form and is marked as trusted. + * + * Returns: (transfer full): the byteswapped form of @value +@@ -6050,22 +6091,21 @@ g_variant_byteswap (GVariant *value) + + g_variant_type_info_query (type_info, &alignment, NULL); + +- if (alignment) +- /* (potentially) contains multi-byte numeric data */ ++ if (alignment && g_variant_is_normal_form (value)) + { ++ /* (potentially) contains multi-byte numeric data, but is also already in ++ * normal form so we can use a faster byteswapping codepath on the ++ * serialised data */ + GVariantSerialised serialised = { 0, }; +- GVariant *trusted; + GBytes *bytes; + +- trusted = g_variant_get_normal_form (value); +- serialised.type_info = g_variant_get_type_info (trusted); +- serialised.size = g_variant_get_size (trusted); ++ serialised.type_info = g_variant_get_type_info (value); ++ serialised.size = g_variant_get_size (value); + serialised.data = g_malloc (serialised.size); +- serialised.depth = g_variant_get_depth (trusted); ++ serialised.depth = g_variant_get_depth (value); + serialised.ordered_offsets_up_to = G_MAXSIZE; /* operating on the normal form */ + serialised.checked_offsets_up_to = G_MAXSIZE; +- g_variant_store (trusted, serialised.data); +- g_variant_unref (trusted); ++ g_variant_store (value, serialised.data); + + g_variant_serialised_byteswap (serialised); + +@@ -6073,6 +6113,9 @@ g_variant_byteswap (GVariant *value) + new = g_variant_ref_sink (g_variant_new_from_bytes (g_variant_get_type (value), bytes, TRUE)); + g_bytes_unref (bytes); + } ++ else if (alignment) ++ /* (potentially) contains multi-byte numeric data */ ++ new = g_variant_ref_sink (g_variant_deep_copy (value, TRUE)); + else + /* contains no multi-byte data */ + new = g_variant_get_normal_form (value); +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -2286,24 +2286,67 @@ serialise_tree (TreeInstance *tree + static void + test_byteswap (void) + { +- GVariantSerialised one = { 0, }, two = { 0, }; ++ GVariantSerialised one = { 0, }, two = { 0, }, three = { 0, }; + TreeInstance *tree; ++ GVariant *one_variant = NULL; ++ GVariant *two_variant = NULL; ++ GVariant *two_byteswapped = NULL; ++ GVariant *three_variant = NULL; ++ GVariant *three_byteswapped = NULL; ++ guint8 *three_data_copy = NULL; ++ gsize three_size_copy = 0; + ++ /* Write a tree out twice, once normally and once byteswapped. */ + tree = tree_instance_new (NULL, 3); + serialise_tree (tree, &one); + ++ one_variant = g_variant_new_from_data (G_VARIANT_TYPE (g_variant_type_info_get_type_string (one.type_info)), ++ one.data, one.size, FALSE, NULL, NULL); ++ + i_am_writing_byteswapped = TRUE; + serialise_tree (tree, &two); ++ serialise_tree (tree, &three); + i_am_writing_byteswapped = FALSE; + +- g_variant_serialised_byteswap (two); +- +- g_assert_cmpmem (one.data, one.size, two.data, two.size); +- g_assert_cmpuint (one.depth, ==, two.depth); +- ++ /* Swap the first byteswapped one back using the function we want to test. */ ++ two_variant = g_variant_new_from_data (G_VARIANT_TYPE (g_variant_type_info_get_type_string (two.type_info)), ++ two.data, two.size, FALSE, NULL, NULL); ++ two_byteswapped = g_variant_byteswap (two_variant); ++ ++ /* Make the second byteswapped one non-normal (hopefully), and then byteswap ++ * it back using the function we want to test in its non-normal mode. ++ * This might not work because it’s not necessarily possible to make an ++ * arbitrary random variant non-normal. Adding a single zero byte to the end ++ * often makes something non-normal but still readable. */ ++ three_size_copy = three.size + 1; ++ three_data_copy = g_malloc (three_size_copy); ++ memcpy (three_data_copy, three.data, three.size); ++ three_data_copy[three.size] = '\0'; ++ ++ three_variant = g_variant_new_from_data (G_VARIANT_TYPE (g_variant_type_info_get_type_string (three.type_info)), ++ three_data_copy, three_size_copy, FALSE, NULL, NULL); ++ three_byteswapped = g_variant_byteswap (three_variant); ++ ++ /* Check they’re the same. We can always compare @one_variant and ++ * @two_byteswapped. We can only compare @two_byteswapped and ++ * @three_byteswapped if @two_variant and @three_variant are equal: in that ++ * case, the corruption to @three_variant was enough to make it non-normal but ++ * not enough to change its value. */ ++ g_assert_cmpvariant (one_variant, two_byteswapped); ++ ++ if (g_variant_equal (two_variant, three_variant)) ++ g_assert_cmpvariant (two_byteswapped, three_byteswapped); ++ ++ g_variant_unref (three_byteswapped); ++ g_variant_unref (three_variant); ++ g_variant_unref (two_byteswapped); ++ g_variant_unref (two_variant); ++ g_variant_unref (one_variant); + tree_instance_free (tree); + g_free (one.data); + g_free (two.data); ++ g_free (three.data); ++ g_free (three_data_copy); + } + + static void diff --git a/debian/patches/gvariant-security-2-1.patch b/debian/patches/gvariant-security-2-1.patch new file mode 100644 index 0000000..9241a3a --- /dev/null +++ b/debian/patches/gvariant-security-2-1.patch @@ -0,0 +1,146 @@ +From bf008669f26f70426ca30ee8cdcbd48e41a74718 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 15 Dec 2022 13:00:39 +0000 +Subject: [PATCH 1/2] =?UTF-8?q?gvariant:=20Check=20offset=20table=20doesn?= + =?UTF-8?q?=E2=80=99t=20fall=20outside=20variant=20bounds?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When dereferencing the first entry in the offset table for a tuple, +check that it doesn’t fall outside the bounds of the variant first. + +This prevents an out-of-bounds read from some non-normal tuples. + +This bug was introduced in commit 73d0aa81c2575a5c9ae77d. + +Includes a unit test, although the test will likely only catch the +original bug if run with asan enabled. + +Signed-off-by: Philip Withnall + +Fixes: #2840 +oss-fuzz#54302 +--- + glib/gvariant-serialiser.c | 12 ++++++-- + glib/tests/gvariant.c | 63 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 72 insertions(+), 3 deletions(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -979,7 +979,8 @@ gvs_tuple_get_member_bounds (GVariantSer + + member_info = g_variant_type_info_member_info (value.type_info, index_); + +- if (member_info->i + 1) ++ if (member_info->i + 1 && ++ offset_size * (member_info->i + 1) <= value.size) + member_start = gvs_read_unaligned_le (value.data + value.size - + offset_size * (member_info->i + 1), + offset_size); +@@ -990,7 +991,8 @@ gvs_tuple_get_member_bounds (GVariantSer + member_start &= member_info->b; + member_start |= member_info->c; + +- if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_LAST) ++ if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_LAST && ++ offset_size * (member_info->i + 1) <= value.size) + member_end = value.size - offset_size * (member_info->i + 1); + + else if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_FIXED) +@@ -1001,11 +1003,15 @@ gvs_tuple_get_member_bounds (GVariantSer + member_end = member_start + fixed_size; + } + +- else /* G_VARIANT_MEMBER_ENDING_OFFSET */ ++ else if (member_info->ending_type == G_VARIANT_MEMBER_ENDING_OFFSET && ++ offset_size * (member_info->i + 2) <= value.size) + member_end = gvs_read_unaligned_le (value.data + value.size - + offset_size * (member_info->i + 2), + offset_size); + ++ else /* invalid */ ++ member_end = G_MAXSIZE; ++ + if (out_member_start != NULL) + *out_member_start = member_start; + if (out_member_end != NULL) +--- a/glib/tests/gvariant.c ++++ b/glib/tests/gvariant.c +@@ -5462,6 +5462,67 @@ test_normal_checking_tuple_offsets4 (voi + g_variant_unref (variant); + } + ++/* This is a regression test that dereferencing the first element in the offset ++ * table doesn’t dereference memory before the start of the GVariant. The first ++ * element in the offset table gives the offset of the final member in the ++ * tuple (the offset table is stored in reverse), and the position of this final ++ * member is needed to check that none of the tuple members overlap with the ++ * offset table ++ * ++ * See https://gitlab.gnome.org/GNOME/glib/-/issues/2840 */ ++static void ++test_normal_checking_tuple_offsets5 (void) ++{ ++ /* A tuple of type (sss) in normal form would have an offset table with two ++ * entries: ++ * - The first entry (lowest index in the table) gives the offset of the ++ * third `s` in the tuple, as the offset table is reversed compared to the ++ * tuple members. ++ * - The second entry (highest index in the table) gives the offset of the ++ * second `s` in the tuple. ++ * - The offset of the first `s` in the tuple is always 0. ++ * ++ * See §2.5.4 (Structures) of the GVariant specification for details, noting ++ * that the table is only layed out this way because all three members of the ++ * tuple have non-fixed sizes. ++ * ++ * It’s not clear whether the 0xaa data of this variant is part of the strings ++ * in the tuple, or part of the offset table. It doesn’t really matter. This ++ * is a regression test to check that the code to validate the offset table ++ * doesn’t unconditionally try to access the first entry in the offset table ++ * by subtracting the table size from the end of the GVariant data. ++ * ++ * In this non-normal case, that would result in an address off the start of ++ * the GVariant data, and an out-of-bounds read, because the GVariant is one ++ * byte long, but the offset table is calculated as two bytes long (with 1B ++ * sized entries) from the tuple’s type. ++ */ ++ const GVariantType *data_type = G_VARIANT_TYPE ("(sss)"); ++ const guint8 data[] = { 0xaa }; ++ gsize size = sizeof (data); ++ GVariant *variant = NULL; ++ GVariant *normal_variant = NULL; ++ GVariant *expected = NULL; ++ ++ g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2840"); ++ ++ variant = g_variant_new_from_data (data_type, data, size, FALSE, NULL, NULL); ++ g_assert_nonnull (variant); ++ ++ g_assert_false (g_variant_is_normal_form (variant)); ++ ++ normal_variant = g_variant_get_normal_form (variant); ++ g_assert_nonnull (normal_variant); ++ ++ expected = g_variant_new_parsed ("('', '', '')"); ++ g_assert_cmpvariant (expected, variant); ++ g_assert_cmpvariant (expected, normal_variant); ++ ++ g_variant_unref (expected); ++ g_variant_unref (normal_variant); ++ g_variant_unref (variant); ++} ++ + /* Test that an otherwise-valid serialised GVariant is considered non-normal if + * its offset table entries are too wide. + * +@@ -5711,6 +5772,8 @@ main (int argc, char **argv) + test_normal_checking_tuple_offsets3); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets4", + test_normal_checking_tuple_offsets4); ++ g_test_add_func ("/gvariant/normal-checking/tuple-offsets5", ++ test_normal_checking_tuple_offsets5); + g_test_add_func ("/gvariant/normal-checking/tuple-offsets/minimal-sized", + test_normal_checking_tuple_offsets_minimal_sized); + g_test_add_func ("/gvariant/normal-checking/empty-object-path", diff --git a/debian/patches/gvariant-security-2-2.patch b/debian/patches/gvariant-security-2-2.patch new file mode 100644 index 0000000..f15e29a --- /dev/null +++ b/debian/patches/gvariant-security-2-2.patch @@ -0,0 +1,40 @@ +From 4d0bed8c4690f7a2692474ef6a570bd99ef45ef1 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Thu, 15 Dec 2022 16:49:28 +0000 +Subject: [PATCH 2/2] gvariant: Propagate trust when getting a child of a + serialised variant + +If a variant is trusted, that means all its children are trusted, so +ensure that their checked offsets are set as such. + +This allows a lot of the offset table checks to be avoided when getting +children from trusted serialised tuples, which speeds things up. + +No unit test is included because this is just a performance fix. If +there are other slownesses, or regressions, in serialised `GVariant` +performance, the fuzzing setup will catch them like it did this one. + +This change does reduce the time to run the oss-fuzz reproducer from 80s +to about 0.7s on my machine. + +Signed-off-by: Philip Withnall + +Fixes: #2841 +oss-fuzz#54314 +--- + glib/gvariant-core.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/glib/gvariant-core.c ++++ b/glib/gvariant-core.c +@@ -1196,8 +1196,8 @@ g_variant_get_child_value (GVariant *val + child->contents.serialised.bytes = + g_bytes_ref (value->contents.serialised.bytes); + child->contents.serialised.data = s_child.data; +- child->contents.serialised.ordered_offsets_up_to = s_child.ordered_offsets_up_to; +- child->contents.serialised.checked_offsets_up_to = s_child.checked_offsets_up_to; ++ child->contents.serialised.ordered_offsets_up_to = (value->state & STATE_TRUSTED) ? G_MAXSIZE : s_child.ordered_offsets_up_to; ++ child->contents.serialised.checked_offsets_up_to = (value->state & STATE_TRUSTED) ? G_MAXSIZE : s_child.checked_offsets_up_to; + + return child; + } diff --git a/debian/patches/gvariant-security-3-1.patch b/debian/patches/gvariant-security-3-1.patch new file mode 100644 index 0000000..3938bdf --- /dev/null +++ b/debian/patches/gvariant-security-3-1.patch @@ -0,0 +1,60 @@ +From dc16dffed0480d0c8cdd6a05ede68263fc8723a9 Mon Sep 17 00:00:00 2001 +From: Simon McVittie +Date: Thu, 15 Dec 2022 12:51:37 +0000 +Subject: [PATCH] gvariant-serialiser: Convert endianness of offsets +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The array of offsets is little-endian, even on big-endian architectures +like s390x. + +Fixes: ade71fb5 "gvariant: Don’t allow child elements to overlap with each other" +Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/2839 +Signed-off-by: Simon McVittie +--- + glib/gvariant-serialiser.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +--- a/glib/gvariant-serialiser.c ++++ b/glib/gvariant-serialiser.c +@@ -712,17 +712,19 @@ gvs_variable_sized_array_n_children (GVa + /* Find the index of the first out-of-order element in @data, assuming that + * @data is an array of elements of given @type, starting at index @start and + * containing a further @len-@start elements. */ +-#define DEFINE_FIND_UNORDERED(type) \ ++#define DEFINE_FIND_UNORDERED(type, le_to_native) \ + static gsize \ + find_unordered_##type (const guint8 *data, gsize start, gsize len) \ + { \ + gsize off; \ +- type current, previous; \ ++ type current_le, previous_le, current, previous; \ + \ +- memcpy (&previous, data + start * sizeof (current), sizeof (current)); \ ++ memcpy (&previous_le, data + start * sizeof (current), sizeof (current)); \ ++ previous = le_to_native (previous_le); \ + for (off = (start + 1) * sizeof (current); off < len * sizeof (current); off += sizeof (current)) \ + { \ +- memcpy (¤t, data + off, sizeof (current)); \ ++ memcpy (¤t_le, data + off, sizeof (current)); \ ++ current = le_to_native (current_le); \ + if (current < previous) \ + break; \ + previous = current; \ +@@ -730,10 +732,11 @@ gvs_variable_sized_array_n_children (GVa + return off / sizeof (current) - 1; \ + } + +-DEFINE_FIND_UNORDERED (guint8); +-DEFINE_FIND_UNORDERED (guint16); +-DEFINE_FIND_UNORDERED (guint32); +-DEFINE_FIND_UNORDERED (guint64); ++#define NO_CONVERSION(x) (x) ++DEFINE_FIND_UNORDERED (guint8, NO_CONVERSION); ++DEFINE_FIND_UNORDERED (guint16, GUINT16_FROM_LE); ++DEFINE_FIND_UNORDERED (guint32, GUINT32_FROM_LE); ++DEFINE_FIND_UNORDERED (guint64, GUINT64_FROM_LE); + + static GVariantSerialised + gvs_variable_sized_array_get_child (GVariantSerialised value, diff --git a/debian/patches/gwakeuptest-Be-less-parallel-unless-invoked-with-m-slow.patch b/debian/patches/gwakeuptest-Be-less-parallel-unless-invoked-with-m-slow.patch new file mode 100644 index 0000000..a05951d --- /dev/null +++ b/debian/patches/gwakeuptest-Be-less-parallel-unless-invoked-with-m-slow.patch @@ -0,0 +1,80 @@ +From: Simon McVittie +Date: Mon, 18 Dec 2017 18:06:05 +0000 +Subject: gwakeuptest: Be less parallel unless invoked with -m slow + +This is a workaround for test failures on the reproducible-builds +infrastructure, where a multi-threaded stress-test sometimes takes longer +to finish on x86_64 than it would have done on slow architectures like +arm and mips on the official Debian autobuilders. It is not clear why. + +This change will make this test more likely to pass, but less likely to +detect bugs. + +Signed-off-by: Simon McVittie +Bug-Debian: https://bugs.debian.org/884659 +Forwarded: no +--- + glib/tests/gwakeuptest.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/glib/tests/gwakeuptest.c b/glib/tests/gwakeuptest.c +index b37fb43..a9bef21 100644 +--- a/glib/tests/gwakeuptest.c ++++ b/glib/tests/gwakeuptest.c +@@ -89,6 +89,9 @@ struct context + #define NUM_TOKENS 5 + #define TOKEN_TTL 100000 + ++static gint num_threads = NUM_THREADS; ++static gint token_ttl = TOKEN_TTL; ++ + static struct context contexts[NUM_THREADS]; + static GThread *threads[NUM_THREADS]; + static GWakeup *last_token_wakeup; +@@ -158,7 +161,7 @@ dispatch_token (struct token *token) + struct context *ctx; + gint next_ctx; + +- next_ctx = g_test_rand_int_range (0, NUM_THREADS); ++ next_ctx = g_test_rand_int_range (0, num_threads); + ctx = &contexts[next_ctx]; + token->owner = ctx; + token->ttl--; +@@ -213,6 +216,12 @@ test_threaded (void) + { + gint i; + ++ if (!g_test_slow ()) ++ { ++ num_threads = NUM_THREADS / 10; ++ token_ttl = TOKEN_TTL / 10; ++ } ++ + /* make sure we don't block forever */ + alarm (60); + +@@ -230,7 +239,7 @@ test_threaded (void) + last_token_wakeup = g_wakeup_new (); + + /* create contexts, assign to threads */ +- for (i = 0; i < NUM_THREADS; i++) ++ for (i = 0; i < num_threads; i++) + { + context_init (&contexts[i]); + threads[i] = g_thread_new ("test", thread_func, &contexts[i]); +@@ -238,13 +247,13 @@ test_threaded (void) + + /* dispatch tokens */ + for (i = 0; i < NUM_TOKENS; i++) +- dispatch_token (token_new (TOKEN_TTL)); ++ dispatch_token (token_new (token_ttl)); + + /* wait until all tokens are gone */ + wait_for_signaled (last_token_wakeup); + + /* ask threads to quit, join them, cleanup */ +- for (i = 0; i < NUM_THREADS; i++) ++ for (i = 0; i < num_threads; i++) + { + context_quit (&contexts[i]); + g_thread_join (threads[i]); diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..1479c06 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,41 @@ +01_gettext-desktopfiles.patch +0001-timer-test-use-volatile-for-locals.patch +gwakeuptest-Be-less-parallel-unless-invoked-with-m-slow.patch +debian/02_gettext-desktopfiles-ubuntu.patch +debian/03_disble_glib_compile_schemas_warning.patch +debian/06_thread_test_ignore_prctl_fail.patch +debian/closures-test-Skip-on-arm-unless-flaky-tests-are-allowed.patch +debian/Disable-some-tests-on-slow-architectures-which-keep-faili.patch +debian/Skip-test-which-performs-some-unreliable-floating-point-c.patch +debian/Skip-unreliable-gdbus-threading-tests--by-default.patch +debian/gmenumodel-test-Mark-as-flaky.patch +debian/gvariant-test-Don-t-run-at-build-time-on-mips.patch +debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch +debian/gdbus-server-auth-Normally-skip-flaky-DBUS_COOKIE_SHA1-te.patch +debian/Skip-memory-monitor-dbus-test-if-not-specifically-request.patch +debian/Add-extra-debug-to-memory-monitor-dbus-test.patch +debian/tests-Skip-debugcontroller-test.patch +debian/gdesktopappinfo-Recognize-gnome-console-as-a-terminal-app.patch +0001-gio-Make-portal-support-aware-of-snaps.patch +gvariant-security-1-01.patch +gvariant-security-1-02.patch +gvariant-security-1-03.patch +gvariant-security-1-04.patch +gvariant-security-1-05.patch +gvariant-security-1-06.patch +gvariant-security-1-07.patch +gvariant-security-1-08.patch +gvariant-security-1-09.patch +gvariant-security-1-10.patch +gvariant-security-1-11.patch +gvariant-security-1-12.patch +gvariant-security-1-13.patch +gvariant-security-1-14.patch +gvariant-security-1-15.patch +gvariant-security-1-16.patch +gvariant-security-1-17.patch +gvariant-security-1-18.patch +gvariant-security-2-1.patch +gvariant-security-2-2.patch +gvariant-security-3-1.patch +disable-setting-ACL-attributes-see-https-code.evin.team-e.patch diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7d06368 --- /dev/null +++ b/debian/rules @@ -0,0 +1,296 @@ +#!/usr/bin/make -f + +binaries := $(shell dh_listpackages) + +export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow + +# Ensure the build aborts when there are still references to undefined symbols +DEB_LDFLAGS_MAINT_APPEND += -Wl,-z,defs + +# NB: do NOT use -Wl,--as-needed to build glib; for instance the link to +# pthread is carefully crafted to allow dlopen()ing pthread-using libs; see +# https://marc.info/?i=1257999019.21780.15.camel@marzipan aka +# https://mail.gnome.org/archives/gtk-devel-list/2009-November/msg00096.html +DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed + +# Make the linker work a bit harder so dynamic loading can be done faster +DEB_LDFLAGS_MAINT_APPEND += -Wl,-O1 + +include /usr/share/dpkg/default.mk + +%: + dh $@ + +ifneq ($(filter hppa,$(DEB_HOST_ARCH_CPU)),) +stack_grows_up = true +else +stack_grows_up = false +endif + +ifneq ($(filter kfreebsd,$(DEB_HOST_ARCH_OS)),) +have_non_stub_xattr = false +else +have_non_stub_xattr = true +endif + +export DH_MESON_CROSS_FILE = debian/cross.txt + +# We edit the debcrossgen output to work around unimplemented feature +# request https://bugs.debian.org/912559 +override_dh_auto_configure: +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) + /usr/share/meson/debcrossgen \ + -o debian/cross.txt.in + debian/set-cross-properties \ + have_c99_snprintf=true \ + have_c99_vsnprintf=true \ + have_strlcpy=false \ + have_unix98_printf=true \ + growing_stack=$(stack_grows_up) \ + < debian/cross.txt.in > debian/cross.txt +endif + dh_auto_configure \ + --builddirectory=debian/build/deb \ + -- \ + $(DEB_CONFIGURE_EXTRA_FLAGS) \ + $(DEB_CONFIGURE_FLAGS_deb) \ + $(NULL) +ifneq ($(filter %-udeb,$(binaries)),) + dh_auto_configure \ + --builddirectory=debian/build/udeb \ + -- \ + $(DEB_CONFIGURE_EXTRA_FLAGS) \ + $(DEB_CONFIGURE_FLAGS_udeb) \ + $(NULL) +endif + +override_dh_clean: + rm -rf $(CURDIR)/debian/build \ + $(CURDIR)/debian/install + dh_clean -Xorg.gtk.test.gschema.xml.orig -Xorg.gtk.test.gschema.override.orig + + +override_dh_makeshlibs: + dh_makeshlibs -plibglib2.0-tests -n + dh_makeshlibs --remaining-packages --add-udeb=libglib2.0-udeb -Xlibgiofam.so -- -c4 + +# (Ubuntu-specific) +# Don't strip translations from the installed tests; makes them environment dependent. +override_dh_translations: + dh_translations -Xinstalled-tests + +# Do not clutter $HOME with ~/.dbus-keyrings and avoid failure on the buildds +# where creating /home/buildd/.dbus-keyrings fails +export HOME=$(CURDIR)/debian/build + +# Make sure that everything that uses D-Bus is creating its own temporary +# session rather than polluting the developer's (or failing, on buildds) +export DBUS_SESSION_BUS_ADDRESS=this-should-not-be-used-and-will-fail: + +ifeq ($(DEB_HOST_ARCH_OS), linux) +handle_test_failure := exit $$? +else +handle_test_failure := true +endif + +# Upstream test timeouts assume an otherwise unloaded system, but that +# isn't necessarily the case for a porterbox or multiple parallel builds +test_timeout_multiplier = 3 + +ifneq ($(filter arm hppa mips% sparc%,$(DEB_HOST_ARCH_CPU)),) +$(info Slow architecture detected, increasing test timeout) +test_timeout_multiplier = 5 +endif + +ifneq ($(filter m68k riscv64 sh4,$(DEB_HOST_ARCH_CPU)),) +$(info Architecture with qemu buildds detected, increasing test timeout a lot) +test_timeout_multiplier = 20 +endif + +override_dh_auto_test-arch: +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) + # Remove LD_PRELOAD so we don't run with fakeroot, which makes dbus-related tests fail + # First run the non-flaky tests, and fail the build if they fail (on linux) + env -u LD_PRELOAD \ + DEB_BUILD_TIME_TESTS=1 \ + LC_ALL=C.UTF-8 \ + MESON_TESTTHREADS=1 \ + debian/tests/run-with-locales \ + --generate de_DE=ISO-8859-1 \ + --generate de_DE.utf8 \ + --generate de_DE@euro.utf8 \ + --generate el_GR.utf8 \ + --generate en_GB=ISO-8859-1 \ + --generate en_GB.utf8 \ + --generate en_US=ISO-8859-1 \ + --generate en_US.utf8 \ + --generate es_ES.utf8 \ + --generate fa_IR=UTF-8 \ + --generate fa_IR.utf8 \ + --generate fr_FR.utf8 \ + --generate hr_HR.utf8 \ + --generate ja_JP.utf8 \ + --generate ja_JP.EUC-JP \ + --generate lt_LT.utf8 \ + --generate pl_PL=ISO-8859-2 \ + --generate pl_PL.ISO-8859-2 \ + --generate pl_PL.utf8 \ + --generate ru_RU=ISO-8859-5 \ + --generate ru_RU.utf8 \ + --generate sr_RS=UTF-8 \ + --generate sr_RS@latin=UTF-8 \ + --generate sv_SE=ISO-8859-1 \ + --generate sv_SE.utf8 \ + --generate tr_TR=ISO-8859-9 \ + --generate tr_TR.utf8 \ + --generate tt_RU=UTF-8 \ + --generate tt_RU.utf8 \ + --generate tt_RU@iqtelif=UTF-8 \ + -- \ + meson test -C debian/build/deb \ + --no-rebuild \ + --num-processes 1 \ + --timeout-multiplier $(test_timeout_multiplier) \ + --no-suite flaky \ + --verbose \ + || $(handle_test_failure) + # and then run the flaky ones, but ignore them failing + env -u LD_PRELOAD \ + DEB_BUILD_TIME_TESTS=1 \ + LC_ALL=C.UTF-8 \ + MESON_TESTTHREADS=1 \ + meson test -C debian/build/deb \ + --no-rebuild \ + --num-processes 1 \ + --timeout-multiplier $(test_timeout_multiplier) \ + --suite flaky \ + --verbose \ + || true +endif + +# Skip most build-time tests if all we are building is documentation; +# running them once per architecture is plenty. As an exception, do run the +# documentation completeness checks, which won't normally be run on +# architecture-specific buildds (except in Ubuntu). +override_dh_auto_test-indep: + meson test -C debian/build/deb \ + --no-rebuild \ + --num-processes 1 \ + --timeout-multiplier $(test_timeout_multiplier) \ + --verbose \ + gio-doc-check glib-doc-check gobject-doc-check \ + || $(handle_test_failure) + +# Let's get failing tests' stdout and stderr so we have some information when +# a build fails +export VERBOSE=1 + +ifeq ($(DEB_HOST_ARCH_OS),linux) +enable_libmount := enabled +enable_selinux := enabled +else +enable_libmount := disabled +enable_selinux := disabled +endif + +ifneq ($(filter hurd,$(DEB_HOST_ARCH_OS)),) +use_fam := true +else +use_fam := false +endif + +DEB_CONFIGURE_FLAGS_deb := \ + --default-library both \ + -Dfam=$(use_fam) \ + -Dinstalled_tests=true \ + -Dlibelf=enabled \ + -Dlibmount=$(enable_libmount) \ + -Dman=true \ + -Dselinux=$(enable_selinux) \ + -Dsystemtap=true \ + -Dxattr=$(have_non_stub_xattr) \ + $(NULL) + +ifneq ($(filter libglib2.0-doc,$(binaries)),) +DEB_CONFIGURE_FLAGS_deb += -Dgtk_doc=true +else +DEB_CONFIGURE_FLAGS_deb += -Dgtk_doc=false +endif + +DEB_CONFIGURE_FLAGS_udeb := \ + --default-library shared \ + -Dgtk_doc=false \ + -Dinstalled_tests=false \ + -Dlibmount=disabled \ + -Dselinux=disabled \ + -Dxattr=$(have_non_stub_xattr) \ + $(NULL) + +override_dh_auto_build: + mkdir -p debian/tmp-xdg-runtime-dir + dh_auto_build --builddirectory=debian/build/deb +ifneq ($(filter %-udeb,$(binaries)),) + dh_auto_build --builddirectory=debian/build/udeb +endif + +override_dh_auto_install: + set -e; for script in postinst postrm triggers; do \ + sed -e"s/#MULTIARCH#/$(DEB_HOST_MULTIARCH)/g" \ + -e"s/#ARCH#/$(DEB_HOST_ARCH)/g" \ + debian/libglib2.0-0.$$script.in \ + > debian/libglib2.0-0.$$script ; \ + done +ifneq ($(filter %-udeb,$(binaries)),) + dh_auto_install -plibglib2.0-udeb --builddirectory=debian/build/udeb --destdir=debian/install/udeb +endif + dh_auto_install --remaining-packages --builddirectory=debian/build/deb --destdir=debian/install/deb + +override_dh_python3: + # dh_python3 can't process both a private directory and /usr/bin + # in the same invocation + dh_python3 -plibglib2.0-dev-bin /usr/share/glib-2.0/codegen + dh_python3 -plibglib2.0-tests --no-ext-rename /usr/libexec/installed-tests/glib + dh_python3 + +override_dh_install: + # Unwanted bits from the .deb build + rm -fr debian/install/deb/usr/share/glib-2.0/codegen/__pycache__ +ifneq ($(filter %-udeb,$(binaries)),) + # Unwanted bits from the .udeb build + rm -f debian/install/udeb/usr/lib/*/*.so + rm -fr debian/install/udeb/usr/share/gdb + rm -fr debian/install/udeb/usr/share/gettext/its + rm -fr debian/install/udeb/usr/share/glib-2.0/codegen + rm -fr debian/install/udeb/usr/share/glib-2.0/gdb + rm -fr debian/install/udeb/usr/share/glib-2.0/valgrind + rm -fr debian/install/udeb/usr/share/man + dh_install -plibglib2.0-udeb --sourcedir=debian/install/udeb +endif +ifneq ($(filter %-tests,$(binaries)),) + sed -i -e '/^#!.*/,1 d' debian/install/deb/usr/libexec/installed-tests/glib/taptestrunner.py +endif +ifneq ($(filter hurd,$(DEB_HOST_ARCH_OS)),) + dh_install -plibglib2.0-0 --sourcedir=debian/install/deb usr/lib/${DEB_HOST_MULTIARCH}/gio/modules/libgiofam.so usr/lib/${DEB_HOST_MULTIARCH}/gio/modules +endif + dh_install --remaining-packages --sourcedir=debian/install/deb + install -D -t debian/libglib2.0-0/usr/share/glib-2.0/ debian/clean-up-unmanaged-libraries + install -D -t debian/libglib2.0-0/usr/lib/${DEB_HOST_MULTIARCH}/glib-2.0/ debian/gio-launch-desktop + +override_dh_dwz: + dh_dwz -Nlibglib2.0-udeb + +# debhelper >= 13.4 makes all of /usr/libexec executable, which is not +# quite right for installed-tests +override_dh_fixperms: + dh_fixperms -Xusr/libexec/installed-tests +ifneq ($(filter %-tests,$(binaries)),) + chmod --changes u=rw,og=r debian/libglib2.0-tests/usr/libexec/installed-tests/*/*.so + chmod --changes u=rw,og=r debian/libglib2.0-tests/usr/libexec/installed-tests/*/*/*.so + chmod --recursive --changes a+rX,u+w,og-w debian/libglib2.0-tests/usr/libexec/installed-tests +endif + +override_dh_missing: + dh_missing --sourcedir=debian/install/deb +ifneq ($(filter %-udeb,$(binaries)),) + dh_missing --sourcedir=debian/install/udeb +endif diff --git a/debian/set-cross-properties b/debian/set-cross-properties new file mode 100755 index 0000000..728d8d8 --- /dev/null +++ b/debian/set-cross-properties @@ -0,0 +1,22 @@ +#!/usr/bin/python3 + +import sys + + +def write_properties(properties): + for prop in properties: + k, v = prop.split('=', 1) + print('{} = {}'.format(k, v)) + + +if __name__ == '__main__': + for line in sys.stdin: + sys.stdout.write(line) + + if line.strip() == '[properties]': + write_properties(sys.argv[1:]) + done = True + + if not done: + print('[properties]') + write_properties(sys.argv[1:]) diff --git a/debian/shlibs.local b/debian/shlibs.local new file mode 100644 index 0000000..f21d4a5 --- /dev/null +++ b/debian/shlibs.local @@ -0,0 +1,10 @@ +libgio-2.0 0 libglib2.0-0 (= ${binary:Version}) +libglib-2.0 0 libglib2.0-0 (= ${binary:Version}) +libgmodule-2.0 0 libglib2.0-0 (= ${binary:Version}) +libgobject-2.0 0 libglib2.0-0 (= ${binary:Version}) +libgthread-2.0 0 libglib2.0-0 (= ${binary:Version}) +udeb: libgio-2.0 0 libglib2.0-udeb (= ${binary:Version}) +udeb: libglib-2.0 0 libglib2.0-udeb (= ${binary:Version}) +udeb: libgmodule-2.0 0 libglib2.0-udeb (= ${binary:Version}) +udeb: libgobject-2.0 0 libglib2.0-udeb (= ${binary:Version}) +udeb: libgthread-2.0 0 libglib2.0-udeb (= ${binary:Version}) diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/tests/bug896019 b/debian/tests/bug896019 new file mode 100755 index 0000000..171afb0 --- /dev/null +++ b/debian/tests/bug896019 @@ -0,0 +1,170 @@ +#!/bin/bash + +set -e + +. debian/tests/lib.sh +cd "$AUTOPKGTEST_TMP" + +biarch= + +getopt_temp="help" +getopt_temp="$getopt_temp,biarch" + +getopt_temp="$(getopt -o '' --long "$getopt_temp" -n "$me" -- "$@")" +eval "set -- $getopt_temp" + +while [ "$#" -gt 0 ] +do + case "$1" in + (--biarch) + biarch=yes + shift + ;; + + (--) + shift + break + ;; + + (-*) + warning "Unknown option: $1" + usage 2 + ;; + + (*) + break + ;; + esac +done + +system_arch="${DEB_HOST_ARCH:-"$(dpkg --print-architecture)"}" +multiarch="${DEB_HOST_MULTIARCH:-"$(dpkg-architecture -a"$system_arch" -qDEB_HOST_MULTIARCH)"}" +foreign_arch= +foreign_multiarch= + +if [ -n "$biarch" ]; then + case "$system_arch" in + (amd64) + foreign_arch="i386" + foreign_multiarch="i386-linux-gnu" + ;; + (arm64) + foreign_arch="armhf" + foreign_multiarch="arm-linux-gnueabihf" + ;; + (*) + echo "1..0 # SKIP - no secondary architecture" >&7 + exit 77 + esac +fi + +if [ -n "$foreign_arch" ]; then + require dpkg --add-architecture "$foreign_arch" + require_apt "$foreign_arch" +fi + +if [ -n "$foreign_arch" ]; then + multiarchs=("$multiarch" "$foreign_multiarch") +else + multiarchs=("$multiarch") +fi + +require_apt_stretch + +package=libglib2.0-0 +old_version=2.50.3-2+deb9u2 +soname=libglib-2.0.so.0 +other_sonames=(libgio-2.0.so.0 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0) +tail=5000.3 + +if ! new_version=$(dpkg-query -W -f '${Version}' "$package:$system_arch"); then + echo "1..0 # SKIP - unable to get version of $package:$system_arch" >&7 + exit 77 +fi + +if ! apt-get download "$package=$old_version"; then + echo "1..0 # SKIP - unable to download $package=$old_version" >&7 + exit 77 +fi + +if [ -n "$foreign_arch" ] && ! apt-get download "$package:$foreign_arch=$old_version"; then + echo "1..0 # SKIP - unable to download $package:$foreign_arch=$old_version" >&7 + exit 77 +fi + +if [ -n "$foreign_arch" ]; then + require apt-get -y install --reinstall "$package=$new_version" "$package:$foreign_arch=$new_version" + good_foreign_realpath="$(readlink -f "/usr/lib/$foreign_multiarch/$soname")" +else + require apt-get -y install --reinstall "$package=$new_version" + good_foreign_realpath= +fi + +good_realpath="$(readlink -f "/usr/lib/$multiarch/$soname")" + +# Pretend the version from stretch got stuck on the system somehow. +# (This is the wrong way to use dpkg-deb, never do this in production.) +require dpkg-deb --vextract "${package}_${old_version}_${system_arch}.deb" . + +if [ -n "$foreign_arch" ]; then + require dpkg-deb --vextract "${package}_${old_version}_${foreign_arch}.deb" . +fi + +for ma in "${multiarchs[@]}"; do + cp -a ./lib/"$ma"/"$soname" /lib/"$ma"/ + cp -a ./lib/"$ma"/"$soname".* /lib/"$ma"/ + + for other in "${other_sonames[@]}"; do + cp -a ./usr/lib/"$ma"/"$other" /usr/lib/"$ma"/ + cp -a ./usr/lib/"$ma"/"$other".* /usr/lib/"$ma"/ + done +done + +assert_succeeds ldconfig --verbose + +for ma in "${multiarchs[@]}"; do + echo "Status before reinstalling $package" + assert_succeeds ls -il "/lib/$ma/$soname" + assert_succeeds ls -il "/lib/$ma/$soname".* + assert_succeeds ls -il "/lib/$ma/$soname.$tail" + assert_succeeds ls -il "/usr/lib/$ma/$soname" + assert_succeeds ls -il "/usr/lib/$ma/$soname".* +done + +for other in "$soname" "${other_sonames[@]}"; do + echo "Running 'true' with $other preloaded to see what we get..." + env LD_DEBUG=libs LD_PRELOAD="$other" true || true +done + +if [ -n "$foreign_arch" ]; then + assert_succeeds apt-get -y install --reinstall "$package:$system_arch=$new_version" "$package:$foreign_arch=$new_version" +else + assert_succeeds apt-get -y install --reinstall "$package:$system_arch=$new_version" +fi + +for ma in "${multiarchs[@]}"; do + if [ "/usr/lib/$ma" -ef "/lib/$ma" ]; then + echo "Merged-/usr system" + assert_status 1 test "/usr/lib/$ma/$soname" -ef "/usr/lib/$ma/$soname.$tail" + else + echo "Non-merged-/usr system" + assert_succeeds ls -il "/lib/$ma/removed-by-upgrade-bug896019/" + assert_status 1 test -e "/lib/$ma/$soname.$tail" + assert_status 1 test -e "/lib/$ma/$soname" + assert_succeeds test -e "/usr/lib/$ma/$soname" + fi +done + +assert_succeeds test "/usr/lib/$multiarch/$soname" -ef "$good_realpath" + +if [ -n "$foreign_arch" ]; then + assert_succeeds test "/usr/lib/$foreign_multiarch/$soname" -ef "$good_foreign_realpath" +fi + +for other in "$soname" "${other_sonames[@]}"; do + env LD_DEBUG=libs LD_PRELOAD="$other" true +done + +finish + +# vim:set sw=4 sts=4 et: diff --git a/debian/tests/bug896019-biarch b/debian/tests/bug896019-biarch new file mode 100755 index 0000000..0cc01bf --- /dev/null +++ b/debian/tests/bug896019-biarch @@ -0,0 +1,2 @@ +#!/bin/sh +exec debian/tests/bug896019 --biarch diff --git a/debian/tests/build b/debian/tests/build new file mode 100755 index 0000000..d0a8ad2 --- /dev/null +++ b/debian/tests/build @@ -0,0 +1,143 @@ +#!/bin/sh +# autopkgtest check: Build and run a program against glib, to verify that the +# headers and pkg-config file are installed correctly +# (C) 2012,2019 Canonical Ltd. +# (C) 2018 Simon McVittie +# Authors: Martin Pitt , Simon McVittie + +set -eux + +mode=dynamic + +getopt_temp="$(getopt -o '' --long 'static' -n debian/tests/build -- "$@")" +eval set -- "$getopt_temp" + +while true; do + case "$1" in + (--static) + mode=static + shift + continue + ;; + + (--) + shift + break + ;; + + (*) + echo "getopt: Internal error" >&2 + exit 2 + esac +done + +WORKDIR=$(mktemp -d) +trap 'rm -rf "${WORKDIR}"' 0 INT QUIT ABRT PIPE TERM +cd "${WORKDIR}" + +if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then + CROSS_COMPILE="${DEB_HOST_GNU_TYPE}-" +else + CROSS_COMPILE= +fi + +cat < glib.c +#include + +int main(void) +{ + g_assert_cmpint (g_strcmp0 (NULL, "hello"), ==, -1); + g_assert_cmpstr (g_getenv ("foo"), ==, "bar"); + return 0; +} +EOF +cat < gobject.c +#include + +int main(void) +{ + g_assert_cmpuint (G_TYPE_OBJECT, !=, G_TYPE_INVALID); + return 0; +} +EOF +cat < gio.c +#include + +int main(void) +{ + g_assert_cmpuint (G_TYPE_FILE, !=, G_TYPE_INVALID); + return 0; +} +EOF +cat < gio-unix.c +#include + +int main(void) +{ + g_assert_cmpuint (G_TYPE_UNIX_FD_LIST, !=, G_TYPE_INVALID); + return 0; +} +EOF +cat < gmodule.c +#include + +int main(void) +{ + GModule *module; + + g_assert_true (g_module_supported ()); + module = g_module_open (NULL, 0); + g_assert_nonnull (module); + g_assert_true (g_module_close (module)); + return 0; +} +EOF +cat < gthread.c +#include + +static gpointer +other_cb (gpointer nil) +{ + return "hello"; +} + +int main(void) +{ + GThread *other; + gpointer ret; + + other = g_thread_new ("other", other_cb, NULL); + g_assert_nonnull (other); + ret = g_thread_join (other); + g_assert_cmpstr (ret, ==, "hello"); + return 0; +} +EOF + +for lib in glib gobject gio gio-unix gmodule gthread; do + cflags= + pcflags= + packages="${lib}-2.0" + + case "$mode" in + (static) + cflags=-static + pcflags=--static + + case "$lib" in + (gio|gio-unix) + # GIO depends on libmount which no longer supports + # being linked statically + continue + ;; + esac + ;; + esac + + # shellcheck disable=SC2046 + ${CROSS_COMPILE}gcc $cflags -o ${lib}-$mode ${lib}.c $(${CROSS_COMPILE}pkg-config $pcflags --cflags --libs ${packages}) + echo "build ($lib, $mode): OK" + [ -x ${lib}-$mode ] + foo=bar ./${lib}-$mode + echo "run ($lib, $mode): OK" +done diff --git a/debian/tests/build-static b/debian/tests/build-static new file mode 100755 index 0000000..7ba5c42 --- /dev/null +++ b/debian/tests/build-static @@ -0,0 +1,2 @@ +#!/bin/sh +exec debian/tests/build --static diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..e36a37f --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,15 @@ +Tests: build build-static +Depends: libglib2.0-dev, build-essential +Restrictions: allow-stderr superficial + +Tests: installed-tests +Depends: dbus (>= 1.8), dbus-x11, gnome-desktop-testing, libglib2.0-tests, locales | locales-all, xauth, xvfb +Restrictions: allow-stderr + +Tests: flaky +Depends: dbus (>= 1.8), dbus-x11, gnome-desktop-testing, libglib2.0-tests, locales | locales-all, xauth, xvfb +Restrictions: allow-stderr flaky + +Tests: bug896019 bug896019-biarch +Depends: dpkg-dev, libglib2.0-0 +Restrictions: allow-stderr, breaks-testbed, needs-root, skippable diff --git a/debian/tests/flaky b/debian/tests/flaky new file mode 100755 index 0000000..51a2e0b --- /dev/null +++ b/debian/tests/flaky @@ -0,0 +1,72 @@ +#!/bin/sh +# autopkgtest check: Run the installed-tests to verify glib works correctly +# This part runs tests that have been marked as opt-in due to being flaky +# on at least some architectures. +# (C) 2013 Canonical Ltd. +# (C) 2019 Collabora Ltd. + +set -eu +NULL= + +export DEB_ALLOW_FLAKY_TESTS=1 + +# Disable gvfs if it happens to be installed. We want to test the built-in +# stuff +export GIO_USE_VFS=local +export GIO_USE_VOLUME_MONITOR=unix + +export XDG_RUNTIME_DIR="$AUTOPKGTEST_TMP" + +printf "Running as: "; id -a +printf "passwd entry: "; getent passwd "$(id -u)" || echo "(exit status $?)" +printf "group entry: "; getent group "$(id -g)" || echo "(exit status $?)" +echo "Environment:" +env | LC_ALL=C sort -u + +exec dbus-run-session -- \ +xvfb-run -a \ +debian/tests/run-with-locales \ + --generate de_DE=ISO-8859-1 \ + --generate de_DE.utf8 \ + --generate de_DE@euro.utf8 \ + --generate el_GR.utf8 \ + --generate en_GB=ISO-8859-1 \ + --generate en_GB.utf8 \ + --generate en_US=ISO-8859-1 \ + --generate en_US.utf8 \ + --generate es_ES.utf8 \ + --generate fa_IR=UTF-8 \ + --generate fa_IR.utf8 \ + --generate fr_FR.utf8 \ + --generate hr_HR.utf8 \ + --generate ja_JP.utf8 \ + --generate ja_JP.EUC-JP \ + --generate lt_LT.utf8 \ + --generate pl_PL=ISO-8859-2 \ + --generate pl_PL.ISO-8859-2 \ + --generate pl_PL.utf8 \ + --generate ru_RU=ISO-8859-5 \ + --generate ru_RU.utf8 \ + --generate sr_RS=UTF-8 \ + --generate sr_RS@latin=UTF-8 \ + --generate sv_SE=ISO-8859-1 \ + --generate sv_SE.utf8 \ + --generate tr_TR=ISO-8859-9 \ + --generate tr_TR.utf8 \ + --generate tt_RU=UTF-8 \ + --generate tt_RU.utf8 \ + --generate tt_RU@iqtelif=UTF-8 \ + -- \ +gnome-desktop-testing-runner \ + glib/closure-refcount.test \ + glib/debugcontroller.test \ + glib/gdbus-server-auth.test \ + glib/gdbus-threading.test \ + glib/gmenumodel.test \ + glib/mainloop.test \ + glib/memory-monitor-dbus.test \ + glib/socket.test \ + glib/testfilemonitor.test \ + glib/timeout.test \ + glib/timer.test \ + ${NULL} diff --git a/debian/tests/installed-tests b/debian/tests/installed-tests new file mode 100755 index 0000000..c286625 --- /dev/null +++ b/debian/tests/installed-tests @@ -0,0 +1,55 @@ +#!/bin/sh +# autopkgtest check: Run the installed-tests to verify glib works correctly +# (C) 2013 Canonical Ltd. +# Author: Iain Lane + +set -eu + +# Disable gvfs if it happens to be installed. We want to test the built-in +# stuff +export GIO_USE_VFS=local +export GIO_USE_VOLUME_MONITOR=unix + +export XDG_RUNTIME_DIR="$AUTOPKGTEST_TMP" + +printf "Running as: "; id -a +printf "passwd entry: "; getent passwd "$(id -u)" || echo "(exit status $?)" +printf "group entry: "; getent group "$(id -g)" || echo "(exit status $?)" +echo "Environment:" +env | LC_ALL=C sort -u + +exec dbus-run-session -- \ +xvfb-run -a \ +debian/tests/run-with-locales \ + --generate de_DE=ISO-8859-1 \ + --generate de_DE.utf8 \ + --generate de_DE@euro.utf8 \ + --generate el_GR.utf8 \ + --generate en_GB=ISO-8859-1 \ + --generate en_GB.utf8 \ + --generate en_US=ISO-8859-1 \ + --generate en_US.utf8 \ + --generate es_ES.utf8 \ + --generate fa_IR=UTF-8 \ + --generate fa_IR.utf8 \ + --generate fr_FR.utf8 \ + --generate hr_HR.utf8 \ + --generate ja_JP.utf8 \ + --generate ja_JP.EUC-JP \ + --generate lt_LT.utf8 \ + --generate pl_PL=ISO-8859-2 \ + --generate pl_PL.ISO-8859-2 \ + --generate pl_PL.utf8 \ + --generate ru_RU=ISO-8859-5 \ + --generate ru_RU.utf8 \ + --generate sr_RS=UTF-8 \ + --generate sr_RS@latin=UTF-8 \ + --generate sv_SE=ISO-8859-1 \ + --generate sv_SE.utf8 \ + --generate tr_TR=ISO-8859-9 \ + --generate tr_TR.utf8 \ + --generate tt_RU=UTF-8 \ + --generate tt_RU.utf8 \ + --generate tt_RU@iqtelif=UTF-8 \ + -- \ +gnome-desktop-testing-runner glib diff --git a/debian/tests/lib.sh b/debian/tests/lib.sh new file mode 100644 index 0000000..376287f --- /dev/null +++ b/debian/tests/lib.sh @@ -0,0 +1,124 @@ +#!/bin/sh + +test_num=0 +fail=0 + +# TAP output goes to fd 7, which is our original stdout +exec 7>&1 +# Other stdout goes to our original stderr +exec >&2 + +require () { + if ! "$@"; then + echo "1..0 # SKIP - command failed: $*" >&7 + exit 77 + fi +} + +require_apt_stretch () { + mirror="$(perl -ne 'if (m{^deb\s+(https?://[-\w.:]+)/debian/?\s}) { print "$1\n"; exit; }' /etc/apt/sources.list /etc/apt/sources.list.d/*)" + if [ -n "$mirror" ]; then + echo >> /etc/apt/sources.list + echo "deb $mirror/debian stretch main" >> /etc/apt/sources.list + else + echo "1..0 # SKIP - unable to guess how to set up an apt source for stretch" >&7 + exit 77 + fi + + require_apt +} + +require_apt () { + local arch="${1-}" + + if [ -n "${DEB_HOST_ARCH-}" ]; then + host_suffix=":${DEB_HOST_ARCH}" + fi + + if ! apt-get -y update; then + echo "1..0 # SKIP - apt not configured?" >&7 + exit 77 + fi + + if [ -n "$arch" ]; then + if ! apt-get -y install libc6:$arch; then + echo "1..0 # SKIP - cannot install libc6:$arch" >&7 + exit 77 + fi + else + if ! apt-get -y install hello; then + echo "1..0 # SKIP - apt not configured?" >&7 + exit 77 + fi + fi +} + +assert_succeeds () { + assert_status 0 "$@" +} + +assert_status () { + local expected="$1" + local e + + shift + test_num=$(( $test_num + 1 )) + + echo "# $*" + if "$@"; then + if [ "x$expected" = x0 ]; then + echo "ok $test_num - “$*”" >&7 + else + echo "not ok $test_num - “$*” succeeded but should have failed" >&7 + fail=1 + fi + else + e="$?" + if [ "x$expected" = "x$e" ] || [ "x$expected" = xfailure ]; then + echo "ok $test_num - “$*” failed with status $e as expected" >&7 + else + echo "not ok $test_num - “$*” expected status $expected, got $e" >&7 + fail=1 + fi + fi +} + +assert_output () { + local expected="$1" + shift + local really + + test_num=$(( $test_num + 1 )) + echo "# $*" + + if really="$("$@")"; then + if [ "x$expected" = "x$really" ]; then + echo "ok $test_num - “$*” returned “$really” as expected" >&7 + else + echo "not ok $test_num - expected “$*” to output “$*”, got “$really”" >&7 + fail=1 + fi + else + e="$?" + echo "not ok $test_num - “$*” failed with exit status $e" >&7 + fail=1 + fi +} + +ok () { + test_num=$(( $test_num + 1 )) + echo "ok $test_num - $*" >&7 +} + +skip_to_the_end () { + test_num=$(( $test_num + 1 )) + echo "not ok $test_num # SKIP $*" >&7 + finish +} + +finish () { + echo "1..$test_num" >&7 + exit "$fail" +} + +# vim:set sw=4 sts=4 et: diff --git a/debian/tests/run-with-locales b/debian/tests/run-with-locales new file mode 100755 index 0000000..29264ef --- /dev/null +++ b/debian/tests/run-with-locales @@ -0,0 +1,165 @@ +#!/bin/sh +# +# Run a wrapped command with at least the requested locales available. +# Requires a dependency on locales | locales-all. +# The requested locales must be of the form foo_FOO.utf8, or special-cased +# in generate(), or listed in /usr/share/i18n/SUPPORTED, or specify the +# locale in the form locale=charset. +# +# Copyright 2016-2021 Simon McVittie +# Copyright 2017-2018 Collabora Ltd. +# +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +# Assume a Debian Policy §10.4-compatible shell like dash or bash (with the +# 'local' builtin) +# shellcheck disable=SC2039 + +set -eu + +me="$(basename "$0")" +tempdir= + +usage () { + local status="${1-2}" + + if [ "$status" -ne 0 ]; then + exec >&2 + fi + + echo "Usage: $me [--generate LOCALE...] [--] COMMAND [ARGS...]" + exit "$status" +} + +getopt_temp=help +getopt_temp="$getopt_temp,generate:" + +getopt_temp="$(getopt -o '+' --long "$getopt_temp" -n "$0" -- "$@")" +eval set -- "$getopt_temp" +unset getopt_temp + +generate () { + local locale="$1" + local charset="" + local source + local output + + echo "$me: $locale..." >&2 + + case "$locale" in + (*=*) + source="${locale%=*}" + output="$source" + ;; + + (*.*) + source="${locale%.*}" + output="$source.$( + export LC_ALL=C + printf '%s' "${locale##*.}" | \ + tr '[:upper:]' '[:lower:]' | \ + tr -d -C '[:lower:][:digit:]' + )" + ;; + + (*) + source="${locale}" + output="${locale}" + esac + + if [ -e "/usr/lib/locale/$output/LC_MESSAGES/SYS_LC_MESSAGES" ]; then + printf '\t%s\n' "Found in locales-all" >&2 + return + fi + + if ! [ -d /usr/share/i18n/charmaps ]; then + echo "$me: $locale not in locales-all and /usr/share/i18n/charmaps not found" >&2 + return + fi + + case "$locale" in + (*=*) + charset="${locale##*=}" + ;; + + (*.utf8 | *.UTF-8) + charset="UTF-8" + ;; + + (*.*) + charset="${locale##*.}" + ;; + esac + + if [ -z "$charset" ]; then + echo "$me: $locale charset not known" >&2 + exit 1 + fi + + printf '\t%s\n' "Character set: $charset" >&2 + printf '\t%s\n' "Source file: $source" >&2 + + if [ -z "$tempdir" ]; then + tempdir="$(mktemp -d)" + trap 'rm -fr "$tempdir"' EXIT + fi + + printf '\t%s\n' "Output: $tempdir/$output" >&2 + + localedef -i "$source" -f "$charset" "$tempdir/$output" +} + +while [ "$#" -gt 0 ]; do + case "$1" in + (--help) + usage 2 + # not reached + ;; + + (--generate) + generate "$2" + shift 2 + ;; + + (--) + shift + break + ;; + + (-*) + echo "$me: Unknown option: $1" >&2 + usage 2 + # not reached + ;; + + (*) + break + ;; + esac +done + +if [ -n "$tempdir" ]; then + export LOCPATH="$tempdir" +fi + +"$@" + +# vim:set sw=4 sts=4 et: diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..7dbae41 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,6 @@ +--- +Name: GLib +Bug-Database: https://gitlab.gnome.org/GNOME/glib/issues/new +Repository: https://gitlab.gnome.org/GNOME/glib.git +Repository-Browse: https://gitlab.gnome.org/GNOME/glib/ +Security-Contact: https://gitlab.gnome.org/GNOME/glib/-/blob/HEAD/SECURITY.md diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..d971fae --- /dev/null +++ b/debian/watch @@ -0,0 +1,7 @@ +version=4 +opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \ +https://download.gnome.org/sources/glib/cache.json \ + [\d.]+/glib-([\d.]+)@ARCHIVE_EXT@ +#opts="mode=git,compression=xz" \ +#https://gitlab.gnome.org/GNOME/glib.git \ +#refs/tags/@ANY_VERSION@