Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rpmlint-mini for openSUSE:Factory 
checked in at 2026-05-30 22:54:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpmlint-mini (Old)
 and      /work/SRC/openSUSE:Factory/.rpmlint-mini.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rpmlint-mini"

Sat May 30 22:54:02 2026 rev:128 rq:1355671 version:MACRO

Changes:
--------
--- /work/SRC/openSUSE:Factory/rpmlint-mini/rpmlint-mini.changes        
2025-11-04 18:40:26.616593949 +0100
+++ /work/SRC/openSUSE:Factory/.rpmlint-mini.new.1937/rpmlint-mini.changes      
2026-05-30 22:54:05.250302850 +0200
@@ -1,0 +2,36 @@
+Tue May 26 19:53:32 UTC 2026 - Daniel Franke <[email protected]>
+
+- Remove patches already present in new version of desktop-file-utils:
+  * 0001-validate-support-SingleMainWindow-key-from-1.5.patch
+  * 0002-validate-Support-version-1.5.patch
+
+- Update desktop-file-utils source to 0.28:
+  
+  common
+    * Increase GLib requirement to 2.26
+    * Fix install failing on second run
+    * Fix use of deprecated Meson feature resulting in a warning
+  
+  desktop-file-validate
+    * Allow groups with the same name as interfaces in Implements
+    * Add support for the COSMIC environment
+
+- Update to 0.27:
+
+  common
+    * Remove Autotools support.
+    * Minor updates to project documentation.
+    * Add pledge(2) support to remaining utilities.
+    * Add --version support to utilities.
+
+  desktop-file-validate
+    * Support desktop spec version 1.5.
+    * Add LXQt to categories.
+    * Use DDE category for Deepin desktop.
+    * Add Endless to list of desktop IDs.
+    * Fix field code escaping in messages.
+
+  desktop-entry-mode.el
+    * Highlight action groups when ID includes hyphens.
+
+-------------------------------------------------------------------

Old:
----
  0001-validate-support-SingleMainWindow-key-from-1.5.patch
  0002-validate-Support-version-1.5.patch
  desktop-file-utils-0.26.tar.xz

New:
----
  desktop-file-utils-0.28.tar.xz

----------(Old B)----------
  Old:- Remove patches already present in new version of desktop-file-utils:
  * 0001-validate-support-SingleMainWindow-key-from-1.5.patch
  * 0002-validate-Support-version-1.5.patch
  Old:  * 0001-validate-support-SingleMainWindow-key-from-1.5.patch
  * 0002-validate-Support-version-1.5.patch
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rpmlint-mini.spec ++++++
--- /var/tmp/diff_new_pack.vvLCFm/_old  2026-05-30 22:54:06.782365793 +0200
+++ /var/tmp/diff_new_pack.vvLCFm/_new  2026-05-30 22:54:06.782365793 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rpmlint-mini
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -27,16 +27,13 @@
 Summary:        RPM file correctness checker
 License:        GPL-2.0-or-later
 URL:            https://github.com/rpm-software-management/rpmlint
-Source0:        desktop-file-utils-0.26.tar.xz
+Source0:        desktop-file-utils-0.28.tar.xz
 Source1:        stdlib.txt
 Source2:        rpmlint.wrapper
 Source3:        rpmlint-mini.rpmlintrc
 
 # PATCH-FEATURE-OPENSUSE desktop-file-utils-suse-keys.patch [email protected] 
-- Handle SUSE-specific keys in validator. This is not strictly necessary, 
since they are prefixed with X-, but we can verify that the value has the right 
type.
 Patch0:         desktop-file-utils-suse-keys.patch
-# PATCH-FIX-UPSTREAM -- SingleMainWindow is present in xdg-specs 1.5 and can 
be used by both GNOME and KDE
-Patch2:         0001-validate-support-SingleMainWindow-key-from-1.5.patch
-Patch3:         0002-validate-Support-version-1.5.patch
 
 # need to fetch the file from there
 BuildRequires:  checkbashisms
@@ -74,7 +71,7 @@
 source packages can be checked.
 
 %prep
-%autosetup -p1 -n desktop-file-utils-0.26
+%autosetup -p1 -n desktop-file-utils-0.28
 
 %build
 %meson

