From def11e34d75ea14e4f9f44d75e6da19eba47a7a4 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Thu, 18 Jul 2019 13:35:15 +0000 Subject: user/xdg-utils: fix many papercuts via fd.o MRs --- user/xdg-utils/APKBUILD | 16 ++++++--- user/xdg-utils/xdg-mime-gnome.patch | 40 +++++++++++++++++++++++ user/xdg-utils/xdg-mime-plasma.patch | 61 +++++++++++++++++++++++++++++++++++ user/xdg-utils/xdg-open-failure.patch | 43 ++++++++++++++++++++++++ user/xdg-utils/xdg-open-spaces.patch | 38 ++++++++++++++++++++++ user/xdg-utils/xdg-su-lxqt.patch | 28 ++++++++++++++++ 6 files changed, 222 insertions(+), 4 deletions(-) create mode 100644 user/xdg-utils/xdg-mime-gnome.patch create mode 100644 user/xdg-utils/xdg-mime-plasma.patch create mode 100644 user/xdg-utils/xdg-open-failure.patch create mode 100644 user/xdg-utils/xdg-open-spaces.patch create mode 100644 user/xdg-utils/xdg-su-lxqt.patch diff --git a/user/xdg-utils/APKBUILD b/user/xdg-utils/APKBUILD index 08766dfaa..ff09bfff1 100644 --- a/user/xdg-utils/APKBUILD +++ b/user/xdg-utils/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox pkgname=xdg-utils pkgver=1.1.3 -pkgrel=0 +pkgrel=1 pkgdesc="Basic desktop integration functions" url="https://www.freedesktop.org/wiki/Software/xdg-utils/" arch="noarch" @@ -13,10 +13,14 @@ makedepends="libxml2-utils libxslt lynx xmlto" subpackages="$pkgname-doc" source="https://portland.freedesktop.org/download/xdg-utils-$pkgver.tar.gz xdg-screensaver-mv-T.patch + xdg-mime-gnome.patch + xdg-mime-plasma.patch + xdg-open-failure.patch + xdg-open-spaces.patch + xdg-su-lxqt.patch " build() { - cd "$builddir" ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -28,9 +32,13 @@ build() { } package() { - cd "$builddir" make DESTDIR="$pkgdir" install } sha512sums="d1f819a211eb4104a90dfdc6fedcb640fd46b15ccfc8762266f8f538c49d74cb00027b8c1af991fb2a200acb4379986ae375700e06a2aa08fb41a38f883acb3e xdg-utils-1.1.3.tar.gz -db0896979fbc3b575826b4d732658564d08bcfc957b3fa1490fe02e4cc7b52adfa1e05956432a732dae8f50145e0040bc145739ba5692ae1b86fa74be8174436 xdg-screensaver-mv-T.patch" +db0896979fbc3b575826b4d732658564d08bcfc957b3fa1490fe02e4cc7b52adfa1e05956432a732dae8f50145e0040bc145739ba5692ae1b86fa74be8174436 xdg-screensaver-mv-T.patch +f8a711f349a690a950339574209fdaa6e06ef05644d8c83fd90b0c6abe9f64a457320e02a53c3cf4a68630fe15872c2786189c34014635169c8ba40e5fe0f693 xdg-mime-gnome.patch +0270c722a4655815c7d2c042340c2bc16b1d99d1b1e4f4bf160c549afbd5620b88dfaaf31f2bbd1bafcf8d153f40e72af53006b94651a3a787c0dccec63dbb0c xdg-mime-plasma.patch +17d1941fb81cb8b0bf23817b4d57c603bdcb4abc2919d8c6ce0dff4ce27cc83b33454740c881a67f9d9cb329ba1ea941067fcaca1fc82900d94c540699bf29cd xdg-open-failure.patch +8f3888313dd74a6b6332aa8a41525d517e47bf37450fd361543df06146ed91e8d5a2be9762a10535a557b88f7c3d0c47904b0a250109f7d1a783d9ec30aaba04 xdg-open-spaces.patch +48f7f976cf54741fb8fce7f559a0bfd08567363759e7788b8607066a32b0666e8ba1d4c7d2f9599950df81f0b71bd8114b20e937ece5ad88ec7f378ac8e8a9ac xdg-su-lxqt.patch" diff --git a/user/xdg-utils/xdg-mime-gnome.patch b/user/xdg-utils/xdg-mime-gnome.patch new file mode 100644 index 000000000..327d6968b --- /dev/null +++ b/user/xdg-utils/xdg-mime-gnome.patch @@ -0,0 +1,40 @@ +From 0547886c0a7ae79145998495a6e3af6a1450d0c7 Mon Sep 17 00:00:00 2001 +From: Martin Puppe +Date: Sat, 13 Apr 2019 12:46:44 +0200 +Subject: [PATCH] xdg-mime: return correct exit code for GNOME + +If the desktop environment was GNOME and none of the commands for +detecting the MIME type of a file was available, xdg-mime used to return +exit code 0 even though it failed. The man page says it should return +exit code 3. This commit fixes the issue. + +I have considered returning exit code 4 instead since that is what would +be returned if info_kde() or info_generic() fail to find a tool for MIME +type detection. But I have decided to implement the behavior as +specified in the man page. + +The exit code of an if construct is 0 if no condition +tested true [^1]. The author of the original code probably was not aware +of this. + +[^1]: https://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs +--- + scripts/xdg-mime.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/scripts/xdg-mime.in b/scripts/xdg-mime.in +index 0e567c7..034d0ef 100644 +--- a/scripts/xdg-mime.in ++++ b/scripts/xdg-mime.in +@@ -84,6 +84,8 @@ info_gnome() + elif gnomevfs-info --help 2>/dev/null 1>&2; then + DEBUG 1 "Running gnomevfs-info \"$1\"" + gnomevfs-info --slow-mime "$1" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "// ++ else ++ exit_failure_operation_impossible "no method available for querying MIME type of '$filename'" + fi + + if [ $? -eq 0 ]; then +-- +2.21.0 + diff --git a/user/xdg-utils/xdg-mime-plasma.patch b/user/xdg-utils/xdg-mime-plasma.patch new file mode 100644 index 000000000..38b5f4b28 --- /dev/null +++ b/user/xdg-utils/xdg-mime-plasma.patch @@ -0,0 +1,61 @@ +From cf2a703b19d64f939890dcea79b3bd8d2a9a08fe Mon Sep 17 00:00:00 2001 +From: Ongun Kanat +Date: Fri, 12 Jul 2019 16:22:35 +0200 +Subject: [PATCH] Fix xdg-mime for proper Plasma 5 support + +This adds checks for Plasma 5 and runs kbuildsycoca5 after +updating mimeapps.list file. The path of the file is +detected via qtpaths utility. +--- + scripts/xdg-mime.in | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/scripts/xdg-mime.in b/scripts/xdg-mime.in +index 0e567c7..1ac6a3d 100644 +--- a/scripts/xdg-mime.in ++++ b/scripts/xdg-mime.in +@@ -133,7 +133,10 @@ make_default_kde() + # text/plain=gnome-gedit.desktop;gnu-emacs.desktop; + vendor="$1" + mimetype="$2" +- if [ x"$KDE_SESSION_VERSION" = x"4" ]; then ++ if [ x"$KDE_SESSION_VERSION" = x"5" ]; then ++ default_dir=$(qtpaths --writable-path ConfigLocation) ++ default_file="$default_dir/mimeapps.list" ++ elif [ x"$KDE_SESSION_VERSION" = x"4" ]; then + default_dir=`kde4-config --path xdgdata-apps 2> /dev/null | cut -d ':' -f 1` + default_file="$default_dir/mimeapps.list" + else +@@ -148,7 +151,7 @@ make_default_kde() + DEBUG 1 "Updating $default_file" + mkdir -p "$default_dir" + [ -f "$default_file" ] || touch "$default_file" +- if [ x"$KDE_SESSION_VERSION" = x"4" ]; then ++ if [ x"$KDE_SESSION_VERSION" = x"4" ] || [ x"$KDE_SESSION_VERSION" = x"5" ]; then + [ -f "$default_file" ] || touch "$default_file" + awk -v application="$vendor" -v mimetype="$mimetype" ' + BEGIN { +@@ -207,7 +210,7 @@ make_default_kde() + } + } + ' "$default_file" > "${default_file}.new" && mv "${default_file}.new" "$default_file" +- eval 'kbuildsycoca4'$xdg_redirect_output ++ eval 'kbuildsycoca${KDE_SESSION_VERSION}'$xdg_redirect_output + else + awk -v application="$vendor" -v mimetype="$mimetype" ' + BEGIN { +@@ -576,6 +579,11 @@ if [ "$action" = "makedefault" ]; then + + make_default_kde "$filename" "$mimetype" + make_default_generic "$filename" "$mimetype" ++ detectDE ++ ++ if [ x"$DE" = x"kde" ]; then ++ eval 'kbuildsycoca${KDE_SESSION_VERSION}'$xdg_redirect_output ++ fi + done + exit_success + fi +-- +2.21.0 + diff --git a/user/xdg-utils/xdg-open-failure.patch b/user/xdg-utils/xdg-open-failure.patch new file mode 100644 index 000000000..022d4614d --- /dev/null +++ b/user/xdg-utils/xdg-open-failure.patch @@ -0,0 +1,43 @@ +From 0ad418b2543b532ec82298ac2660d3f222f10882 Mon Sep 17 00:00:00 2001 +From: KARBOWSKI Piotr +Date: Sun, 23 Jun 2019 11:39:40 +0200 +Subject: [PATCH] xdg-open: Exit also on non-zero exit status from 'Exec' + .desktop entry. + +Currently if the tool that was taken out of .desktop file Exec field +will exit with non-zero exit code, xdg-open will then fallback to +open_generic() from search_desktop_file(), which will lead to opening +again the same file with the same tool and ending on opening the file +with web browser. + +This may lead to situation when for example text editor that fails to +write file on exit, will open the unchanged file with web browsr. + +Another real life example is if one were to exit from mpv with +control-C, xdg-open will again start mpv, then it will try to start +x-web-browser and ending with starting a browser from list -- firefox in +my case. + +This must be a bug as it's not docummented anywhere. If we got to the +point where we exec $command_exec then xdg-open must exit even if +whatever was executed by $command_exec returned non-zero exit status. +--- + scripts/xdg-open.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/scripts/xdg-open.in b/scripts/xdg-open.in +index 202f3e3..7cfdde0 100644 +--- a/scripts/xdg-open.in ++++ b/scripts/xdg-open.in +@@ -325,6 +325,8 @@ search_desktop_file() + + if [ $? -eq 0 ]; then + exit_success ++ else ++ exit_failure_operation_failed + fi + fi + +-- +2.21.0 + diff --git a/user/xdg-utils/xdg-open-spaces.patch b/user/xdg-utils/xdg-open-spaces.patch new file mode 100644 index 000000000..7583a9dc3 --- /dev/null +++ b/user/xdg-utils/xdg-open-spaces.patch @@ -0,0 +1,38 @@ +From cc686869e9801b09abc29a3e72718ae0520aa97e Mon Sep 17 00:00:00 2001 +From: Dominik Schmidt +Date: Sat, 8 Dec 2018 19:56:44 +0100 +Subject: [PATCH] xdg-open: Fix unquoted variable expansion when looking for + .desktop files + +The recursive find algorithm for the .desktop files has an unquoted path expansion +in the generic case, when no desktop environment specific tool is found. +Hence, if we have a directory layout containing something along the lines of + + ~/.local/share/applications/foo bar/ + +Then the recursion will expand into searching in: + + * `~/.local/share/applications/foo` + * `~/bar/*` + +instead of `~/.local/share/applications/foo bar/*` +--- + scripts/xdg-open.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/xdg-open.in b/scripts/xdg-open.in +index 202f3e3..b3e0ba9 100644 +--- a/scripts/xdg-open.in ++++ b/scripts/xdg-open.in +@@ -328,7 +328,7 @@ search_desktop_file() + fi + fi + +- for d in $dir/*/; do ++ for d in "$dir"/*/; do + [ -d "$d" ] && search_desktop_file "$default" "$d" "$target" + done + } +-- +2.21.0 + diff --git a/user/xdg-utils/xdg-su-lxqt.patch b/user/xdg-utils/xdg-su-lxqt.patch new file mode 100644 index 000000000..dccc4e214 --- /dev/null +++ b/user/xdg-utils/xdg-su-lxqt.patch @@ -0,0 +1,28 @@ +Upstream-Bug: https://bugzilla.suse.com/show_bug.cgi?id=1120397 +Upstream-Bug: https://github.com/lxqt/lxqt/issues/1653 + +From 132cbff34f00f67a83ea58919a982abe600f25c3 Mon Sep 17 00:00:00 2001 +From: Fabio Pesari +Date: Sun, 7 Jul 2019 13:08:33 +0000 +Subject: [PATCH] xdg-su: Fix escaping for lxqt-sudo + +--- + scripts/xdg-su.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/xdg-su.in b/scripts/xdg-su.in +index b7a9865..65463eb 100644 +--- a/scripts/xdg-su.in ++++ b/scripts/xdg-su.in +@@ -84,7 +84,7 @@ su_lxqt() + if [ $? -eq 0 ] ; then + if [ -z "$user" ] ; then + # -s option runs as su rather then sudo +- $LXQTSU -s "$cmd" ++ $LXQTSU -s $cmd + else + # lxqt-sudo does not support specifying a user + su_generic +-- +2.21.0 + -- cgit v1.2.3-60-g2f50