Page MenuHome GnuPG

No OneTemporary

diff --git a/Makefile.am b/Makefile.am
index 9ca8222c..13a372ef 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,140 +1,139 @@
# Makefile.am - Installer for GnuPG 4 Windows Makefile.
# Copyright (C) 2005, 2008, 2012 g10 Code GmbH
#
# This file is part of GPG4Win.
#
# GPG4Win is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GPG4Win is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = dist-xz no-dist-gzip
DISTCHECK_CONFIGURE_FLAGS = --host=i686-w64-mingw32
if BUILD_GPG4WIN
po = po
else
po =
endif
if BUILD_GPG4WIN
doc = doc
else
doc =
endif
SUBDIRS = ${po} packages ${doc} src
# find patches -type f | sort | sed 's/$/ \\/' | sed 's/^/ /'
# find patches-appimage -type f | sort | sed 's/$/ \\/' | sed 's/^/ /'
EXTRA_DIST = autogen.rc autogen.sh README.GIT ONEWS \
doc/license-page doc/GPLv3 \
build-aux/git-log-footer build-aux/git-log-fix \
docker/appimage/Dockerfile \
docker/build-appimage-docker-image.sh \
docker/build-gpg4win-docker-image.sh \
docker/gpg4win-bullseye/Dockerfile \
docker/run-appimage-build.sh \
docker/run-gpg4win-build.sh \
patches/extra-cmake-modules/0001-Use-BIN_INSTALL_DIR-data-for-DATAROOTDIR-on-Windows.patch \
patches/kconfig/0001-Read-defaults-from-Windows-registry.patch \
patches/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch \
patches/kconfigwidgets/0001-Make-QDbus-optional.patch \
patches/kcoreaddons/0001-Add-KSharedDataCache-for-Windows.patch \
patches/kiconthemes/0001-Make-DBus-optional.patch \
patches/kleopatra/set-windows-registry.patch \
patches/kleopatra/0001-Make-KCMUtils-optional.patch \
patches/kxmlgui/0001-make-qdbus-optional.patch \
patches/kxmlgui/0004-Cruedly-disable-KSendbugmail.patch \
patches/qtbase/0001-Fix-build-without-std-thread.patch \
patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch \
patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch \
patches/qtsvg/CVE-2023-32573-qtsvg-5.15.patch \
patches/qtbase/CVE-2023-32763-qtbase-5.15.diff \
patches/qttools/disable-most-tools.patch \
patches/kcoreaddons/0001-Fix-MINGW-build.patch \
patches/ki18n/0001-Undef-snprintf-for-windows.patch \
patches/kio/0001-WIP-Remove-dependency-to-dbus.patch \
- patches/kservice/0001-Remove-unused-include.patch \
- patches/okular/0001-Build-without-KIOFileWidgets.patch \
- patches/okular/allow-dbus-to-be-disabled.patch \
+ patches/kio/FileManagerWindowJob.patch \
+ patches/okular/lower-cmake-requirement.patch \
patches/okular/0001-Add-GnuPG-specific-manifest-to-okular.patch \
patches/okular/0001-Hack-in-some-aboutdata-for-GnuPG-Edition.patch \
patches/poppler/0001-Explicitly-take-posix-variant-for-mingw-gcc-cross.patch \
patches/kparts/0001-Apply-implicit-android-DBUS-fix-for-Win.patch \
patches/kparts/disable-jobuidelegate.patch \
patches/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch \
patches/jpeg/fix-redefine.patch \
patches-appimage/kleopatra/0001-Make-KCMUtils-optional.patch \
patches-appimage/kleopatra/require-ecm-5.104.patch \
patches-appimage/kmime/set-cxx-standard.patch \
patches-appimage/libkleo/gpg4win-check.patch \
patches-appimage/libkleo/set-cxx-standard.patch \
patches-appimage/okular/0001-Include-stdarg.h-for-va_start-and-va_end.patch \
patches-appimage/okular/0001-Make-KF5Pty-dependency-optional.patch \
patches-appimage/okular/0001-Hack-in-some-aboutdata-for-GnuPG-Edition.patch \
patches-appimage/okular/lower-cmake-requirement.patch \
patches-appimage/poppler/fix-gpg-error-include.patch \
patches-appimage/qtbase/CVE-2023-32763-qtbase-5.15.diff \
patches-appimage/qtsvg/CVE-2023-32573-qtsvg-5.15.patch \
patches-appimage/qtwayland-5.15.0/00-disable-wayland-server.patch
copy-news:
cp NEWS doc/website/NEWS.last
copy-release: gpg4win-$(VERSION).tar.bz2 installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe
@echo Copying $(VERSION) to $(RELEASEHOST) >&2
@set -e;\
if ssh "$$(echo $(RELEASEHOST)|cut -d: -f -1)" \
test -f "$$(echo $(RELEASEHOST)/gpg4win-$(VERSION).exe|cut -d: -f2-)";\
then echo "This release has already been copied to the server" >&2 ;\
else scp gpg4win-$(VERSION).tar.bz2 \
installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe \
installers/gpg4win-src-$(VERSION).exe $(RELEASEHOST)/ ;\
for f in en de ; do \
scp src/README.$$f.txt \
$(RELEASEHOST)/README-$(VERSION).$$f.txt; \
done;\
fi
dist-hook: gen-ChangeLog
gen_start_date = 2012-03-26T00:00:00
.PHONY: gen-ChangeLog
gen-ChangeLog:
set -e; \
if test -d $(top_srcdir)/.git; then \
(cd $(top_srcdir) && \
$(GITLOG_TO_CHANGELOG) --append-dot --tear-off \
--amend=build-aux/git-log-fix \
--since=$(gen_start_date) ) > $(distdir)/cl-t; \
cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\
rm -f $(distdir)/ChangeLog; \
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
download: packages/packages.common packages/packages.4 packages/packages.3
(cd packages; ./download.sh)
msi:
$(MAKE) $(AM_MAKEFLAGS) -C src msi
msi-signed:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-signed
msi-upload:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-upload
diff --git a/packages/packages.common b/packages/packages.common
index bf727fac..60953b18 100644
--- a/packages/packages.common
+++ b/packages/packages.common
@@ -1,571 +1,564 @@
# packages.common - list of packages for use with gpg4win -*- sh -*-
#
# The download script processes the statements here to
# actually download the packages. The syntax is trivial:
#
# If the first non whitespace character of a line is #, the line is
# considered a comment. If the first word of a line is "server", the
# rest of the line will be taken as the base URL for following file
# commands. If the first word of a line is "file" the rest of the
# line will be appended to the current base URL (with a / as
# delimiter). The statement "chk" is followed by the SHA256 checksum of
# the last file.
#
# Third party libraries
#
server ftp://ftp.gnu.org/pub/gnu
# last-changed: 2017-02-15
# by: ah
# verified: Sig 68D9 4D8A AEEA D48A E7DC 5B90 4F49 4A94 2E46 16C2
file libiconv/libiconv-1.15.tar.gz
chk ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
# last-changed: 2021-08-17
# by: ah (checksum added by ik)
# verified: Sig 9001 B85A F9E1 B83D F1BD A942 F5BE 8B26 7C6A 406D
file gettext/gettext-0.21.tar.xz
chk d20fcbb537e02dcf1383197ba05bd0734ef7bf5db06bdb241eb69b7d16b73192
# last-changed: 2023-05-03
# by ah
# verified: verification of checksum from both sf and libpng.org
server https://downloads.sourceforge.net
file libpng/libpng16/1.6.39/libpng-1.6.39.tar.xz
chk 1f4696ce70b4ee5f85f1e1623dc1229b210029fa4b7aee573df3e2ba7b036937
# last-changed: 2023-05-03
# by ah
# verified: verification of checksum from multiple sources
server https://www.ijg.org
name jpeg-9e.tar.gz
file files/jpegsrc.v9e.tar.gz
chk 4077d6a6a75aeb01884f708919d25934c93305e49f7e3f36db9129320e6f4f3d
# last-changed: 2023-05-03
# by ah
# verified: SIG B1FA7D81EEB8E66399178B9733EBBFC47B3DD87D
server https://download.osgeo.org
file libtiff/tiff-4.5.0.tar.xz
chk dafac979c5e7b6c650025569c5a4e720995ba5f17bc17e6276d1f12427be267c
server https://github.com
# last-changed: 2023-05-03
# by ah
# verified: verification of checksum from multiple sources e.g. homebrew
name openjpeg-2.5.0.tar.gz
file uclouvain/openjpeg/archive/refs/tags/v2.5.0.tar.gz
chk 0333806d6adecc6f7a91243b2b839ff4d2053823634d4f6ed7a59bc87409122a
# last-changed: 2023-07-31
# by ah
# verified: verification of checksum from multiple sources e.g. homebrew
file libical/libical/releases/download/v3.0.16/libical-3.0.16.tar.gz
chk b44705dd71ca4538c86fb16248483ab4b48978524fb1da5097bd76aa2e0f0c33
#
# GIMP stuff for W32
#
server http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies
# checked: 2012-03-28 wk - Not updated - not a security problem
name pkgconfig-0.23.tar.gz
file pkg-config-0.23.tar.gz
chk 08a0e072d6a05419a58124db864f0685e6ac96e71b2875bf15ac12714e983b53
name pkgconfig-0.23.zip
file pkg-config_0.23-3_win32.zip
chk 677d6055494e24cad6c49eab33eee618ddc6ed65da827c8b5b7da761b4063278
server https://download.savannah.gnu.org/releases/
# last-changed: 2023-04-19
# by: ah
# verified: SIG E30674707856409FF1948010BE6C3AAC63AD8E3F
file freetype/freetype-2.13.0.tar.xz
chk 5ee23abd047636c24b2d43c6625dcafc66661d1aca64dec9e0d05df29592624c
#
# SQLite
#
server https://www.sqlite.org
# last changed: 2021-09-20
# by: ik
# verified: SHA1 checksum on https://web.archive.org/web/20190228201545/https://www.sqlite.org/download.html
name sqlite-3.27.2.tar.gz
file 2019/sqlite-autoconf-3270200.tar.gz
chk 50c39e85ea28b5ecfdb3f9e860afe9ba606381e21836b2849efca6a0bfe6ef6e
#
# GnuPG et al.
#
# All tarballs from this server are verified with an openpgp
# signature made by "Werner Koch (dist sig)" or one of the other
# gnupg main contributors.
# Server changed from ftp to https by wk 2021-09-22
server https://gnupg.org/ftp/gcrypt
# last-changed: 2022-04-07
# by: wk
# verified: swdb
file zlib/zlib-1.2.12.tar.gz
chk 91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9
# Stripped down version of BZIP2
# (full source at http://bzip.org)
# checked: 2014-07-16 ah
file bzip2/bzip2-1.0.6-g10.tar.gz
chk c2a9b3aec1a38d34b66106116a39f64b01d84f475fef75c40ea0bda0ea67ed07
# last changed 2023-04-11
# by wk
# verified: swdb
file libgpg-error/libgpg-error-1.47.tar.bz2
chk 9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb
# last-changed: 2023-06-19
# by: wk
# verified: build tree
file libassuan/libassuan-2.5.6.tar.bz2
chk e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426
# last changed 2021-09-20
# by ik
# verified: distsigkey.gpg
file npth/npth-1.6.tar.bz2
chk 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1
# last changed 2023-06-19
# by wk
# verified: build tree
file libksba/libksba-1.6.4.tar.bz2
chk bbb43f032b9164d86c781ffe42213a83bf4f2fee91455edfa4654521b8b03b6b
# last changed 2022-04-07
# by wk
# verified: swdb
file ntbtls/ntbtls-0.3.1.tar.bz2
chk 8922181fef523b77b71625e562e4d69532278eabbd18bc74579dbe14135729ba
#name gnupg-msi-2.3.1-beta18-20210420-src.tar.xz
#file binary/gnupg-w32-2.3.1_20210420.tar.xz
#chk e1a2dc705c940938b7bf7a17f521a41b1ef14139acd8860b2fd59aed2750aa3b
#name gnupg-msi-2.3.1-20210420-bin.wixlib
#file binary/gnupg-w32-2.3.1_20210420.wixlib
#chk 133817a4c4d11996956676c5c200222839ee5dc16e9476bd682d4e68b33ef73e
# pinentry
# last changed: 2022-08-24
# by: wk
# verified: swdb
file pinentry/pinentry-1.2.1.tar.bz2
chk 457a185e5a85238fb945a955dc6352ab962dc8b48720b62fc9fa48c7540a4067
# last changed 2023-07-07
# by wk
# verified: [build tree]
#file gpgme/gpgme-1.21.0.tar.bz2
#chk 416e174e165734d84806253f8c96bda2993fd07f258c3aad5f053a6efd463e88
# last changed: 2021-01-07
# by: ah
file scute/scute-1.7.0.tar.bz2
chk 437fe758b27c243a5ee2535c6b065ea1d09f2c9a02d83567d2f934bb6395c249
# GpgOL
# last-changed: 2023-07-07
# by: ah
# verified: build tree
file gpgol/gpgol-2.5.8.tar.bz2
chk b737f2b246bec2ace6316649ca12da9825c854f9c48e6c829e670c9c2dd99789
#
# GpgEX
#
# last-changed: 2022-11-18
# by: ah
# verified: distsigkey.gpg
#file gpgex/gpgex-1.0.10-beta5.tar.bz2
#chk f7e4c619aefed02dfbb07363a4435878a50999b290c60779e670fceb826e283e
#
# GnuPG utilities
#
server http://www.jabberwocky.com/software/paperkey
# last-changed: 2017-12-05
# by: ah
# verified: SIG 7D92 FD31 3AB6 F373 4CC5 9CA1 DB69 8D71 9924 2560
file paperkey-1.5.tar.gz
chk c4737943083ce92e41faf13c27a9d608105b6285c0840dfb684a7ee294142ddf
#
# Kleopatra and dependencies
#
# Qt base
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtbase-everywhere-opensource-src-5.15.9.tar.xz.sha256
server http://download.qt.io/official_releases/qt/
name qtbase-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtbase-everywhere-opensource-src-5.15.9.tar.xz
chk 1947deb9d98aaf46bf47e6659b3e1444ce6616974470523756c082041d396d1e
# Qt Tools
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qttools-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qttools-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qttools-everywhere-opensource-src-5.15.9.tar.xz
chk 40dce7845bc156dce7878b304e05b19f1ce7dedd4221c67af3bdf0138196006d
# Qt Winextras
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtwinextras-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtwinextras-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtwinextras-everywhere-opensource-src-5.15.9.tar.xz
chk ea5107105b2072ea7194c16cc0721212f28f77c484ce38b370aaa78bfca45798
# Qt X11 extras
# last changed: 2021-09-20
# by: ik
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtx11extras-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtx11extras-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtx11extras-everywhere-opensource-src-5.15.9.tar.xz
chk 7ba3123de7b4ff87d02f513ffa1e4c4284e8f882563d114f29cb98d4c00fcbdb
# Qt WaylandClient
# last changed: 2021-09-21
# by: ik
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtwayland-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtwayland-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtwayland-everywhere-opensource-src-5.15.9.tar.xz
chk b719baf33068f3b92309ac610c3b7ed70edb5bf1e8fa07eefc7cbae6ab6a3c12
# Qt svg
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtsvg-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtsvg-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtsvg-everywhere-opensource-src-5.15.9.tar.xz
chk 881f75d3c4a29a4ef88202763115c19d4869af2638227e9c3474e422639abb5a
# Qt translations
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qttranslations-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qttranslations-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qttranslations-everywhere-opensource-src-5.15.9.tar.xz
chk 35f4c4496e8a1f0605b3fb2e28c4b08e191796c9c03c32175a608e9c4dc4bb60
# KDE Frameworks generated by gen-frameworks.sh
# When outdated activate this link:
#server https://download.kde.org/Attic/frameworks/
server https://download.kde.org/stable/frameworks
##### Paste Here #####
#
# Don't forget to update gpg4win.mk.in with new version numbers
-#
# extra-cmake-modules
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/extra-cmake-modules-5.104.0.tar.xz
-chk e49eb21fdb66634b84cccbf6ba65eae3f8e0eee0dc72d50f627280f49df585d9
+file 5.109/extra-cmake-modules-5.109.0.tar.xz
+chk 1526b557cf9718e4d3bf31ff241578178d1ee60bdfb863110c97d43d478b7fb7
+
+# kactivities
+# last changed: 2023-08-23
+# by: ah
+# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
+file 5.109/kactivities-5.109.0.tar.xz
+chk 1c7eef71a887c612af89ec6813282a13dcc1a9b0762c59412a8ef8b5419a52f1
# kconfig
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kconfig-5.104.0.tar.xz
-chk b8e7a6b7b0e78e3eb01755a965d893bd95c231befeff10479243e5a182ec2938
+file 5.109/kconfig-5.109.0.tar.xz
+chk 5ba91551fb682d3e1d536bc3735b56cecaa57bb698ab32dd8f662e1cc78f7ad8
# ki18n
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/ki18n-5.104.0.tar.xz
-chk fe815b9e28c680fa472c7ab56e4d7934a8915f19409734a13433797a4be14ee1
+file 5.109/ki18n-5.109.0.tar.xz
+chk dd8b6cb94b082c1e2e564199315cb08c982edb22a27ec0db481884c48b5cdf45
# kwidgetsaddons
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kwidgetsaddons-5.104.0.tar.xz
-chk 4abbb552cd43e51ad2070d8780ca7112e2c9771c2258734ae4a97712b9123120
+file 5.109/kwidgetsaddons-5.109.0.tar.xz
+chk d68072f9f351b71a09c86f2856aaa6b6883e4681e542111c42faa1219692e2e2
# kcompletion
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kcompletion-5.104.0.tar.xz
-chk b0ed0246871283df04c62f0df2b221e32911cb4d292d5ae42f860958032eb510
+file 5.109/kcompletion-5.109.0.tar.xz
+chk 72c4a602664b88f16d138cd36a709afbee86a555609232084e29ddb0c2a4aaf1
# kwindowsystem
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kwindowsystem-5.104.0.tar.xz
-chk 6b10ee354ebb7d2dfd6baa1374929d30811f8169c8233e55849e31e38e6af81a
+file 5.109/kwindowsystem-5.109.0.tar.xz
+chk 088075c9ff367b5b53b6ecdd34dcf8a47a4cf47458ef02fd9d8df3266679c1a2
# kcoreaddons
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kcoreaddons-5.104.0.tar.xz
-chk ed760d4a7fed6c03480dcc3cfe621a49ac5ca9853c846080afe393f7ce794e40
+file 5.109/kcoreaddons-5.109.0.tar.xz
+chk ff647fc1d4dd62370f261854af0870f2a1c7ba7abe7e276e5a4c42d923f15300
# kcodecs
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kcodecs-5.104.0.tar.xz
-chk 7ec909f6865eba87a99b046a9aeaa6a83c01308ad1dda87be3f69e91a7909d6b
+file 5.109/kcodecs-5.109.0.tar.xz
+chk 9648fe05222c0755441a2091e4f97fd7b65649bcbaa2fb8c120e90d9c8934ca5
# kconfigwidgets
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kconfigwidgets-5.104.0.tar.xz
-chk eb9014b813a1c8a18c78ef11be296964b31338e5237080a74234bf97ead64522
+file 5.109/kconfigwidgets-5.109.0.tar.xz
+chk 1e67fa94fd1a91ceb7800061b80e7a498d8031b75d8baabe1099e9e62cd614bf
# kdbusaddons
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kdbusaddons-5.104.0.tar.xz
-chk 4c6add0481c407bc3768729e27e8644feba748c333872e62aaa3260338fd56b4
+file 5.109/kdbusaddons-5.109.0.tar.xz
+chk 251876bc1a0006741a32406bf52d4f0034f69c4dec9842a47353f5221965f035
# kxmlgui
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kxmlgui-5.104.0.tar.xz
-chk f45d5a5411b3ca0197c1e4720c27c7d85e351aeee03aca861066e8db3c7c93e6
+file 5.109/kxmlgui-5.109.0.tar.xz
+chk b4094d33bfb381a07506ac0eb6844ecee3d45e63ab8596587fd0e883259adaee
# kguiaddons
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kguiaddons-5.104.0.tar.xz
-chk fb8d8de25b684af6f9e9e893912664a18231486ac995d2522676018c3e93840d
+file 5.109/kguiaddons-5.109.0.tar.xz
+chk 207d66c3b1b2630f366cb6bab408be60e3f8299ac56be35b24a3c8f336ce7fbd
# kitemviews
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kitemviews-5.104.0.tar.xz
-chk 94920dc68c187319fa79c64e194e9ebecaef8c97fc4bd6aba342c18bc75a48bc
+file 5.109/kitemviews-5.109.0.tar.xz
+chk 4d59fbb9f07737a9d104abf6678e3ac3433885eca379d180b1b22f2514d8c2a9
# kitemmodels
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kitemmodels-5.104.0.tar.xz
-chk 0bac2fe2fc607443e3332911655ced5dd309e346f2f6a2ff3f29b2f45b7b18d7
+file 5.109/kitemmodels-5.109.0.tar.xz
+chk 16f0e59a76368524ebdc90cce62e4cead41142953889312aab0ee157b53ab0f0
# kiconthemes
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kiconthemes-5.104.0.tar.xz
-chk 70f4d9f950acdaa28b539838226ed1cff7e70cdcf177272185bac7c75a6cccdf
+file 5.109/kiconthemes-5.109.0.tar.xz
+chk d319fbb3dbe8e08022690683b7fe27359dd2b036ea52e10f767a63354f68e66c
# breeze-icons
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/breeze-icons-5.104.0.tar.xz
-chk ff2dacc3fb6f1c7acd378638329f2e5b5fc4fdb3dab1321716d2d54b32eaae6a
+file 5.109/breeze-icons-5.109.0.tar.xz
+chk e07a0be85f4fe67576204339be9ac9c6809618b16963fb147d59a325380c54b2
# karchive
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/karchive-5.104.0.tar.xz
-chk b62f3dfe68691ad2917d0592d66ffc02cfbcc7571b7d1fb1d3fadd695534fd2e
+file 5.109/karchive-5.109.0.tar.xz
+chk 9c4a01c2e4190824e901d487aaa8ce6b2731aa8254fddd9c1a25ee1d1bbbc966
# kcrash
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kcrash-5.104.0.tar.xz
-chk 12d6004f9e2e51a9d74f044462753dd7410e10a40a1f6b07727dcd5b52a7ea96
+file 5.109/kcrash-5.109.0.tar.xz
+chk 2e96d147803f4fb4f9a3affc9ebf69149d221ab49e78f8561ef80cdcf5b276fb
# kio
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kio-5.104.0.tar.xz
-chk 5a8b93a5de72406fc4cc7b9aa4715be6d1d5264e617b26be257f5d0e26dde310
+file 5.109/kio-5.109.0.tar.xz
+chk f65a69ef167f5932c4f0f662ff8eb150aba36476fbcbd806744320a1049c0c62
# kbookmarks
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kbookmarks-5.104.0.tar.xz
-chk 85e565590233cfc6dc8c3459717c327961e79c74199d4d1c2741b40946936354
+file 5.109/kbookmarks-5.109.0.tar.xz
+chk 4d979b6b2504c80f2b4db7451ed82eac083d67641607146b9f897f3f04d01f06
# kservice
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kservice-5.104.0.tar.xz
-chk 215b109738ea5a10f97c4abbd3c9b9da58c826127708eddd34af345b4e8ad8a3
+file 5.109/kservice-5.109.0.tar.xz
+chk 5eefe87a080d88d2e8d60bc19e49ef925ab4c2c3cdffb29edb63eb91db3a6995
# solid
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/solid-5.104.0.tar.xz
-chk 2a9a33bc71b4cafec35b9692bd7681a736eeb4e4b81c25f5bd87dbec38c143cf
+file 5.109/solid-5.109.0.tar.xz
+chk bc4dfb6d1792711a48745ddb3698ed764da86fca1f79a1b931072e910b4bd569
# kjobwidgets
-# last changed: 2023-03-22
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kjobwidgets-5.104.0.tar.xz
-chk 3b254124d3bf20666a514710fef8990325da2ade14f49368b1bed1256eb8fea1
+file 5.109/kjobwidgets-5.109.0.tar.xz
+chk 860ed5b80d868c42ff957c9d1003d542f9b7fe026c877786dc14969d50a7c2b7
# threadweaver
-# last changed: 2023-04-19
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/threadweaver-5.104.0.tar.xz
-chk 963decfdf0cf780406eb585efdb213539a00cd16ae4dff2b2ffe8822a609a647
+file 5.109/threadweaver-5.109.0.tar.xz
+chk 7274529540c4f478519271655a409e4d89c297683eab531a764cf2e5b8c2d2e0
# kparts
-# last changed: 2023-04-19
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kparts-5.104.0.tar.xz
-chk 66a40646cc4890669991cc63d33803ec335b0c08b7aeb0476b2a852951e700cd
+file 5.109/kparts-5.109.0.tar.xz
+chk 6b1da5f8c00c2204e9da1eb6767e00f72a966d1152073515bb677f0e7734f79e
# ktextwidgets
-# last changed: 2023-05-08
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/ktextwidgets-5.104.0.tar.xz
-chk 48fe28cbe8a54b1227a0ce502c3f4534e46789a4988db44b2e5f362ee2e17dea
+file 5.109/ktextwidgets-5.109.0.tar.xz
+chk 380d02e7deefe33cb0ca8c5125dd1e1636510a0843b455a999be2c45571e1da0
# sonnet
-# last changed: 2023-05-08
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/sonnet-5.104.0.tar.xz
-chk 17276e51f0f4ac2f8745796db135d3143f2f91ee3fc8fb823c94072de5c0b953
-
-# kauth
-# last changed: 2023-06-05
-# by: ikloecker
-# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kauth-5.104.0.tar.xz
-chk 614086598e66c1f136e5a6296f358548509e0e868f62a03c97ade73d9b7d581e
-
-# kactivities
-# last changed: 2023-07-03
-# by: ikloecker
-# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kactivities-5.104.0.tar.xz
-chk 29c31525763a44def441fed012af951fe424bd9a88892701ddf16d84f0917953
+file 5.109/sonnet-5.109.0.tar.xz
+chk 593ba654a8b5f61af95fec3fd0b269a8f5e89dbed54d62aafb41a0ce0146eeba
# kcalendarcore
-# last changed: 2023-07-31
+# last changed: 2023-08-23
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
-file 5.104/kcalendarcore-5.104.0.tar.xz
-chk 8e1037bf7af35799a33fd0cf05b4dc57b5a07d9cac3f14ba5671beaf66ca1432
+file 5.109/kcalendarcore-5.109.0.tar.xz
+chk 8581e0e2ac540ce4c8ea76fb61c61234c85c3c908e70b8b5afd0b8ca244edad4
+
### END PASTE ###
server http://download.kde.org/stable/release-service/
# kmime
# last changed: 2022-02-01
# by: ah
# verified: PGP Sig D81C0CB38EB725EF6691C385BB463350D6EF31EF
#file 21.12.1/src/kmime-21.12.1.tar.xz
#chk c1f4c06c61f6b4ddde7395b1cfb1f2411a32638e09c6f0a58c6557a7dffe4120
#
# Snapshots stored on the GnuPG server
#
server https://gnupg.org/ftp/gcrypt/snapshots
# gpgme
# last changed: 2023-08-23
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpgme/gpgme-1.22.1-beta6.tar.xz
chk d020907abc8b855171719a8ed568eb4775a310a56f4e145bef30794a6f188e82
# gpgex
# last changed: 2022-12-06
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpgex/gpgex-1.0.10-beta5.tar.xz
chk 2c227634528ef76bcca7fd4b7fe5c38a535f6e68bbe5b2cdc6cc4a74810b2dba
# gpg4win-tools
# last changed: 2023-06-21
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpg4win-tools/gpg4win-tools-202306211455.tar.xz
chk d62e15b63c3837277c99548933ec2bc17d38af3d09fccb468b590951d934ea7a
# kmime
# last changed: 2023-03-22
# by: aheinecke
# verified: Tarball created by aheinecke.
file kmime/kmime-202303221649.tar.xz
chk 0a26c6b7a1b921191e52ee17d8d131f606a1def9ed09e31074a1c7aed5c4c6b7
# mimetreeparser
# last changed: 2023-08-07
# by: aheinecke
# verified: Tarball created by aheinecke.
file mimetreeparser/mimetreeparser-202308071613.tar.xz
chk 2d249a20d5bf5b92eb2c3fb3fc59804e4c52a5f58bf52d0b6fa5a3fd756052b7
# libkleo
# last changed: 2023-08-07
# by: aheinecke
# verified: Tarball created by aheinecke.
file libkleo/libkleo-202308071611.tar.xz
chk b6fb079304ad6699a4722d388e0afeaad56d9ee4c62cf012dc435304309621d5
# kleopatra
# last changed: 2023-08-09
# by: aheinecke
# verified: Tarball created by aheinecke.
file kleopatra/kleopatra-202308091451.tar.xz
chk 4a4c53e5750bbb989bbc02cc215647ecccc71e610d31518703ac8629712ec2cc
# Okular and dependencies
# poppler
# last changed: 2023-08-23
# by: aheinecke
# verified: Tarball created by aheinecke.
file poppler/poppler-202308231008.tar.xz
chk 71fa1409aa6f1c5186c8acdac9ac2d282adb3dd7d97adc0d0eb1586976e91577
# okular
# last changed: 2023-08-23
# by: aheinecke
# verified: Tarball created by aheinecke.
file okular/okular-202308231007.tar.xz
chk ac4e68aca36761496d237a68f77ac7b24e24a5b71554132552c8d096f4b8dc02
diff --git a/patches/kio/0001-WIP-Remove-dependency-to-dbus.patch b/patches/kio/0001-WIP-Remove-dependency-to-dbus.patch
index 048771b4..3abb7b1c 100755
--- a/patches/kio/0001-WIP-Remove-dependency-to-dbus.patch
+++ b/patches/kio/0001-WIP-Remove-dependency-to-dbus.patch
@@ -1,466 +1,450 @@
#! /bin/sh
patch -p1 -l -f $* < $0
exit $?
From 765b8d246b1703590fd77f6ceae54676e54a90d5 Mon Sep 17 00:00:00 2001
From: Andre Heinecke <aheinecke@gnupg.org>
Date: Wed, 3 May 2023 11:29:23 +0200
Subject: [PATCH] WIP: Remove dependency to dbus
This makes heavy use of the already existing code for Android
---
CMakeLists.txt | 13 +++++++----
KF5KIOConfig.cmake.in | 6 +++--
src/CMakeLists.txt | 10 +++++---
src/core/CMakeLists.txt | 2 +-
src/core/desktopexecparser.cpp | 6 ++---
src/filewidgets/knewfilemenu.cpp | 2 ++
src/gui/dbusactivationrunner.cpp | 6 ++---
src/gui/kprocessrunner.cpp | 4 ++--
src/ioslaves/CMakeLists.txt | 2 +-
src/ioslaves/file/CMakeLists.txt | 8 ++++++-
src/ioslaves/file/file.cpp | 2 ++
src/widgets/CMakeLists.txt | 38 ++++++++++++++++++-------------
src/widgets/fileundomanager.cpp | 8 +++++++
src/widgets/kpropertiesdialog.cpp | 6 +++++
src/widgets/paste.cpp | 2 ++
15 files changed, 78 insertions(+), 37 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a1f4b408..6ad953bbe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,8 +67,11 @@ find_package(KF5I18n ${KF_DEP_VERSION} REQUIRED)
find_package(KF5Service ${KF_DEP_VERSION} REQUIRED)
find_package(KF5DocTools ${KF_DEP_VERSION})
find_package(KF5Solid ${KF_DEP_VERSION} REQUIRED) # for kio_trash
+
if (NOT ANDROID)
find_package(KF5Crash ${KF_DEP_VERSION} REQUIRED)
+endif()
+if (NOT ANDROID AND NOT WIN32)
find_package(KF5DBusAddons ${KF_DEP_VERSION} REQUIRED)
endif()
@@ -102,7 +105,7 @@ set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Provides tools to gen
set(REQUIRED_QT_VERSION 5.15.2)
find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets Network Concurrent Xml Test)
-if (NOT ANDROID)
+if (NOT ANDROID AND NOT WIN32)
find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus)
endif()
@@ -145,7 +148,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(HAVE_LIB_MOUNT ${LibMount_FOUND})
endif()
-if (ANDROID)
+if (ANDROID OR WIN32)
# used to mark code that is just stubbed out on Android for now
# and that would still need a decision on how to deal with that
add_definitions(-DKIO_ANDROID_STUB)
diff --git a/KF5KIOConfig.cmake.in b/KF5KIOConfig.cmake.in
index 5e3fa3884..99c343e66 100644
--- a/KF5KIOConfig.cmake.in
+++ b/KF5KIOConfig.cmake.in
@@ -25,8 +25,10 @@ if (NOT @KIOCORE_ONLY@)
find_dependency(KF5GuiAddons "@KF_DEP_VERSION@")
find_dependency(KF5IconThemes "@KF_DEP_VERSION@")
- if (NOT ANDROID)
+ if (NOT ANDROID AND NOT WIN32)
find_dependency(KF5DBusAddons "@KF_DEP_VERSION@")
+ endif()
+ if (NOT ANDROID)
find_dependency(KF5Crash "@KF_DEP_VERSION@")
endif()
@@ -40,7 +42,7 @@ find_dependency(Qt@QT_MAJOR_VERSION@Network "@REQUIRED_QT_VERSION@")
if (NOT @KIO_NO_PUBLIC_QTCONCURRENT@)
find_dependency(Qt@QT_MAJOR_VERSION@Concurrent "@REQUIRED_QT_VERSION@")
endif()
-if (NOT ANDROID)
+if (NOT ANDROID AND NOT WIN32)
find_dependency(Qt@QT_MAJOR_VERSION@DBus "@REQUIRED_QT_VERSION@")
endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6e402ce74..91e9d8dee 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -4,7 +4,9 @@ add_subdirectory(core)
add_subdirectory(protocoltojson)
add_subdirectory(kntlm)
if (NOT ANDROID)
- add_subdirectory(ioslaves)
+add_subdirectory(ioslaves)
+endif()
+if (NOT ANDROID AND NOT WIN32)
add_subdirectory(kioworkers)
add_subdirectory(kiod)
add_subdirectory(kssld)
@@ -16,8 +18,10 @@ if (NOT KIOCORE_ONLY)
add_subdirectory(gui)
add_subdirectory(widgets)
if (NOT ANDROID)
- add_subdirectory(kpasswdserver)
+endif()
+if (NOT ANDROID AND NOT WIN32)
add_subdirectory(filewidgets)
+ add_subdirectory(kpasswdserver)
add_subdirectory(kioexec)
add_subdirectory(urifilters)
add_subdirectory(kcms)
@@ -41,7 +45,7 @@ set(NON_KIOCORE_LINK_QCHS
KF5WindowSystem_QCH
)
-if(BUILD_DESIGNERPLUGIN AND NOT ANDROID)
+if(BUILD_DESIGNERPLUGIN AND NOT ANDROID AND NOT WIN32)
add_subdirectory(designer)
endif()
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index ddfdc0216..f12eb2cca 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -99,7 +99,7 @@ target_sources(KF5KIOCore PRIVATE
kfilefilter.cpp
)
-if (NOT ANDROID)
+if (NOT ANDROID AND NOT WIN32)
target_sources(KF5KIOCore PRIVATE
tcpslavebase.cpp
tcpworkerbase.cpp
diff --git a/src/core/desktopexecparser.cpp b/src/core/desktopexecparser.cpp
index be7580d5e..e28e5773b 100644
--- a/src/core/desktopexecparser.cpp
+++ b/src/core/desktopexecparser.cpp
@@ -8,7 +8,7 @@
*/
#include "desktopexecparser.h"
-#ifndef Q_OS_ANDROID
+#if !defined(Q_OS_ANDROID) && !defined(Q_OS_WIN)
#include "kiofuse_interface.h"
#endif
@@ -22,7 +22,7 @@
#include <KShell>
#include <kprotocolinfo.h> // KF6 TODO remove after moving hasSchemeHandler to OpenUrlJob
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
#include <QDBusConnection>
#include <QDBusReply>
#endif
@@ -404,7 +404,7 @@ QStringList KIO::DesktopExecParser::resultingArguments() const
// Check if we need kioexec, or KIOFuse
bool useKioexec = false;
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
org::kde::KIOFuse::VFS kiofuse_iface(QStringLiteral("org.kde.KIOFuse"), QStringLiteral("/org/kde/KIOFuse"), QDBusConnection::sessionBus());
struct MountRequest {
QDBusPendingReply<QString> reply;
diff --git a/src/filewidgets/knewfilemenu.cpp b/src/filewidgets/knewfilemenu.cpp
index 98dd382dc..f372d6e49 100644
--- a/src/filewidgets/knewfilemenu.cpp
+++ b/src/filewidgets/knewfilemenu.cpp
@@ -1598,8 +1598,10 @@ void KNewFileMenu::slotResult(KJob *job)
}
Q_EMIT fileCreated(destUrl);
} else if (KIO::SimpleJob *simpleJob = ::qobject_cast<KIO::SimpleJob *>(job)) {
+#ifdef QT_DBUS_LIB
// Called in the storedPut() case
org::kde::KDirNotify::emitFilesAdded(simpleJob->url().adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash));
+#endif
Q_EMIT fileCreated(simpleJob->url());
}
}
diff --git a/src/gui/dbusactivationrunner.cpp b/src/gui/dbusactivationrunner.cpp
index b60c2f0ab..d5fea1776 100644
--- a/src/gui/dbusactivationrunner.cpp
+++ b/src/gui/dbusactivationrunner.cpp
@@ -10,7 +10,7 @@
#include "kiogui_debug.h"
#include <KWindowSystem>
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
#include <QDBusConnection>
#include <QDBusConnectionInterface>
#include <QDBusMessage>
@@ -47,7 +47,7 @@ DBusActivationRunner::DBusActivationRunner(const QString &action)
void DBusActivationRunner::startProcess()
{
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
// DBusActivatable as per https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#dbus
const QString objectPath = QStringLiteral("/%1").arg(m_desktopName).replace(QLatin1Char('.'), QLatin1Char('/'));
const QString interface = QStringLiteral("org.freedesktop.Application");
@@ -98,7 +98,7 @@ void DBusActivationRunner::startProcess()
bool DBusActivationRunner::waitForStarted(int timeout)
{
-#ifndef Q_OS_ANDROID
+#ifndef QT_DBUS_LIB
if (m_finished) {
return m_pid != 0;
}
diff --git a/src/gui/kprocessrunner.cpp b/src/gui/kprocessrunner.cpp
index b97079c24..5d7d8e5d4 100644
--- a/src/gui/kprocessrunner.cpp
+++ b/src/gui/kprocessrunner.cpp
@@ -22,7 +22,7 @@
#include <KLocalizedString>
#include <KWindowSystem>
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
#include <QDBusConnection>
#include <QDBusInterface>
#include <QDBusReply>
-@@ -108,7 +108,7 @@ KProcessRunner *KProcessRunner::fromApplication(const KService::Ptr &service,
+@@ -119,7 +119,7 @@
qCDebug(KIO_GUI) << "Starting process:" << args;
*instance->m_process << args;
-#ifndef Q_OS_ANDROID
+#ifdef QT_DBUS_LIB
- enum DiscreteGpuCheck { NotChecked, Present, Absent };
- static DiscreteGpuCheck s_gpuCheck = NotChecked;
-
+ if (service->runOnDiscreteGpu()) {
+ modifyEnv(*instance->m_process, KIO::discreteGpuEnvironment());
+ }
diff --git a/src/ioslaves/CMakeLists.txt b/src/ioslaves/CMakeLists.txt
index 91a838f59..975b50417 100644
--- a/src/ioslaves/CMakeLists.txt
+++ b/src/ioslaves/CMakeLists.txt
@@ -2,6 +2,6 @@
add_subdirectory( file )
# Currently kio_trash doesn't work on Android
-if (NOT ANDROID)
+if (NOT ANDROID AND NOT WIN32)
add_subdirectory(trash)
endif()
diff --git a/src/ioslaves/file/CMakeLists.txt b/src/ioslaves/file/CMakeLists.txt
index 88aa3964e..fb6baa738 100644
--- a/src/ioslaves/file/CMakeLists.txt
+++ b/src/ioslaves/file/CMakeLists.txt
@@ -28,7 +28,13 @@ ecm_qt_export_logging_category(
EXPORT KIO
)
-target_link_libraries(kio_file KF5::KIOCore KF5::I18n KF5::ConfigCore Qt${QT_MAJOR_VERSION}::DBus Qt${QT_MAJOR_VERSION}::Network)
+target_link_libraries(kio_file KF5::KIOCore KF5::I18n KF5::ConfigCore Qt${QT_MAJOR_VERSION}::Network)
+if (TARGET Qt${QT_MAJOR_VERSION}::DBus)
+ target_link_libraries(kio_file
+ PRIVATE
+ Qt${QT_MAJOR_VERSION}::DBus
+ )
+endif()
if(UNIX)
target_link_libraries(kio_file Qt${QT_MAJOR_VERSION}::Network KF5::AuthCore)
diff --git a/src/ioslaves/file/file.cpp b/src/ioslaves/file/file.cpp
index c8f715679..687c7f228 100644
--- a/src/ioslaves/file/file.cpp
+++ b/src/ioslaves/file/file.cpp
@@ -707,7 +707,9 @@ void FileProtocol::put(const QUrl &url, int _mode, KIO::JobFlags _flags)
return;
}
}
+#ifdef QT_DBUS_LIB
org::kde::KDirNotify::emitFileRenamed(QUrl::fromLocalFile(dest), QUrl::fromLocalFile(dest_orig));
+#endif
}
// set final permissions
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index 481f1d2bb..dd1dd2e39 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -45,10 +45,7 @@ target_sources(KF5KIOWidgets PRIVATE
kurifilter.cpp
previewjob.cpp
renamedialog.cpp
- ksslcertificatebox.cpp
- ksslinfodialog.cpp
skipdialog.cpp
- jobuidelegate.cpp
kdirlister.cpp
executablefileopendialog.cpp
dndpopupmenuplugin.cpp
@@ -56,33 +53,42 @@ target_sources(KF5KIOWidgets PRIVATE
widgetsuntrustedprogramhandler.cpp
widgetsopenwithhandler.cpp
widgetsopenorexecutefilehandler.cpp
+)
+
+if (NOT WIN32)
+target_sources(KF5KIOWidgets PRIVATE
+ ksslcertificatebox.cpp
+ ksslinfodialog.cpp
widgetsaskuseractionhandler.cpp
+ jobuidelegate.cpp
)
+endif()
if(NOT ANDROID)
target_sources(KF5KIOWidgets PRIVATE
${kiowidgets_dbus_SRCS}
- accessmanager.cpp
- accessmanagerreply_p.cpp
+)
+endif()
+
+if (NOT ANDROID AND NOT WIN32)
+ target_sources(KF5KIOWidgets PRIVATE
+ kdirmodel.cpp
+ renamefiledialog.cpp
deleteortrashjob.cpp
- fileundomanager.cpp
- kpropertiesdialog.cpp
delegateanimationhandler.cpp
kfileitemdelegate.cpp
paste.cpp
+ joburlcache.cpp
+ openfilemanagerwindowjob.cpp
+ fileundomanager.cpp
+ kpropertiesdialog.cpp
kbuildsycocaprogressdialog.cpp
+ accessmanager.cpp
+ accessmanagerreply_p.cpp
+ kdynamicjobtracker.cpp
sslui.cpp
dropjob.cpp
- openfilemanagerwindowjob.cpp
pastejob.cpp
- joburlcache.cpp
- kdirmodel.cpp
- renamefiledialog.cpp
-)
-endif()
-if (NOT ANDROID)
- target_sources(KF5KIOWidgets PRIVATE
- kdynamicjobtracker.cpp
)
endif()
if (NOT WIN32 AND NOT ANDROID)
diff --git a/src/widgets/fileundomanager.cpp b/src/widgets/fileundomanager.cpp
index e5ad694d1..bb6b8ff5e 100644
--- a/src/widgets/fileundomanager.cpp
+++ b/src/widgets/fileundomanager.cpp
@@ -9,7 +9,9 @@
#include "fileundomanager.h"
#include "askuseractioninterface.h"
#include "clipboardupdater_p.h"
+#ifdef QT_DBUS_LIB
#include "fileundomanager_adaptor.h"
+#endif
#include "fileundomanager_p.h"
#include "kio_widgets_debug.h"
#include <job_p.h>
@@ -27,7 +29,9 @@
#include <KLocalizedString>
#include <KMessageBox>
+#ifdef QT_DBUS_LIB
#include <QDBusConnection>
+#endif
#include <QDateTime>
#include <QFileInfo>
#include <QLocale>
@@ -236,6 +240,7 @@ FileUndoManagerPrivate::FileUndoManagerPrivate(FileUndoManager *qq)
, m_nextCommandIndex(1000)
, q(qq)
{
+#ifdef QT_DBUS_LIB
(void)new KIOFileUndoManagerAdaptor(this);
const QString dbusPath = QStringLiteral("/FileUndoManager");
const QString dbusInterface = QStringLiteral("org.kde.kio.FileUndoManager");
@@ -246,6 +251,7 @@ FileUndoManagerPrivate::FileUndoManagerPrivate(FileUndoManager *qq)
dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("pop"), this, SLOT(slotPop()));
dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("push"), this, SLOT(slotPush(QByteArray)));
dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("unlock"), this, SLOT(slotUnlock()));
+#endif
}
FileUndoManager::FileUndoManager()
@@ -632,10 +638,12 @@ void FileUndoManagerPrivate::stepRemovingDirectories()
m_undoJob->emitResult();
m_undoJob = nullptr;
}
+#ifdef QT_DBUS_LIB
for (const QUrl &url : std::as_const(m_dirsToUpdate)) {
// qDebug() << "Notifying FilesAdded for " << url;
org::kde::KDirNotify::emitFilesAdded(url);
}
+#endif
Q_EMIT q->undoJobFinished();
slotUnlock();
}
diff --git a/src/widgets/kpropertiesdialog.cpp b/src/widgets/kpropertiesdialog.cpp
index 759243596..95f638228 100644
--- a/src/widgets/kpropertiesdialog.cpp
+++ b/src/widgets/kpropertiesdialog.cpp
@@ -92,9 +92,11 @@
#include <QCheckBox>
#include <QClipboard>
#include <QComboBox>
+#ifdef QT_DBUS_LIB
#include <QDBusConnection>
#include <QDBusInterface>
#include <QDBusReply>
+#endif
#include <QDebug>
#include <QDialogButtonBox>
#include <QDir>
@@ -1698,7 +1700,9 @@ void KFilePropsPlugin::postApplyChanges()
const KFileItemList items = properties->items();
const QList<QUrl> lst = items.urlList();
+#ifdef QT_DBUS_LIB
org::kde::KDirNotify::emitFilesChanged(QList<QUrl>(lst));
+#endif
}
class KFilePermissionsPropsPlugin::KFilePermissionsPropsPluginPrivate
-@@ -3319,6 +3323,7 @@ KDesktopPropsPlugin::KDesktopPropsPlugin(KPropertiesDialog *_props)
- if (s_gpuCheck == NotChecked) {
- // Check whether we have a discrete gpu
- bool hasDiscreteGpu = false;
-+#ifdef QT_DBUS_LIB
- QDBusInterface iface(QStringLiteral("org.kde.Solid.PowerManagement"),
- QStringLiteral("/org/kde/Solid/PowerManagement"),
- QStringLiteral("org.kde.Solid.PowerManagement"),
-@@ -3329,6 +3334,7 @@ KDesktopPropsPlugin::KDesktopPropsPlugin(KPropertiesDialog *_props)
- hasDiscreteGpu = reply.value();
- }
- }
-+#endif
-
- s_gpuCheck = hasDiscreteGpu ? Present : Absent;
- }
diff --git a/src/widgets/paste.cpp b/src/widgets/paste.cpp
index 96babbbd0..bc2ce421d 100644
--- a/src/widgets/paste.cpp
+++ b/src/widgets/paste.cpp
@@ -113,11 +113,13 @@ static QUrl getNewFileName(const QUrl &u, const QString &text, const QString &su
static KIO::Job *putDataAsyncTo(const QUrl &url, const QByteArray &data, QWidget *widget, KIO::JobFlags flags)
{
KIO::Job *job = KIO::storedPut(data, url, -1, flags);
+#ifdef QT_DBUS_LIB
QObject::connect(job, &KIO::Job::result, [url](KJob *job) {
if (job->error() == KJob::NoError) {
org::kde::KDirNotify::emitFilesAdded(url.adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash));
}
});
+#endif
KJobWidgets::setWindow(job, widget);
return job;
}
--
2.40.1
diff --git a/patches/kio/FileManagerWindowJob.patch b/patches/kio/FileManagerWindowJob.patch
new file mode 100755
index 00000000..2530e1a4
--- /dev/null
+++ b/patches/kio/FileManagerWindowJob.patch
@@ -0,0 +1,554 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
+index cf80ef7ba..168c18d36 100644
+--- a/src/gui/CMakeLists.txt
++++ b/src/gui/CMakeLists.txt
+@@ -43,6 +43,10 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ )
+ endif ()
+
++if (NOT ANDROID)
++ target_sources(KF5KIOGui PRIVATE openfilemanagerwindowjob.cpp)
++endif()
++
+ ecm_qt_declare_logging_category(KF5KIOGui
+ HEADER kiogui_debug.h
+ IDENTIFIER KIO_GUI
+@@ -95,6 +99,7 @@ ecm_generate_headers(KIOGui_CamelCase_HEADERS
+ ApplicationLauncherJob
+ CommandLauncherJob
+ FavIconRequestJob
++ OpenFileManagerWindowJob
+ OpenUrlJob
+ OpenWithHandlerInterface
+ ThumbnailCreator
+diff --git a/src/gui/openfilemanagerwindowjob.cpp b/src/gui/openfilemanagerwindowjob.cpp
+new file mode 100644
+index 000000000..b81f0bcd6
+--- /dev/null
++++ b/src/gui/openfilemanagerwindowjob.cpp
+@@ -0,0 +1,217 @@
++/*
++ This file is part of the KDE libraries
++ SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>
++ SPDX-FileCopyrightText: 2023 g10 Code GmbH
++ SPDX-FileContributor: Sune Stolborg Vuorela <sune@vuorela.dk>
++
++ SPDX-License-Identifier: LGPL-2.0-or-later
++*/
++
++#include "openfilemanagerwindowjob.h"
++#include "openfilemanagerwindowjob_p.h"
++
++#if USE_DBUS
++#include <QDBusConnection>
++#include <QDBusMessage>
++#include <QDBusPendingCallWatcher>
++#include <QDBusPendingReply>
++#endif
++#if defined(Q_OS_WINDOWS)
++#include <QDir>
++#include <shlobj.h>
++#include <vector>
++#endif
++#include <QGuiApplication>
++
++#include <KWindowSystem>
++
++#include <KIO/OpenUrlJob>
++
++namespace KIO
++{
++class OpenFileManagerWindowJobPrivate
++{
++public:
++ OpenFileManagerWindowJobPrivate(OpenFileManagerWindowJob *qq)
++ : q(qq)
++ , strategy(nullptr)
++ {
++ }
++
++ ~OpenFileManagerWindowJobPrivate() = default;
++
++#if USE_DBUS
++ void createDBusStrategy()
++ {
++ strategy = std::make_unique<OpenFileManagerWindowDBusStrategy>(q);
++ }
++#endif
++#if defined(Q_OS_WINDOWS)
++ void createWindowsShellStrategy()
++ {
++ strategy = std::make_unique<OpenFileManagerWindowWindowsShellStrategy>(q);
++ }
++#endif
++
++ void createKRunStrategy()
++ {
++ strategy = std::make_unique<OpenFileManagerWindowKRunStrategy>(q);
++ }
++
++ OpenFileManagerWindowJob *const q;
++ QList<QUrl> highlightUrls;
++ QByteArray startupId;
++
++ std::unique_ptr<AbstractOpenFileManagerWindowStrategy> strategy;
++};
++
++OpenFileManagerWindowJob::OpenFileManagerWindowJob(QObject *parent)
++ : KJob(parent)
++ , d(new OpenFileManagerWindowJobPrivate(this))
++{
++#if USE_DBUS
++ d->createDBusStrategy();
++#elif defined(Q_OS_WINDOWS)
++ d->createWindowsShellStrategy();
++#else
++ d->createKRunStrategy();
++#endif
++}
++
++OpenFileManagerWindowJob::~OpenFileManagerWindowJob() = default;
++
++QList<QUrl> OpenFileManagerWindowJob::highlightUrls() const
++{
++ return d->highlightUrls;
++}
++
++void OpenFileManagerWindowJob::setHighlightUrls(const QList<QUrl> &highlightUrls)
++{
++ d->highlightUrls = highlightUrls;
++}
++
++QByteArray OpenFileManagerWindowJob::startupId() const
++{
++ return d->startupId;
++}
++
++void OpenFileManagerWindowJob::setStartupId(const QByteArray &startupId)
++{
++ d->startupId = startupId;
++}
++
++void OpenFileManagerWindowJob::start()
++{
++ if (d->highlightUrls.isEmpty()) {
++ setError(NoValidUrlsError);
++ emitResult();
++ return;
++ }
++
++ d->strategy->start(d->highlightUrls, d->startupId);
++}
++
++OpenFileManagerWindowJob *highlightInFileManager(const QList<QUrl> &urls, const QByteArray &asn)
++{
++ auto *job = new OpenFileManagerWindowJob();
++ job->setHighlightUrls(urls);
++ job->setStartupId(asn);
++ job->start();
++
++ return job;
++}
++
++#if USE_DBUS
++void OpenFileManagerWindowDBusStrategy::start(const QList<QUrl> &urls, const QByteArray &asn)
++{
++ // see the spec at: https://www.freedesktop.org/wiki/Specifications/file-manager-interface/
++
++ auto runWithToken = [this, urls](const QByteArray &asn) {
++ QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.FileManager1"),
++ QStringLiteral("/org/freedesktop/FileManager1"),
++ QStringLiteral("org.freedesktop.FileManager1"),
++ QStringLiteral("ShowItems"));
++
++ msg << QUrl::toStringList(urls) << QString::fromUtf8(asn);
++
++ QDBusPendingReply<void> reply = QDBusConnection::sessionBus().asyncCall(msg);
++ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, m_job);
++ QObject::connect(watcher, &QDBusPendingCallWatcher::finished, m_job, [=](QDBusPendingCallWatcher *watcher) {
++ QDBusPendingReply<void> reply = *watcher;
++ watcher->deleteLater();
++
++ if (reply.isError()) {
++ // Try the KRun strategy as fallback, also calls emitResult inside
++ m_job->d->createKRunStrategy();
++ m_job->d->strategy->start(urls, asn);
++ return;
++ }
++
++ emitResultProxy();
++ });
++ };
++
++ if (asn.isEmpty()) {
++ auto window = qGuiApp->focusWindow();
++ if (!window && !qGuiApp->allWindows().isEmpty()) {
++ window = qGuiApp->allWindows().constFirst();
++ }
++ const int launchedSerial = KWindowSystem::lastInputSerial(window);
++ QObject::connect(KWindowSystem::self(),
++ &KWindowSystem::xdgActivationTokenArrived,
++ m_job,
++ [launchedSerial, runWithToken, job = m_job](int serial, const QString &token) {
++ QObject::disconnect(KWindowSystem::self(), &KWindowSystem::xdgActivationTokenArrived, job, nullptr);
++ if (serial == launchedSerial) {
++ runWithToken(token.toUtf8());
++ }
++ });
++ KWindowSystem::requestXdgActivationToken(window, launchedSerial, {});
++ } else {
++ runWithToken(asn);
++ }
++}
++#endif
++
++void OpenFileManagerWindowKRunStrategy::start(const QList<QUrl> &urls, const QByteArray &asn)
++{
++ KIO::OpenUrlJob *urlJob = new KIO::OpenUrlJob(urls.at(0).adjusted(QUrl::RemoveFilename), QStringLiteral("inode/directory"));
++ urlJob->setUiDelegate(m_job->uiDelegate());
++ urlJob->setStartupId(asn);
++ QObject::connect(urlJob, &KJob::result, m_job, [this](KJob *urlJob) {
++ if (urlJob->error()) {
++ emitResultProxy(OpenFileManagerWindowJob::LaunchFailedError);
++ } else {
++ emitResultProxy();
++ }
++ });
++ urlJob->start();
++}
++
++#if defined(Q_OS_WINDOWS)
++void OpenFileManagerWindowWindowsShellStrategy::start(const QList<QUrl> &urls, const QByteArray &asn)
++{
++ Q_UNUSED(asn);
++ LPITEMIDLIST dir = ILCreateFromPathW(QDir::toNativeSeparators(urls.at(0).adjusted(QUrl::RemoveFilename).toLocalFile()).toStdWString().data());
++
++ std::vector<LPCITEMIDLIST> items;
++ for (const auto &url : urls) {
++ LPITEMIDLIST item = ILCreateFromPathW(QDir::toNativeSeparators(url.toLocalFile()).toStdWString().data());
++ items.push_back(item);
++ }
++
++ auto result = SHOpenFolderAndSelectItems(dir, items.size(), items.data(), 0);
++ if (SUCCEEDED(result)) {
++ emitResultProxy();
++ } else {
++ emitResultProxy(OpenFileManagerWindowJob::LaunchFailedError);
++ }
++ ILFree(dir);
++ for (auto &item : items) {
++ ILFree(const_cast<LPITEMIDLIST>(item));
++ }
++}
++#endif
++} // namespace KIO
++
++#include "moc_openfilemanagerwindowjob.cpp"
+diff --git a/src/widgets/openfilemanagerwindowjob.h b/src/gui/openfilemanagerwindowjob.h
+similarity index 93%
+rename from src/widgets/openfilemanagerwindowjob.h
+rename to src/gui/openfilemanagerwindowjob.h
+index a4300cefd..81b741940 100644
+--- a/src/widgets/openfilemanagerwindowjob.h
++++ b/src/gui/openfilemanagerwindowjob.h
+@@ -8,7 +8,7 @@
+ #ifndef OPENFILEMANAGERWINDOWJOB_H
+ #define OPENFILEMANAGERWINDOWJOB_H
+
+-#include "kiowidgets_export.h"
++#include "kiogui_export.h"
+
+ #include <KJob>
+
+@@ -44,7 +44,7 @@ class OpenFileManagerWindowJobPrivate;
+ *
+ * @since 5.24
+ */
+-class KIOWIDGETS_EXPORT OpenFileManagerWindowJob : public KJob
++class KIOGUI_EXPORT OpenFileManagerWindowJob : public KJob
+ {
+ Q_OBJECT
+
+@@ -110,7 +110,7 @@ private:
+ *
+ * @since 5.24
+ */
+-KIOWIDGETS_EXPORT OpenFileManagerWindowJob *highlightInFileManager(const QList<QUrl> &urls, const QByteArray &asn = QByteArray());
++KIOGUI_EXPORT OpenFileManagerWindowJob *highlightInFileManager(const QList<QUrl> &urls, const QByteArray &asn = QByteArray());
+
+ } // namespace KIO
+
+diff --git a/src/widgets/openfilemanagerwindowjob_p.h b/src/gui/openfilemanagerwindowjob_p.h
+similarity index 76%
+rename from src/widgets/openfilemanagerwindowjob_p.h
+rename to src/gui/openfilemanagerwindowjob_p.h
+index 3f6399ae8..ccb556625 100644
+--- a/src/widgets/openfilemanagerwindowjob_p.h
++++ b/src/gui/openfilemanagerwindowjob_p.h
+@@ -8,6 +8,8 @@
+ #ifndef OPENFILEMANAGERWINDOWJOB_P_H
+ #define OPENFILEMANAGERWINDOWJOB_P_H
+
++#define USE_DBUS defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
++
+ #include <KJob>
+
+ namespace KIO
+@@ -37,6 +39,7 @@ protected:
+ OpenFileManagerWindowJob *m_job;
+ };
+
++#if USE_DBUS
+ class OpenFileManagerWindowDBusStrategy : public AbstractOpenFileManagerWindowStrategy
+ {
+ public:
+@@ -46,6 +49,7 @@ public:
+ }
+ void start(const QList<QUrl> &urls, const QByteArray &asn) override;
+ };
++#endif
+
+ class OpenFileManagerWindowKRunStrategy : public AbstractOpenFileManagerWindowStrategy
+ {
+@@ -57,6 +61,17 @@ public:
+ void start(const QList<QUrl> &urls, const QByteArray &asn) override;
+ };
+
++#if defined(Q_OS_WINDOWS)
++class OpenFileManagerWindowWindowsShellStrategy : public AbstractOpenFileManagerWindowStrategy
++{
++public:
++ explicit OpenFileManagerWindowWindowsShellStrategy(OpenFileManagerWindowJob *job)
++ : AbstractOpenFileManagerWindowStrategy(job)
++ {
++ }
++ void start(const QList<QUrl> &urls, const QByteArray &asn) override;
++};
++#endif
+ }
+
+ #endif // OPENFILEMANAGERWINDOWJOB_P_H
+diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
+index 395a2a2df..61af31f9f 100644
+--- a/src/widgets/CMakeLists.txt
++++ b/src/widgets/CMakeLists.txt
+@@ -79,7 +79,6 @@
+ kfileitemdelegate.cpp
+ paste.cpp
+ joburlcache.cpp
+- openfilemanagerwindowjob.cpp
+ fileundomanager.cpp
+ kpropertiesdialog.cpp
+ kbuildsycocaprogressdialog.cpp
+@@ -205,7 +204,6 @@
+ ThumbCreator
+ DropJob
+ DndPopupMenuPlugin
+- OpenFileManagerWindowJob
+ PasteJob
+ PreviewJob
+ RenameDialog
+diff --git a/src/widgets/openfilemanagerwindowjob.cpp b/src/widgets/openfilemanagerwindowjob.cpp
+deleted file mode 100644
+index f1b6705c0..000000000
+--- a/src/widgets/openfilemanagerwindowjob.cpp
++++ /dev/null
+@@ -1,177 +0,0 @@
+-/*
+- This file is part of the KDE libraries
+- SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>
+-
+- SPDX-License-Identifier: LGPL-2.0-or-later
+-*/
+-
+-#include "openfilemanagerwindowjob.h"
+-#include "openfilemanagerwindowjob_p.h"
+-
+-#include <QDBusConnection>
+-#include <QDBusMessage>
+-#include <QDBusPendingCallWatcher>
+-#include <QDBusPendingReply>
+-#include <QGuiApplication>
+-
+-#include <KJobWidgets>
+-#include <KWindowSystem>
+-
+-#include <KIO/JobUiDelegate>
+-#include <KIO/JobUiDelegateFactory>
+-#include <KIO/OpenUrlJob>
+-
+-namespace KIO
+-{
+-class OpenFileManagerWindowJobPrivate
+-{
+-public:
+- OpenFileManagerWindowJobPrivate(OpenFileManagerWindowJob *qq)
+- : q(qq)
+- , strategy(nullptr)
+- {
+- }
+-
+- ~OpenFileManagerWindowJobPrivate()
+- {
+- delete strategy;
+- }
+-
+- AbstractOpenFileManagerWindowStrategy *createDBusStrategy()
+- {
+- delete strategy;
+- strategy = new OpenFileManagerWindowDBusStrategy(q);
+- return strategy;
+- }
+-
+- AbstractOpenFileManagerWindowStrategy *createKRunStrategy()
+- {
+- delete strategy;
+- strategy = new OpenFileManagerWindowKRunStrategy(q);
+- return strategy;
+- }
+-
+- OpenFileManagerWindowJob *const q;
+- QList<QUrl> highlightUrls;
+- QByteArray startupId;
+-
+- AbstractOpenFileManagerWindowStrategy *strategy;
+-};
+-
+-OpenFileManagerWindowJob::OpenFileManagerWindowJob(QObject *parent)
+- : KJob(parent)
+- , d(new OpenFileManagerWindowJobPrivate(this))
+-{
+-#ifdef Q_OS_LINUX
+- d->createDBusStrategy();
+-#else
+- d->createKRunStrategy();
+-#endif
+-}
+-
+-OpenFileManagerWindowJob::~OpenFileManagerWindowJob() = default;
+-
+-QList<QUrl> OpenFileManagerWindowJob::highlightUrls() const
+-{
+- return d->highlightUrls;
+-}
+-
+-void OpenFileManagerWindowJob::setHighlightUrls(const QList<QUrl> &highlightUrls)
+-{
+- d->highlightUrls = highlightUrls;
+-}
+-
+-QByteArray OpenFileManagerWindowJob::startupId() const
+-{
+- return d->startupId;
+-}
+-
+-void OpenFileManagerWindowJob::setStartupId(const QByteArray &startupId)
+-{
+- d->startupId = startupId;
+-}
+-
+-void OpenFileManagerWindowJob::start()
+-{
+- if (d->highlightUrls.isEmpty()) {
+- setError(NoValidUrlsError);
+- emitResult();
+- return;
+- }
+-
+- d->strategy->start(d->highlightUrls, d->startupId);
+-}
+-
+-OpenFileManagerWindowJob *highlightInFileManager(const QList<QUrl> &urls, const QByteArray &asn)
+-{
+- auto *job = new OpenFileManagerWindowJob();
+- job->setHighlightUrls(urls);
+-
+- if (asn.isNull()) {
+- auto window = qGuiApp->focusWindow();
+- if (!window && !qGuiApp->allWindows().isEmpty()) {
+- window = qGuiApp->allWindows().constFirst();
+- }
+- const int launchedSerial = KWindowSystem::lastInputSerial(window);
+- QObject::connect(KWindowSystem::self(), &KWindowSystem::xdgActivationTokenArrived, job, [launchedSerial, job](int serial, const QString &token) {
+- QObject::disconnect(KWindowSystem::self(), &KWindowSystem::xdgActivationTokenArrived, job, nullptr);
+- if (serial == launchedSerial) {
+- job->setStartupId(token.toLatin1());
+- job->start();
+- }
+- });
+- KWindowSystem::requestXdgActivationToken(window, launchedSerial, {});
+- } else {
+- job->setStartupId(asn);
+- job->start();
+- }
+-
+- return job;
+-}
+-
+-void OpenFileManagerWindowDBusStrategy::start(const QList<QUrl> &urls, const QByteArray &asn)
+-{
+- // see the spec at: https://www.freedesktop.org/wiki/Specifications/file-manager-interface/
+-
+- QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.FileManager1"),
+- QStringLiteral("/org/freedesktop/FileManager1"),
+- QStringLiteral("org.freedesktop.FileManager1"),
+- QStringLiteral("ShowItems"));
+-
+- msg << QUrl::toStringList(urls) << QString::fromUtf8(asn);
+-
+- QDBusPendingReply<void> reply = QDBusConnection::sessionBus().asyncCall(msg);
+- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, m_job);
+- QObject::connect(watcher, &QDBusPendingCallWatcher::finished, m_job, [=](QDBusPendingCallWatcher *watcher) {
+- QDBusPendingReply<void> reply = *watcher;
+- watcher->deleteLater();
+-
+- if (reply.isError()) {
+- // Try the KRun strategy as fallback, also calls emitResult inside
+- AbstractOpenFileManagerWindowStrategy *kRunStrategy = m_job->d->createKRunStrategy();
+- kRunStrategy->start(urls, asn);
+- return;
+- }
+-
+- emitResultProxy();
+- });
+-}
+-
+-void OpenFileManagerWindowKRunStrategy::start(const QList<QUrl> &urls, const QByteArray &asn)
+-{
+- KIO::OpenUrlJob *urlJob = new KIO::OpenUrlJob(urls.at(0).adjusted(QUrl::RemoveFilename), QStringLiteral("inode/directory"));
+- urlJob->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, KJobWidgets::window(m_job)));
+- urlJob->setStartupId(asn);
+- QObject::connect(urlJob, &KJob::result, m_job, [this](KJob *urlJob) {
+- if (urlJob->error()) {
+- emitResultProxy(OpenFileManagerWindowJob::LaunchFailedError);
+- } else {
+- emitResultProxy();
+- }
+- });
+- urlJob->start();
+-}
+-
+-} // namespace KIO
+-
+-#include "moc_openfilemanagerwindowjob.cpp"
+diff --git a/tests/openfilemanagerwindowtest.cpp b/tests/openfilemanagerwindowtest.cpp
+index 87fd170a5..77630bb0f 100644
+--- a/tests/openfilemanagerwindowtest.cpp
++++ b/tests/openfilemanagerwindowtest.cpp
+@@ -16,8 +16,11 @@ int main(int argc, char **argv)
+ {
+ QApplication::setApplicationName(QStringLiteral("openfilemanagerwindowtest"));
+ QApplication app(argc, argv);
+-
++#ifndef Q_OS_WINDOWS
+ const QList<QUrl> urls{QUrl(QStringLiteral("file:///etc/fstab")), QUrl(QStringLiteral("file:///etc/passwd"))};
++#else
++ const QList<QUrl> urls{QUrl(QStringLiteral("file:///c:/windows/notepad.exe")), QUrl(QStringLiteral("file:///c:/windows/explorer.exe"))};
++#endif
+
+ auto *job = new KIO::OpenFileManagerWindowJob();
+ job->setHighlightUrls(urls);
diff --git a/patches/kservice/0001-Remove-unused-include.patch b/patches/kservice/0001-Remove-unused-include.patch
deleted file mode 100755
index 271099c2..00000000
--- a/patches/kservice/0001-Remove-unused-include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-#! /bin/sh
-patch -p1 -l -f $* < $0
-exit $?
-
-From d0965eab6ed140da8f0a29b5d55ddd3f50d56ab3 Mon Sep 17 00:00:00 2001
-From: Andre Heinecke <aheinecke@gnupg.org>
-Date: Thu, 23 Mar 2023 09:02:34 +0100
-Subject: [PATCH] Remove unused include
-
-ktoolinvocation_win does not use QDBusConnection. This fixes
-the build without DBus for Windows.
----
- src/kdeinit/ktoolinvocation_win.cpp | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/src/kdeinit/ktoolinvocation_win.cpp b/src/kdeinit/ktoolinvocation_win.cpp
-index ad3552c7..5dfa3ebb 100644
---- a/src/kdeinit/ktoolinvocation_win.cpp
-+++ b/src/kdeinit/ktoolinvocation_win.cpp
-@@ -14,7 +14,6 @@
- #include <KMessage>
-
- #include <QCoreApplication>
--#include <QDBusConnection>
- #include <QHash>
- #include <QProcess>
- #include <QStandardPaths>
---
-2.39.2
diff --git a/patches/okular/0001-Build-without-KIOFileWidgets.patch b/patches/okular/0001-Build-without-KIOFileWidgets.patch
deleted file mode 100755
index 904c136b..00000000
--- a/patches/okular/0001-Build-without-KIOFileWidgets.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-#! /bin/sh
-patch -p1 -l -f $* < $0
-exit $?
-
-From edefd0e3e750849edd0008f28cd4d670b3fb7af2 Mon Sep 17 00:00:00 2001
-From: Andre Heinecke <aheinecke@gnupg.org>
-Date: Tue, 13 Jun 2023 14:56:49 +0200
-Subject: [PATCH] Build without KIOFilewidgets and DBUS
-
----
- CMakeLists.txt | 9 ++++++---
- part/part.cpp | 16 ++++++++++++++++
- part/part.h | 4 ++++
- part/presentationwidget.cpp | 6 +++---
- shell/CMakeLists.txt | 7 ++++++-
- shell/main.cpp | 1 -
- shell/okular_main.cpp | 11 +++++++++++
- shell/shell.cpp | 9 ++++++++-
- shell/shell.h | 6 +++++-
- shell/welcomescreen.cpp | 9 +++++++++
- 10 files changed, 68 insertions(+), 10 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b66bd756f..a335cfcc4 100644
-@@ -1,4 +1,4 @@
--cmake_minimum_required(VERSION 3.22)
-+cmake_minimum_required(VERSION 3.18)
-
- # KDE Application Version, managed by release script
- set (RELEASE_SERVICE_VERSION_MAJOR "23")
-@@ -588,13 +591,13 @@ target_link_libraries(okularpart okularcore
- KF5::IconThemes
- KF5::ItemViews
- KF5::KIOCore
-- KF5::KIOFileWidgets
- KF5::KIOWidgets
- KF5::Parts
- KF5::Solid
- KF5::WindowSystem
- KF5::TextWidgets
- )
-+
- if (Phonon4Qt5_FOUND)
- target_link_libraries(okularpart Phonon::phonon4qt5)
- endif()
-diff --git a/part/part.cpp b/part/part.cpp
-index 9c22672cf..68303e5b0 100644
---- a/part/part.cpp
-+++ b/part/part.cpp
-@@ -125,6 +128,11 @@
- #include <memory>
- #include <type_traits>
-
-+#ifdef Q_OS_WIN
-+#include <windows.h>
-+#include <shellapi.h>
-+#endif
-+
- #ifdef OKULAR_KEEP_FILE_OPEN
- class FileKeeper
- {
-@@ -3873,7 +3885,11 @@ void Part::setEditorCmd(const QString &editorCmd)
-
- void Part::slotOpenContainingFolder()
- {
-+#ifdef Q_OS_WIN
-+ ShellExecuteW(NULL, L"explore", (wchar_t *)localFilePath().utf16(), NULL, NULL, SW_SHOWDEFAULT);
-+#else
- KIO::highlightInFileManager({QUrl(localFilePath())});
-+#endif
- }
-
- } // namespace Okular
-diff --git a/shell/welcomescreen.cpp b/shell/welcomescreen.cpp
-index 1e4bff15e..1066c5f18 100644
---- a/shell/welcomescreen.cpp
-+++ b/shell/welcomescreen.cpp
-@@ -21,6 +21,11 @@
-
- #include "recentitemsmodel.h"
-
-+#ifdef Q_OS_WIN
-+#include <windows.h>
-+#include <shellapi.h>
-+#endif
-+
- class RecentsListItemDelegate : public QStyledItemDelegate
- {
- Q_OBJECT
-@@ -78,7 +83,11 @@ public:
- showDirectoryAction->setIcon(QIcon::fromTheme(QStringLiteral("document-open-folder")));
- connect(showDirectoryAction, &QAction::triggered, this, [item]() {
- if (item->url.isLocalFile()) {
-+#ifdef Q_OS_WIN
-+ ShellExecuteW(NULL, L"explore", (wchar_t *)item->url.toLocalFile().utf16(), NULL, NULL, SW_SHOWDEFAULT);
-+#else
- KIO::highlightInFileManager({item->url});
-+#endif
- }
- });
- menu.addAction(showDirectoryAction);
---
-2.41.0
diff --git a/patches/okular/allow-dbus-to-be-disabled.patch b/patches/okular/allow-dbus-to-be-disabled.patch
deleted file mode 100755
index cbaddf9d..00000000
--- a/patches/okular/allow-dbus-to-be-disabled.patch
+++ /dev/null
@@ -1,422 +0,0 @@
-#! /bin/sh
-patch -p1 -l -f $* < $0
-exit $?
-
-From 698d6b3366e361cdbb9a7536493806033fc92390 Mon Sep 17 00:00:00 2001
-From: Sune Vuorela <sune@vuorela.dk>
-Date: Mon, 3 Jul 2023 16:52:44 +0200
-Subject: [PATCH] Allow dbus to be disabled
-
-In certain usecases, especially for non-linux desktop builds, the
-advantage of of dbus is often limited. Provide a way to disable
-building with dbus.
-
-Note that this also disables the related functionalities of having a
-second okular launch open the document in the first okular.
-
-This also disables the unit tests that tests those features.
----
- CMakeLists.txt | 12 +++++++++++-
- autotests/mainshelltest.cpp | 12 ++++++++++++
- config-okular.h.cmake | 3 +++
- part/part.cpp | 6 ++++++
- part/part.h | 8 ++++++--
- part/presentationwidget.cpp | 13 +++++++++++--
- shell/CMakeLists.txt | 5 ++++-
- shell/main.cpp | 1 -
- shell/okular_main.cpp | 14 ++++++++++++--
- shell/shell.cpp | 6 ++++++
- shell/shell.h | 5 +++++
- 11 files changed, 76 insertions(+), 9 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cc92b92580..dfeecd81df 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -151,7 +151,14 @@ else()
- endif()
-
- if (BUILD_DESKTOP)
-- find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED COMPONENTS DBus)
-+ find_package(Qt5DBus)
-+ set_okular_optional_package_properties(Qt5DBus PROPERTIES
-+ PURPOSE "Required for interprocess communication, external open in same instance and various presentation related bits.")
-+ if(TARGET Qt5::DBus)
-+ set(HAVE_DBUS 1)
-+ else()
-+ set(HAVE_DBUS 0)
-+ endif()
- find_package(KF5 ${KF5_REQUIRED_VERSION} REQUIRED COMPONENTS Parts Crash IconThemes TextWidgets)
-
- find_package(KF5Purpose)
-@@ -595,6 +602,9 @@ target_link_libraries(okularpart okularcore
- KF5::WindowSystem
- KF5::TextWidgets
- )
-+if (TARGET Qt5::DBus)
-+ target_link_libraries(okularpart Qt5::DBus)
-+endif()
- if (Phonon4Qt5_FOUND)
- target_link_libraries(okularpart Phonon::phonon4qt5)
- endif()
-diff --git a/autotests/mainshelltest.cpp b/autotests/mainshelltest.cpp
-index 35912305ac..efbececbff 100644
---- a/autotests/mainshelltest.cpp
-+++ b/autotests/mainshelltest.cpp
-@@ -7,12 +7,16 @@
- // clazy:excludeall=qstring-allocations
-
- #include <QTest>
-+#include <config-okular.h>
-
- #include <KConfigGroup>
- #include <KLineEdit>
- #include <KRecentFilesAction>
-+
-+#if HAVE_DBUS
- #include <QDBusConnection>
- #include <QDBusConnectionInterface>
-+#endif // HAVE_DBUS
- #include <QPrintDialog>
- #include <QStandardPaths>
- #include <QTabBar>
-@@ -141,10 +145,12 @@ void MainShellTest::initTestCase()
- Okular::Settings::instance(QStringLiteral("mainshelltest"));
-
- // Register in bus as okular
-+#if HAVE_DBUS
- QDBusConnectionInterface *bus = QDBusConnection::sessionBus().interface();
- const QString myPid = QString::number(getpid());
- const QString serviceName = QStringLiteral("org.kde.okular-") + myPid;
- QVERIFY(bus->registerService(serviceName) == QDBusConnectionInterface::ServiceRegistered);
-+#endif
-
- // Tell the presentationWidget and queryClose to not be annoying
- KSharedConfigPtr c = KSharedConfig::openConfig();
-@@ -215,11 +221,14 @@ void MainShellTest::testShell_data()
- QTest::newRow("two files no tabs") << file1AndToc << QString() << false << QString() << 0u << false << false << false << 0u << false << false << QString();
- QTest::newRow("two files with tabs") << file1AndToc << QString() << true << QString() << 0u << false << false << false << 0u << false << false << QString();
- QTest::newRow("two files sequence no tabs") << file1 << QString() << false << tocReload << 0u << false << false << false << 0u << false << false << QString();
-+#if HAVE_DBUS
- QTest::newRow("two files sequence with tabs") << file1 << QString() << true << tocReload << 0u << false << false << false << 0u << false << false << QString();
-+#endif // HAVE_DBUS
- QTest::newRow("open file page number") << contentsEpub << optionsPage2 << false << QString() << 1u << false << false << false << 0u << false << false << QString();
- QTest::newRow("open file page number and presentation") << contentsEpub << optionsPage2Presentation << false << QString() << 1u << true << false << false << 0u << false << false << QString();
- QTest::newRow("open file find") << file1 << optionsFind << false << QString() << 0u << false << false << false << 0u << false << false << QStringLiteral("si:next-testing parameters!");
- QTest::newRow("open file print") << file1 << optionsPrint << false << QString() << 0u << false << true << false << 0u << false << false << QString();
-+#if HAVE_DBUS
- QTest::newRow("open two files unique") << file1 << optionsUnique << false << tocReload << 0u << false << false << true << 0u << false << false << QString();
- QTest::newRow("open two files unique tabs") << file1 << optionsUnique << true << tocReload << 0u << false << false << true << 0u << false << false << QString();
- QTest::newRow("page number attach tabs") << file1 << QString() << true << contentsEpub[0] << 0u << false << false << false << 2u << false << false << QString();
-@@ -231,6 +240,7 @@ void MainShellTest::testShell_data()
- QTest::newRow("page number attach unique tabs") << file1 << optionsUnique << true << contentsEpub[0] << 0u << false << false << true << 3u << false << false << QString();
- QTest::newRow("presentation attach unique tabs") << file1 << optionsUnique << true << contentsEpub[0] << 0u << false << false << true << 2u << true << false << QString();
- QTest::newRow("print attach unique tabs") << file1 << optionsUnique << true << contentsEpub[0] << 0u << false << false << true << 2u << false << true << QString();
-+#endif // HAVE_DBUS
- }
-
- void MainShellTest::testShell()
-@@ -473,8 +483,10 @@ void MainShellTest::test2FilesError_data()
-
- QTest::newRow("startInPresentation") << ShellUtils::serializeOptions(true, false, false, false, false, QString(), QString(), QString());
- QTest::newRow("showPrintDialog") << ShellUtils::serializeOptions(false, true, false, false, false, QString(), QString(), QString());
-+#if HAVE_DBUS
- QTest::newRow("unique") << ShellUtils::serializeOptions(false, false, false, true, false, QString(), QString(), QString());
- QTest::newRow("pageNumber") << ShellUtils::serializeOptions(false, false, false, false, false, QStringLiteral("3"), QString(), QString());
-+#endif // HAVE_DBUS
- QTest::newRow("find") << ShellUtils::serializeOptions(false, false, false, false, false, QString(), QStringLiteral("silly"), QString());
- }
-
-diff --git a/config-okular.h.cmake b/config-okular.h.cmake
-index d6e0f1f086..4f455562eb 100644
---- a/config-okular.h.cmake
-+++ b/config-okular.h.cmake
-@@ -21,3 +21,6 @@
-
- /* Defines wheter we are building with Phonon support */
- #cmakedefine01 HAVE_PHONON
-+
-+/* Defines whether we are building with dbus enabled */
-+#cmakedefine01 HAVE_DBUS
-diff --git a/part/part.cpp b/part/part.cpp
-index a748cedd55..d0839321eb 100644
---- a/part/part.cpp
-+++ b/part/part.cpp
-@@ -27,7 +27,9 @@
- // qt/kde includes
- #include <QApplication>
- #include <QContextMenuEvent>
-+#if HAVE_DBUS
- #include <QDBusConnection>
-+#endif // HAVE_DBUS
- #include <QDialog>
- #include <QDialogButtonBox>
- #include <QFile>
-@@ -327,6 +329,7 @@ Part::Part(QWidget *parentWidget, QObject *parent, const QVariantList &args)
-
- setupConfigSkeleton(args, componentName());
-
-+#if HAVE_DBUS
- numberOfParts++;
- if (numberOfParts == 1) {
- m_registerDbusName = QStringLiteral("/okular");
-@@ -334,6 +337,7 @@ Part::Part(QWidget *parentWidget, QObject *parent, const QVariantList &args)
- m_registerDbusName = QStringLiteral("/okular%1").arg(numberOfParts);
- }
- QDBusConnection::sessionBus().registerObject(m_registerDbusName, this, QDBusConnection::ExportScriptableSlots);
-+#endif // HAVE_DBUS
-
- // connect the started signal to tell the job the mimetypes we like,
- // and get some more information from it
-@@ -990,7 +994,9 @@ void Part::setupActions()
-
- Part::~Part()
- {
-+#if HAVE_DBUS
- QDBusConnection::sessionBus().unregisterObject(m_registerDbusName);
-+#endif // HAVE_DBUS
-
- m_document->removeObserver(this);
-
-diff --git a/part/part.h b/part/part.h
-index ef08481630..8eb6b48f40 100644
---- a/part/part.h
-+++ b/part/part.h
-@@ -15,7 +15,13 @@
- #ifndef _PART_H_
- #define _PART_H_
-
-+#include <config-okular.h>
-+
-+#if HAVE_DBUS
- #include <QDBusAbstractAdaptor> // for Q_NOREPLY
-+#else // HAVE_DBUS
-+#define Q_NOREPLY
-+#endif // HAVE_DBUS
- #include <QIcon>
- #include <QList>
- #include <QPointer>
-@@ -35,8 +41,6 @@
-
- #include "okularpart_export.h"
-
--#include <config-okular.h>
--
- class QAction;
- class QWidget;
- class QPrinter;
-diff --git a/part/presentationwidget.cpp b/part/presentationwidget.cpp
-index bd5192c534..40a220d93a 100644
---- a/part/presentationwidget.cpp
-+++ b/part/presentationwidget.cpp
-@@ -5,11 +5,14 @@
- */
-
- #include "presentationwidget.h"
-+#include "config-okular.h"
-
- // qt/kde includes
-+#if HAVE_DBUS
- #include <QDBusConnection>
- #include <QDBusMessage>
- #include <QDBusReply>
-+#endif
- #include <QLoggingCategory>
-
- #include <KActionCollection>
-@@ -39,7 +42,9 @@
- #include <QValidator>
-
- #ifdef Q_OS_LINUX
-+#if HAVE_DBUS
- #include <QDBusUnixFileDescriptor>
-+#endif
- #include <unistd.h> // For ::close() for sleep inhibition
- #endif
-
-@@ -1697,6 +1702,7 @@ void PresentationWidget::setScreen(const QScreen *newScreen)
-
- void PresentationWidget::inhibitPowerManagement()
- {
-+#if HAVE_DBUS
- #ifdef Q_OS_LINUX
- QString reason = i18nc("Reason for inhibiting the screensaver activation, when the presentation mode is active", "Giving a presentation");
-
-@@ -1730,11 +1736,13 @@ void PresentationWidget::inhibitPowerManagement()
- qCWarning(OkularUiDebug) << "Unable to inhibit sleep" << reply.error();
- }
- }
--#endif
-+#endif // Q_OS_LINUX
-+#endif // HAVE_DBUS
- }
-
- void PresentationWidget::allowPowerManagement()
- {
-+#if HAVE_DBUS
- #ifdef Q_OS_LINUX
- if (m_sleepInhibitFd != -1) {
- ::close(m_sleepInhibitFd);
-@@ -1750,7 +1758,8 @@ void PresentationWidget::allowPowerManagement()
-
- m_screenInhibitCookie = 0;
- }
--#endif
-+#endif // Q_OS_LINUX
-+#endif // HAVE_DBUS
- }
-
- void PresentationWidget::showTopBar(bool show)
-diff --git a/shell/CMakeLists.txt b/shell/CMakeLists.txt
-index 597f0b74ce..f550514dcc 100644
---- a/shell/CMakeLists.txt
-+++ b/shell/CMakeLists.txt
-@@ -23,7 +23,10 @@ ecm_add_app_icon(okular_SRCS ICONS ${ICONS_SRCS})
-
- add_executable(okular ${okular_SRCS})
-
--target_link_libraries(okular KF5::I18n KF5::Parts KF5::WindowSystem KF5::Crash KF5::IconThemes Qt5::DBus)
-+target_link_libraries(okular KF5::I18n KF5::Parts KF5::WindowSystem KF5::Crash KF5::IconThemes)
-+if (TARGET Qt5::DBus)
-+ target_link_libraries(okular Qt5::DBus)
-+endif()
- if(TARGET KF5::Activities)
- target_compile_definitions(okular PUBLIC -DWITH_KACTIVITIES=1)
-
-diff --git a/shell/main.cpp b/shell/main.cpp
-index 35f3aea654..dd08abeafa 100644
---- a/shell/main.cpp
-+++ b/shell/main.cpp
-@@ -21,7 +21,6 @@
- #include <QApplication>
- #include <QCommandLineOption>
- #include <QCommandLineParser>
--#include <QDBusInterface>
- #include <QTextStream>
- #include <QtGlobal>
-
-diff --git a/shell/okular_main.cpp b/shell/okular_main.cpp
-index cfb74c1141..3931355052 100644
---- a/shell/okular_main.cpp
-+++ b/shell/okular_main.cpp
-@@ -16,8 +16,6 @@
- #include <KLocalizedString>
- #include <KWindowSystem>
- #include <QApplication>
--#include <QDBusConnectionInterface>
--#include <QDBusInterface>
- #include <QMimeData>
- #include <QTemporaryFile>
- #include <QTextStream>
-@@ -26,6 +24,10 @@
- #if HAVE_X11
- #include <QX11Info>
- #endif
-+#if HAVE_DBUS
-+#include <QDBusConnectionInterface>
-+#include <QDBusInterface>
-+#endif // HAVE_DBUS
-
- #include <iostream>
-
-@@ -46,6 +48,7 @@ static QString startupId()
-
- static bool attachUniqueInstance(const QStringList &paths, const QString &serializedOptions)
- {
-+#if HAVE_DBUS
- if (!ShellUtils::unique(serializedOptions) || paths.count() != 1) {
- return false;
- }
-@@ -69,11 +72,15 @@ static bool attachUniqueInstance(const QStringList &paths, const QString &serial
- }
-
- return true;
-+#else // HAVE_DBUS
-+ return false;
-+#endif // HAVE_DBUS
- }
-
- // Ask an existing non-unique instance to open new tabs
- static bool attachExistingInstance(const QStringList &paths, const QString &serializedOptions)
- {
-+#if HAVE_DBUS
- if (paths.count() < 1) {
- return false;
- }
-@@ -162,6 +169,9 @@ static bool attachExistingInstance(const QStringList &paths, const QString &seri
- bestService->call(QStringLiteral("tryRaise"), startupId());
-
- return true;
-+#else // HAVE_DBUS
-+ return false;
-+#endif // HAVE_DBUS
- }
-
- namespace Okular
-diff --git a/shell/shell.cpp b/shell/shell.cpp
-index 54c10bd44f..b1728484f2 100644
---- a/shell/shell.cpp
-+++ b/shell/shell.cpp
-@@ -36,7 +36,9 @@
- #include <KWindowSystem>
- #include <KXMLGUIFactory>
- #include <QApplication>
-+#if HAVE_DBUS
- #include <QDBusConnection>
-+#endif // HAVE_DBUS
- #include <QDockWidget>
- #include <QDragMoveEvent>
- #include <QFileDialog>
-@@ -239,6 +241,7 @@ Shell::Shell(const QString &serializedOptions)
- readSettings();
-
- m_unique = ShellUtils::unique(serializedOptions);
-+#if HAVE_DBUS
- if (m_unique) {
- m_unique = QDBusConnection::sessionBus().registerService(QStringLiteral("org.kde.okular"));
- if (!m_unique) {
-@@ -260,6 +263,7 @@ Shell::Shell(const QString &serializedOptions)
- }
-
- QDBusConnection::sessionBus().registerObject(QStringLiteral("/okularshell"), this, QDBusConnection::ExportScriptableSlots);
-+#endif // HAVE_DBUS
-
- // Make sure that the welcome scren is visible on startup.
- showWelcomeScreen();
-@@ -335,9 +339,11 @@ Shell::~Shell()
- }
- m_tabs.clear();
- }
-+#if HAVE_DBUS
- if (m_unique) {
- QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.kde.okular"));
- }
-+#endif // HAVE_DBUS
-
- delete m_tabWidget;
- }
-diff --git a/shell/shell.h b/shell/shell.h
-index a062214b7c..e285f1bfc6 100644
---- a/shell/shell.h
-+++ b/shell/shell.h
-@@ -12,6 +12,7 @@
- #ifndef _OKULAR_SHELL_H_
- #define _OKULAR_SHELL_H_
-
-+#include "config-okular.h"
- #include <QAction>
- #include <QList>
- #include <QMimeDatabase>
-@@ -19,7 +20,11 @@
- #include <kparts/mainwindow.h>
- #include <kparts/readwritepart.h>
-
-+#if HAVE_DBUS
- #include <QDBusAbstractAdaptor> // for Q_NOREPLY
-+#else
-+#define Q_NOREPLY
-+#endif
- #include <QStackedWidget>
-
- #include "welcomescreen.h"
---
diff --git a/patches/okular/lower-cmake-requirement.patch b/patches/okular/lower-cmake-requirement.patch
new file mode 100755
index 00000000..85f538ab
--- /dev/null
+++ b/patches/okular/lower-cmake-requirement.patch
@@ -0,0 +1,14 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b66bd756f..b5a9c6072 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.22)
++cmake_minimum_required(VERSION 3.17)
+
+ # KDE Application Version, managed by release script
+ set (RELEASE_SERVICE_VERSION_MAJOR "23")
diff --git a/src/gpg4win.mk.in b/src/gpg4win.mk.in
index dbf826fd..b923e300 100644
--- a/src/gpg4win.mk.in
+++ b/src/gpg4win.mk.in
@@ -1,1234 +1,1234 @@
# gpg4win.m4.in - Installer for GnuPG 4 Windows Makefile. -*- makefile -*-
# Copyright (C) 2005, 2009 g10 Code GmbH
#
# This file is part of GPG4Win.
#
# GPG4Win is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GPG4Win is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
# No servicable parts below this line :)
# These paths must be absolute, as we switch directories pretty often.
bdir := $(root)/build
idir := $(root)/install
ipdir := $(root)/install/pkgs
tsdir := $(shell pwd)/${top_srcdir}
pdir := $(shell pwd)/${top_srcdir}/patches
ex_idir := $(root)/install-ex
ex_ipdir := $(root)/install-ex/pkgs
ifdef GIT_BETASTRING
VSD_VERSION_FILE:=$(VSD_VERSION)$(GIT_BETASTRING)
else
VSD_VERSION_FILE:=$(VSD_VERSION)
endif
# We collect the names of all pkg files used.
pkg_files =
# The playground area is our scratch area, where we unpack, build and
# install the packages.
#
# Boost includes are only needed for the host and are linked in the
# playground install tree
$(stampdir)/stamp-directories:
$(MKDIR) $(stampdir)
$(MKDIR) $(root)
$(MKDIR) -p installers
$(MKDIR) $(bdir)
$(MKDIR) $(idir)
$(MKDIR) $(idir)/include
ln -s /usr/include/boost $(idir)/include/boost
$(MKDIR) $(ipdir)
$(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_idir))
$(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_ipdir))
touch $(bdir)/versioninfo.txt
touch $(stampdir)/stamp-directories
# Frob the name $1 by converting all '-' and '+' characters to '_'.
define FROB_macro
$(subst +,_,$(subst -,_,$(1)))
endef
# Get the variable $(1) (which may contain '-' and '+' characters).
define GETVAR
$($(call FROB_macro,$(1)))
endef
# Set a couple of common variables.
define SETVARS
set -e; \
pkg="$(call GETVAR,gpg4win_pkg_$(1))"; \
pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \
pkgsdir="$(bdir)/$$$${pkg_version}"; \
pkgbdir="$(bdir)/$$$${pkg_version}-build"; \
pkgpdir="$(pdir)/$$$${pkg_version}"; \
pkgpbdir="$(pdir)/$(1)"; \
pkgidir="$(ipdir)/$$$${pkg_version}"; \
pkg_dev="$(call GETVAR,gpg4win_pkg_$(1)_dev)"; \
pkg_version_dev="$(1)-dev-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \
pkgidir_dev="$(ipdir)/$$$${pkg_version_dev}"; \
pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_configure)"; \
pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_extracflags)"; \
pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_make_args)"; \
pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_args_inst)";\
pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)"; \
pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)"; \
export PKG_CONFIG="$(tsdir)/src/pkg-config"; \
export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig"; \
export PKG_CONFIG_LIBDIR=""; \
export PATH="$(idir)/bin:$${PATH}"; \
export SYSROOT="$(idir)"; \
export CONFIG_SITE="$(tsdir)/src/config.site"
endef
# Set variables for building in an additional architecture
define SETVARS_EX
set -e; \
pkg="$(call GETVAR,gpg4win_pkg_$(1))"; \
pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \
pkgsdir="$(bdir)/$$$${pkg_version}"; \
pkgbdir="$(bdir)/$$$${pkg_version}-ex-build"; \
pkgpdir="$(pdir)/$$$${pkg_version}"; \
pkgpbdir="$(pdir)/$(1)"; \
pkgidir="$(ex_ipdir)/$$$${pkg_version}"; \
pkgidir_dev="$(ex_ipdir)/$$$${pkg_version_dev}"; \
pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_ex_configure)"; \
pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_ex_extracflags)"; \
pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args)"; \
pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args_inst)"; \
pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)"; \
pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)"; \
export PKG_CONFIG="$(tsdir)/src/pkg-config"; \
export PKG_CONFIG_PATH="$(ex_idir)/lib/pkgconfig"; \
export PKG_CONFIG_LIBDIR=""; \
export PATH="$(ex_idir)/bin:$${PATH}"; \
export SYSROOT="$(ex_idir)"
endef
define SETVARS_WINE
set -e; \
if [ -z "$$$$(which $(WINE))" ]; then \
echo "ERROR: For the msi-package wine needs to be installed."; \
exit 1; \
fi; \
if [ -z "$(WIXPREFIX)" ]; then \
if [ -d `readlink -f ~/w32root/wixtools` ]; then \
WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \
echo "Using $$$$WIXPREFIX2 as WIXPREFIX"; \
else \
echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \
exit 1; \
fi; \
else \
WIXPREFIX2="$(WIXPREFIX)"; \
fi; \
if [ -z "$$$$WINEPREFIX" ]; then \
WINEPREFIX="$$$$HOME/.wine"; \
if [ ! -e "$$$$WINEPREFIX/dosdevices" ]; then \
echo "ERROR: No wine prefix found under $$WINEPREFIX"; \
exit 1; \
fi; \
fi; \
WINEINST=$$$$WINEPREFIX/dosdevices/k:; \
WINESRC=$$$$WINEPREFIX/dosdevices/i:; \
WINEINSTEX=$$$$WINEPREFIX/dosdevices/j:; \
if [ -e "$$$$WINEINST" ]; then \
echo "ERROR: $$$$WINEINST already exists. Please remove."; \
exit 1; \
fi; \
if [ -e "$$$$WINESRC" ]; then \
echo "ERROR: $$$$WINESRC already exists. Please remove."; \
exit 1; \
fi; \
if [ -e "$$$$WINEINSTEX" ]; then \
echo "ERROR: $$$$WINEINSTEX already exists. Please remove."; \
exit 1; \
fi; \
MSI_VERSION=$$$$(echo $(VSD_VERSION))
endef
# Same as above
define SETVARS_WINE_TWO_DOLLAR
set -e; \
if [ -z "$$(which $(WINE))" ]; then \
echo "ERROR: For the msi-package wine needs to be installed."; \
exit 1; \
fi; \
if [ -z "$(WIXPREFIX)" ]; then \
if [ -d `readlink -f ~/w32root/wixtools` ]; then \
WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \
echo "Using $$WIXPREFIX2 as WIXPREFIX"; \
else \
echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \
exit 1; \
fi; \
else \
WIXPREFIX2="$(WIXPREFIX)"; \
fi; \
if [ -z "$$WINEPREFIX" ]; then \
WINEPREFIX="$$HOME/.wine"; \
if [ ! -e "$$WINEPREFIX/dosdevices" ]; then \
echo "ERROR: No wine prefix found under $$WINEPREFIX"; \
exit 1; \
fi; \
fi; \
WINEINST=$$WINEPREFIX/dosdevices/k:; \
WINESRC=$$WINEPREFIX/dosdevices/i:; \
WINEINSTEX=$$WINEPREFIX/dosdevices/j:; \
if [ -e "$$WINEINST" ]; then \
echo "ERROR: $$WINEINST already exists. Please remove."; \
exit 1; \
fi; \
if [ -e "$$WINESRC" ]; then \
echo "ERROR: $$WINESRC already exists. Please remove."; \
exit 1; \
fi; \
if [ -e "$$WINEINSTEX" ]; then \
echo "ERROR: $$WINEINSTEX already exists. Please remove."; \
exit 1; \
fi; \
MSI_VERSION=$$(echo $(VSD_VERSION))
endef
# Support macro. Unpack the archive $(1).
define DEFLATE_macro
if [ -L "$$$${pkgsdir}" ]; then \
echo "Not overwriting symlink $$$${pkgsdir}"; \
else \
rm -rf $$$${pkgsdir}; \
case "$(1)" in \
*/qtbase*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qtbase-everywhere-src,qtbase,' -f "$(1)" ;; \
*/qttools*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qttools-everywhere-src,qttools,' -f "$(1)" ;; \
*/qtwinextras*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qtwinextras-everywhere-src,qtwinextras,' -f "$(1)" ;; \
*/qtsvg*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qtsvg-everywhere-src,qtsvg,' -f "$(1)" ;; \
*/qttranslations*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qttranslations-everywhere-src,qttranslations,' -f "$(1)" ;; \
*.tar.gz | *.tgz) \
$(TAR) xzf "$(1)" ;; \
*.tar.bz2 | *.tbz2 | *.tbz) \
$(TAR) xjf "$(1)" ;; \
*.tar.xz ) \
$(TAR) xJf "$(1)" ;; \
*.exe ) \
cp "$(1)" . ;; \
*.zip) \
$(UNZIP) -o "$(1)" ;; \
esac; \
fi
endef
# Support macro. Strip all exe files below $(1).
define STRIP_macro
if test -z '$(DEBUG)'; then \
(cd $(1); \
for f in `find . -name \*.exe -o -name \*.dll`; do \
echo Calling $(STRIP) "$$$${pkg_version}/$$$${f}"; \
$(STRIP) "$$$${f}"; done); \
fi
endef
# Support macro. Strip all exe files below $(1) using STRIP_EX.
define STRIP_EX_macro
if test -z '$(DEBUG)'; then \
(cd $(1); \
for f in `find . -name \*.exe -o -name \*.dll`; do \
echo Calling $(STRIP_EX) "$$$${pkg_version}/$$$${f}"; \
$(STRIP_EX) "$$$${f}"; done); \
fi
endef
define GETDEPS
$(addprefix $(stampdir)/stamp-final-, $(call GETVAR,gpg4win_pkg_$(1)_deps))
endef
define GETDEPS_EX
$(addprefix $(stampdir)/stamp-final-ex-, $(call GETVAR,gpg4win_pkg_$(1)_ex_deps))
endef
# Template for source packages to build for an additional host
define EXPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
$(stampdir)/stamp-$(1)-ex-00-unpack: $(stampdir)/stamp-$(1)-00-unpack $(call GETDEPS_EX,$(1))
touch $(stampdir)/stamp-$(1)-ex-00-unpack
$(stampdir)/stamp-$(1)-ex-01-patch: $(stampdir)/stamp-$(1)-ex-00-unpack $(stampdir)/stamp-$(1)-01-patch
touch $(stampdir)/stamp-$(1)-ex-01-patch
$(stampdir)/stamp-$(1)-ex-02-configure: $(stampdir)/stamp-$(1)-ex-01-patch
($(call SETVARS_EX,$(1)); \
mkdir -p "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
eval "../$$$${pkg_version}/configure" \
--prefix="$$$${pkgidir}" \
--host=$(GPGEX_ADD_HOST) \
--build=$(build) \
$$$${pkgcfg} CFLAGS=\"-mms-bitfields -fcommon $$$${pkgextracflags}\";\
shopt -s nullglob; \
for pfile in "$$$${pkgpbdir}"/*.postcfg \
"$$$${pkgpdir}"/*.postcfg ; do \
(cd "$$$${pkgsdir}"; "$$$${pfile}") \
done; \
for pfile in "$$$${pkgpbdir}"/*.postcfg-build \
"$$$${pkgpdir}"/*.postcfg-build ; do \
(cd "$$$${pkgbdir}"; "$$$${pfile}") \
done)
touch $(stampdir)/stamp-$(1)-ex-02-configure
$(stampdir)/stamp-$(1)-ex-03-make: $(stampdir)/stamp-$(1)-ex-02-configure
($(call SETVARS_EX,$(1)); \
cd "$$$${pkgbdir}"; \
test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs} \
)
touch $(stampdir)/stamp-$(1)-ex-03-make
# Note that post_install must come last because it may be empty and
# "; ;" is a syntax error.
$(stampdir)/stamp-$(1)-ex-04-install: $(stampdir)/stamp-$(1)-ex-03-make
($(call SETVARS_EX,$(1)); \
cd "$$$${pkgbdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
$(call STRIP_EX_macro,"$$$${pkgidir}"); \
rm -f "$$$${pkgidir}/share/info/dir"; \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_ex_post_install))
touch $(stampdir)/stamp-$(1)-ex-04-install
$(stampdir)/stamp-$(1)-ex-05-stow: $(stampdir)/stamp-$(1)-ex-04-install
($(call SETVARS_EX,$(1)); \
cd $(ex_ipdir); \
$(STOW) -t `readlink -f $(ex_idir)` "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-ex-05-stow
$(stampdir)/stamp-final-ex-$(1): $(stampdir)/stamp-$(1)-ex-05-stow
touch $(stampdir)/stamp-final-ex-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-ex-$(1)
clean-ex-$(1):
($(call SETVARS_EX,$(1)); \
(cd $(ex_ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
rm -fR "$$$${pkg_version}")); \
rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
rm -f $(stampdir)/stamp-final-ex-$(1) $(stampdir)/stamp-$(1)-ex-*
endef
define EXPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call EXPKG_template_,$1))
endef
# Template for source packages.
define SPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
$(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
(cd $(bdir); \
$(call SETVARS,$(1)); \
$(call DEFLATE_macro,$$$${pkg}))
touch $(stampdir)/stamp-$(1)-00-unpack
$(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
(shopt -s nullglob; \
$(call SETVARS,$(1)); \
if [ ! -L "$$$${pkgsdir}" ]; then \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done \
else \
echo "Not patching symlinked $(1)"; \
fi)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
mkdir "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
eval "../$$$${pkg_version}/configure" \
--prefix="$$$${pkgidir}" \
--host=$(host) \
--build=$(build) \
$$$${pkgcfg} CFLAGS=\"-mms-bitfields -fcommon $$$${pkgextracflags}\";\
shopt -s nullglob; \
for pfile in "$$$${pkgpbdir}"/*.postcfg \
"$$$${pkgpdir}"/*.postcfg ; do \
(cd "$$$${pkgsdir}"; "$$$${pfile}") \
done; \
for pfile in "$$$${pkgpbdir}"/*.postcfg-build \
"$$$${pkgpdir}"/*.postcfg-build ; do \
(cd "$$$${pkgbdir}"; "$$$${pfile}") \
done;) && \
touch $(stampdir)/stamp-$(1)-02-configure
$(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
($(call SETVARS,$(1)); \
cd "$$$${pkgbdir}"; \
test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
touch $(stampdir)/stamp-$(1)-03-make
# Note that post_install must come last because it may be empty and
# "; ;" is a syntax error.
$(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
($(call SETVARS,$(1)); \
cd "$$$${pkgbdir}"; \
cd "$$$${pkgmkdir_inst}"; \
$(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
$(call STRIP_macro,"$$$${pkgidir}"); \
rm -f "$$$${pkgidir}/share/info/dir"; \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-05-stow
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
touch $(stampdir)/stamp-final-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
rm -fR "$$$${pkg_version}")); \
rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define SPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call SPKG_template_,$1))
endef
# Template for source packages using only make and no build
# directory.
define MPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
$(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
(cd $(bdir); \
$(call SETVARS,$(1)); \
$(call DEFLATE_macro,$$$${pkg}))
touch $(stampdir)/stamp-$(1)-00-unpack
$(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
(shopt -s nullglob; \
$(call SETVARS,$(1)); \
if [ ! -L "$$$${pkgsdir}" ]; then \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done \
else \
echo "Not patching symlinked $(1)"; \
fi)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
cd "$$$${pkgsdir}"; \
test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs})
touch $(stampdir)/stamp-$(1)-03-make
$(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
($(call SETVARS,$(1)); \
cd "$$$${pkgsdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
$(call STRIP_macro,"$$$${pkgidir}"); \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-05-stow
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
touch $(stampdir)/stamp-final-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
rm -fR "$$$${pkg_version}")); \
rm -fR "$$$${pkgsdir}")
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define MPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call MPKG_template_,$1))
endef
# Template for binary packages.
define BPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
pkg_files += $(call GETVAR,gpg4win_pkg_$(1)_dev)
$(stampdir)/stamp-$(1)-00-install: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
($(call SETVARS,$(1)); \
$(MKDIR) "$$$${pkgidir}"; \
cd $$$${pkgidir}; \
$(call DEFLATE_macro,$$$${pkg}))
touch $(stampdir)/stamp-$(1)-00-install
# Note that post_install must come last because it may be empty and
# "; ;" is a syntax error.
$(stampdir)/stamp-$(1)-01-install-dev: $(stampdir)/stamp-$(1)-00-install
($(call SETVARS,$(1)); \
$(MKDIR) "$$$${pkgidir_dev}"; \
(cd $$$${pkgidir_dev}; \
$(call DEFLATE_macro,$$$${pkg_dev})); \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-01-install-dev
$(stampdir)/stamp-$(1)-02-stow: $(stampdir)/stamp-$(1)-01-install-dev
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-02-stow
$(stampdir)/stamp-$(1)-03-stow-dev: $(stampdir)/stamp-$(1)-02-stow
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version_dev}")
touch $(stampdir)/stamp-$(1)-03-stow-dev
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-03-stow-dev
touch $(stampdir)/stamp-final-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
cd $(ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
$(STOW) -D "$$$${pkg_version_dev}" || true; \
rm -fR "$$$${pkg_version}" "$$$${pkg_version_dev}"))
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define BPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call BPKG_template_,$1))
endef
# Template for qt packages.
define QTPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
$(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
(cd $(bdir); \
$(call SETVARS,$(1)); \
$(call DEFLATE_macro,$$$${pkg}))
touch $(stampdir)/stamp-$(1)-00-unpack
$(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
(shopt -s nullglob; \
$(call SETVARS,$(1)); \
if [ ! -L "$$$${pkgsdir}" ]; then \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done \
else \
echo "Not patching symlinked $(1)"; \
fi)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
mkdir "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
$$$${pkgcfg}) && \
touch $(stampdir)/stamp-$(1)-02-configure
$(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
($(call SETVARS,$(1)); \
cd "$$$${pkgbdir}"; \
test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
touch $(stampdir)/stamp-$(1)-03-make
# Note that post_install must come last because it may be empty and
# "; ;" is a syntax error.
$(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
($(call SETVARS,$(1)); \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-05-stow
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
touch $(stampdir)/stamp-final-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
rm -fR "$$$${pkg_version}")); \
rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define QTPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call QTPKG_template_,$1))
endef
# Template for internal packages.
define IPKG_template
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-directories $(call GETDEPS,$(1))
touch $(stampdir)/stamp-final-$(1)
endef
# Template for README files
# (The final awk command converts the file endings).
define README_template
README.$(1).txt : versioninfo.txt NEWS.tmp $(top_srcdir)/doc/README.$(1).txt \
COMPONENTS-list.tmp $(top_srcdir)/doc/beta-warning.txt
sed -e '/^;.*/d;/!VERSIONINFO!/{r versioninfo.txt' -e 'd;}' \
-e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \
-e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \
-e '/!COMPONENTS!/{r COMPONENTS-list.tmp' -e 'd;}' \
-e '/!PKG-COPYRIGHT!/{r $(top_srcdir)/doc/pkg-copyright.txt' -e 'd;}' \
-e 's,!VERSION!,$(VERSION),g' \
-e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \
< $(top_srcdir)/doc/README.$(1).txt \
| (if echo "$(VERSION)" | egrep 'svn|rc|beta|git' >/dev/null; then \
sed -e '/!BETA-WARNING!/{r $(top_srcdir)/doc/beta-warning.txt' \
-e 'd;}'; else sed -e 's,!BETA-WARNING!,,g'; fi) \
| awk '{printf "%s\r\n", $$$$0}' >README.$(1).txt
endef
define HOWTO_template
HOWTO-$(1).$(2).txt : $(top_srcdir)/doc/HOWTO-$(1).$(2).txt
sed -e '/^;.*/d' \
-e 's,!VERSION!,$(VERSION),g' \
-e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \
< $(top_srcdir)/doc/HOWTO-$(1).$(2).txt \
| awk '{printf "%s\r\n", $$$$0}' > HOWTO-$(1).$(2).txt
endef
# Template for source packages of KDE software
define KDEPKG_template_
pkg_files += $(call GETVAR,gpg4win_pkg_$(1))
$(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories $(call GETDEPS,$(1))
(cd $(bdir); \
$(call SETVARS,$(1)); \
$(call DEFLATE_macro,$$$${pkg}))
touch $(stampdir)/stamp-$(1)-00-unpack
$(stampdir)/stamp-$(1)-01-patch: $(stampdir)/stamp-$(1)-00-unpack
(shopt -s nullglob; \
$(call SETVARS,$(1)); \
if [ ! -L "$$$${pkgsdir}" ]; then \
cd "$$$${pkgsdir}"; \
- sed -i 's/set(KF5_MIN_VERSION.*)/set(KF5_MIN_VERSION "5.104.0")/' CMakeLists.txt; \
- sed -i 's/set(KF_MIN_VERSION.*)/set(KF_MIN_VERSION "5.104.0")/' CMakeLists.txt; \
- sed -i 's/set(KF5_VERSION.*)/set(KF5_VERSION "5.104.0")/' CMakeLists.txt; \
+ sed -i 's/set(KF5_MIN_VERSION.*)/set(KF5_MIN_VERSION "5.109.0")/' CMakeLists.txt; \
+ sed -i 's/set(KF_MIN_VERSION.*)/set(KF_MIN_VERSION "5.109.0")/' CMakeLists.txt; \
+ sed -i 's/set(KF5_VERSION.*)/set(KF5_VERSION "5.109.0")/' CMakeLists.txt; \
sed -i 's/set(KMIME_VERSION.*)/set(KMIME_VERSION "5.2.40")/' CMakeLists.txt; \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done \
else \
echo "Not patching symlinked $(1)"; \
fi)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
mkdir "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
$(CMAKE) \
-DCMAKE_INSTALL_PREFIX="$$$${pkgidir}" \
-DCMAKE_PREFIX_PATH="$$$${pkgidir}" \
-DQT_MAJOR_VERSION="5" \
-DCMAKE_TOOLCHAIN_FILE=$(abs_top_srcdir)/src/toolchain.cmake \
-DPKG_CONFIG_EXECUTABLE=$(abs_top_srcdir)/src/pkg-config \
-DKDE_INSTALL_DATADIR="$$$${pkgidir}/share" \
-DBUILD_TESTING=False \
$$$${pkgcfg} $$$${pkgextracflags} "../$$$${pkg_version}") && \
touch $(stampdir)/stamp-$(1)-02-configure
$(stampdir)/stamp-$(1)-03-make: $(stampdir)/stamp-$(1)-02-configure
($(call SETVARS,$(1)); \
cd "$$$${pkgbdir}"; \
test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \
$(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs})
touch $(stampdir)/stamp-$(1)-03-make
# Note that post_install must come last because it may be empty and
# "; ;" is a syntax error.
$(stampdir)/stamp-$(1)-04-install: $(stampdir)/stamp-$(1)-03-make
($(call SETVARS,$(1)); \
cd "$$$${pkgbdir}"; \
cd "$$$${pkgmkdir_inst}"; \
$(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \
$(call STRIP_macro,"$$$${pkgidir}"); \
$(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-stow: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
cd $(ipdir); \
$(STOW) "$$$${pkg_version}")
touch $(stampdir)/stamp-$(1)-05-stow
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-05-stow
touch $(stampdir)/stamp-final-$(1)
$(1): $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
($(STOW) -D "$$$${pkg_version}" || true; \
rm -fR "$$$${pkg_version}")); \
rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}")
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define KDEPKG_template
$(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))),
$(call KDEPKG_template_,$1))
endef
# Sign the file $1 and save the result as $2
define AUTHENTICODE_sign
set -e;\
if [ -n "$(3)" ]; then \
val_n="$(3)"; \
val_i="https://gnupg.com"; \
elif [ "$(IS_VSD_BUILD)" = yes ]; then \
val_n="GnuPG VS-Desktop" ;\
val_i="https://gnupg.com" ;\
else \
val_n="Gpg4win" ;\
val_i="https://gpg4win.org" ;\
fi ;\
if [ -n "$(AUTHENTICODE_SIGNHOST)" ]; then \
echo "speedo: Signing via host $(AUTHENTICODE_SIGNHOST)";\
scp $(1) "$(AUTHENTICODE_SIGNHOST):a.exe" ;\
ssh "$(AUTHENTICODE_SIGNHOST)" $(AUTHENTICODE_TOOL) sign \
/v /sm \
/a /n '"g10 Code GmbH"' \
/tr 'http://rfc3161timestamp.globalsign.com/advanced' /td sha256 \
/d '"GnuPG VS-Desktop"' \
/fd sha256 /du https://gnupg.com a.exe; \
scp "$(AUTHENTICODE_SIGNHOST):a.exe" $(2);\
echo "signed file is '$(2)'" ;\
elif [ "$(AUTHENTICODE_KEY)" = card ]; then \
echo "speedo: Signing using a card '$(1)'";\
$(OSSLSIGNCODE) sign \
-pkcs11engine $(OSSLPKCS11ENGINE) \
-pkcs11module $(SCUTEMODULE) \
-certs $(AUTHENTICODE_CERTS) \
-h sha256 -n "$$$${val_n}" -i "$$$${val_i}" \
-ts http://rfc3161timestamp.globalsign.com/advanced \
-in $(1) -out $(2).tmp ; cp $(2).tmp $(2) ; rm $(2).tmp ; \
echo "signed file is '$(2)'" ;\
else \
echo "speedo: Signing using key $(AUTHENTICODE_KEY)";\
osslsigncode sign -certs $(AUTHENTICODE_CERTS) \
-pkcs12 $(AUTHENTICODE_KEY) -askpass \
-ts "http://timestamp.globalsign.com/scripts/timstamp.dll" \
-h sha256 -n "$$$${val_n}" -i "$$$${val_i}" \
-in $(1) -out $(2) ;\
fi
endef
define MSI_template
$(1)_PRODUCT := $(msi_target_$(1)_PRODUCT)
ifeq ($$($(1)_PRODUCT),)
$(1)_PRODUCT := $(VSD_PRODUCT)
endif
ifeq ($$($(1)_PRODUCT),)
$(1)_PRODUCT := Gpg4win
endif
$(1)_PRODUCT_PRETTY := $(msi_target_$(1)_PRODUCT_PRETTY)
ifeq ($$($(1)_PRODUCT_PRETTY),)
$(1)_PRODUCT_PRETTY := $(VSD_PRODUCT_PRETTY)
endif
ifeq ($$($(1)_PRODUCT_PRETTY),)
$(1)_PRODUCT_PRETTY := Gpg4win
endif
$(1)-package: installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi
$$($(1)_PRODUCT)-$(VERSION).wxs: gpg4win.nsi $(common_nsi) $(stampdir)/stamp-final \
$(foosum_exe) gpgwrap.exe \
$(README_files) $(HOWTO_files) \
versioninfo.txt make-msi.pl \
$(addsuffix /VERSION.sig,$(addprefix gnupg-vsd/,$(msi_targets)))
perl make-msi.pl --guids $(srcdir)/make-msi.guids \
--manifest gpg4win-$(VERSION).files \
--version $(VSD_VERSION) \
--name "$$($(1)_PRODUCT_PRETTY)" \
-DBUILD_DIR=. -DTOP_SRCDIR=$(top_srcdir) \
-DSRCDIR=$(srcdir) $(srcdir)/gpg4win.nsi > $$($(1)_PRODUCT)-$(VERSION).wxs
$(idir)/$$($(1)_PRODUCT)-$(VERSION).wixlib: \
$(stampdir)/stamp-final \
$(foosum_exe) \
$(README_files) $(HOWTO_files) \
license.blurb versioninfo.txt \
WixUI_Gpg4win.wxs \
$$($(1)_PRODUCT)-$(VERSION).wxs \
$(stampdir)/stamp-additional-signedfiles
($(call SETVARS_WINE,); \
echo "Gpg4win" > $(root)/VERSION; \
echo "$(VERSION)" >> $(root)/VERSION; \
(ln -s $(idir) $$$$WINEINST; \
ln -s $(ex_idir) $$$$WINEINSTEX; \
ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-out k:\\$$($(1)_PRODUCT)-$(VERSION).wixobj \
-pedantic -wx i:\\src\\$$($(1)_PRODUCT)-$(VERSION).wxs \
-arch x64 || exit 1;\
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-out k:\\gpg4win-ui.wixobj \
-arch x64 \
-pedantic -wx i:\\src\\WixUI_Gpg4win.wxs || exit 1;\
\
$(WINE) $$$$WIXPREFIX2/lit.exe \
-out k:\\$$($(1)_PRODUCT)-$(VERSION).wixlib \
-bf \
-wx \
-pedantic \
k:\\$$($(1)_PRODUCT)-$(VERSION).wixobj k:\\gpg4win-ui.wixobj || exit 1; \
\
) || ERR=1; (rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
if [ -n "$$$$ERR" ]; then \
exit 1; \
fi)
$(idir)/$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib: \
$(stampdir)/stamp-final \
$(foosum_exe) \
$(README_files) $(HOWTO_files) \
license.blurb versioninfo.txt \
WixUI_Gpg4win.wxs \
$$($(1)_PRODUCT)-$(VERSION).wxs \
$(stampdir)/stamp-additional-signedfiles
($(call SETVARS_WINE,); \
echo "Gpg4win" > $(root)/VERSION; \
echo "$(VERSION)" >> $(root)/VERSION; \
(ln -s $(idir) $$$$WINEINST; \
ln -s $(ex_idir) $$$$WINEINSTEX; \
ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-arch x86 \
-out k:\\$$($(1)_PRODUCT)-$(VERSION)-x86.wixobj \
-pedantic -wx i:\\src\\$$($(1)_PRODUCT)-$(VERSION).wxs || exit 1;\
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-arch x86 \
-out k:\\gpg4win-ui-x86.wixobj \
-pedantic -wx i:\\src\\WixUI_Gpg4win.wxs || exit 1;\
\
$(WINE) $$$$WIXPREFIX2/lit.exe \
-out k:\\$$$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib \
-bf \
-wx \
-pedantic \
k:\\$$($(1)_PRODUCT)-$(VERSION)-x86.wixobj k:\\gpg4win-ui-x86.wixobj || exit 1; \
\
) || ERR=1; (rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
if [ -n "$$$$ERR" ]; then \
exit 1; \
fi)
$(idir)/$(1)-x86.wixlib: gnupg-vsd/$(1)/$(1).wxs
($(call SETVARS_WINE,); \
( \
ln -s $(idir) $$$$WINEINST; \
ln -s $(ex_idir) $$$$WINEINSTEX; \
ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-arch x86 \
-out k:\\$(1)-$(VERSION)-x86.wixobj \
-pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\
$(WINE) $$$$WIXPREFIX2/lit.exe \
-out k:\\$(1)-x86.wixlib \
-bf \
-wx \
-pedantic \
k:\\$(1)-$(VERSION)-x86.wixobj || exit 1; \
\
) || ERR=1; \
(rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
if [ -n "$$$$ERR" ]; then \
exit 1; \
fi \
)
$(idir)/$(1).wixlib: gnupg-vsd/$(1)/$(1).wxs
($(call SETVARS_WINE,); \
( \
ln -s $(idir) $$$$WINEINST; \
ln -s $(ex_idir) $$$$WINEINSTEX; \
ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \
$(WINE) $$$$WIXPREFIX2/candle.exe \
-dInstDir=k: \
-dInstDirEx=j: \
-dSrcDir=i:\\src \
-dVersion=$$$$MSI_VERSION \
-out k:\\$(1)-$(VERSION).wixobj \
-arch x64 \
-pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\
$(WINE) $$$$WIXPREFIX2/lit.exe \
-out k:\\$(1).wixlib \
-bf \
-wx \
-pedantic \
k:\\$(1)-$(VERSION).wixobj || exit 1; \
\
) || ERR=1; \
(rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \
if [ -n "$$$$ERR" ]; then \
exit 1; \
fi \
)
# This is generated by make-msi.pl
gnupg-vsd/$(1)/$(1).wxs: gnupg-vsd/$(1)/VERSION.sig make-msi.pl $$($(1)_PRODUCT)-$(VERSION).wxs
perl make-msi.pl --guids $(srcdir)/make-msi.guids \
--manifest gpg4win-$(VERSION).files \
--version $(VSD_VERSION) \
--name "$$($(1)_PRODUCT_PRETTY)" \
-DBUILD_DIR=. -DTOP_SRCDIR=$(top_srcdir) \
-DSRCDIR=$(srcdir) $(srcdir)/gpg4win.nsi > /dev/null
gnupg-vsd/$(1)/VERSION.sig: gnupg-vsd/$(1)/VERSION
echo "----------SIGNING----------"
echo "using key: $(version_signkey)"
cat gnupg-vsd/$(1)/VERSION
gpg --yes -o gnupg-vsd/$(1)/VERSION.sig -bau $(version_signkey) gnupg-vsd/$(1)/VERSION
gnupg-vsd/$(1)/VERSION: gnupg-vsd/custom.mk
if [ "$(call GETVAR,msi_target_$(1)_VERSION)" = "VS-Desktop-$(VSD_VERSION)" ]; then \
echo "VS-Desktop-$(VSD_VERSION_FILE)" > gnupg-vsd/$(1)/VERSION; \
else \
echo "$(call GETVAR,msi_target_$(1)_VERSION)" > gnupg-vsd/$(1)/VERSION;\
fi
echo "$(call GETVAR,msi_target_$(1)_DESC)" >> gnupg-vsd/$(1)/VERSION
echo "$(call GETVAR,msi_target_$(1)_DESC_SHORT)" >> gnupg-vsd/$(1)/VERSION
gnupg-vsd/$(1)/announcement.txt: gnupg-vsd/custom.mk gnupg-vsd/announcement.de.in gnupg-vsd/announcement.en.in
cat gnupg-vsd/$(call GETVAR,msi_target_$(1)_announcement) | \
sed 's/VSD_VERSION/$(VSD_VERSION)/' | \
sed 's@GNUPG_VSD_CUSTOMER_LINK@https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi@' | \
sed 's@GNUPG_VSD_SOURCE_LINK@https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.xz@' > gnupg-vsd/$(1)/announcement.txt
installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi: $(stampdir)/stamp-msi-base $(idir)/$(1).wixlib \
gnupg-vsd/$(1)/license.rtf $(idir)/$$($(1)_PRODUCT)-$(VERSION).wixlib
scp gnupg-vsd/$(1)/license.rtf \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(idir)/$(1).wixlib \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(idir)/$$($(1)_PRODUCT)-$(VERSION).wixlib $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \
-cc . \
-reusecab \
-spdb \
-ext WixUIExtension \
-out $$($(1)_PRODUCT)-$(VERSION)-$(1).msi \
$(call GETVAR,msi_target_$(1)_l10n) \
-dcl:high \
-pedantic \
\
$$($(1)_PRODUCT)-$(VERSION).wixlib \
gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \
$(1).wixlib" | grep -v "ICE80" | grep -v "ICE57" ; \
scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/$$($(1)_PRODUCT)-$(VERSION)-$(1).msi \
installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi;
installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1)-x86.msi: $(stampdir)/stamp-msi-base $(idir)/$(1)-x86.wixlib \
gnupg-vsd/$(1)/license.rtf \
$(idir)/$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib
scp gnupg-vsd/$(1)/license.rtf \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(idir)/$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(idir)/$(1)-x86.wixlib \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \
$(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
scp $(idir)/$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \
ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \
-cc . \
-reusecab \
-spdb \
-ext WixUIExtension \
-out $$($(1)_PRODUCT)-$(VERSION)-$(1)-x86.msi \
$(call GETVAR,msi_target_$(1)_l10n) \
-dcl:high \
-v -pedantic \
\
$$($(1)_PRODUCT)-$(VERSION)-x86.wixlib \
gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \
$(1)-x86.wixlib"; \
scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/$$($(1)_PRODUCT)-$(VERSION)-$(1)-x86.msi \
installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1)-x86.msi;
signed_installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi: installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi
mkdir -p signed_installers
$(call AUTHENTICODE_sign,"installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi","signed_installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi",$$($(1)_PRODUCT_PRETTY));\
$(stampdir)/stamp-$(1)-upload: signed_installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi \
$(stampdir)/stamp-dist-self
@(set -e; cd signed_installers; \
sha256sum $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi > \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.sha256; \
if [ -f "../gnupg-vsd/$(1)/customer-enc-key.asc" ]; then \
echo "Encrypting installer"; \
k="-f ../gnupg-vsd/$(1)/customer-enc-key.asc" ; \
for i in 2 3 4 5 6 7 8 9; do \
if [ -f "../gnupg-vsd/$(1)/customer-enc-key$$$${i}.asc" ]; then \
k="$$$${k} -f ../gnupg-vsd/$(1)/customer-enc-key$$$${i}.asc";\
fi; \
done; \
gpg --no-options --batch --yes -seu $(msi_signkey) \
$$$${k} \
-f "../gnupg-vsd/general-enc-key.asc" \
-o $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi;\
sha256sum $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg > \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg.sha256; \
scp $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg.sha256 \
$(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \
echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.gpg" \
> $(stampdir)/stamp-$(1)-upload; \
else \
gpg --yes -o $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.sig -bu $(msi_signkey) \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi; \
scp $$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.sha256 \
$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.sig \
$(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \
ssh `echo $(VSD_PUBLISH_HOST) | cut -d ":" -f 1` \
echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi" \
> $(stampdir)/stamp-$(1)-upload; \
echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi.sig" \
>> $(stampdir)/stamp-$(1)-upload; \
fi)
.phony : $(1)
$(1): installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi
.PHONY : $(1)-x86
$(1)-x86: installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1)-x86.msi
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "XXXX FIXME: x86 Registration of GpgOL and GpgEX does not work! XXXX"
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
.PHONY : $(1)-upload
$(1)-upload: $(stampdir)/stamp-$(1)-upload $(stampdir)/stamp-dist-self
gpg --yes -o gnupg-vsd-$(VERSION).tar.xz.sig -bau $(msi_signkey) \
../gpg4win-$(VERSION).tar.xz
rsync -vP ../gpg4win-$(VERSION).tar.xz $(VSD_PUBLISH_HOST)/src/$$($(1)_PRODUCT)-$(VERSION).tar.xz
rsync -vP gnupg-vsd-$(VERSION).tar.xz.sig $(VSD_PUBLISH_HOST)/src/$$($(1)_PRODUCT)-$(VERSION).tar.xz.sig
echo "Upload URLs:"
cat $(stampdir)/stamp-$(1)-upload
echo "Source links:"
echo "https://download.gnupg.com/files/src/$$($(1)_PRODUCT)-$(VERSION).tar.xz"
echo "https://download.gnupg.com/files/src/$$($(1)_PRODUCT)-$(VERSION).tar.xz.sig"
$(1)-signed: signed_installers/$$($(1)_PRODUCT)-$(VSD_VERSION_FILE)-$(1).msi
$(1)-announce: gnupg-vsd/$(1)/announcement.txt
set -x
echo "-------- Announcement for $(1) ---------"
cat gnupg-vsd/$(1)/announcement.txt
echo "-----------------------------"
echo "Send to: $(call GETVAR,msi_target_$(1)_contact)"
echo "Ticket: $(call GETVAR,msi_target_$(1)_ticket)"
echo "-----------------------------"
endef
# Insert the template for each source package.
$(foreach spkg, $(gpg4win_spkgs), $(eval $(call SPKG_template,$(spkg))))
# Insert the template for each gpgEx architecture package.
$(foreach expkg, $(gpg4win_expkgs), $(eval $(call EXPKG_template,$(expkg))))
# Insert the template for each make only source package.
$(foreach mpkg, $(gpg4win_mpkgs), $(eval $(call MPKG_template,$(mpkg))))
# Insert the template for each binary package.
$(foreach bpkg, $(gpg4win_bpkgs), $(eval $(call BPKG_template,$(bpkg))))
# Insert the template for each internal package.
$(foreach ipkg, $(gpg4win_ipkgs), $(eval $(call IPKG_template,$(ipkg))))
# Insert the template for the README and HOWTO files.
$(foreach rll, $(gpg4win_readme_ll), $(eval $(call README_template,$(rll))))
# Insert the template for KDE packages.
$(foreach kdepkg, $(gpg4win_kdepkgs), $(eval $(call KDEPKG_template,$(kdepkg))))
# Insert the template for qt packages.
$(foreach qtpkg, $(gpg4win_qtpkgs), $(eval $(call QTPKG_template,$(qtpkg))))
$(foreach rll, $(gpg4win_howto_smime_ll), \
$(eval $(call HOWTO_template,SMIME,$(rll))))
$(stampdir)/stamp-binaries: $(addprefix $(stampdir)/stamp-final-,$(gpg4win_build_list)) \
$(addprefix $(stampdir)/stamp-final-ex-,$(gpg4win_build_ex_list))
touch $(stampdir)/stamp-binaries
$(stampdir)/stamp-final: $(stampdir)/stamp-directories $(stampdir)/stamp-additional-signedfiles
touch $(stampdir)/stamp-final
$(bdir)/versioninfo.txt: $(stampdir)/stamp-final
touch $(bdir)/versioninfo.txt
all-gpg4win: $(stampdir)/stamp-final
# Just to check if we catched all stamps.
clean-stamps:
$(RM) -fR $(stampdir)
clean-gpg4win:
$(RM) -fR $(root) $(stampdir)
$(stampdir)/stamp-versions-all-signed: $(stampdir)/stamp-directories \
$(addsuffix /VERSION.sig, $(addprefix gnupg-vsd/,$(msi_targets)))
touch $(stampdir)/stamp-versions-all-signed
$(stampdir)/stamp-all-upload: $(stampdir)/stamp-dist-self \
$(addsuffix -upload, $(addprefix $(stampdir)/stamp-,$(msi_targets)))
echo "Upload URLs:"
cat $(addsuffix -upload, $(addprefix $(stampdir)/stamp-,$(msi_targets)))
gpg --yes -o gnupg-vsd-$(VERSION).tar.xz.sig -bau $(msi_signkey) \
../gpg4win-$(VERSION).tar.xz
rsync -vP ../gpg4win-$(VERSION).tar.xz $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2
rsync -vP gnupg-vsd-$(VERSION).tar.xz.sig $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.xz.sig
echo "Source links:"
echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.xz"
echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.xz.sig"
touch $(stampdir)/stamps-all-upload
.PHONY: msi
# Add here if you use new product names we need new subst targets
msi: $(stampdir)/stamp-versions-all-signed \
$(subst GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-Desktop.msi, installers/GnuPG-Desktop-$(VSD_VERSION_FILE)-Desktop.msi, \
$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets))))
if [ -z "$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))" ]; then \
echo "No MSI targets configured."; \
else \
echo "######################"; \
echo "# MSI Packaging done #"; \
echo "######################"; \
fi
$(stampdir)/stamp-msi-all-signed: gnupg-vsd/sign.mk \
$(subst GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-Desktop.msi, signed_installers/GnuPG-Desktop-$(VSD_VERSION_FILE)-Desktop.msi, \
$(addsuffix .msi,$(addprefix signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets))))
touch $(stampdir)/stamp-msi-all-signed
msi-signed: $(stampdir)/stamp-msi-all-signed
msi-upload: $(stampdir)/stamp-all-upload $(stampdir)/stamp-dist-self
installers: \
$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION_FILE)-,$(msi_targets)))
.PHONY : all-gpg4win clean-stamps clean-gpg4win msi msi-signed msi-upload
# Insert the template for msi packages.
$(foreach msipkg, $(msi_targets), $(eval $(call MSI_template,$(msipkg))))
# @emacs_local_vars_begin@
# @emacs_local_vars_read_only@
# @emacs_local_vars_end@

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 23, 7:30 PM (11 h, 20 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
df/92/89917b41b886693197487004fb5d

Event Timeline