++++++ desktop-file-utils-0.26.tar.xz -> desktop-file-utils-0.28.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/.gitlab-ci.yml 
new/desktop-file-utils-0.28/.gitlab-ci.yml
--- old/desktop-file-utils-0.26/.gitlab-ci.yml  1970-01-01 01:00:00.000000000 
+0100
+++ new/desktop-file-utils-0.28/.gitlab-ci.yml  2024-10-25 22:52:48.000000000 
+0200
@@ -0,0 +1,7 @@
+image: fedora:31
+
+meson-build:
+    script:
+    - dnf -y install @development-tools meson glib2-devel
+    - meson _build
+    - ninja -C _build test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/ChangeLog 
new/desktop-file-utils-0.28/ChangeLog
--- old/desktop-file-utils-0.26/ChangeLog       2020-06-19 14:51:42.560910000 
+0200
+++ new/desktop-file-utils-0.28/ChangeLog       2024-10-25 22:54:51.080877300 
+0200
@@ -1,3 +1,233 @@
+commit bc403b7e9ea4847b1590c41eb1581aa3f1d24b36
+Author: Hans Petter Jansson <[email protected]>
+Date:   Fri Oct 25 22:52:48 2024 +0200
+
+    Release 0.28
+
+M      NEWS
+M      meson.build
+
+commit 242d888b9aa0fdde776c9697aacff590d07df8a0
+Author: Raziel Anarki <[email protected]>
+Date:   Thu Nov 2 00:02:32 2023 +0100
+
+    FIX: deprecated feature used `man/meson.build`:
+    
+    fixes the following warning/notice
+    ```
+    NOTICE: Future-deprecated features used:
+    * 0.64.0: {'copy arg in configure_file'}
+    ```
+
+M      man/meson.build
+
+commit e0cc507f60f928e92d239d21ab7d03b5bc296f34
+Author: Raziel Anarki <[email protected]>
+Date:   Thu Nov 2 00:01:52 2023 +0100
+
+    FIX: `install.py` script fails on second run
+    
+    python `os.symlink` fails to overwrite an already existing target:
+    fixed with updating the `meson_version` requiement to `'>=0.61.0'` and 
handling the symlink via `install_symlink()`
+
+D      install.py
+M      meson.build
+
+commit 67d09f0c851cfaf0ff3ae8689c14a09ec08d6fa1
+Author: Ryan Brue <[email protected]>
+Date:   Sat Jul 20 15:35:57 2024 +0000
+
+    validate: add COSMIC
+    
+    Signed-off-by: Ryan Brue <[email protected]>
+
+M      src/validate.c
+
+commit 0edb077899d696601d285c9891c8be61b8903634
+Author: Corentin Noël <[email protected]>
+Date:   Wed Jan 31 11:32:16 2024 +0100
+
+    validate: Allow groups with the same name as interfaces in Implements
+    
+    From the specification:
+    
+    if the interface wishes to allow for details about the implementation, it 
should
+    do so by specifying that implementers add a group in their desktop file 
with the
+    same name as the interface (eg: "[org.freedesktop.ImageAcquire]")
+    
+    Also add interface name validation using GIO.
+    
+    Increases GLib requirement to 2.26.
+
+M      meson.build
+M      src/meson.build
+M      src/validate.c
+
+commit 2470d73f93d02b354ecbee7c2f02a83efaae84d8
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 17:07:13 2023 +0200
+
+    Release: 0.27
+
+M      NEWS
+
+commit dda9978b46b4fbbc1f341ec77bb3a8d3fdcb6356
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 16:26:47 2023 +0200
+
+    docs: Remove Autotools info from README and update stale links
+
+M      README
+
+commit 115d62a1684deeb69fa1f4816e8c16af1c91286f
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 16:00:57 2023 +0200
+
+    docs: Bring HACKING notes into the Gitlab era
+
+M      HACKING
+
+commit b226bf5ea18de6ea6c61eb06fec93edfe0cbc85e
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 15:55:47 2023 +0200
+
+    validate: Properly escape field codes in messages
+    
+    Fixes #71.
+
+M      src/validate.c
+
+commit ec04c7df45d2974103108813549502e322ae7c7c
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 15:53:01 2023 +0200
+
+    validate: Add G_GNUC_PRINTF() to verify message formatting
+
+M      src/validate.c
+
+commit 48167c9de89477a9898fce237ce3abf382abb1b4
+Author: Hans Petter Jansson <[email protected]>
+Date:   Thu Oct 5 15:20:54 2023 +0200
+
+    Remove Autotools build files - support only Meson from now on
+
+D      Makefile.am
+D      autogen.sh
+D      configure.ac
+D      git.mk
+D      man/Makefile.am
+D      misc/Makefile.am
+D      src/Makefile.am
+
+commit 679cb6f7d46896167ec105e0713401bfaca23516
+Author: Philip Withnall <[email protected]>
+Date:   Tue Sep 12 10:30:51 2023 +0100
+
+    validate: Add Endless to the list of valid desktop IDs
+    
+    See https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/73 and
+    https://github.com/ximion/appstream/pull/522.
+    
+    Signed-off-by: Philip Withnall <[email protected]>
+
+M      src/validate.c
+
+commit 8c83300b5f81338696765f1184a82283da25265b
+Author: Wang Zichong <[email protected]>
+Date:   Tue May 23 14:46:09 2023 +0800
+
+    validate: add DDE as a category
+    
+    Related: https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/68
+
+M      src/validate.c
+
+commit 5c11578cb590cf45b2e3c094d04ca381cb054a19
+Author: Wang Zichong <[email protected]>
+Date:   Tue Mar 21 13:43:31 2023 +0800
+
+    validate: use DDE for deepin desktop
+    
+    Since DDE (and its distro 'deepin') v23 beta, 'DDE' will be used
+    instead of 'Deepin', so we just also update the name here.
+    
+    Related links:
+    
+    - https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/69
+    - https://www.freelists.org/post/deepin-devel/xdgspec-DDE
+    - https://github.com/linuxdeepin/developer-center/issues/3829
+
+M      src/validate.c
+
+commit e966d55382e34609a6ab6b9a4200eb5a9dcf05fa
+Author: JakobDev <[email protected]>
+Date:   Tue Jan 10 11:41:28 2023 +0000
+
+    Add --version
+
+M      src/install.c
+M      src/update-desktop-database.c
+M      src/validator.c
+
+commit 8818dac847ce50794d8fd03659d3c93d8310adbc
+Author: rezso <[email protected]>
+Date:   Sat Jun 25 23:01:09 2022 +0000
+
+    Add LXQt to registered categories. LXQt requires it.
+
+M      src/validate.c
+
+commit 56d220dd679c7c3a8f995a41a27a7d6f3df49dea
+Author: David King <[email protected]>
+Date:   Tue Feb 15 10:56:04 2022 +0000
+
+    validate: Support version 1.5
+    
+    Bump CURRENT_SPEC_VERSION to 1.5.
+
+M      man/desktop-file-validate.1
+M      src/validate.c
+M      src/validate.h
+
+commit 425177a28b6215e0745f95100160a08e810fd47c
+Author: David King <[email protected]>
+Date:   Tue Feb 15 10:54:40 2022 +0000
+
+    validate: support SingleMainWindow key from 1.5
+    
+    Fixes https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/issues/59
+
+M      src/validate.c
+
+commit 4d56ab25fd045297912d783280a55a15dcbd95e8
+Author: Peter Oliver <[email protected]>
+Date:   Tue May 25 21:35:38 2021 +0100
+
+    desktop-entry-mode.el: highlight action groups when id includes hyphens
+    
+    Hypens are legal characters in identifiers.
+
+M      misc/desktop-entry-mode.el
+
+commit 1926ae7021a2f8e842ad566a49f3a947c02cec92
+Author: Antoine Jacoutot <[email protected]>
+Date:   Fri Jun 19 10:12:04 2020 +0200
+
+    pledge: add support to remaining utilities
+
+M      src/install.c
+M      src/update-desktop-database.c
+M      src/validator.c
+
+commit 02e13daa5a6a532181b66c8a197930b6f0171909
+Author: Hans Petter Jansson <[email protected]>
+Date:   Fri Jun 19 14:25:04 2020 +0200
+
+    Post-release version bump to 0.27
+
+M      configure.ac
+M      meson.build
+
 commit 54cec012921e52eb66b6ee1a1f40f2e9c9849f7c
 Author: Hans Petter Jansson <[email protected]>
 Date:   Fri Jun 19 14:22:26 2020 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/HACKING 
new/desktop-file-utils-0.28/HACKING
--- old/desktop-file-utils-0.26/HACKING 2020-06-19 14:51:42.504910000 +0200
+++ new/desktop-file-utils-0.28/HACKING 2024-10-25 22:52:48.000000000 +0200
@@ -1,22 +1,19 @@
 Hacking on desktop-file-utils
 =============================
 
- + The development occurs in git:
+ + The development occurs in Gitlab:
 
-     http://cgit.freedesktop.org/desktop-file-utils/
+     https://gitlab.freedesktop.org/xdg/desktop-file-utils/
 
    For information on how to access freedesktop.org git please read:
 
-     http://www.freedesktop.org/wiki/Infrastructure/git
+     https://www.freedesktop.org/wiki/Infrastructure/git
 
- + Please send patches as bug reports in freedesktop.org Bugzilla:
+ + Please submit any changes using merge requests in Gitlab.
 
-     https://bugs.freedesktop.org/ (product desktop-file-utils)
-
-   Your patch should be in unified diff form (the -u option to GNU
-   diff). See also:
-
-     http://live.gnome.org/GnomeLove/SubmittingPatches
+   If you prefer to submit patches, you can do so by creating a new issue
+   and attaching the patch. It should be in unified diff form (the -u option
+   to GNU diff).
 
  + Please try and send a patch against a recent version of this package.
    Patches against git master are most preferable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/Makefile.am 
