{"app_name":"Debian Janitor","binary_packages":["gir1.2-notify-0.7","libnotify-bin-dbgsym","libnotify-bin","libnotify-dev","libnotify-doc","libnotify4-dbgsym","libnotify4"],"branch_url":"git+ssh://git@salsa.debian.org/gnome-team/libnotify.git","build_distribution":"sid","build_log_highlight_lines":[2564,2606],"build_log_include_lines":[2591,2621],"build_log_line_count":4773,"build_log_name":"build.log","campaign":"control","change_set":"2cb70f86-f100-48fe-9748-3187321aa4b6","codebase":"libnotify","codemod_log_name":"codemod.log","command":"brz up '--revision=git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734'","current_year":"2026","description":"","is_admin":false,"lintian_result":{"groups":[{"group_id":"libnotify_0.8.8-1~jan+control1","input_files":[{"hints":[{"experimental":false,"note":"control != sid","pointer":{"item":{"index":"gir1.2-notify-0.7_0.8.8-1~jan+control1_amd64.deb (installed)","name":"usr/share/doc/gir1.2-notify-0.7/changelog.Debian.gz"},"line_position":1},"tag":"changelog-distribution-does-not-match-changes-file","visibility":"warning"}],"path":"gir1.2-notify-0.7_0.8.8-1~jan+control1_amd64.deb"},{"hints":[],"path":"libnotify-bin-dbgsym_0.8.8-1~jan+control1_amd64.deb"},{"hints":[{"experimental":false,"note":"control != sid","pointer":{"item":{"index":"libnotify-bin_0.8.8-1~jan+control1_amd64.deb (installed)","name":"usr/share/doc/libnotify-bin/changelog.Debian.gz"},"line_position":1},"tag":"changelog-distribution-does-not-match-changes-file","visibility":"warning"}],"path":"libnotify-bin_0.8.8-1~jan+control1_amd64.deb"},{"hints":[{"experimental":false,"note":"control != sid","pointer":{"item":{"index":"libnotify-dev_0.8.8-1~jan+control1_amd64.deb (installed)","name":"usr/share/doc/libnotify-dev/changelog.Debian.gz"},"line_position":1},"tag":"changelog-distribution-does-not-match-changes-file","visibility":"warning"}],"path":"libnotify-dev_0.8.8-1~jan+control1_amd64.deb"},{"hints":[{"experimental":false,"note":"control != sid","pointer":{"item":{"index":"libnotify-doc_0.8.8-1~jan+control1_all.deb (installed)","name":"usr/share/doc/libnotify-doc/changelog.Debian.gz"},"line_position":1},"tag":"changelog-distribution-does-not-match-changes-file","visibility":"warning"}],"path":"libnotify-doc_0.8.8-1~jan+control1_all.deb"},{"hints":[],"path":"libnotify4-dbgsym_0.8.8-1~jan+control1_amd64.deb"},{"hints":[{"experimental":false,"note":"control != sid","pointer":{"item":{"index":"libnotify4_0.8.8-1~jan+control1_amd64.deb (installed)","name":"usr/share/doc/libnotify4/changelog.Debian.gz"},"line_position":1},"tag":"changelog-distribution-does-not-match-changes-file","visibility":"warning"}],"path":"libnotify4_0.8.8-1~jan+control1_amd64.deb"},{"hints":[{"experimental":false,"note":"","pointer":{"item":{"index":"libnotify_0.8.8-1~jan+control1.dsc (patched)","name":"debian/copyright"},"line_position":0},"tag":"no-dep5-copyright","visibility":"warning"},{"experimental":false,"note":"","pointer":{"item":{"index":"libnotify_0.8.8-1~jan+control1.dsc (patched)","name":"debian/changelog"},"line_position":1},"tag":"no-nmu-in-changelog","visibility":"warning"},{"experimental":false,"note":"0.8.8-1~jan+control1","pointer":{"item":{"index":"libnotify_0.8.8-1~jan+control1.dsc (patched)","name":"debian/changelog"},"line_position":1},"tag":"source-nmu-has-incorrect-version-number","visibility":"warning"},{"experimental":false,"note":"Depends: pkg-config => pkgconf","tag":"testsuite-depends-on-obsolete-package","visibility":"warning"}],"path":"libnotify_0.8.8-1~jan+control1.dsc"},{"hints":[],"path":"libnotify_0.8.8-1~jan+control1_amd64.buildinfo"},{"hints":[{"experimental":false,"note":"sid control","tag":"distribution-and-changes-mismatch","visibility":"warning"}],"path":"libnotify_0.8.8-1~jan+control1_amd64.changes"}],"source_name":"libnotify","source_version":"0.8.8-1~jan+control1"}],"lintian_version":"2.143.0"},"logs":{"build":{"description":"build","name":"build.log","url":"/control/c/libnotify/2cb70f86-f100-48fe-9748-3187321aa4b6/logs/build.log"},"codemod":{"description":"codemod","name":"codemod.log","url":"/control/c/libnotify/2cb70f86-f100-48fe-9748-3187321aa4b6/logs/codemod.log"},"worker":{"content":"[2026-11-07T20:15:28Z INFO  janitor_worker] Opening branch at https://salsa.debian.org/gnome-team/libnotify.git\n[2026-11-07T20:15:31Z INFO  janitor_worker] Cached branch URL http://janitor.debian.net/git/libnotify missing: http://janitor.debian.net/git/libnotify/\n[2026-11-07T20:15:31Z DEBUG janitor_worker] Workspace path: /srv/worker/output/1/janitor-worker-m8fRlv/libnotify\n[2026-11-07T20:15:31Z DEBUG silver_platter::workspace] Creating sprout from git+ssh://git@salsa.debian.org/gnome-team/libnotify.git\nTotal 4507 (delta 1041), reused 1595 (delta 1040), pack-reused 2906 (from 1)\n[2026-11-07T20:15:35Z DEBUG silver_platter::utils] Colocated branch upstream not found, skipping\n[2026-11-07T20:15:35Z DEBUG silver_platter::utils] Colocated branch vendor not found, skipping\nTotal 56 (delta 13), reused 50 (delta 11), pack-reused 0 (from 0)\n[2026-11-07T20:15:39Z DEBUG silver_platter::utils] Colocated branch experimental not found, skipping\nNothing to delete.\n[2026-11-07T20:15:39Z DEBUG silver_platter::workspace] Fetching colocated branches: {\"vendor\": \"vendor\", \"experimental\": \"experimental\", \"pristine-tar\": \"pristine-tar\", \"upstream\": \"upstream\"}\nTotal 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)\n[2026-11-07T20:15:42Z DEBUG silver_platter::workspace] Successfully fetched colocated branch pristine-tar -> pristine-tar\n[2026-11-07T20:15:42Z INFO  janitor_worker] Workspace ready - starting.\n[2026-11-07T20:15:42Z INFO  janitor_worker::debian] Running [\"brz\", \"up\", \"--revision=git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734\"]\n[2026-11-07T20:15:42Z INFO  silver_platter::debian::codemod] Assuming changelog does not need to be updated, since there is a [dch] section in gbp.conf.\nfound 2746 deltas to reuse\n[2026-11-07T20:15:44Z INFO  ognibuild::debian::fix_build] Using fixers: [PgBuildExtOutOfDateControlFixer, MissingConfigureFixer, MissingAutomakeInputFixer, MissingConfigStatusInputFixer, MissingPerlFileFixer, DebcargoUnacceptablePredicateFixer, DebcargoUnacceptableComparatorFixer, RetryAptFetchFailure, PackageDependencyFixer]\n[2026-11-07T20:15:44Z DEBUG ognibuild::debian::build] Adding dummy changelog entry 0.8.8-1~jan+control1 for build\n[2026-11-07T20:15:44Z DEBUG ognibuild::debian::build] Writing build log to /srv/worker/output/1/janitor-worker-m8fRlv/build.log\n[2026-11-07T20:15:44Z INFO  ognibuild::debian::build] Building debian packages, running sbuild --chroot-mode=unshare --no-clean-source -A -s -v -d sid.\n[2026-11-07T20:25:51Z INFO  ognibuild::debian::build] Build succeeded.\n[2026-11-07T20:25:51Z INFO  janitor_worker::debian::build] Built [\"/srv/worker/output/1/janitor-worker-m8fRlv/libnotify_0.8.8-1~jan+control1_amd64.buildinfo\", \"/srv/worker/output/1/janitor-worker-m8fRlv/libnotify_0.8.8-1~jan+control1_amd64.changes\"].\n[2026-11-07T20:25:51Z DEBUG janitor_worker::debian::lintian] Running lintian: cd \"/srv/worker/output/1/janitor-worker-m8fRlv\" && \"lintian\" \"--exp-output=format=json\" \"--allow-root\" \"/srv/worker/output/1/janitor-worker-m8fRlv/libnotify_0.8.8-1~jan+control1_amd64.buildinfo\" \"/srv/worker/output/1/janitor-worker-m8fRlv/libnotify_0.8.8-1~jan+control1_amd64.changes\"\n[2026-11-07T20:25:58Z INFO  janitor_worker] Pushing result branch to http://janitor.debian.net/git/libnotify\nfound 0 deltas to reuse\n[2026-11-07T20:25:59Z INFO  janitor_worker::vcs] Pushing packaging branch cache to http://janitor.debian.net/git/libnotify,branch=debian%2Flatest\nfound 47 deltas to reuse\n[2026-11-07T20:26:00Z INFO  janitor_worker::vcs] Pushed packaging branch cache to http://janitor.debian.net/git/libnotify,branch=debian%2Flatest\n","description":"worker","name":"worker.log","url":"/control/c/libnotify/2cb70f86-f100-48fe-9748-3187321aa4b6/logs/worker.log"}},"my_review":null,"other_reviews":[],"primary_log":"worker","publish_history":[],"queue_position":1,"result_code":"success","resume_from":null,"reviews":[],"revision":"git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734","run":{"branch_url":"git+ssh://git@salsa.debian.org/gnome-team/libnotify.git","build_version":null,"change_set":"2cb70f86-f100-48fe-9748-3187321aa4b6","codebase":"libnotify","command":"brz up '--revision=git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734'","context":null,"debian_build_distribution":"sid","debian_build_version":null,"description":"","duration_seconds":642,"failure_stage":null,"failure_transient":null,"finish_time":"2026-11-07T20:26:00.644958Z","id":"2cb70f86-f100-48fe-9748-3187321aa4b6","logfilenames":["worker.log","codemod.log","build.log"],"main_branch_revision":"git-v1:c0d0f1ae4db31f1eda64fc6ff957af366e7431f8","publish_status":"unknown","result_branches":[{"absorbed":false,"base_revision":"git-v1:c0d0f1ae4db31f1eda64fc6ff957af366e7431f8","diff":"diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml\nindex cf05622..1577236 100644\n--- a/.gitlab-ci.yml\n+++ b/.gitlab-ci.yml\n@@ -1,9 +1,9 @@\n variables:\n   DEBIAN_FRONTEND: noninteractive\n-  TEST_TIMEOUT_MULTIPLIER: 3\n-  BUILD_DIR: _build\n+  MESON_TEST_TIMEOUT_MULTIPLIER: 3\n+  MESON_BUILD_DIR: _build\n   DOCS_BUILD_DIR: _reference\n-  TARBALL_ARTIFACT_PATH: ${BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz\n+  TARBALL_ARTIFACT_PATH: ${MESON_BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz\n \n include:\n   - component: \"gitlab.gnome.org/GNOME/citemplates/release-service@master\"\n@@ -66,7 +66,7 @@ stages:\n         gi-docgen\n         xvfb\n   script:\n-    - meson setup ${BUILD_DIR} -Ddocbook_docs=enabled\n+    - meson setup ${MESON_BUILD_DIR} -Ddocbook_docs=enabled\n \n build:ubuntu:\n   stage: build\n@@ -74,14 +74,14 @@ build:ubuntu:\n     - .build:ubuntu:base\n   script:\n     - !reference [\".build:ubuntu:base\", \"script\"]\n-    - meson install -C ${BUILD_DIR}\n-    - mv ${BUILD_DIR}/docs/reference/libnotify-0 ${DOCS_BUILD_DIR}\n+    - meson install -C ${MESON_BUILD_DIR}\n+    - mv ${MESON_BUILD_DIR}/docs/reference/libnotify-0 ${DOCS_BUILD_DIR}\n   artifacts:\n     expose_as: \"Build artifacts\"\n     paths:\n-      - ${BUILD_DIR}/docs/notification-spec.html\n+      - ${MESON_BUILD_DIR}/docs/notification-spec.html\n       - ${DOCS_BUILD_DIR}\n-      - ${BUILD_DIR}/meson-logs\n+      - ${MESON_BUILD_DIR}/meson-logs\n \n build:coverage:ubuntu:\n   stage: build\n@@ -91,21 +91,21 @@ build:coverage:ubuntu:\n     - !reference [\".build:ubuntu:base\", \"before_script\"]\n     - apt-get install -q -y gcovr\n   script:\n-    - meson setup ${BUILD_DIR} -Db_coverage=true\n-    - meson test -C ${BUILD_DIR} --print-errorlogs -t ${TEST_TIMEOUT_MULTIPLIER}\n-    - ninja -C ${BUILD_DIR} coverage || true\n-    - cat ${BUILD_DIR}/meson-logs/coverage.txt || true\n+    - meson setup ${MESON_BUILD_DIR} -Db_coverage=true\n+    - meson test -C ${MESON_BUILD_DIR} --print-errorlogs\n+    - ninja -C ${MESON_BUILD_DIR} coverage || true\n+    - cat ${MESON_BUILD_DIR}/meson-logs/coverage.txt || true\n   artifacts:\n     reports:\n-      junit: ${BUILD_DIR}/meson-logs/testlog.junit.xml\n+      junit: ${MESON_BUILD_DIR}/meson-logs/testlog.junit.xml\n       coverage_report:\n         coverage_format: cobertura\n-        path: ${BUILD_DIR}/meson-logs/coverage.xml\n+        path: ${MESON_BUILD_DIR}/meson-logs/coverage.xml\n     expose_as: 'Coverage Report'\n     when: always\n     paths:\n-      - ${BUILD_DIR}/meson-logs\n-      - ${BUILD_DIR}/meson-logs/coveragereport/index.html\n+      - ${MESON_BUILD_DIR}/meson-logs\n+      - ${MESON_BUILD_DIR}/meson-logs/coveragereport/index.html\n     expire_in: 1 week\n   coverage: '/^TOTAL.*\\s+(\\d+\\%)$/'\n \n@@ -118,7 +118,7 @@ build:dist:ubuntu:\n     - apt-get install -q -y git\n   script:\n     - !reference [\".build:ubuntu:base\", \"script\"]\n-    - meson dist -C \"${BUILD_DIR}\" --include-subprojects\n+    - meson dist -C \"${MESON_BUILD_DIR}\" --include-subprojects\n   artifacts:\n     name: \"${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}\"\n     when: \"always\"\n@@ -135,7 +135,7 @@ pages:\n   script:\n     - mkdir public\n     - mv ${DOCS_BUILD_DIR}/* public/\n-    - mv ${BUILD_DIR}/meson-logs/coveragereport public/coverage\n+    - mv ${MESON_BUILD_DIR}/meson-logs/coveragereport public/coverage\n   artifacts:\n     when: on_success\n     paths:\ndiff --git a/NEWS b/NEWS\nindex f4cdc89..2ec89bc 100644\n--- a/NEWS\n+++ b/NEWS\n@@ -1,32 +1,3 @@\n-New in 0.8.9\n-============\n-\n-This is a maintenance release, mostly with bug fixes around notify-send\n-behaviors and portal notifications, together with more tests coverage for\n-hints edge cases, and some library cleanups.\n-\n-* notify-send: Start action ID from 1 as docs states [Marco]\n-* notification: Do not send the default action as a button in portal\n-  notifications [Cajus]\n-* notify-send: Fix the activation token FD validity check [Marco]\n-* notify-send: Don't write the notification ID and action to stdin [Marco]\n-* notify: Free the application name and icon on uninit [Cajus]\n-* notification: Read the icon contents using g_file_load_contents() [Cajus]\n-* notification: Use g_clear_handle_id() for the portal timeout [Cajus]\n-* notify-send: Don't cache the hint conversion error [Cajus]\n-* tests/notify-send: Add tests for the default action button [Cajus]\n-* tests/notify-send: Verify behavior on invalid hints [Marco]\n-* launch-context: Don't omit parameter names in vfunc implementation [Logan]\n-* ci: Do not involve MESON into non-meson env variables [Marco]\n-* ci: Actually use the meson test multiplier value [Marco]\n-\n-* Bugs fixed:\n-  - #66 portal: \"default\" action adds additional button [Cajus]\n-  - #67 Omitted parameter names in a vfunc implementation [Logan]\n-\n-Contributors:\n-  Cajus Pollmeier, Logan Rathbone, Marco Trevisan\n-\n New in 0.8.8\n ============\n \n@@ -51,7 +22,6 @@ distributors to run the tests through meson.\n * notify-send: Add support to write the activated action to a FD [Marco]\n * notify-send: Add support to write the activation token to a FD [Marco]\n * notification: Improve reading images when inside a portal [Marco]\n-* tests: Add exensive notify-send test suite and coverage check [Marco]\n \n * Bugs fixed:\n   - #49 The closed signal only fires once [Marco]\ndiff --git a/debian/changelog b/debian/changelog\nindex 1381d15..3056193 100644\n--- a/debian/changelog\n+++ b/debian/changelog\n@@ -1,12 +1,3 @@\n-libnotify (0.8.9-1) unstable; urgency=medium\n-\n-  * New upstream release\n-  * Add Homepage\n-  * Update debhelper compat to 14\n-  * Update Standards Version to 4.7.4\n-\n- -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 20 Oct 2026 10:32:53 +0200\n-\n libnotify (0.8.8-1) unstable; urgency=medium\n \n   * New upstream release\ndiff --git a/debian/control b/debian/control\nindex 5e9cc06..4fa0a39 100644\n--- a/debian/control\n+++ b/debian/control\n@@ -1,41 +1,40 @@\n Source: libnotify\n-X-Style: black\n-Standards-Version: 4.7.4\n-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>\n-Uploaders:\n- Jeremy Bícha <jbicha@ubuntu.com>,\n- Marco Trevisan (Treviño) <marco@ubuntu.com>,\n+Priority: optional\n Section: libs\n-Build-Depends:\n- debhelper-compat (= 14),\n- dh-sequence-gir,\n- dbus-daemon <!nocheck>,\n- docbook-xsl-ns <!nodoc>,\n- gir1.2-gdkpixbuf-2.0-dev,\n- libgdk-pixbuf-2.0-dev,\n- libglib2.0-dev,\n- libgtk-4-dev,\n- meson,\n- python3-dbus <!nocheck>,\n- python3-dbusmock <!nocheck>,\n- xauth <!nocheck>,\n- xsltproc <!nodoc>,\n- xvfb <!nocheck>,\n-Build-Depends-Indep:\n- gi-docgen <!nodoc>,\n- xmlto <!nodoc>,\n+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>\n+Uploaders: Jeremy Bícha <jbicha@ubuntu.com>, Marco Trevisan (Treviño) <marco@ubuntu.com>\n+Build-Depends: debhelper-compat (= 13),\n+               dh-sequence-gir,\n+               dbus-daemon <!nocheck>,\n+               docbook-xsl-ns <!nodoc>,\n+               gir1.2-gdkpixbuf-2.0-dev,\n+               gobject-introspection (>= 1.80),\n+               libglib2.0-dev (>= 2.62.0),\n+               libgtk-4-dev,\n+               libgdk-pixbuf-2.0-dev,\n+               meson (>= 0.64),\n+               python3-dbus <!nocheck>,\n+               python3-dbusmock <!nocheck>,\n+               xauth <!nocheck>,\n+               xsltproc <!nodoc>,\n+               xvfb <!nocheck>,\n+Build-Depends-Indep: gi-docgen <!nodoc>,\n+                     xmlto <!nodoc>,\n+Rules-Requires-Root: no\n+Standards-Version: 4.7.2\n Vcs-Browser: https://salsa.debian.org/gnome-team/libnotify\n Vcs-Git: https://salsa.debian.org/gnome-team/libnotify.git\n-Homepage: https://gnome.pages.gitlab.gnome.org/libnotify/\n \n Package: libnotify-dev\n+Section: libdevel\n Architecture: any\n Multi-Arch: same\n-Section: libdevel\n-Depends:\n- libgdk-pixbuf-2.0-dev,\n- libglib2.0-dev,\n- libnotify4 (= ${binary:Version}),\n+Depends: ${gir:Depends},\n+         ${misc:Depends},\n+         libnotify4 (= ${binary:Version}),\n+         libglib2.0-dev (>= 2.26),\n+         libgdk-pixbuf-2.0-dev,\n+Provides: ${gir:Provides},\n Description: sends desktop notifications to a notification daemon (Development files)\n  A library that sends desktop notifications to a notification daemon, as\n  defined in the Desktop Notifications spec. These notifications can be\n@@ -47,8 +46,9 @@ Description: sends desktop notifications to a notification daemon (Development f\n Package: libnotify4\n Architecture: any\n Multi-Arch: same\n-Suggests:\n- notification-daemon,\n+Depends: ${misc:Depends},\n+         ${shlibs:Depends}\n+Suggests: notification-daemon\n Description: sends desktop notifications to a notification daemon\n  A library that sends desktop notifications to a notification daemon, as\n  defined in the Desktop Notifications spec. These notifications can be\n@@ -61,8 +61,10 @@ Description: sends desktop notifications to a notification daemon\n  daemon specification.\n \n Package: libnotify-bin\n-Architecture: any\n Section: utils\n+Architecture: any\n+Depends: ${misc:Depends},\n+         ${shlibs:Depends}\n Description: sends desktop notifications to a notification daemon (Utilities)\n  A library that sends desktop notifications to a notification daemon, as\n  defined in the Desktop Notifications spec. These notifications can be\n@@ -72,10 +74,12 @@ Description: sends desktop notifications to a notification daemon (Utilities)\n  This package contains the binary which sends the notification.\n \n Package: libnotify-doc\n-Architecture: all\n Build-Profiles: <!nodoc>\n-Multi-Arch: foreign\n Section: doc\n+Architecture: all\n+Multi-Arch: foreign\n+Depends: ${misc:Depends},\n+         ${shlibs:Depends}\n Description: sends desktop notifications to a notification daemon (Documentation)\n  A library that sends desktop notifications to a notification daemon, as\n  defined in the Desktop Notifications spec. These notifications can be\n@@ -87,9 +91,12 @@ Description: sends desktop notifications to a notification daemon (Documentation\n  /usr/share/doc/libnotify/spec/.\n \n Package: gir1.2-notify-0.7\n+Section: introspection\n Architecture: any\n Multi-Arch: same\n-Section: introspection\n+Depends: ${misc:Depends},\n+         ${shlibs:Depends},\n+         ${gir:Depends}\n Description: sends desktop notifications to a notification daemon (Introspection files)\n  A library that sends desktop notifications to a notification daemon, as\n  defined in the Desktop Notifications spec. These notifications can be\ndiff --git a/debian/rules b/debian/rules\nindex c2ae20f..8ff78f6 100755\n--- a/debian/rules\n+++ b/debian/rules\n@@ -4,12 +4,27 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all\n export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs\n export DPKG_GENSYMBOLS_CHECK_LEVEL = 4\n \n+built_binaries := $(shell dh_listpackages)\n+\n+configure_flags =\n+\n+ifeq ($(filter %-doc,$(built_binaries)),)\n+configure_flags += -Ddocbook_docs=disabled\n+configure_flags += -Dgtk_doc=false\n+else\n+configure_flags += -Ddocbook_docs=enabled\n+configure_flags += -Dgtk_doc=true\n+endif\n+\n+ifeq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)\n+configure_flags += -Dman=true\n+else\n+configure_flags += -Dman=false\n+endif\n+\n %:\n \tdh $@\n \n override_dh_auto_configure:\n-\tdh_auto_configure -- \\\n-\t\t-Ddocbook_docs=$(if $(filter %-doc,$(shell dh_listpackages)),enabled,disabled) \\\n-\t\t-Dgtk_doc=$(if $(filter %-doc,$(shell dh_listpackages)),true,false) \\\n-\t\t-Dman=$(if $(filter nodoc,$(DEB_BUILD_OPTIONS)),false,true) \\\n-\t\t-Dtests=$(if $(filter nocheck,$(DEB_BUILD_OPTIONS)),false,true)\n+\tdh_auto_configure -- $(configure_flags)\n+\ndiff --git a/debian/tests/control b/debian/tests/control\nindex db9b4fa..8e22c85 100644\n--- a/debian/tests/control\n+++ b/debian/tests/control\n@@ -1,12 +1,5 @@\n Test-Command: dbus-run-session -- sh -x debian/tests/build\n+Depends: build-essential, dbus (>= 1.8), python3-dbusmock, libnotify-dev, pkg-config\n+Features: test-name=build-and-test-notification\n Classes: desktop\n-Features:\n- test-name=build-and-test-notification,\n-Depends:\n- build-essential,\n- dbus-daemon,\n- libnotify-dev,\n- pkgconf,\n- python3-dbusmock,\n-Restrictions:\n- allow-stderr,\n+Restrictions: allow-stderr\ndiff --git a/debian/upstream/metadata b/debian/upstream/metadata\nindex 7981ee0..e25ad8f 100644\n--- a/debian/upstream/metadata\n+++ b/debian/upstream/metadata\n@@ -1,6 +1,6 @@\n ---\n-Bug-Database: https://gitlab.gnome.org/GNOME/libnotify/-/work_items\n-Bug-Submit: https://gitlab.gnome.org/GNOME/libnotify/-/work_items/new\n+Name: Desktop notification library\n+Bug-Database: https://gitlab.gnome.org/GNOME/libnotify/-/issues\n+Bug-Submit: https://gitlab.gnome.org/GNOME/libnotify/-/issues/new\n Repository: https://gitlab.gnome.org/GNOME/libnotify.git\n Repository-Browse: https://gitlab.gnome.org/GNOME/libnotify\n-Security-Contact: https://gitlab.gnome.org/Teams/Releng/security\ndiff --git a/libnotify/launch-context.c b/libnotify/launch-context.c\nindex 36adac3..c4db14d 100644\n--- a/libnotify/launch-context.c\n+++ b/libnotify/launch-context.c\n@@ -49,8 +49,8 @@ notification_app_launch_context_finalize (GObject *object)\n \n static char *\n notification_app_launch_context_get_startup_notify_id (GAppLaunchContext *context,\n-                                                       GAppInfo *info G_GNUC_UNUSED,\n-                                                       GList *files G_GNUC_UNUSED)\n+                                                       GAppInfo *,\n+                                                       GList *)\n {\n         NotificationAppLaunchContext *self = NOTIFICATION_APP_LAUNCH_CONTEXT (context);\n \ndiff --git a/libnotify/notification.c b/libnotify/notification.c\nindex 607f487..1504c8f 100644\n--- a/libnotify/notification.c\n+++ b/libnotify/notification.c\n@@ -879,7 +879,10 @@ remove_portal_notification (GDBusProxy         *proxy,\n         GVariant *ret;\n         gchar *notification_id;\n \n-        g_clear_handle_id (&priv->portal_timeout_id, g_source_remove);\n+        if (priv->portal_timeout_id) {\n+                g_source_remove (priv->portal_timeout_id);\n+                priv->portal_timeout_id = 0;\n+        }\n \n         notification_id = get_portal_notification_id (notification);\n \n@@ -930,10 +933,8 @@ get_notification_gicon (NotifyNotification  *notification,\n {\n         NotifyNotificationPrivate *priv =\n                 notify_notification_get_instance_private (notification);\n+        GFileInputStream *input;\n         g_autoptr(GFile) file = NULL;\n-        g_autofree gchar *contents = NULL;\n-        g_autoptr(GByteArray) bytes_array = NULL;\n-        gsize length;\n \n         if (priv->icon_pixbuf) {\n                 return G_ICON (g_object_ref (priv->icon_pixbuf));\n@@ -951,12 +952,37 @@ get_notification_gicon (NotifyNotification  *notification,\n                 return g_themed_icon_new (priv->icon_name);\n         }\n \n-        if (!g_file_load_contents (file, NULL, &contents, &length, NULL, error)) {\n+        if (!(input = g_file_read (file, NULL, error))) {\n                 return NULL;\n         }\n \n-        bytes_array = g_byte_array_new_take ((guint8 *) g_steal_pointer (&contents),\n-                                             length);\n+        g_autoptr(GByteArray) bytes_array = g_byte_array_new ();\n+        g_autoptr(GInputStream) buffered_stream = NULL;\n+\n+        buffered_stream = g_buffered_input_stream_new (G_INPUT_STREAM (input));\n+\n+        while (TRUE) {\n+                gssize read;\n+\n+                read = g_buffered_input_stream_fill (G_BUFFERED_INPUT_STREAM (buffered_stream),\n+                                                     -1, NULL, error);\n+\n+                if (read < 0) {\n+                        return NULL;\n+                }\n+\n+                if (read > 0) {\n+                        gconstpointer buffer;\n+                        gsize buffer_size;\n+\n+                        buffer = g_buffered_input_stream_peek_buffer (G_BUFFERED_INPUT_STREAM (buffered_stream),\n+                                                                      &buffer_size);\n+                        g_byte_array_append (bytes_array, buffer, buffer_size);\n+                        continue;\n+                }\n+\n+                break;\n+        }\n \n         if (bytes_array->len) {\n                 g_autoptr(GBytes) bytes = NULL;\n@@ -1008,10 +1034,6 @@ add_portal_notification (GDBusProxy         *proxy,\n                         GVariantBuilder button;\n                         ActionInfo *ai = g_ptr_array_index (priv->actions, i);\n \n-                        if (g_ascii_strcasecmp (ai->id, \"default\") == 0) {\n-                            continue;\n-                        }\n-\n                         g_variant_builder_init (&button, G_VARIANT_TYPE_VARDICT);\n \n                         g_variant_builder_add (&button, \"{sv}\", \"action\",\n@@ -1079,7 +1101,11 @@ add_portal_notification (GDBusProxy         *proxy,\n                                       NULL,\n                                       error);\n \n-        g_clear_handle_id (&priv->portal_timeout_id, g_source_remove);\n+        if (priv->portal_timeout_id) {\n+                g_source_remove (priv->portal_timeout_id);\n+                priv->portal_timeout_id = 0;\n+        }\n+\n         g_free (notification_id);\n \n         if (!ret) {\ndiff --git a/libnotify/notify.c b/libnotify/notify.c\nindex 723e62a..48a5bb3 100644\n--- a/libnotify/notify.c\n+++ b/libnotify/notify.c\n@@ -497,6 +497,8 @@ notify_uninit (void)\n                 return;\n         }\n \n+        g_clear_pointer (&_app_name, g_free);\n+\n         for (l = _active_notifications; l != NULL; l = l->next) {\n                 NotifyNotification *n = NOTIFY_NOTIFICATION (l->data);\n \n@@ -508,9 +510,6 @@ notify_uninit (void)\n                 g_object_run_dispose (G_OBJECT (n));\n         }\n \n-        g_clear_pointer (&_app_name, g_free);\n-        g_clear_pointer (&_app_icon, g_free);\n-\n         g_clear_object (&_proxy);\n         g_clear_pointer (&_snap_name, g_free);\n         g_clear_pointer (&_snap_app, g_free);\ndiff --git a/meson.build b/meson.build\nindex f606c19..7dfd784 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1,6 +1,6 @@\n project('libnotify',\n   'c',\n-  version: '0.8.9',\n+  version: '0.8.8',\n   meson_version: '>= 0.64.0')\n \n fs = import('fs')\ndiff --git a/tests/test_notify_send.py b/tests/test_notify_send.py\nindex 2ce98ef..80e1ef2 100644\n--- a/tests/test_notify_send.py\n+++ b/tests/test_notify_send.py\n@@ -339,46 +339,6 @@ class TestNotifySend(TestBaseFDONotifySend):\n             },\n         )\n \n-    def test_invalid_hint(self):\n-        \"\"\"notify-send with an invalid hint is not shown\"\"\"\n-\n-        # Any hint error stops the parsing, so nothing is ever shown\n-        invalid_hints = {\n-            \"unknown-type:hint:value\":\n-                'Invalid hint type \"unknown-type\"',\n-            \"string:just-a-name\":\n-                \"Invalid hint syntax specified. Use TYPE:NAME:VALUE.\",\n-            \"int:int-hint:not-a-number\":\n-                'Value \"not-a-number\" of hint \"int-hint\" could not be parsed '\n-                'as type \"int\".',\n-            \"double:double-hint:not-a-number\":\n-                'Value \"not-a-number\" of hint \"double-hint\" could not be '\n-                'parsed as type \"double\".',\n-            \"byte:byte-hint:300\":\n-                'Value \"300\" of hint \"byte-hint\" could not be parsed as '\n-                'type \"byte\".',\n-            \"byte:byte-hint:0x100\":\n-                'Value \"0x100\" of hint \"byte-hint\" could not be parsed as '\n-                'type \"byte\".',\n-            \"variant:variant-hint:not-a-variant\":\n-                'Value \"not-a-variant\" of hint \"variant-hint\" could not be '\n-                'parsed as type \"variant\".',\n-        }\n-\n-        for hint, expected_error in invalid_hints.items():\n-            with self.subTest(hint=hint):\n-                ns_proc = self.notify_send_proc(\n-                    [\"-h\", hint, \"hints!\"],\n-                    stdout=subprocess.PIPE,\n-                    stderr=subprocess.PIPE,\n-                )\n-\n-                [stdout, stderr] = ns_proc.communicate(timeout=5)\n-\n-                self.assertEqual(ns_proc.returncode, 1)\n-                self.assertIn(expected_error, stderr.decode(\"utf-8\"))\n-                self.assertNoDaemonCall(\"Notify\")\n-\n     def test_actions_not_supported(self):\n         \"\"\"notify-send with action not supported\"\"\"\n \n@@ -450,7 +410,7 @@ class TestNotifySendActions(TestBaseFDONotifySend):\n                 action_id = action[1]\n                 args.append(f\"--action={action_id}={label}\")\n             else:\n-                action_id = str(int(len(exp_actions) / 2) + 1)\n+                action_id = str(int(len(exp_actions) / 2))\n                 args.append(f\"--action={label}\")\n \n             if action_id in exp_actions:\n@@ -522,7 +482,7 @@ class TestNotifySendActions(TestBaseFDONotifySend):\n \n     def test_activate_numeric_action(self):\n         \"\"\"notify-send with action\"\"\"\n-        self.check_activate_action(1)\n+        self.check_activate_action(0)\n \n     def test_activate_named_action(self):\n         \"\"\"notify-send with action\"\"\"\n@@ -530,7 +490,7 @@ class TestNotifySendActions(TestBaseFDONotifySend):\n \n     def test_activate_third_unnamed_action(self):\n         \"\"\"notify-send with action\"\"\"\n-        self.check_activate_action(action_id=3, actions=[\n+        self.check_activate_action(action_id=2, actions=[\n             (\"foo\",), (\"default\", \"id\"), (\"baz\",)])\n \n     def test_activate_replaced_action(self):\n@@ -560,31 +520,6 @@ class TestNotifySendActions(TestBaseFDONotifySend):\n \n             self.assertFalse(tmp.readlines())\n \n-    def test_default_action_is_kept(self):\n-        \"\"\"The default action is only filtered out in the portal path, standard\n-        FDO action list must keep it\"\"\"\n-        [ns_proc, _] = self.notify_send_wait_id([\n-            \"action!\", \"Body\",\n-            \"--action=default=Default label\",\n-            \"--action=foo=Foo label\",\n-        ], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n-\n-        notification = self.assertDaemonCall(\"Notify\")\n-        self.assertNotificationMatches(\n-            notification,\n-            exp_summary=\"action!\",\n-            exp_body=\"Body\",\n-            exp_actions=[\"default\", \"Default label\", \"foo\", \"Foo label\"],\n-            exp_hints={\n-                \"urgency\": 1,\n-                \"sender-pid\": ns_proc.pid,\n-            },\n-        )\n-\n-        ns_proc.send_signal(signal.SIGINT)\n-        ns_proc.communicate(timeout=5)\n-        self.assertEqual(ns_proc.returncode, 0)\n-\n     def test_close_notification(self):\n         [ns_proc, notification_id] = self.show_actions_notification([(\"Foo\",)])\n \n@@ -778,7 +713,7 @@ class TestPortalNotifySendActions(TestBasePortalNotifySend):\n                 action_id = action[1]\n                 args.append(f\"--action={action_id}={label}\")\n             else:\n-                action_id = str(int(len(exp_actions)) + 1)\n+                action_id = str(int(len(exp_actions)))\n                 args.append(f\"--action={label}\")\n \n             other = [a for a in exp_actions if a[\"action\"] == action_id]\n@@ -830,27 +765,9 @@ class TestPortalNotifySendActions(TestBasePortalNotifySend):\n         self.assertIn(action_id, stdout.decode('utf-8'))\n         self.assertEqual(ns_proc.returncode, 0)\n \n-    def notification_options_for_actions(self, actions):\n-        \"\"\"Shows a notification with the given action/label pairs and returns\n-        the options received by the portal\"\"\"\n-\n-        args = [\"action!\", \"Body\"]\n-        args += [f\"--action={action_id}={label}\" for label, action_id in actions]\n-\n-        [ns_proc, _] = self.notify_send_wait_id(args, stdout=subprocess.PIPE,\n-                                                stderr=subprocess.PIPE)\n-\n-        [_, notification] = self.assertDaemonCall(\"AddNotification\")\n-\n-        ns_proc.send_signal(signal.SIGINT)\n-        ns_proc.communicate(timeout=5)\n-        self.assertEqual(ns_proc.returncode, 0)\n-\n-        return notification\n-\n     def test_activate_numeric_action(self):\n         \"\"\"notify-send with action\"\"\"\n-        self.check_activate_action(1)\n+        self.check_activate_action(0)\n \n     def test_activate_named_action(self):\n         \"\"\"notify-send with action\"\"\"\n@@ -858,7 +775,7 @@ class TestPortalNotifySendActions(TestBasePortalNotifySend):\n \n     def test_activate_third_unnamed_action(self):\n         \"\"\"notify-send with action\"\"\"\n-        self.check_activate_action(action_id=3, actions=[\n+        self.check_activate_action(action_id=2, actions=[\n             (\"foo\",), (\"default\", \"id\"), (\"baz\",)])\n \n     def test_activate_replaced_action(self):\n@@ -866,45 +783,6 @@ class TestPortalNotifySendActions(TestBasePortalNotifySend):\n         self.check_activate_action(action_id=\"foo-action\", actions=[\n             (\"Foo\", \"foo-action\"), (\"FooBar\", \"foo-action\")])\n \n-    def test_default_action_alone_has_no_buttons(self):\n-        \"\"\"notify-send just with default action must not show a button\"\"\"\n-\n-        notification = self.notification_options_for_actions([\n-            (\"Default label\", \"default\"),\n-        ])\n-\n-        self.assertEqual(notification[\"default-action\"], \"default\")\n-        self.assertNotIn(\"buttons\", notification)\n-\n-    def test_default_action_is_not_a_button(self):\n-        \"\"\"notify-send with default action must not show a button for the\n-        default action\"\"\"\n-\n-        notification = self.notification_options_for_actions([\n-            (\"Default label\", \"default\"),\n-            (\"Foo label\", \"foo\"),\n-        ])\n-\n-        self.assertEqual(notification[\"default-action\"], \"default\")\n-        self.assertEqual(notification[\"buttons\"], dbus.Array([\n-            {\"label\": \"Foo label\", \"action\": \"foo\"},\n-        ], signature=\"a{sv}\"))\n-\n-    def test_default_action_is_not_a_button_ignore_case(self):\n-        \"\"\"notify-send default action is recognized with mixed case\"\"\"\n-\n-        notification = self.notification_options_for_actions([\n-            (\"Foo label\", \"foo\"),\n-            (\"Default label\", \"DefAulT\"),\n-            (\"Bar label\", \"bar\"),\n-        ])\n-\n-        self.assertEqual(notification[\"default-action\"], \"default\")\n-        self.assertEqual(notification[\"buttons\"], dbus.Array([\n-            {\"label\": \"Foo label\", \"action\": \"foo\"},\n-            {\"label\": \"Bar label\", \"action\": \"bar\"},\n-        ], signature=\"a{sv}\"))\n-\n     def test_activate_invalid_action(self):\n         with TemporaryFD(\"action-id\") as tmpfd:\n             [fd, tmp] = tmpfd\ndiff --git a/tools/notify-send.c b/tools/notify-send.c\nindex 7e508f2..9ffd93a 100644\n--- a/tools/notify-send.c\n+++ b/tools/notify-send.c\n@@ -69,7 +69,7 @@ notify_notification_set_hint_variant (NotifyNotification *notification,\n                                       const char         *value,\n                                       GError            **error)\n {\n-        gboolean conv_error = FALSE;\n+        static gboolean conv_error = FALSE;\n         if (!strcasecmp (type, \"string\")) {\n                 notify_notification_set_hint_string (notification,\n                                                      key,\n@@ -180,7 +180,7 @@ handle_action (NotifyNotification *notify,\n \n         g_printf (\"%s\\n\", action);\n \n-        if (action_data->selected_action_fd > 0) {\n+        if (action_data->selected_action_fd >= 0) {\n                 write (action_data->selected_action_fd, action, strlen (action));\n                 write (action_data->selected_action_fd, \"\\n\", 1);\n                 fsync (action_data->selected_action_fd);\n@@ -194,13 +194,13 @@ handle_action (NotifyNotification *notify,\n                                                                     NULL, NULL);\n                 g_debug (\"Activation Token: %s\", activation_token);\n \n-                if (action_data->activation_token_fd > 0) {\n+                if (action_data->activation_token_fd) {\n                         write (action_data->activation_token_fd,\n                                activation_token, strlen (activation_token));\n                 }\n         }\n \n-        if (action_data->activation_token_fd > 0) {\n+        if (action_data->activation_token_fd) {\n                 write (action_data->activation_token_fd, \"\\n\", 1);\n                 fsync (action_data->activation_token_fd);\n         }\n@@ -489,7 +489,7 @@ main (int argc, char *argv[])\n                         spl = g_strsplit (action, \"=\", 2);\n \n                         if (g_strv_length (spl) == 1) {\n-                                name = g_strdup_printf (\"%d\", i);\n+                                name = g_strdup_printf (\"%d\", i - 1);\n                                 label = g_strstrip (spl[0]);\n                         } else {\n                                 name = g_strdup (g_strstrip (spl[0]));\n@@ -549,7 +549,7 @@ main (int argc, char *argv[])\n                 fflush (stdout);\n         }\n \n-        if (id_fd > 0) {\n+        if (id_fd >= 0) {\n                 g_autofree char *id_str = NULL;\n \n                 g_object_get (notify, \"id\", &notification_id, NULL);\n","remote_name":"debian/latest","revision":"git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734","role":"main"}],"result_code":"success","result_tags":[],"revision":"git-v1:9c79bc074ae042620063580d3cd9ca90ec4f7734","start_time":"2026-11-07T20:15:17.930549Z","subpath":"","suite":"control","target_branch_url":null,"vcs_type":"git","worker":"tyr"},"run_id":"2cb70f86-f100-48fe-9748-3187321aa4b6","success_probability":1.0,"suite":"control","total_previous_runs":1,"utcnow":"2026-11-09T03:50:07.427290126+00:00","vcs_type":"git","vcs_url":"git+ssh://git@salsa.debian.org/gnome-team/libnotify.git","version":"0.0.0","worker_log_name":"worker.log","worker_name":"tyr"}