new/desktop-file-utils-0.28/Makefile.am
--- old/desktop-file-utils-0.26/Makefile.am     2020-06-19 14:51:42.504910000 
+0200
+++ new/desktop-file-utils-0.28/Makefile.am     1970-01-01 01:00:00.000000000 
+0100
@@ -1,35 +0,0 @@
-SUBDIRS = src man misc
-
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-EXTRA_DIST = HACKING
-
-MAINTAINERCLEANFILES = \
-       $(srcdir)/aclocal.m4 \
-       $(srcdir)/config.guess \
-       $(srcdir)/config.h.in \
-       $(srcdir)/config.sub \
-       $(srcdir)/depcomp \
-       $(srcdir)/elisp-comp \
-       $(srcdir)/install-sh \
-       $(srcdir)/ltmain.sh \
-       $(srcdir)/missing \
-       `find "$(srcdir)" -type f -name Makefile.in -print` \
-       $(srcdir)/configure \
-       $(srcdir)/m4/*.m4
-
-CHANGELOG_GIT_RANGE =
-dist-hook:
-       $(AM_V_GEN)if test -d "$(srcdir)/.git"; then \
-         ( echo '# Generated by Makefile. Do not edit.'; echo; \
-           GIT_DIR="$(top_srcdir)/.git" ./missing --run \
-           git log $(CHANGELOG_GIT_RANGE) --no-color -M -C --name-status ) \
-         > ChangeLog.tmp \
-         && mv -f ChangeLog.tmp $(distdir)/ChangeLog \
-         || ( rm -f ChangeLog.tmp ; echo Failed to generate ChangeLog >&2 ); \
-       else \
-         echo A git checkout is required to generate ChangeLog >&2; \
-       fi
-
-GITIGNOREFILES = $(PACKAGE)-\*.tar.{gz,bz2,xz}
--include $(top_srcdir)/git.mk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/NEWS 
new/desktop-file-utils-0.28/NEWS
--- old/desktop-file-utils-0.26/NEWS    2020-06-19 14:51:42.504910000 +0200
+++ new/desktop-file-utils-0.28/NEWS    2024-10-25 22:52:48.000000000 +0200
@@ -1,4 +1,39 @@
 ============
+Version 0.28
+============
+
+ common
+  - Increase GLib requirement to 2.26 (Corentin Noël).
+  - Fix install failing on second run (Raziel Anarki).
+  - Fix use of deprecated Meson feature resulting in a warning (Raziel
+    Anarki).
+
+ desktop-file-validate
+  - Allow groups with the same name as interfaces in Implements (Corentin
+    Noël).
+  - Add support for the COSMIC environment (Ryan Brue).
+
+============
+Version 0.27
+============
+
+ common
+  - Remove Autotools support.
+  - Minor updates to project documentation.
+  - Add pledge(2) support to remaining utilities (Antoine Jacoutot).
+  - Add --version support to utilities (fdo#64) (JakobDev).
+
+ desktop-file-validate
+  - Support desktop spec version 1.5 (fdo#59) (David King).
+  - Add LXQt to categories (fdo#63) (rezso).
+  - Use DDE category for Deepin desktop (Wang Zichong).
+  - Add Endless to list of desktop IDs (Philip Withnall).
+  - Fix field code escaping in messages (fdo#71).
+
+ desktop-entry-mode.el
+  - Highlight action groups when ID includes hyphens (Peter Oliver).
+
+============
 Version 0.26
 ============
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/README 
new/desktop-file-utils-0.28/README
--- old/desktop-file-utils-0.26/README  2020-06-19 14:51:42.504910000 +0200
+++ new/desktop-file-utils-0.28/README  2024-10-25 22:52:48.000000000 +0200
@@ -1,7 +1,7 @@
 desktop-file-utils
 ==================
 
-http://www.freedesktop.org/wiki/Software/desktop-file-utils
+https://www.freedesktop.org/wiki/Software/desktop-file-utils
 
 desktop-file-utils contains a few command line utilities for working
 with desktop entries.
@@ -18,16 +18,16 @@
 More information about desktop files and the "Desktop Entry
 Specification" is available on:
 
-  http://freedesktop.org/wiki/Specifications/desktop-entry-spec
-  
http://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
+  https://freedesktop.org/wiki/Specifications/desktop-entry-spec
+  
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
 
 You may download updates to the package from:
 
-   http://www.freedesktop.org/software/desktop-file-utils/releases/
+  https://www.freedesktop.org/software/desktop-file-utils/releases/
 
 To discuss desktop-file-utils, you may use the xdg mailing list:
 
-  http://lists.freedesktop.org/mailman/listinfo/xdg
+  https://lists.freedesktop.org/mailman/listinfo/xdg
 
 
 Installation
@@ -39,25 +39,15 @@
   ninja -C _build
   sudo ninja -C _build install
 
-Using Autotools (deprecated):
-
-  ./autogen.sh
-  make
-  sudo make install
-
 
 How to report bugs
 ==================
 
 Bugs should be reported to the freedesktop.org bug tracking system:
 
-   https://bugs.freedesktop.org/ (product desktop-file-utils)
+   https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/issues/new
 
 You will need to create an account for yourself.
 
-Please read the following page on how to prepare a useful bug report:
-
-   https://bugs.freedesktop.org/page.cgi?id=bug-writing.html
-
 Please read the HACKING file for information on where to send changes or
 bugfixes for this package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/autogen.sh 
new/desktop-file-utils-0.28/autogen.sh
--- old/desktop-file-utils-0.26/autogen.sh      2020-06-19 14:51:42.504910000 
+0200
+++ new/desktop-file-utils-0.28/autogen.sh      1970-01-01 01:00:00.000000000 
+0100
@@ -1,64 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-PROJECT=desktop-file-utils
-TEST_TYPE=-f
-FILE=src/validate.h
-
-DIE=0
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-       echo
-       echo "You must have autoconf installed to compile $PROJECT."
-       echo "Download the appropriate package for your distribution,"
-       echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-       DIE=1
-}
-
-AUTOMAKE=automake
-ACLOCAL=aclocal
-
-($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
-       echo
-       echo "You must have automake installed to compile $PROJECT."
-       echo "Download the appropriate package for your distribution,"
-       echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/";
-       DIE=1
-}
-
-if test "$DIE" -eq 1; then
-       exit 1
-fi
-
-test $TEST_TYPE $FILE || {
-       echo "You must run this script in the top-level $PROJECT directory"
-       exit 1
-}
-
-if test -z "$*"; then
-       echo "I am going to run ./configure with no arguments - if you wish "
-        echo "to pass any to it, please specify them on the $0 command line."
-fi
-
-echo $ACLOCAL $ACLOCAL_FLAGS
-$ACLOCAL $ACLOCAL_FLAGS
-
-# optionally feature autoheader
-(autoheader --version)  < /dev/null > /dev/null 2>&1 && autoheader
-
-$AUTOMAKE -a $am_opt
-autoconf || echo "autoconf failed - version 2.5x is probably required"
-
-cd $ORIGDIR
-
-if test -z "$NOCONFIGURE"; then
-    $srcdir/configure "$@"
-    echo 
-    echo "Now type 'make' to compile $PROJECT."
-fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/configure.ac 
new/desktop-file-utils-0.28/configure.ac
--- old/desktop-file-utils-0.26/configure.ac    2020-06-19 14:51:42.504910000 
+0200
+++ new/desktop-file-utils-0.28/configure.ac    1970-01-01 01:00:00.000000000 
+0100
@@ -1,105 +0,0 @@
-AC_INIT([desktop-file-utils], [0.26],
-        
[https://bugs.freedesktop.org/enter_bug.cgi?product=desktop-file-utils])
-AC_CONFIG_SRCDIR(src/validate.h)
-
-AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar])
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-AC_CONFIG_MACRO_DIR([m4])
-AM_CONFIG_HEADER(config.h)
-
-AC_PROG_LN_S
-AC_PROG_CC
-
-AC_CHECK_FUNCS(pledge)
-
-if test "x$GCC" = "xyes"; then
-  changequote(,)dnl
-  case " $CFLAGS " in
-  *[\ \        ]-Wall[\ \      ]*) ;;
-  *) CFLAGS="$CFLAGS -Wall" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wchar-subscripts[\ \  ]*) ;;
-  *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wmissing-declarations[\ \     ]*) ;;
-  *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wmissing-prototypes[\ \       ]*) ;;
-  *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wnested-externs[\ \   ]*) ;;
-  *) CFLAGS="$CFLAGS -Wnested-externs" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wpointer-arith[\ \    ]*) ;;
-  *) CFLAGS="$CFLAGS -Wpointer-arith" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wcast-align[\ \       ]*) ;;
-  *) CFLAGS="$CFLAGS -Wcast-align" ;;
-  esac
-
-  case " $CFLAGS " in
-  *[\ \        ]-Wsign-compare[\ \     ]*) ;;
-  *) CFLAGS="$CFLAGS -Wsign-compare" ;;
-  esac
-
-  if test "x$enable_ansi" = "xyes"; then
-    case " $CFLAGS " in
-    *[\ \      ]-ansi[\ \      ]*) ;;
-    *) CFLAGS="$CFLAGS -ansi" ;;
-    esac
-
-    case " $CFLAGS " in
-    *[\ \      ]-pedantic[\ \  ]*) ;;
-    *) CFLAGS="$CFLAGS -pedantic" ;;
-    esac
-  fi
-  if test x$enable_gcov = xyes; then
-    case " $CFLAGS " in
-    *[\ \      ]-fprofile-arcs[\ \     ]*) ;;
-    *) CFLAGS="$CFLAGS -fprofile-arcs" ;;
-    esac
-    case " $CFLAGS " in
-    *[\ \      ]-ftest-coverage[\ \    ]*) ;;
-    *) CFLAGS="$CFLAGS -ftest-coverage" ;;
-    esac
-
-    ## remove optimization
-    CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
-  fi
-  changequote([,])dnl
-else
-  if test x$enable_gcov = xyes; then
-    AC_MSG_ERROR([--enable-gcov can only be used with gcc])
-  fi
-fi
-
-changequote(,)dnl
-# compress spaces in flags
-CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
-CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'`
-changequote([,])dnl
-
-PKG_CHECK_MODULES(DESKTOP_FILE_UTILS, glib-2.0 >= 2.8.0)
-
-AM_PATH_LISPDIR
-
-AC_CONFIG_FILES([
-Makefile
-man/Makefile
-misc/Makefile
-src/Makefile
-])
-
-AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/git.mk 
new/desktop-file-utils-0.28/git.mk
--- old/desktop-file-utils-0.26/git.mk  2020-06-19 14:51:42.508910000 +0200
+++ new/desktop-file-utils-0.28/git.mk  1970-01-01 01:00:00.000000000 +0100
@@ -1,206 +0,0 @@
-# git.mk
-#
-# Copyright 2009, Red Hat, Inc.
-# Copyright 2010,2011 Behdad Esfahbod
-# Written by Behdad Esfahbod
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.
-#
-# The canonical source for this file is https://github.com/behdad/git.mk.
-#
-# To use in your project, import this file in your git repo's toplevel,
-# then do "make -f git.mk".  This modifies all Makefile.am files in
-# your project to -include git.mk.  Remember to add that line to new
-# Makefile.am files you create in your project, or just rerun the
-# "make -f git.mk".
-#
-# This enables automatic .gitignore generation.  If you need to ignore
-# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
-# But think twice before doing that.  If a file has to be in .gitignore,
-# chances are very high that it's a generated file and should be in one
-# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
-#
-# The only case that you need to manually add a file to GITIGNOREFILES is
-# when remove files in one of mostlyclean-local, clean-local, distclean-local,
-# or maintainer-clean-local make targets.
-#
-# Note that for files like editor backup, etc, there are better places to
-# ignore them.  See "man gitignore".
-#
-# If "make maintainer-clean" removes the files but they are not recognized
-# by this script (that is, if "git status" shows untracked files still), send
-# me the output of "git status" as well as your Makefile.am and Makefile for
-# the directories involved and I'll diagnose.
-#
-# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
-# Makefile.am.sample in the git.mk git repo.
-#
-# Don't EXTRA_DIST this file.  It is supposed to only live in git clones,
-# not tarballs.  It serves no useful purpose in tarballs and clutters the
-# build dir.
-#
-# This file knows how to handle autoconf, automake, libtool, gtk-doc,
-# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings.
-#
-#
-# KNOWN ISSUES:
-#
-# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
-#   submodule doesn't find us.  If you have configure.{in,ac} files in
-#   subdirs, add a proxy git.mk file in those dirs that simply does:
-#   "include $(top_srcdir)/../git.mk".  Add more ..'s to your taste.
-#   And add those files to git.  See vte/gnome-pty-helper/git.mk for
-#   example.
-#
-
-git-all: git-mk-install
-
-git-mk-install:
-       @echo Installing git makefile
-       @any_failed=; \
-               find "`test -z "$(top_srcdir)" && echo . || echo 
"$(top_srcdir)"`" -name Makefile.am | while read x; do \
-               if grep 'include .*/git.mk' $$x >/dev/null; then \
-                       echo $$x already includes git.mk; \
-               else \
-                       failed=; \
-                       echo "Updating $$x"; \
-                       { cat $$x; \
-                         echo ''; \
-                         echo '-include $$(top_srcdir)/git.mk'; \
-                       } > $$x.tmp || failed=1; \
-                       if test x$$failed = x; then \
-                               mv $$x.tmp $$x || failed=1; \
-                       fi; \
-                       if test x$$failed = x; then : else \
-                               echo Failed updating $$x; >&2 \
-                               any_failed=1; \
-                       fi; \
-       fi; done; test -z "$$any_failed"
-
-.PHONY: git-all git-mk-install
-
-
-### .gitignore generation
-
-$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk
-       $(AM_V_GEN) \
-       { \
-               if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; 
then :; else \
-                       for x in \
-                               $(DOC_MODULE)-decl-list.txt \
-                               $(DOC_MODULE)-decl.txt \
-                               tmpl/$(DOC_MODULE)-unused.sgml \
-                               "tmpl/*.bak" \
-                               xml html \
-                       ; do echo /$$x; done; \
-               fi; \
-               if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; 
then :; else \
-                       for x in \
-                               $(_DOC_C_DOCS) \
-                               $(_DOC_LC_DOCS) \
-                               $(_DOC_OMF_ALL) \
-                               $(_DOC_DSK_ALL) \
-                               $(_DOC_HTML_ALL) \
-                               $(_DOC_MOFILES) \
-                               $(_DOC_POFILES) \
-                               $(DOC_H_FILE) \
-                               "*/.xml2po.mo" \
-                               "*/*.omf.out" \
-                       ; do echo /$$x; done; \
-               fi; \
-               if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; 
else \
-                       for x in \
-                               $(_HELP_LC_FILES) \
-                               $(_HELP_LC_STAMPS) \
-                               $(_HELP_MOFILES) \
-                       ; do echo /$$x; done; \
-               fi; \
-               if test "x$(gsettings_SCHEMAS)" = x; then :; else \
-                       for x in \
-                               $(gsettings_SCHEMAS:.xml=.valid) \
-                               $(gsettings__enum_file) \
-                       ; do echo /$$x; done; \
-               fi; \
-               if test -f $(srcdir)/po/Makefile.in.in; then \
-                       for x in \
-                               po/Makefile.in.in \
-                               po/Makefile.in \
-                               po/Makefile \
-                               po/POTFILES \
-                               po/stamp-it \
-                               po/.intltool-merge-cache \
-                               "po/*.gmo" \
-                               "po/*.mo" \
-                               po/$(GETTEXT_PACKAGE).pot \
-                               intltool-extract.in \
-                               intltool-merge.in \
-                               intltool-update.in \
-                       ; do echo /$$x; done; \
-               fi; \
-               if test -f $(srcdir)/configure; then \
-                       for x in \
-                               autom4te.cache \
-                               configure \
-                               config.h \
-                               stamp-h1 \
-                               libtool \
-                               config.lt \
-                       ; do echo /$$x; done; \
-               fi; \
-               for x in \
-                       .gitignore \
-                       $(GITIGNOREFILES) \
-                       $(CLEANFILES) \
-                       $(PROGRAMS) \
-                       $(check_PROGRAMS) \
-                       $(EXTRA_PROGRAMS) \
-                       $(LTLIBRARIES) \
-                       so_locations \
-                       .libs _libs \
-                       $(MOSTLYCLEANFILES) \
-                       "*.$(OBJEXT)" \
-                       "*.lo" \
-                       $(DISTCLEANFILES) \
-                       $(am__CONFIG_DISTCLEAN_FILES) \
-                       $(CONFIG_CLEAN_FILES) \
-                       TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
-                       "*.tab.c" \
-                       $(MAINTAINERCLEANFILES) \
-                       $(BUILT_SOURCES) \
-                       $(DEPDIR) \
-                       Makefile \
-                       Makefile.in \
-                       "*.orig" \
-                       "*.rej" \
-                       "*.bak" \
-                       "*~" \
-                       ".*.sw[nop]" \
-                       ".dirstamp" \
-               ; do echo /$$x; done; \
-       } | \
-       sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
-       sed 's@/[.]/@/@g' | \
-       LC_ALL=C sort | uniq > [email protected] && \
-       mv [email protected] $@;
-
-all: $(srcdir)/.gitignore gitignore-recurse-maybe
-gitignore-recurse-maybe:
-       @if test "x$(SUBDIRS)" = "x$(DIST_SUBDIRS)"; then :; else \
-               $(MAKE) $(AM_MAKEFLAGS) gitignore-recurse; \
-       fi;
-gitignore-recurse:
-       @for subdir in $(DIST_SUBDIRS); do \
-         case " $(SUBDIRS) " in \
-           *" $$subdir "*) :;; \
-           *) test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) 
.gitignore gitignore-recurse || echo "Skipping $$subdir");; \
-         esac; \
-       done
-gitignore: $(srcdir)/.gitignore gitignore-recurse
-
-maintainer-clean: gitignore-clean
-gitignore-clean:
-       -rm -f $(srcdir)/.gitignore
-
-.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/install.py 
new/desktop-file-utils-0.28/install.py
--- old/desktop-file-utils-0.26/install.py      2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/install.py      1970-01-01 01:00:00.000000000 
+0100
@@ -1,8 +0,0 @@
-#!/usr/bin/env python3
-
-import os
-
-os.symlink(
-    'desktop-file-install',
-    os.getenv('MESON_INSTALL_DESTDIR_PREFIX') + '/bin/desktop-file-edit'
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/man/Makefile.am 
new/desktop-file-utils-0.28/man/Makefile.am
--- old/desktop-file-utils-0.26/man/Makefile.am 2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/man/Makefile.am 1970-01-01 01:00:00.000000000 
+0100
@@ -1,19 +0,0 @@
-man_MANS =                                     \
-       desktop-file-validate.1                 \
-       desktop-file-install.1                  \
-       update-desktop-database.1
-
-install-exec-hook:
-       test -d $(DESTDIR)$(mandir)/man1 || mkdir -p $(DESTDIR)$(mandir)/man1
-       cd $(DESTDIR)$(mandir)/man1 && \
-       rm -f desktop-file-edit.1 && \
-       $(LN_S) -f desktop-file-install.1 desktop-file-edit.1
-
-uninstall-hook:
-       test -d $(DESTDIR)$(mandir)/man1 && \
-       cd $(DESTDIR)$(mandir)/man1 && \
-       rm -f desktop-file-edit.1
-
-EXTRA_DIST = $(man_MANS)
-
--include $(top_srcdir)/git.mk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/man/desktop-file-validate.1 
new/desktop-file-utils-0.28/man/desktop-file-validate.1
--- old/desktop-file-utils-0.26/man/desktop-file-validate.1     2020-06-19 
14:51:42.508910000 +0200
+++ new/desktop-file-utils-0.28/man/desktop-file-validate.1     2024-10-25 
22:52:48.000000000 +0200
@@ -9,7 +9,7 @@
 .B desktop-file-validate [\-\-no-hints] [\-\-no-warn-deprecated] 
[\-\-warn-kde] FILE...
 .SH DESCRIPTION
 The \fIdesktop-file-validate\fP program is a tool to validate desktop
-entry files according to the Desktop Entry specification 1.4.
+entry files according to the Desktop Entry specification 1.5.
 .PP
 The specification describes a file format to provide information such as
 name, icon and description for an application. Such a file can then be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/man/meson.build 
new/desktop-file-utils-0.28/man/meson.build
--- old/desktop-file-utils-0.26/man/meson.build 2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/man/meson.build 2024-10-25 22:52:48.000000000 
+0200
@@ -1,7 +1,7 @@
 desktop_file_edit_man = configure_file(
   input : 'desktop-file-install.1',
   output: 'desktop-file-edit.1',
-  copy: true,
+  command: ['cp', '@INPUT@', '@OUTPUT@']
 )
 
 install_man([
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/meson.build 
new/desktop-file-utils-0.28/meson.build
--- old/desktop-file-utils-0.26/meson.build     2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/meson.build     2024-10-25 22:52:48.000000000 
+0200
@@ -1,7 +1,7 @@
 project('desktop-file-utils',
   'c',
-  version: '0.26',
-  meson_version: '>=0.49.0',
+  version: '0.28',
+  meson_version: '>=0.61.0',
   default_options: [
     'c_std=gnu11',
   ],
@@ -66,8 +66,8 @@
 ###############################################################################
 # Dependencies
 
-glib = dependency('glib-2.0', version: '>=2.8.0')
-
+glib = dependency('glib-2.0', version: '>=2.26')
+gio = dependency('gio-2.0', version: '>=2.26')
 
 ###############################################################################
 
@@ -75,8 +75,11 @@
 subdir('misc')
 subdir('src')
 
-# This script installs a symlink desktop-file-edit -> desktop-file-install
-meson.add_install_script('install.py')
+install_symlink(
+  'desktop-file-edit',
+  install_dir: 'bin',
+  pointing_to: 'desktop-file-install'
+)
 
 # This script writes git log to Changelog.
 run_target('changelog', command: 'changelog.py')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/misc/Makefile.am 
new/desktop-file-utils-0.28/misc/Makefile.am
--- old/desktop-file-utils-0.26/misc/Makefile.am        2020-06-19 
14:51:42.508910000 +0200
+++ new/desktop-file-utils-0.28/misc/Makefile.am        1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-dist_lisp_DATA = desktop-entry-mode.el
-
--include $(top_srcdir)/git.mk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/misc/desktop-entry-mode.el 
new/desktop-file-utils-0.28/misc/desktop-entry-mode.el
--- old/desktop-file-utils-0.26/misc/desktop-entry-mode.el      2020-06-19 
14:51:42.508910000 +0200
+++ new/desktop-file-utils-0.28/misc/desktop-entry-mode.el      2024-10-25 
22:52:48.000000000 +0200
@@ -168,7 +168,7 @@
   "Expression for matching deprecated desktop entry keys.")
 
 (defconst desktop-entry-group-header-re
-  "^\\[\\(X-[^\][]+\\|\\(?:Desktop \\(?:Entry\\|Action [a-zA-Z]+\\)\\)\\)\\]"
+  "^\\[\\(X-[^\][]+\\|\\(?:Desktop \\(?:Entry\\|Action [a-zA-Z-]+\\)\\)\\)\\]"
   "Regular expression for matching desktop entry group headers.")
 
 (defconst desktop-entry-font-lock-keywords
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/Makefile.am 
new/desktop-file-utils-0.28/src/Makefile.am
--- old/desktop-file-utils-0.26/src/Makefile.am 2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/Makefile.am 1970-01-01 01:00:00.000000000 
+0100
@@ -1,48 +0,0 @@
-bin_PROGRAMS =                                 \
-       desktop-file-validate                   \
-       desktop-file-install                    \
-       update-desktop-database
-
-AM_CPPFLAGS =                                  \
-       $(DESKTOP_FILE_UTILS_CFLAGS)            \
-       -DDATADIR="\"$(datadir)\""              \
-       -D_FILE_OFFSET_BITS=64                  \
-       -D_LARGEFILE64_SOURCE
-
-desktop_file_validate_SOURCES =                        \
-       keyfileutils.c                          \
-       keyfileutils.h                          \
-       mimeutils.c                             \
-       mimeutils.h                             \
-       validate.c                              \
-       validate.h                              \
-       validator.c
-
-desktop_file_install_SOURCES =                 \
-       keyfileutils.c                          \
-       keyfileutils.h                          \
-       mimeutils.c                             \
-       mimeutils.h                             \
-       validate.c                              \
-       validate.h                              \
-       install.c
-
-update_desktop_database_SOURCES =              \
-       mimeutils.c                             \
-       mimeutils.h                             \
-       update-desktop-database.c
-
-desktop_file_validate_LDADD = $(DESKTOP_FILE_UTILS_LIBS)
-desktop_file_install_LDADD = $(DESKTOP_FILE_UTILS_LIBS)
-update_desktop_database_LDADD = $(DESKTOP_FILE_UTILS_LIBS)
-
-install-exec-hook: desktop-file-install
-       cd $(DESTDIR)$(bindir) && \
-       rm -f desktop-file-edit && \
-       $(LN_S) -f desktop-file-install desktop-file-edit
-
-uninstall-hook:
-       cd $(DESTDIR)$(bindir) && \
-       rm -f desktop-file-edit
-
--include $(top_srcdir)/git.mk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/install.c 
new/desktop-file-utils-0.28/src/install.c
--- old/desktop-file-utils-0.26/src/install.c   2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/install.c   2024-10-25 22:52:48.000000000 
+0200
@@ -43,6 +43,7 @@
 static const char** args = NULL;
 static gboolean delete_original = FALSE;
 static gboolean rebuild_mime_info_cache = FALSE;
+static gboolean print_version = FALSE;
 static char *vendor_name = NULL;
 static char *target_dir = NULL;
 static GSList *edit_actions = NULL;
@@ -319,6 +320,15 @@
     NULL
   },
   {
+    "version",
+    '\0',
+    '\0',
+    G_OPTION_ARG_NONE,
+    &print_version,
+    N_("Show the program version"),
+    NULL
+  },
+  {
     "edit-mode",
     '\0',
     G_OPTION_FLAG_HIDDEN, /* just for development purpose */
@@ -837,6 +847,13 @@
   mode_t dir_permissions;
   char *basename;
 
+#ifdef HAVE_PLEDGE
+  if (pledge ("stdio rpath wpath cpath fattr", NULL) == -1) {
+    g_printerr ("pledge\n");
+    return 1;
+  }
+#endif
+
   setlocale (LC_ALL, "");
 
   basename = g_path_get_basename (argv[0]);
@@ -854,6 +871,16 @@
       g_option_group_add_entries (group, install_options);
       g_option_context_add_group (context, group);
     }
+#ifdef HAVE_PLEDGE
+  else
+    {
+      /* In edit mode we can drop the fattr pledge. */
+      if (pledge ("stdio rpath wpath cpath", NULL) == -1) {
+        g_printerr ("pledge in edit_mode\n");
+        return 1;
+      }
+    }
+#endif
 
   group = g_option_group_new ("edit", _("Edition options for desktop file"), 
_("Show desktop file edition options"), NULL, NULL);
   g_option_group_add_entries (group, edit_options);
@@ -870,6 +897,11 @@
     return 1;
   }
 
+  if (print_version) {
+    g_print("desktop-file-install %s\n", VERSION);
+    return 0;
+  }
+
   if (!edit_mode)
     {
       if (vendor_name == NULL && g_getenv ("DESKTOP_FILE_VENDOR"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/meson.build 
new/desktop-file-utils-0.28/src/meson.build
--- old/desktop-file-utils-0.26/src/meson.build 2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/meson.build 2024-10-25 22:52:48.000000000 
+0200
@@ -7,7 +7,7 @@
   'keyfileutils.c',
   'mimeutils.c',
   'validate.c',
-  dependencies: glib,
+  dependencies: [glib, gio],
 )
 
 executable('desktop-file-validate',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/desktop-file-utils-0.26/src/update-desktop-database.c 
new/desktop-file-utils-0.28/src/update-desktop-database.c
--- old/desktop-file-utils-0.26/src/update-desktop-database.c   2020-06-19 
14:51:42.508910000 +0200
+++ new/desktop-file-utils-0.28/src/update-desktop-database.c   2024-10-25 
22:52:48.000000000 +0200
@@ -65,7 +65,7 @@
 static void print_desktop_dirs (const char **dirs);
 
 static GHashTable *mime_types_map = NULL;
-static gboolean verbose = FALSE, quiet = FALSE;
+static gboolean verbose = FALSE, quiet = FALSE, print_version = FALSE;
 
 static void
 list_free_deep (gpointer key, GList *l, gpointer data)
@@ -446,13 +446,17 @@
        N_("Display more information about processing and updating progress"),
        NULL},
 
+     { "version", 0, 0, G_OPTION_ARG_NONE, &print_version,
+       N_("Show the program version"),
+       NULL},
+
      { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &desktop_dirs,
        NULL, N_("[DIRECTORY...]") },
      { NULL }
    };
 
-#if HAVE_PLEDGE
-  if (pledge("stdio rpath wpath cpath fattr", NULL) == -1) {
+#ifdef HAVE_PLEDGE
+  if (pledge ("stdio rpath wpath cpath fattr", NULL) == -1) {
     g_printerr ("pledge\n");
     return 1;
   }
@@ -473,6 +477,11 @@
     return 1;
   }
 
+  if (print_version) {
+    g_print("update-desktop-database %s\n", VERSION);
+    return 0;
+  }
+
   if (desktop_dirs == NULL || desktop_dirs[0] == NULL)
     desktop_dirs = get_default_search_path ();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/validate.c 
new/desktop-file-utils-0.28/src/validate.c
--- old/desktop-file-utils-0.26/src/validate.c  2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/validate.c  2024-10-25 22:52:48.000000000 
+0200
@@ -41,6 +41,7 @@
 
 #include <glib.h>
 #include <glib/gstdio.h>
+#include <gio/gio.h>
 
 #include "keyfileutils.h"
 #include "mimeutils.h"
@@ -124,6 +125,7 @@
   GList       *fsdevice_keys;
   GList       *mimetype_keys;
 
+  GHashTable  *interfaces;
   GHashTable  *action_values;
   GHashTable  *action_groups;
 
@@ -213,6 +215,10 @@
                     const char   *locale_key,
                     const char   *value);
 static gboolean
+handle_implements_key (kf_validator *kf,
+                       const char   *locale_key,
+                       const char   *value);
+static gboolean
 handle_dbus_activatable_key (kf_validator *kf,
                              const char   *locale_key,
                              const char   *value);
@@ -319,13 +325,16 @@
    * specified) */
   { DESKTOP_STRING_LIST_TYPE,       "Actions",           FALSE, FALSE, FALSE, 
handle_actions_key },
   /* Since 1.2 */
-  { DESKTOP_STRING_LIST_TYPE,       "Implements",        FALSE, FALSE, FALSE, 
NULL },
+  { DESKTOP_STRING_LIST_TYPE,       "Implements",        FALSE, FALSE, FALSE, 
handle_implements_key },
 
   { DESKTOP_BOOLEAN_TYPE,           "DBusActivatable",   FALSE, FALSE, FALSE, 
handle_dbus_activatable_key },
 
   /* Since 1.4 */
   { DESKTOP_BOOLEAN_TYPE,           "PrefersNonDefaultGPU", FALSE, FALSE, 
FALSE, NULL },
 
+  /* Since 1.5 */
+  { DESKTOP_BOOLEAN_TYPE,           "SingleMainWindow", FALSE, FALSE, FALSE, 
NULL },
+
   /* Keys reserved for KDE */
 
   /* since 0.9.4 */
@@ -377,7 +386,7 @@
 
 /* This should be the same list as in xdg-specs/menu/menu-spec.xml */
 static const char *show_in_registered[] = {
-    "GNOME", "GNOME-Classic", "GNOME-Flashback", "KDE", "LXDE", "LXQt", 
"MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "EDE", "Cinnamon", "Pantheon", 
"Budgie", "Enlightenment", "Deepin", "Old"
+    "COSMIC", "GNOME", "GNOME-Classic", "GNOME-Flashback", "KDE", "LXDE", 
"LXQt", "MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "EDE", "Cinnamon", 
"Pantheon", "Budgie", "Enlightenment", "DDE", "Endless", "Old"
 };
 
 static struct {
@@ -531,9 +540,12 @@
   { "Documentation",          FALSE, FALSE, FALSE, { NULL }, { NULL } },
   { "Adult",                  FALSE, FALSE, FALSE, { NULL }, { NULL } },
   { "Core",                   FALSE, FALSE, FALSE, { NULL }, { NULL } },
+  { "COSMIC",                 FALSE, FALSE, FALSE, { NULL }, { NULL } },
   { "KDE",                    FALSE, FALSE, FALSE, { NULL }, { "Qt", NULL } },
   { "GNOME",                  FALSE, FALSE, FALSE, { NULL }, { "GTK", NULL } },
   { "XFCE",                   FALSE, FALSE, FALSE, { NULL }, { "GTK", NULL } },
+  { "DDE",                    FALSE, FALSE, FALSE, { NULL }, { "Qt", NULL } },
+  { "LXQt",                   FALSE, FALSE, FALSE, { NULL }, { "Qt", NULL } },
   { "GTK",                    FALSE, FALSE, FALSE, { NULL }, { NULL } },
   { "Qt",                     FALSE, FALSE, FALSE, { NULL }, { NULL } },
   { "Motif",                  FALSE, FALSE, FALSE, { NULL }, { NULL } },
@@ -561,7 +573,7 @@
 #define WARNING_COLOR      (kf->use_colors ? MAGENTA : "")
 #define HINT_COLOR         (kf->use_colors ? YELLOW : "")
 
-static void
+G_GNUC_PRINTF (2, 3) static void
 print_fatal (kf_validator *kf, const char *format, ...)
 {
   va_list args;
@@ -582,7 +594,7 @@
   g_free (str);
 }
 
-static void
+G_GNUC_PRINTF (2, 3) static void
 print_future_fatal (kf_validator *kf, const char *format, ...)
 {
   va_list args;
@@ -601,7 +613,7 @@
   g_free (str);
 }
 
-static void
+G_GNUC_PRINTF (2, 3) static void
 print_warning (kf_validator *kf, const char *format, ...)
 {
   va_list args;
@@ -620,7 +632,7 @@
   g_free (str);
 }
 
-static void
+G_GNUC_PRINTF (2, 3) static void
 print_hint (kf_validator *kf, const char *format, ...)
 {
   va_list args;
@@ -958,6 +970,9 @@
                     const char   *locale_key,
                     const char   *value)
 {
+  if (!strcmp (value, "1.5"))
+    return TRUE;
+
   if (!strcmp (value, "1.4"))
     return TRUE;
 
@@ -1325,8 +1340,8 @@
         if (flag) {
           if (file_uri) {
             print_fatal (kf, "value \"%s\" for key \"%s\" in group \"%s\" "
-                             "may contain at most one \"%f\", \"%u\", "
-                             "\"%F\" or \"%U\" field code\n",
+                             "may contain at most one \"%%f\", \"%%u\", "
+                             "\"%%F\" or \"%%U\" field code\n",
                              value, locale_key, kf->current_group);
             retval = FALSE;
           }
@@ -1340,8 +1355,8 @@
         if (flag) {
           if (file_uri) {
             print_fatal (kf, "value \"%s\" for key \"%s\" in group \"%s\" "
-                             "may contain at most one \"%f\", \"%u\", "
-                             "\"%F\" or \"%U\" field code\n",
+                             "may contain at most one \"%%f\", \"%%u\", "
+                             "\"%%F\" or \"%%U\" field code\n",
                              value, locale_key, kf->current_group);
             retval = FALSE;
           }
@@ -1838,6 +1853,50 @@
   return retval;
 }
 
+/* + DBus interface names. Check they are using a valid format.
+ *   Checked.
+ *
+ * Note that we will check later on (in * validate_actions()) that there is a
+ * "Desktop Action foobar" group for each "foobar" identifier.
+ */
+static gboolean
+handle_implements_key (kf_validator *kf,
+                       const char   *locale_key,
+                       const char   *value)
+{
+  char **interfaces;
+  char  *interface;
+  int    i;
+  gboolean retval;
+
+  retval = TRUE;
+  interfaces = g_strsplit (value, ";", 0);
+
+  for (i = 0; interfaces[i]; i++) {
+    if (!g_dbus_is_interface_name (interfaces[i])) {
+      print_fatal (kf, "value \"%s\" for key \"%s\" in group \"%s\" "
+                       "contains an invalid interface name \"%s\"\n",
+                       value, locale_key, kf->current_group, interfaces[i]);
+      retval = FALSE;
+      break;
+    }
+
+    if (g_hash_table_lookup (kf->interfaces, interfaces[i])) {
+      print_warning (kf, "value \"%s\" for key \"%s\" in group \"%s\" "
+                         "contains interface \"%s\" more than once\n",
+                         value, locale_key, kf->current_group, interfaces[i]);
+      continue;
+    }
+
+    interface = g_strdup (interfaces[i]);
+    g_hash_table_insert (kf->interfaces, interface, interface);
+  }
+
+  g_strfreev (interfaces);
+
+  return retval;
+}
+
 /* + If the file describes a D-Bus activatable service, the filename must be in
  *   reverse-DNS notation, i.e. contain at least two dots including the dot
  *   in ".desktop".
@@ -2459,6 +2518,9 @@
  * + Accept "Desktop Action foobar" group, where foobar is a valid key
  *   name.
  *   Checked.
+ * + Accept a group with the same name as the interface listed in
+ *   "Implements"
+ *   Checked.
  *
  * Note that for "Desktop Action foobar" group, we will check later on (in
  * validate_actions()) that the Actions key contains "foobar".
@@ -2533,6 +2595,9 @@
     }
   }
 
+  if (g_hash_table_lookup (kf->interfaces, group))
+      return TRUE;
+
   print_fatal (kf, "file contains group \"%s\", but groups extending "
                    "the format should start with \"X-\"\n", group);
   return FALSE;
@@ -3122,6 +3187,8 @@
   kf.link_keys        = NULL;
   kf.fsdevice_keys    = NULL;
   kf.mimetype_keys    = NULL;
+  kf.interfaces       = g_hash_table_new_full (g_str_hash, g_str_equal,
+                                               NULL, g_free);
   kf.action_values    = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                NULL, g_free);
   kf.action_groups    = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -3152,6 +3219,7 @@
   g_list_foreach (kf.mimetype_keys, (GFunc) g_free, NULL);
   g_list_free (kf.mimetype_keys);
 
+  g_hash_table_destroy (kf.interfaces);
   g_hash_table_destroy (kf.action_values);
   g_hash_table_destroy (kf.action_groups);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/validate.h 
new/desktop-file-utils-0.28/src/validate.h
--- old/desktop-file-utils-0.26/src/validate.h  2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/validate.h  2024-10-25 22:52:48.000000000 
+0200
@@ -30,7 +30,7 @@
 
 #include <glib.h>
 
-#define CURRENT_SPEC_VERSION "1.4"
+#define CURRENT_SPEC_VERSION "1.5"
 
 #define GROUP_KDE_DESKTOP_ENTRY "KDE Desktop Entry"
 #define GROUP_DESKTOP_ACTION "Desktop Action "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/desktop-file-utils-0.26/src/validator.c 
new/desktop-file-utils-0.28/src/validator.c
--- old/desktop-file-utils-0.26/src/validator.c 2020-06-19 14:51:42.508910000 
+0200
+++ new/desktop-file-utils-0.28/src/validator.c 2024-10-25 22:52:48.000000000 
+0200
@@ -26,19 +26,26 @@
  * USA.
  */
 
+#include <config.h>
 #include <locale.h>
 
+#ifdef HAVE_PLEDGE
+#include <unistd.h>
+#endif
+
 #include "validate.h"
 
 static gboolean   warn_kde = FALSE;
 static gboolean   no_hints = FALSE;
 static gboolean   no_warn_deprecated = FALSE;
+static gboolean   print_version = FALSE;
 static char     **filename = NULL;
 
 static GOptionEntry option_entries[] = {
   { "no-hints", 0, 0, G_OPTION_ARG_NONE, &no_hints, "Do not output hints to 
improve desktop file", NULL },
   { "no-warn-deprecated", 0, 0, G_OPTION_ARG_NONE, &no_warn_deprecated, "Do 
not warn about usage of deprecated items", NULL },
   { "warn-kde", 0, 0, G_OPTION_ARG_NONE, &warn_kde, "Warn if KDE extensions to 
the specification are used", NULL },
+  { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, "Show the program 
version", NULL },
   { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filename, NULL, 
"<desktop-file>..." },
   { NULL }
 };
@@ -51,6 +58,13 @@
   int i;
   gboolean all_valid;
 
+#ifdef HAVE_PLEDGE
+  if (pledge ("stdio rpath", NULL) == -1) {
+    g_printerr ("pledge\n");
+    return 1;
+  }
+#endif
+
   setlocale (LC_ALL, "");
 
   context = g_option_context_new (NULL);
@@ -72,6 +86,11 @@
 
   g_option_context_free (context);
 
+  if (print_version) {
+    g_print("desktop-file-validate %s\n", VERSION);
+    return 0;
+  }
+
   if (filename == NULL || filename[0] == NULL) {
     g_printerr ("See \"%s --help\" for correct usage.\n", g_get_prgname ());
     return 1;

++++++ desktop-file-utils-suse-keys.patch ++++++
--- /var/tmp/diff_new_pack.vvLCFm/_old  2026-05-30 22:54:07.190382556 +0200
+++ /var/tmp/diff_new_pack.vvLCFm/_new  2026-05-30 22:54:07.194382721 +0200
@@ -1,18 +1,19 @@
-diff -r -U 5 a/src/validate.c b/src/validate.c
---- a/src/validate.c   2020-06-19
-+++ b/src/validate.c   2020-06-29
-@@ -324,10 +324,13 @@
-   { DESKTOP_BOOLEAN_TYPE,           "DBusActivatable",   FALSE, FALSE, FALSE, 
handle_dbus_activatable_key },
- 
-   /* Since 1.4 */
-   { DESKTOP_BOOLEAN_TYPE,           "PrefersNonDefaultGPU", FALSE, FALSE, 
FALSE, NULL },
+---
+ src/validate.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+Index: desktop-file-utils-0.28/src/validate.c
+===================================================================
+--- desktop-file-utils-0.28.orig/src/validate.c
++++ desktop-file-utils-0.28/src/validate.c
+@@ -335,6 +335,9 @@ static DesktopKeyDefinition registered_d
+   /* Since 1.5 */
+   { DESKTOP_BOOLEAN_TYPE,           "SingleMainWindow", FALSE, FALSE, FALSE, 
NULL },
  
-+  /* SuSE specific */
++   /* SuSE specific */
 +  { DESKTOP_BOOLEAN_TYPE,      "X-SuSE-translate",  FALSE, FALSE, FALSE, NULL 
},
 +
    /* Keys reserved for KDE */
  
    /* since 0.9.4 */
-   { DESKTOP_STRING_TYPE,            "ServiceTypes",      FALSE, FALSE, TRUE,  
NULL },
-   { DESKTOP_STRING_TYPE,            "DocPath",           FALSE, FALSE, TRUE,  
NULL },
 

Reply via email to