diff --git a/README b/README index 364e42bc..2c93114b 100644 --- a/README +++ b/README @@ -1,242 +1,242 @@ This is gpg4win - the GUI Installer Builder for W32. See also the file doc/README.en.txt. For MSI Package instructions see src/README-msi.txt. Instructions: ============= 1. Download the source and binary packages that are required to build the installer: $ cd packages $ sh download.sh [...] $ cd .. 2. Generate config files $ ./autogen.sh 3. Configure the source tree for cross compilation: $ ./autogen.sh --build-w32 4. Build the installer: $ make The installer will be made available under src/installers: src/installers/gpg4win-X.Y.Z.exe Instructions for AppImage: ========================== 1. Download the source and binary packages that are required to build the installer: $ cd packages $ sh download.sh [...] $ cd .. 2. Generate config files $ ./autogen.sh 3. Build the Docker image that will be used for creating the AppImage: $ docker/build-appimage-docker-image.sh 4. Build the AppImage using the Docker image: $ docker/run-appimage-build.sh During development is it often easier to use $ docker/run-appimage-build.sh --devel which does not delete the temporary directory. Inside the docker shell you start the build using src/src/appimage/build-appimage.sh Basic requirements ================== A decent POSIX system is required for building this software as well as GNU make. We are using Debian GNU/Linux 10 (buster), any other POSIX system should work as well but you may run into problems due to different toolchain versions. For MSI Packages you will additionally need the dependencies mentioned in src/README-msi.txt To satisfy all needs of configure at least the following packages need to be installed: build-essential autoconf automake mingw-w64 mingw-w64-i686-dev \ mingw-w64-x86-64-dev nsis stow unzip icoutils \ libglib2.0-dev gettext docbook-utils ghostscript texinfo \ - texinfo libgdk-pixbuf2.0-dev libqt4-dev-bin \ + texinfo libgdk-pixbuf2.0-dev ibc6-dev-i386 libqt4-dev-bin \ wget mingw-w64 cmake libgtk2.0-bin libxml2-utils \ gperf libgettextpo-dev automake-1.15 libkf5config-dev libkf5config-dev-bin \ libkf5coreaddons-dev gpgrt-tools imagemagick libboost-graph-dev icoutils Additionally on Debian Buster cmake has to be at least version 3.1.16 from debian backports. Note: That Gpg4win requires to be compiled with the -posix flavor of mingw so if you have both installed use update-alterantives to select the posix ones. To use update-alternatives: update-alternatives --install /usr/bin/i686-w64-mingw32-gcc \ i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix 100 update-alternatives --install /usr/bin/i686-w64-mingw32-g++ \ i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix 100 Building on other platforms is not fully supported. Consider using docker: ./autogen.sh ./docker/build-gpg4win-docker-image.sh ./docker/run-gpg4win-build.sh It is known that some developers compile Gpg4win also on other platforms For Fedora the required packages might be: yum install mingw64-gcc-c++ icoutils stow autoconf automake git cmake \ mingw32-gcc-c++ mingw32-libstdc++ mingw-nsis-base texinfo-tex \ ghostscript-tools-dvipdf kf5-kconfig-devel gettext gettext-devel \ patch flex bison gperf kf5-kcoreaddons-devel mingw32-nsis Building the Webpages ===================== The website is in the dedicated branch "website" in the git reposity. Checkout that branch and read the instructions: git checkout website Development Branches ==================== The old version of gpg4win (version < 1.2) is since 1.1.3 tracked by the GIT branch: gpg4win-1-branch. Only important fixes will go into this version. The current version in the GIT master starts as version 1.9. Adding new packages to the installer: ===================================== This requires editing a couple of files; we might eventually automate some of these tasks. Here is a short run up: 1. Add constants for the package FOO into src/config.nsi.in . 2. Create 2 new installer scripts, named src/inst-foo.nsi and uninst-foo.nsi and add them to EXTRA_DIST in src/Makefile.am. 3. Add foo to one the variables gpg4win_bpgks (if foo should not be build be the gpg4win) or gpg4win_spkgs (if foo should be build by gpg4win) in src/Makefile.am . Also add any required configure flags etc. 4. Add FOO to src/inst-sections.nsi. 5. Add detection of packages to configure.ac. Check out the available macros in m4/gpg4win.m4. Depending on the way an upstream package is packaged, you might need to write a new macro. 6. Add download information to packages/download.sh. 7. If the package ships pkg-config (*.pc) support files, you need add post install instructions to Makefile.am. Note that *.pc files may be in the "runtime" directory ${pkgidir} if the package is built within gpg4win (or peculiarly shipped), or in the development package ${pkgidir_dev}. Then run the usual "./autogen.sh" to create the actual configure file and run configure as described above. Kleopatra Locatization ====================== The kde-l10n package is generated with the script packages/gen-kde-l10n.sh execute it after a build to generate an updated l10n package which you can then upload and add to packages.common. The tarballs and the nsis scripts are located in the temp directory kde-l10n prints as output. Installer Slideshow =================== During installation we are showing a slide show. If you want to change the contents shown add / modify files in the src/slideshow subfolder. Install them in inst-gpg4win.nsi (Add them to the list of files before g4wihelp::slide_show) and modify src/slideshow/slides.dat accordingly. Version numbers =============== We use a specific order of version numbers. This is best shown by an example: 2.1.1 - The final 2.1.1 release. 2.1.1-beta88 - A snapshot before the 2.1.1 release. (The 88 in this example is the number of commits since the last release). The important point is that we bump up the version number before we do an release and append a suffix to mark it as a development version. This allows other software to use a configure check for the next to be released version of gpg4win. Copyright ========= The entire Gpg4win package is Copyright (C) 2005, 2006, 2007, 2008, 2009, 2012, 2013 g10 Code GmbH 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA This file ========= Copyright 2005, 2006, 2008 g10 Code GmbH This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/configure.ac b/configure.ac index 71df5c24..b9238821 100644 --- a/configure.ac +++ b/configure.ac @@ -1,525 +1,527 @@ # configure.ac for GPG4Win # Copyright (C) 2005, 2006, 2007, 2008, 2010, 2023 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 . # (Process this file with autoconf to produce a configure script.) AC_PREREQ(2.59) min_automake_version="1.9.3" # To build a release you need to create a tag with the version number # (git tag -s gpg4win-2.x.y) and run "./autogen.sh --force". Please # bump the version number immediately after the release and do another # commit and push so that the git magic is able to work. # BUILDTYPE can be used to build the VSD or GPD versions. Note that # IS_VSD_BUILD is set along with IS_GPD_BUILD. m4_define([mym4_package],[gpg4win]) m4_define([mym4_isvsd],[no]) m4_define([mym4_isgpd],[no]) m4_define([mym4_buildtype], m4_chomp_all(m4_esyscmd([(cat packages/BUILDTYPE 2>/dev/null\ || echo default)]))) m4_if(mym4_buildtype,[vsd],[m4_define([mym4_isvsd],[yes])]) # For VSD we use a different version number. m4_if(mym4_isvsd,yes, [m4_define([mym4_major],[3]) m4_define([mym4_minor],[2]) m4_define([mym4_micro],[2])], [m4_define([mym4_major],[4]) m4_define([mym4_minor],[3]) m4_define([mym4_micro],[2])]) # We need to set isgpd only after having set the version number. m4_if(mym4_buildtype,[gpd],[m4_define([mym4_isvsd],[yes]) m4_define([mym4_isgpd],[yes])]) # Below is m4 magic to extract and compute the git revision number, # the decimalized short revision number, a beta version string and a # flag indicating a development version (mym4_isbeta). Note that the # m4 processing is done by autoconf and not during the configure run. m4_define([mym4_verslist], m4_split(m4_esyscmd([./autogen.sh --find-version] \ mym4_package mym4_major mym4_minor mym4_micro),[:])) m4_define([mym4_isbeta], m4_argn(2, mym4_verslist)) m4_define([mym4_ingit], m4_argn(3, mym4_verslist)) m4_define([mym4_version], m4_argn(4, mym4_verslist)) m4_define([mym4_betastr], m4_argn(6, mym4_verslist)) m4_define([mym4_revision], m4_argn(7, mym4_verslist)) m4_define([mym4_revision_dec], m4_argn(8, mym4_verslist)) AC_INIT([mym4_package],[mym4_version],[https://bugs.gnupg.org]) PACKAGE=$PACKAGE_NAME VERSION=$PACKAGE_VERSION GIT_REVISION=mym4_revision GIT_REVISION_DEC=mym4_revision_dec GIT_BETASTRING=mym4_betastr IS_BETA_BUILD=mym4_isbeta IS_VSD_BUILD=mym4_isvsd IS_GPD_BUILD=mym4_isgpd # XXX: It seems to be impossible in the way we call cmake to pass # defines with spaces. So we use a nice "FOUR-PER-EM SPACE" U+2005 *cough* DISTRIBUTION_TEXT=m4_if(mym4_isvsd, [yes], ["g10 Code GmbH"], ["Gpg4win"]) AC_CONFIG_SRCDIR(src/config.nsi.in) AC_CONFIG_MACRO_DIR(m4) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([tar-ustar]) AM_MAINTAINER_MODE AC_CANONICAL_HOST AC_CONFIG_HEADERS([config.h]) # Language support AM_PO_SUBDIRS AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(GIT_BETASTRING) AC_SUBST(IS_BETA_BUILD) AC_SUBST(IS_VSD_BUILD) AC_SUBST(IS_GPD_BUILD) AC_SUBST(DISTRIBUTION_TEXT) # Generate extended version information. Note, that for NSIS use we # must not translate the dots to commas in the BUILD_FILEVERSION. BUILD_TIMESTAMP=`date --iso-8601=minutes` BUILD_ISODATE=`date --iso-8601` changequote(,)dnl BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'` changequote([,])dnl BUILD_FILEVERSION="${BUILD_FILEVERSION}${GIT_REVISION_DEC}" BUILD_BETANUM=`echo "${GIT_BETASTRING}" | sed 's/-beta//'` AC_SUBST(BUILD_BETANUM) AC_SUBST(BUILD_TIMESTAMP) AC_SUBST(BUILD_ISODATE) AC_SUBST(BUILD_FILEVERSION) # The final release is copied to an archive server. The default # location may be changed by setting the RELEASEHOST envvar. if test -z "$RELEASEHOST" ; then RELEASEHOST="vigenere:tarballs/gpg4win" if test "${IS_BETA_BUILD}" = yes ; then RELEASEHOST="${RELEASEHOST}/Beta" fi fi AC_SUBST(RELEASEHOST) # Substitutions to set generated files in a Emacs buffer to read-only. AC_SUBST(emacs_local_vars_begin, ['Local Variables:']) AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t']) AC_SUBST(emacs_local_vars_end, ['End:']) GPG4WIN_BUILD_RELEASE(gpg4win, no) GPG4WIN_BUILD_RELEASE(appimage, no) # Additionaly enable building gpgex for another host AC_ARG_WITH([additional-gpgex-host], AS_HELP_STRING([--with-additional-gpgex-host=HOST], [Additionaly build gpgex for this host]), [if test "$withval" = yes; then AC_MSG_FAILURE( [--with-additional-gpgex-host was given, but no host specified]) else gpgex_host=$withval fi ], gpgex_host=no) if test "$gpgex_host" != no; then GPGEX_ADD_HOST="$gpgex_host" fi AC_SUBST(GPGEX_ADD_HOST) AC_ARG_ENABLE(fast-makensis, AS_HELP_STRING([--enable-fast-makensis], [Use a less efficient compressor to speed up building]), use_fast_makensis=$enableval, use_fast_makensis=no) if test "$use_fast_makensis" = yes; then EXTRA_MAKENSIS_FLAGS="${EXTRA_MAKENSIS_FLAGS} -DDISABLE_LZMA=1" fi AC_SUBST(EXTRA_MAKENSIS_FLAGS) # # Set variables for use by automake makefiles. # AM_CONDITIONAL(BUILD_GPG4WIN, test "$build_gpg4win" = "yes") AM_CONDITIONAL(BUILD_APPIMAGE, test "$build_appimage" = "yes") # Required tools. AC_PROG_CC AC_PROG_CPP AC_PROG_RANLIB AC_CHECK_TOOL(AR, ar, :) AC_CHECK_TOOLS(STRIP, strip) AC_CHECK_TOOLS(DLLTOOL, dlltool) AC_CHECK_PROGS(MAKE, make) AC_CHECK_PROGS(UNZIP, unzip) AC_CHECK_PROGS(TAR, tar) AC_CHECK_PROGS(MKDIR, mkdir) AC_CHECK_PROGS(CP, cp) AC_CHECK_PROGS(RM, rm) AC_CHECK_PROGS(STOW, stow) AC_CHECK_PROGS(MAKENSIS, makensis) AC_CHECK_PROGS(ZCAT, zcat) AC_CHECK_PROGS(TEXI2DVI, texi2dvi) AC_CHECK_PROGS(DVIPDF, dvipdf) AC_CHECK_PROGS(CONVERT, convert) AC_CHECK_PROGS(SHA1SUM, sha1sum) AC_CHECK_PROGS(MSGFMT, msgfmt) AC_CHECK_PROGS(MSGFMT, msgmerge) AC_CHECK_PROGS(GITLOG_TO_CHANGELOG, gitlog-to-changelog, [build-aux/gitlog-to-changelog]) AC_CHECK_PROGS(BUILD_CC, gcc cc) AC_CHECK_PROGS(CMAKE, cmake3 cmake) AC_CHECK_PROGS(RSYNC, rsync) AC_PROG_INSTALL if test -n "$GPGEX_ADD_HOST"; then AC_CHECK_TOOLS(STRIP_EX, ${GPGEX_ADD_HOST}-strip) fi if test -z "$GPG4WIN_PARALLEL"; then JOBS=$(nproc 2>/dev/null || echo 1) GPG4WIN_PARALLEL=-j$JOBS AC_MSG_NOTICE([Using autodetected $JOBS make jobs. You can override this by setting GPG4WIN_PARALLEL.]) fi AC_SUBST(GPG4WIN_PARALLEL) required_tools="MAKE TAR MKDIR CP RM ZCAT SHA1SUM MSGFMT BUILD_CC CMAKE" if test "$build_gpg4win" = yes ; then required_tools="$required_tools DLLTOOL UNZIP STOW MAKENSIS TEXI2DVI DVIPDF CONVERT" fi if test "$build_appimage" = yes ; then required_tools="$required_tools RSYNC" fi missing_tools= for i in $required_tools; do eval tmp='$'$i if test -z "$tmp"; then missing_tools="$missing_tools `echo $i | tr 'A-Z' 'a-z'`" fi done if test "$build_gpg4win" = yes ; then # Try to find the KF5ConfigConfig to set up host tooling # variable for the kconfig compiler. # A variable path here would probably be better but we cant # use $libdir to avoid it beeing required to configure gpg4win # build with a multiarch libdir set. kf5_host_tooling_candidates="/usr/lib/x86_64-linux-gnu/cmake /usr/lib64/cmake" for i in $kf5_host_tooling_candidates; do if test -f "$i/KF5Config/KF5ConfigConfig.cmake"; then kf5_host_tooling="$i" break; fi done if test ! -f "$kf5_host_tooling/KF5Config/KF5ConfigConfig.cmake"; then missing_tools="$missing_tools libkf5config-dev" fi AC_SUBST(kf5_host_tooling) GPG4WIN_RUNTIME_LIBRARY(libstdc++-6, REQUIRED) GPG4WIN_RUNTIME_LIBRARY(libwinpthread-1, REQUIRED) # This is only required if you also use the pthread flavor for x64 GPG4WIN_RUNTIME_LIBRARY_X64(libwinpthread-1) # One of these is required GPG4WIN_RUNTIME_LIBRARY(libgcc_s_dw2-1) GPG4WIN_RUNTIME_LIBRARY(libgcc_s_sjlj-1) if [ ! test -s "src/libgcc_s_dw2-1.dll-x" -o -s "src/libgcc_s_sjlj-1.dll-x" ]; then AC_MSG_ERROR(No exception library found. Please check what your system uses and see above message about either dw2 or sjlj dlls.) fi fi AC_CHECK_PROGS(WGET, wget) # Packages for Gpg4Win. if test "$build_gpg4win" = yes ; then gpg4win_dup_sources="" GPG4WIN_SPKG([zlib]) GPG4WIN_BPKG_GTK([pkgconfig]) GPG4WIN_SPKG([bzip2]) GPG4WIN_SPKG([libgpg-error], [libiconv gettext]) GPG4WIN_SPKG([libassuan], [libgpg-error]) GPG4WIN_SPKG([scute], [libgpg-error libassuan]) GPG4WIN_SPKG([pinentry], [qtbase libassuan libiconv]) GPG4WIN_SPKG([gpgme], [libgpg-error libassuan qtbase]) GPG4WIN_SPKG([gpgol], [gpgme libassuan]) GPG4WIN_SPKG([gpgex], [libassuan]) GPG4WIN_SPKG([paperkey]) GPG4WIN_SPKG([libiconv]) GPG4WIN_SPKG([gettext], [libiconv]) GPG4WIN_SPKG([libpng], [zlib]) GPG4WIN_SPKG([jpeg]) GPG4WIN_SPKG([qrencode], [libpng libiconv]) # Packages needed for gpgex GPG4WIN_SPKGEX([libgpg-error]) GPG4WIN_SPKGEX([libassuan], [libgpg-error]) GPG4WIN_SPKGEX([gpgex], [libassuan]) GPG4WIN_SPKGEX([gpgme], [libgpg-error libassuan]) GPG4WIN_SPKGEX([gpgol], [gpgme]) GPG4WIN_IPKG([compendium]) # The GnuPG Package. GPG4WIN_BPKG_BINSRC([gnupg-w32]) GPG4WIN_BPKG_MSISRC([gnupg-msi]) # Qt related stuff. GPG4WIN_SPKG([qtbase], [jpeg zlib libpng freetype pcre2]) GPG4WIN_SPKG([qttools], [qtbase]) - GPG4WIN_SPKG([qttranslations], [qtsvg qttools qtwinextras]) - GPG4WIN_SPKG([qtwinextras], [qtbase]) + GPG4WIN_SPKG([qttranslations], [qtsvg qttools]) GPG4WIN_SPKG([qtsvg], [qtbase]) GPG4WIN_KDEPKG([tiff]) GPG4WIN_KDEPKG([pcre2]) +# GPG4WIN_KDEPKG([snoretoast]) GPG4WIN_KDEPKG([openjpeg], [tiff jpeg]) GPG4WIN_KDEPKG([breeze-icons], [extra-cmake-modules qtbase]) GPG4WIN_KDEPKG([kleopatra], [mimetreeparser kio gnupg-w32 breeze-icons kxmlgui libkleo kitemmodels qttranslations ktextwidgets]) GPG4WIN_KDEPKG([extra-cmake-modules]) GPG4WIN_KDEPKG([kconfig], [qtbase qttools extra-cmake-modules]) GPG4WIN_KDEPKG([ki18n], [qtbase gettext qttools extra-cmake-modules]) GPG4WIN_KDEPKG([kwidgetsaddons], [kconfig qttools qtbase]) GPG4WIN_KDEPKG([kcompletion], [kwidgetsaddons]) - GPG4WIN_KDEPKG([kwindowsystem], [qtbase qtwinextras qttools]) + GPG4WIN_KDEPKG([kwindowsystem], [qtbase qttools]) GPG4WIN_KDEPKG([kcoreaddons], [qtbase qttools]) GPG4WIN_KDEPKG([kcodecs], [qtbase qttools]) GPG4WIN_KDEPKG([kguiaddons], [qtbase qttools]) GPG4WIN_KDEPKG([kmime], [kcodecs ki18n]) GPG4WIN_KDEPKG([kmbox], [kmime]) - GPG4WIN_KDEPKG([kconfigwidgets], [kwidgetsaddons kguiaddons ki18n kcodecs kconfig]) + GPG4WIN_KDEPKG([kconfigwidgets], [kwidgetsaddons kguiaddons ki18n kcodecs kconfig kcolorscheme]) GPG4WIN_KDEPKG([kitemviews], [qtbase qttools]) GPG4WIN_KDEPKG([kitemmodels], [qtbase qttools]) GPG4WIN_KDEPKG([karchive], [qtbase qttools extra-cmake-modules]) GPG4WIN_KDEPKG([kcrash], [kwindowsystem kcoreaddons]) GPG4WIN_KDEPKG([solid], [qttools qtbase extra-cmake-modules]) - GPG4WIN_KDEPKG([kjobwidgets], [kwidgetsaddons kcoreaddons qtbase extra-cmake-modules]) + GPG4WIN_KDEPKG([kjobwidgets], [knotifications kwidgetsaddons kcoreaddons qtbase extra-cmake-modules]) GPG4WIN_KDEPKG([kservice], [kconfig kcoreaddons ki18n]) GPG4WIN_KDEPKG([kbookmarks], [kconfig kxmlgui kcoreaddons kconfigwidgets kwidgetsaddons kcodecs]) GPG4WIN_KDEPKG([kio], [kcrash kjobwidgets solid kservice kbookmarks kwidgetsaddons kxmlgui kwindowsystem karchive kconfig kcoreaddons ki18n]) GPG4WIN_KDEPKG([kiconthemes], [qtsvg kconfigwidgets karchive]) GPG4WIN_KDEPKG([kxmlgui], [kiconthemes kconfigwidgets kitemviews ktextwidgets]) GPG4WIN_KDEPKG([libkleo], [kmime kconfigwidgets kwindowsystem kcompletion gpgme]) GPG4WIN_KDEPKG([gpg4win-tools], [libkleo gpgme]) GPG4WIN_KDEPKG([threadweaver], [qtbase extra-cmake-modules]) + GPG4WIN_KDEPKG([knotifications], [qtbase kconfig extra-cmake-modules]) + GPG4WIN_KDEPKG([kcolorscheme], [kconfig kguiaddons ki18n]) GPG4WIN_KDEPKG([freetype], [zlib bzip2]) GPG4WIN_KDEPKG([sonnet], [qtbase qttools]) GPG4WIN_KDEPKG([ktextwidgets], [sonnet kcompletion kconfig kconfigwidgets ki18n kwidgetsaddons]) GPG4WIN_KDEPKG([poppler], [libpng openjpeg tiff gpgme kio qtbase freetype]) GPG4WIN_KDEPKG([kparts], [kio kservice kxmlgui kconfigwidgets kwidgetsaddons ktextwidgets]) GPG4WIN_KDEPKG([okular], [kparts gpgme kio poppler threadweaver qtsvg]) GPG4WIN_KDEPKG([libical]) GPG4WIN_KDEPKG([kcalendarcore], [qtbase libical extra-cmake-modules]) GPG4WIN_KDEPKG([mimetreeparser], [libkleo kwidgetsaddons ki18n kmbox kmime kcodecs kcalendarcore]) GPG4WIN_KDEPKG([prison], [qtbase extra-cmake-modules qrencode]) GPG4WIN_KDEPKG([gpgpass], [prison kconfigwidgets kiconthemes ki18n gpgme]) GPG4WIN_FINALIZE fi # Packages for the AppImage if test "$build_appimage" = yes ; then appimage_dup_sources="" APPIMAGE_SPKG([freetype]) APPIMAGE_SPKG([sqlite]) APPIMAGE_SPKG([libgpg-error]) APPIMAGE_SPKG([libassuan], [libgpg-error]) APPIMAGE_SPKG([npth]) APPIMAGE_SPKG([libgcrypt], [libgpg-error]) APPIMAGE_SPKG([libksba], [libgpg-error]) APPIMAGE_SPKG([ntbtls], [libgcrypt libksba]) APPIMAGE_SPKG([gnupg], [libgpg-error libassuan npth libgcrypt libksba sqlite ntbtls]) APPIMAGE_SPKG([pinentry], [qtbase qtx11extras]) # Note that GPGME needs Qt APPIMAGE_SPKG([gpgme], [libgpg-error libassuan qtbase]) APPIMAGE_SPKG([paperkey]) # Qt related stuff. # (dependency on gnupg is only to make sure gnupg is build first so # that we don't need to wait for the long running Qt builds) APPIMAGE_SPKG([qtbase], [freetype gnupg]) APPIMAGE_SPKG([qttools], [qtbase]) APPIMAGE_SPKG([qttranslations], [qtsvg qttools qtx11extras]) APPIMAGE_SPKG([qtx11extras], [qtbase]) APPIMAGE_SPKG([qtwayland], [qtbase]) APPIMAGE_SPKG([qtsvg], [qtbase]) # KDE Frameworks Tier 1 APPIMAGE_KDEPKG([extra-cmake-modules], [qttools]) APPIMAGE_KDEPKG([breeze-icons], [extra-cmake-modules qtbase]) APPIMAGE_KDEPKG([karchive], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kauth], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kcodecs], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kconfig], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kcoreaddons], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kdbusaddons], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kguiaddons], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([ki18n], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kitemmodels], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kitemviews], [qtbase qttools extra-cmake-modules]) APPIMAGE_KDEPKG([kwidgetsaddons], [kconfig qttools qtbase]) APPIMAGE_KDEPKG([kwindowsystem], [qtbase qtx11extras extra-cmake-modules]) APPIMAGE_KDEPKG([solid], [qtbase extra-cmake-modules]) APPIMAGE_KDEPKG([sonnet], [qtbase extra-cmake-modules]) APPIMAGE_KDEPKG([threadweaver], [qtbase extra-cmake-modules]) # KDE Frameworks Tier 2 APPIMAGE_KDEPKG([kactivities], [kwindowsystem]) APPIMAGE_KDEPKG([kcompletion], [kwidgetsaddons]) APPIMAGE_KDEPKG([kcrash], [kwindowsystem kcoreaddons]) APPIMAGE_KDEPKG([kjobwidgets], [kwidgetsaddons kcoreaddons qtbase extra-cmake-modules]) # KDE Frameworks Tier 3 APPIMAGE_KDEPKG([kconfigwidgets], [kwidgetsaddons kguiaddons ki18n kcodecs kconfig]) APPIMAGE_KDEPKG([kiconthemes], [qtsvg kconfigwidgets karchive]) APPIMAGE_KDEPKG([ktextwidgets], [sonnet kcompletion kconfig kconfigwidgets ki18n kwidgetsaddons]) APPIMAGE_KDEPKG([kxmlgui], [kiconthemes kconfigwidgets kitemviews ktextwidgets]) APPIMAGE_KDEPKG([kbookmarks], [kconfig kxmlgui kcoreaddons kconfigwidgets kwidgetsaddons kcodecs]) APPIMAGE_KDEPKG([kservice], [kconfig kcoreaddons ki18n]) APPIMAGE_KDEPKG([kio], [kcrash kjobwidgets solid kservice kbookmarks kwidgetsaddons kxmlgui kwindowsystem karchive kconfig kcoreaddons ki18n kauth]) APPIMAGE_KDEPKG([kparts], [kio kservice kxmlgui kconfigwidgets kwidgetsaddons ktextwidgets]) # KDE PIM APPIMAGE_KDEPKG([libical]) APPIMAGE_KDEPKG([kcalendarcore], [qtbase libical extra-cmake-modules]) APPIMAGE_KDEPKG([mimetreeparser], [libkleo kwidgetsaddons ki18n kmime kcodecs kcalendarcore kmbox]) APPIMAGE_KDEPKG([kmime], [kcodecs ki18n]) APPIMAGE_KDEPKG([kmbox], [kmime]) APPIMAGE_KDEPKG([libkleo], [kmime kconfigwidgets kwindowsystem kcompletion gpgme]) APPIMAGE_KDEPKG([kleopatra], [mimetreeparser gnupg gpgme breeze-icons kio kxmlgui libkleo kitemmodels qttranslations kdbusaddons]) # Okular/Poppler APPIMAGE_KDEPKG([poppler], [gpgme kio qtbase freetype]) APPIMAGE_KDEPKG([okular], [kparts gpgme kio poppler threadweaver qtsvg kactivities]) # Gpgpass APPIMAGE_SPKG([qrencode], [libpng libiconv]) APPIMAGE_KDEPKG([prison], [qtbase extra-cmake-modules qrencode]) APPIMAGE_KDEPKG([gpgpass], [prison kconfigwidgets kiconthemes ki18n gpgme]) APPIMAGE_FINALIZE fi # Throw an error if required tools are missing if test -n "$missing_tools"; then for i in $missing_tools; do AC_MSG_NOTICE([$i is missing]) done AC_MSG_ERROR([[ *** *** Required tools not found. Please consult the above messages *** and install them before running configure again. ***]]) fi # Throw an error if any duplicate source packages have been found if test -n "$gpg4win_dup_sources"; then tmp= for i in $gpg4win_dup_sources; do tmp="$tmp $i" done tmp2=" You might remove them with:" for i in $gpg4win_rm_candidates; do if ! grep -q $(basename $i) packages/packages.common packages/packages.3 packages/packages.4; then tmp2="$tmp2 rm $i" fi done AC_MSG_ERROR([Packages with more that one source version:$tmp$tmp2]) fi if test -n "$appimage_dup_sources"; then tmp= for i in $appimage_dup_sources; do tmp="$tmp $i" done tmp2=" You might remove them with:" for i in $appimage_rm_candidates; do if ! grep -q $(basename $i) packages/packages.common packages/packages.3 packages/packages.4; then tmp2="$tmp2 rm $i" fi done AC_MSG_ERROR([Packages with more that one source version:$tmp$tmp2]) fi # Finalize. AC_CONFIG_FILES(Makefile) AC_CONFIG_FILES(packages/Makefile src/Makefile po/Makefile.in) AC_CONFIG_FILES(po/build-cc) AC_CONFIG_FILES(src/config.nsi src/gpg4win.mk) AC_CONFIG_FILES(doc/Makefile) AC_CONFIG_FILES(doc/logo/Makefile) AC_CONFIG_FILES(src/toolchain.cmake) AC_CONFIG_FILES(src/appimage/Makefile src/appimage/appimage.mk) AC_CONFIG_FILES(src/appimage/rsync-filters/Makefile) AC_OUTPUT # Throw a warning if optional tools are missing if test -n "$missing_opt_tools"; then AC_MSG_WARN([[ *** *** Some tools not found. They may or may not be needed depending on *** the packages you want to include. For example GLIB and GTK+ *** require certain tools; you may need to install a recent version of *** GLIB and GTK+ on the build machine to allow for cross-compiling. ***]]) for i in $missing_opt_tools; do AC_MSG_NOTICE([$i is missing]) done fi echo -n " $PACKAGE_NAME-$PACKAGE_VERSION prepared for make Revision: ${GIT_REVISION} (${GIT_REVISION_DEC}) 32bit platform: $host 64bit platform: ${GPGEX_ADD_HOST} Distribution: ${DISTRIBUTION_TEXT} (mym4_buildtype) " if test -n "$JOBS"; then echo " make jobs: ${JOBS}" else echo "" fi diff --git a/packages/gen-frameworks.sh b/packages/gen-frameworks.sh index 7a50ead2..3f1cd9ee 100755 --- a/packages/gen-frameworks.sh +++ b/packages/gen-frameworks.sh @@ -1,122 +1,123 @@ #!/bin/bash # Copyright (C) 2016 Intevation GmbH # Copyright (C) 2021 g10 Code GmbH # # Software engineering by Ingo Klöcker # # 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 . # # SPDX-License-Identifier: GPL-2.0+ # Grab the version information for KDE Frameworks and generate a text block # that can be copy and pasted into packages.current. set -e if [ -z "$1" ]; then echo "Usage $0 > snippet" exit 1 fi FRAMEWORKS="extra-cmake-modules - kactivities kauth kconfig ki18n kwidgetsaddons kcompletion kwindowsystem kcoreaddons kcodecs kconfigwidgets kdbusaddons kxmlgui kguiaddons kitemviews kitemmodels kiconthemes breeze-icons karchive kcrash kio kbookmarks kservice solid kjobwidgets threadweaver kparts ktextwidgets sonnet kcalendarcore - prison" + prison + knotifications + kcolorscheme" fullversion=$1 case ${fullversion} in *.*.*) majorversion=${fullversion%.*} ;; *.*) majorversion=${fullversion} fullversion=${majorversion}.0 echo "Using full version ${fullversion}" ;; *) echo "Invalid version ${fullversion}" exit 1 ;; esac curdate=$(date +%Y-%m-%d) KEYRING=$(dirname $0)/kde-release-keys.gpg server=https://download.kde.org/stable/frameworks echo "server ${server}" tmpdir=$(mktemp -d -t gen-frameworks.XXXXXXXXXX) for fw in $FRAMEWORKS; do # Download packages over https now and verify that the signature matches tarfile="$fw-${fullversion}.tar.xz" tarfileurl="${server}/$majorversion/${tarfile}" if ! curl -L --silent --show-error --fail "${tarfileurl}" > "$tmpdir/${tarfile}"; then echo "Downloading ${tarfileurl} failed" exit 1 fi sigfile="${tarfile}.sig" sigfileurl="${tarfileurl}.sig" if ! curl -L --silent --show-error --fail "${sigfileurl}" > "$tmpdir/${sigfile}"; then echo "Downloading ${sigfileurl} failed" exit 1 fi # Check the signature if ! gpgv --keyring "$KEYRING" "$tmpdir/${sigfile}" "$tmpdir/${tarfile}"; then echo "Signature for $tmpdir/${tarfile} is not valid!" exit 1 fi sha2=$(sha256sum $tmpdir/${tarfile} | cut -d ' ' -f 1) echo "# $fw" echo "# last changed: $curdate" echo "# by: ah" echo "# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)" echo "file $majorversion/${tarfile}" echo "chk $sha2" echo "" done rm -r $tmpdir diff --git a/packages/gen-tarball.sh b/packages/gen-tarball.sh index 14bb7696..5fbd1c58 100755 --- a/packages/gen-tarball.sh +++ b/packages/gen-tarball.sh @@ -1,159 +1,165 @@ #!/bin/bash # Copyright (C) 2021 g10 Code GmbH # # Software engineering by Ingo Klöcker # # 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 . # # SPDX-License-Identifier: GPL-2.0+ # Packages the current HEAD of a git repository as tarball and generates # a text block that can be copy and pasted into packages.current. set -e if [ -z "$1" ]; then echo "Usage: $0 PACKAGE --auto" echo "where PACKAGE is either the name of a supported library or application, e.g. 'kleopatra'," echo "or the path of a local Git repository, e.g. '~/src/kleopatra'," echo "or the URL of a remote Git repository, e.g. 'https://invent.kde.org/pim/kleopatra.git'." echo "" echo "add the --auto parameter to automatically update packages.common and upload the tarball." exit 1 fi package=$1 is_gpg="no" is_w32="no" do_auto="no" branch="master" custom_l10n="no" case ${package} in */*) repo=${package%/} package=$(basename ${repo}) package=${package%.git} ;; gnupg | gpgme | libassuan | libgcrypt | libgpg-error | \ libksba | npth | pinentry | scute | ntbtls) repo=git://git.gnupg.org/${package}.git is_gpg="yes" ;; gpgol | gpgex) repo=git://git.gnupg.org/${package}.git is_gpg="yes" is_w32="yes" ;; - gpg4win-tools | gpgpass) + gpg4win-tools ) + repo=git://git.gnupg.org/${package}.git + branch=tobias/qt6 + ;; + gpgpass ) repo=git://git.gnupg.org/${package}.git ;; mimetreeparser) repo=https://invent.kde.org/pim/${package}.git - branch="kf5" +# branch="kf5" ;; kleopatra) repo=https://invent.kde.org/pim/${package}.git - branch="gpg4win/23.10" - custom_l10n="l10n-support/de/summit" + # branch="gpg4win/23.10" + # custom_l10n="l10n-support/de/summit" ;; libkleo) repo=https://invent.kde.org/pim/${package}.git - branch="gpg4win/23.10" + # branch="gpg4win/23.10" ;; okular) repo=https://invent.kde.org/graphics/${package}.git - branch="work/sune/WORK" + # branch="work/sune/WORK" ;; poppler) - #repo=https://anongit.freedesktop.org/git/poppler/poppler.git - repo=https://gitlab.freedesktop.org/svuorela/${package}.git - branch="WORK" + repo=https://anongit.freedesktop.org/git/poppler/poppler.git + #repo=https://gitlab.freedesktop.org/svuorela/${package}.git + #branch="WORK" ;; *) echo "Error: Unsupported package '${package}'" exit 1 ;; esac if [ "$2" == "--auto" ]; then do_auto="yes"; fi tmpdir=$(mktemp -d -t gen-tarball.XXXXXXXXXX) curdate=$(date +%Y-%m-%d) timestamp=$(date +%Y%m%d%H%M) snapshotdir=${package}-${timestamp} tarball=${snapshotdir}.tar.xz git clone ${repo} ${tmpdir}/${snapshotdir} if [ "${is_gpg}" == "yes" ]; then olddir=$(pwd) cd ${tmpdir}/${snapshotdir} ./autogen.sh --force >&2 if [ "${is_w32}" == "yes" ]; then ./autogen.sh --build-w32 >&2 # ./autogen.sh --build-w32 --with-libassuan-prefix=/home/aheinecke/w64root/ >&2 else ./configure >&2 fi make dist-xz >&2 tarball=$(ls -t *.tar.xz | head -1) cp ${tmpdir}/${snapshotdir}/${tarball} ${olddir} cd ${olddir} else olddir=$(pwd) echo "Archiving $branch.." cd ${tmpdir}/${snapshotdir} git checkout $branch if [ "$custom_l10n" != "no" ]; then echo "Downloading german translations from ${custom_l10n}" svn export --force svn://anonsvn.kde.org/home/kde/trunk/${custom_l10n}/messages/${package}/${package}.po \ - po/de/${package}.po + po/de/${package}_summit.po + msgcat po/de/${package}.po po/de/${package}_summit.po > po/de/${package}_new.po + mv po/de/${package}_new.po po/de/${package}.po git add po git commit -m "Add latest german translation" fi git archive --format tar.xz --prefix=${snapshotdir}/ "${branch}" > ${tarball} cp ${tmpdir}/${snapshotdir}/${tarball} ${olddir} cd ${olddir} fi checksum=$(sha256sum ${tarball} | cut -d ' ' -f 1) cat > ${tmpdir}/snippet <&2 rsync -vP ${tarball} trithemius.gnupg.org:/home/ftp/gcrypt/snapshots/${package}/ else echo "------------------------------ >8 ------------------------------" cat "${tmpdir}/snippet" echo "------------------------------ >8 ------------------------------" echo "To upload:" >&2 echo "rsync -vP ${tarball} trithemius.gnupg.org:/home/ftp/gcrypt/snapshots/${package}/" >&2 fi; rm -fr ${tmpdir} diff --git a/packages/kde-release-keys.gpg b/packages/kde-release-keys.gpg index 89f27391..989b8f37 100644 Binary files a/packages/kde-release-keys.gpg and b/packages/kde-release-keys.gpg differ diff --git a/packages/packages.common b/packages/packages.common index 5064d5ec..d78c6d3b 100644 --- a/packages/packages.common +++ b/packages/packages.common @@ -1,594 +1,581 @@ # 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 https://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 freebsd.org server https://downloads.sourceforge.net file libpng/libpng16/1.6.40/libpng-1.6.40.tar.xz chk 535b479b2467ff231a3ec6d92a525906fb8ef27978be4f66dbe05d3f3a01b3a1 # 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 # last-changed: 2023-09-29 # by ah # verified: SIG 45F68D54BBE23FB3039B46E59766E084FB0F43D8 file PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.bz2 chk 8d36cd8cb6ea2a4c2bb358ff6411b0c788633a2a45dabbf1aeb4b701d1b5e840 # qrencode for prison # last-changed: 2023-11-30 # by ah # verified: verification of checksum from multiple sources server https://fukuchi.org/works/qrencode/ file qrencode-4.1.1.tar.gz chk da448ed4f52aba6bcb0cd48cac0dd51b8692bccc4cd127431402fca6f8171e8e # # 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 2024-02-23 # by wk # verified: build tree file libgpg-error/libgpg-error-1.48.tar.bz2 chk 89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f # last-changed: 2024-03-06 # by: wk # verified: build tree file libassuan/libassuan-2.5.7.tar.bz2 chk 0103081ffc27838a2e50479153ca105e873d3d65d8a9593282e9c94c7e6afb76 # last changed 2024-02-23 # by wk # verified: build tree file npth/npth-1.7.tar.bz2 chk 8589f56937b75ce33b28d312fccbf302b3b71ec3f3945fde6aaa74027914ad05 # last changed 2024-02-23 # by wk # verified: build tree file libksba/libksba-1.6.6.tar.bz2 chk 5dec033d211559338838c0c4957c73dfdc3ee86f73977d6279640c9cd08ce6a4 # last changed 2024-01-12 # by wk # verified: buildtree file ntbtls/ntbtls-0.3.2.tar.bz2 chk bdfcb99024acec9c6c4b998ad63bb3921df4cfee4a772ad6c0ca324dbbf2b07c #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 +# last changed: 2024-03-15 # by: wk # verified: swdb -file pinentry/pinentry-1.2.1.tar.bz2 -chk 457a185e5a85238fb945a955dc6352ab962dc8b48720b62fc9fa48c7540a4067 +file pinentry/pinentry-1.2.1-beta40.tar.bz2 +chk c9bfa351e2ec02fd50d40ae7fc41484eb2a8676a83a22c24cfa45c45ff06b6cb # gpgme -# last changed: 2023-11-28 -# by: +# last changed: 2024-03-15 +# by: ah # verified: build tree -file gpgme/gpgme-1.23.2.tar.bz2 -chk 9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224 - +file gpgme/gpgme-1.23.3-beta30.tar.xz +chk 4baf301ab6df869f1ce3d7b5bdec078c966749a4dfbaaa2b2acaa7cbda23a385 # last changed: 2021-01-07 # by: ah file scute/scute-1.7.0.tar.bz2 chk 437fe758b27c243a5ee2535c6b065ea1d09f2c9a02d83567d2f934bb6395c249 # GpgOL # last-changed: 2024-01-02 # by: ah # verified: swdb file gpgol/gpgol-2.5.12.tar.bz2 chk b982b0393754a779bafdea9d864c6ad6a7aa763a3c49d28bf6106dc202d9dc0a # # GpgEX # # last-changed: 2023-12-01 # by: ah # verified: swdb file gpgex/gpgex-1.0.10.tar.bz2 chk 849f88c2c4c29d4f0f021a8d6b9425ba3fc9d9b706c3e43a0e0e063e172498cd # # 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 +# last changed: 2024-03-12 # 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 - +# verified: HTTPS https://download.qt.io/official_releases/qt/6.6/6.6.2/submodules/qtbase-everywhere-src-6.6.2.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 +name qtbase-6.6.2.tar.xz +file 6.6/6.6.2/submodules/qtbase-everywhere-src-6.6.2.tar.xz +chk b89b426b9852a17d3e96230ab0871346574d635c7914480a2a27f98ff942677b # Qt Tools -# last changed: 2023-05-08 +# last changed: 2024-03-12 # 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 - +# verified: HTTPS https://download.qt.io/official_releases/qt/6.6/6.6.2/submodules/qttools-everywhere-src-6.6.2.tar.xz.sha256 +name qttools-6.6.2.tar.xz +file 6.6/6.6.2/submodules/qttools-everywhere-src-6.6.2.tar.xz +chk e6d49e9f52111287f77878ecb8b708cce682f10b03ba2476d9247603bc6c4746 # Qt svg -# last changed: 2023-05-08 +# last changed: 2024-03-12 # 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 +# verified: HTTPS https://download.qt.io/official_releases/qt/6.6/6.6.2/submodules/qtsvg-everywhere-src-6.6.2.tar.xz.sha256 +name qtsvg-6.6.2.tar.xz +file 6.6/6.6.2/submodules/qtsvg-everywhere-src-6.6.2.tar.xz +chk 5a231d59ef1b42bfbaa5174d4ff39f8e1b4ba070ef984a70b069b4b2576d8181 # Qt translations -# last changed: 2023-05-08 +# last changed: 2024-03-12 # 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 +# verified: HTTPS https://download.qt.io/official_releases/qt/6.6/6.6.2/submodules/qttranslations-everywhere-src-6.6.2.tar.xz.sha256 +name qttranslations-6.6.2.tar.xz +file 6.6/6.6.2/submodules/qttranslations-everywhere-src-6.6.2.tar.xz +chk ca3ac090ef3aa12566c26b482c106f1f986c5a3444e7003f379726a550530c77 # 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 +#server https://download.kde.org/stable/frameworks +server https://download.kde.org/stable/frameworks ##### Paste Here ##### -# # extra-cmake-modules -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -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 +file 6.0/extra-cmake-modules-6.0.0.tar.xz +chk 23992bf19db717156b7d6dd13118caa79fd57f090beb062e8308db3c09f70d0c # kauth -# last changed: 2023-09-08 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kauth-5.109.0.tar.xz -chk 3f7d81fccbc9336306a88ae52016cde3645b3bf9fed16ac3d17fc6ef85d7a0ae +file 6.0/kauth-6.0.0.tar.xz +chk 66046698d2584692d5397a6ec808b2c9f8b7882a0f85233be9cd69283d03c768 # kconfig -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kconfig-5.109.0.tar.xz -chk 5ba91551fb682d3e1d536bc3735b56cecaa57bb698ab32dd8f662e1cc78f7ad8 +file 6.0/kconfig-6.0.0.tar.xz +chk 3f7c1e6b048df4ab3d67fbef01a5ad1dd0289c9b158644668fba0225c050c050 # ki18n -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/ki18n-5.109.0.tar.xz -chk dd8b6cb94b082c1e2e564199315cb08c982edb22a27ec0db481884c48b5cdf45 +file 6.0/ki18n-6.0.0.tar.xz +chk 15cbfb73ef1d3954d6206755b6e6a9c86ea27be4b4db0c843d38494851bcc354 # kwidgetsaddons -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kwidgetsaddons-5.109.0.tar.xz -chk d68072f9f351b71a09c86f2856aaa6b6883e4681e542111c42faa1219692e2e2 +file 6.0/kwidgetsaddons-6.0.0.tar.xz +chk a7771c92310a21a8105ba64dd61c065ba74723899c7ccfc4de2b57b17e6a6b63 # kcompletion -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kcompletion-5.109.0.tar.xz -chk 72c4a602664b88f16d138cd36a709afbee86a555609232084e29ddb0c2a4aaf1 +file 6.0/kcompletion-6.0.0.tar.xz +chk f6434014e7979b6545906d1ff7a2920cfab65641369921e69f00a818b8eee559 # kwindowsystem -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kwindowsystem-5.109.0.tar.xz -chk 088075c9ff367b5b53b6ecdd34dcf8a47a4cf47458ef02fd9d8df3266679c1a2 +file 6.0/kwindowsystem-6.0.0.tar.xz +chk 1906caa53b7d58fc0c4d78a3c8d99f25aa056fc6d09c5fc121ed5e1f80396a94 # kcoreaddons -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kcoreaddons-5.109.0.tar.xz -chk ff647fc1d4dd62370f261854af0870f2a1c7ba7abe7e276e5a4c42d923f15300 +file 6.0/kcoreaddons-6.0.0.tar.xz +chk eab838201b45ac98c412f64d234e89d62357f275ae9ae966d073a64c67a526ef # kcodecs -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kcodecs-5.109.0.tar.xz -chk 9648fe05222c0755441a2091e4f97fd7b65649bcbaa2fb8c120e90d9c8934ca5 +file 6.0/kcodecs-6.0.0.tar.xz +chk ceba44dcdc251d443bbd6cb77d1219d876af8cc2ae4710472aace78122395abe # kconfigwidgets -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kconfigwidgets-5.109.0.tar.xz -chk 1e67fa94fd1a91ceb7800061b80e7a498d8031b75d8baabe1099e9e62cd614bf +file 6.0/kconfigwidgets-6.0.0.tar.xz +chk 511bed0d95de186b3cf62c7192bbb6020450d4861f05c1a545356144f17de532 # kdbusaddons -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kdbusaddons-5.109.0.tar.xz -chk 251876bc1a0006741a32406bf52d4f0034f69c4dec9842a47353f5221965f035 +file 6.0/kdbusaddons-6.0.0.tar.xz +chk 11e70d0c7239bd818962d91cdb94aeba94748055c77003a4f64ff14dab0ae989 # kxmlgui -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kxmlgui-5.109.0.tar.xz -chk b4094d33bfb381a07506ac0eb6844ecee3d45e63ab8596587fd0e883259adaee +file 6.0/kxmlgui-6.0.0.tar.xz +chk d26c62ce9f5be8643fed465531418fb67e4d13edf61797a946da301aeb9158f2 # kguiaddons -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kguiaddons-5.109.0.tar.xz -chk 207d66c3b1b2630f366cb6bab408be60e3f8299ac56be35b24a3c8f336ce7fbd +file 6.0/kguiaddons-6.0.0.tar.xz +chk 20af58ab639ea99df09acbd74af0c867f22f1d9f91595623ab44fba5834eaa62 # kitemviews -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kitemviews-5.109.0.tar.xz -chk 4d59fbb9f07737a9d104abf6678e3ac3433885eca379d180b1b22f2514d8c2a9 +file 6.0/kitemviews-6.0.0.tar.xz +chk aded76af78d66bc3e90f3a1cada117d74783b519904d04a39591b9874df35243 # kitemmodels -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kitemmodels-5.109.0.tar.xz -chk 16f0e59a76368524ebdc90cce62e4cead41142953889312aab0ee157b53ab0f0 +file 6.0/kitemmodels-6.0.0.tar.xz +chk 89b879981722821a911bba1765128820217944fa78e5452369158ed97a835b3a # kiconthemes -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kiconthemes-5.109.0.tar.xz -chk d319fbb3dbe8e08022690683b7fe27359dd2b036ea52e10f767a63354f68e66c +file 6.0/kiconthemes-6.0.0.tar.xz +chk f557bd269fafe617eb8d4b7ac2959609f96cce3ea8b1b3ac231063a726927bb0 # breeze-icons -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/breeze-icons-5.109.0.tar.xz -chk e07a0be85f4fe67576204339be9ac9c6809618b16963fb147d59a325380c54b2 +file 6.0/breeze-icons-6.0.0.tar.xz +chk 473e9851e4f84a64f1e808d58fd8760219a1b08feaf4b514a1399c8e5c889dc4 # karchive -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/karchive-5.109.0.tar.xz -chk 9c4a01c2e4190824e901d487aaa8ce6b2731aa8254fddd9c1a25ee1d1bbbc966 +file 6.0/karchive-6.0.0.tar.xz +chk 75a591d9648026eb86826974e6f3882e7f620592ecef8fabeb19206e63b04e50 # kcrash -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kcrash-5.109.0.tar.xz -chk 2e96d147803f4fb4f9a3affc9ebf69149d221ab49e78f8561ef80cdcf5b276fb +file 6.0/kcrash-6.0.0.tar.xz +chk f56f1ed44e494417b7046e4f94791ad4ddd07c6cb8f0f704f2053717a44296f9 # kio -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kio-5.109.0.tar.xz -chk f65a69ef167f5932c4f0f662ff8eb150aba36476fbcbd806744320a1049c0c62 +file 6.0/kio-6.0.0.tar.xz +chk 4951adf043299e463803cc63ed33d5261b81bff969eb189dc13350f495cb4b42 # kbookmarks -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kbookmarks-5.109.0.tar.xz -chk 4d979b6b2504c80f2b4db7451ed82eac083d67641607146b9f897f3f04d01f06 +file 6.0/kbookmarks-6.0.0.tar.xz +chk 15b5436c3adbd517a014f33803c30bd60656bbccb9a2b2a6e46fd4e2237db9a5 # kservice -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kservice-5.109.0.tar.xz -chk 5eefe87a080d88d2e8d60bc19e49ef925ab4c2c3cdffb29edb63eb91db3a6995 +file 6.0/kservice-6.0.0.tar.xz +chk 9b44acf51d280deaa3114ec59518a6af5d645cb1ec2ebadb5de74681c8891bfe # solid -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/solid-5.109.0.tar.xz -chk bc4dfb6d1792711a48745ddb3698ed764da86fca1f79a1b931072e910b4bd569 +file 6.0/solid-6.0.0.tar.xz +chk 75c5d254eeceb917c35cb0e32beff76a2cf1458f773ecd0e7795b47dad5aadd3 # kjobwidgets -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kjobwidgets-5.109.0.tar.xz -chk 860ed5b80d868c42ff957c9d1003d542f9b7fe026c877786dc14969d50a7c2b7 +file 6.0/kjobwidgets-6.0.0.tar.xz +chk 5239d0d47af8118c962b59816fceeebbff930a43ab7923438982ac08dbcb84be # threadweaver -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/threadweaver-5.109.0.tar.xz -chk 7274529540c4f478519271655a409e4d89c297683eab531a764cf2e5b8c2d2e0 +file 6.0/threadweaver-6.0.0.tar.xz +chk ba9daec6e0697fdc2accf74a46a6d59403e5e340d280bce916fd6356a668ddb3 # kparts -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kparts-5.109.0.tar.xz -chk 6b1da5f8c00c2204e9da1eb6767e00f72a966d1152073515bb677f0e7734f79e +file 6.0/kparts-6.0.0.tar.xz +chk f08308556eecd6db0be727ec1d27b3bb533880a530d112bb16ec2f08ead1f6e1 # ktextwidgets -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/ktextwidgets-5.109.0.tar.xz -chk 380d02e7deefe33cb0ca8c5125dd1e1636510a0843b455a999be2c45571e1da0 +file 6.0/ktextwidgets-6.0.0.tar.xz +chk b093f570ea3c2d4320e41b575a540fb75acd5b5f818bc6215a5fdb57754b6c40 # sonnet -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/sonnet-5.109.0.tar.xz -chk 593ba654a8b5f61af95fec3fd0b269a8f5e89dbed54d62aafb41a0ce0146eeba +file 6.0/sonnet-6.0.0.tar.xz +chk 2083df45e7a729a37a8d6642145e6acf4c53e6b235303843e31031c8d290ae8b # kcalendarcore -# last changed: 2023-08-23 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/kcalendarcore-5.109.0.tar.xz -chk 8581e0e2ac540ce4c8ea76fb61c61234c85c3c908e70b8b5afd0b8ca244edad4 +file 6.0/kcalendarcore-6.0.0.tar.xz +chk 641356ac286c1a5287327ce8fa2529bf53048e439d1ff672c925d4ab7e0eb7c2 # prison -# last changed: 2023-11-30 +# last changed: 2024-03-12 # by: ah # verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) -file 5.109/prison-5.109.0.tar.xz -chk 8109d7daada25735e4aa9c0f0b51640f34386aa51a9d03bb49b84a0359e8bcde +file 6.0/prison-6.0.0.tar.xz +chk 6ff5fbc6fc38581072ee45904e022d5bf2e7b3b1f49ac9d1d0c6024d7ca3ec5a +# knotifications +# last changed: 2024-03-15 +# by: ah +# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) +file 6.0/knotifications-6.0.0.tar.xz +chk 35fed813fc594bbe808bc01b511b2d1eff9023977b7981137f3fec81984713e8 + +# kcolorscheme +# last changed: 2024-03-27 +# by: ah +# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh) +file 6.0/kcolorscheme-6.0.0.tar.xz +chk de45822431755be39ab7aebfcb7cb6ff90b4924579c2a4d66ae28f91d70a260e ### END PASTE ### +# snoretoast +# needs WRL +# last changed: 2024-03-22 +# server https://invent.kde.org/libraries/snoretoast/-/archive/ +# name snoretoast-0.9.0.tar.bz2 +# file v0.9.0/snoretoast-v0.9.0.tar.bz2 +# chk 76e90e0da95f01363f3f4b6a4f2470fa955e48674bba6a52a8c70eff667d4e42 + server http://download.kde.org/stable/release-service/ # kmime -# last changed: 2023-09-11 +# last changed: 2024-03-12 # by: ah # verified: PGP Sig D81C0CB38EB725EF6691C385BB463350D6EF31EF -file 23.08.0/src/kmime-23.08.0.tar.xz -chk e472d4e0eb4d2fd43cad17265a38ee9cdb2dd0450b3f6a596b240209709aff7c +file 24.02.0/src/kmime-24.02.0.tar.xz +chk 4f1251484f18b6eedf62c9219a504e6357de5adff4016cc34a714dd0cb748065 # kmbox -# last changed: 2023-09-15 +# last changed: 2024-03-12 # by: ah # verified: PGP Sig D81C0CB38EB725EF6691C385BB463350D6EF31EF -file 23.08.0/src/kmbox-23.08.0.tar.xz -chk 441bbb3c13cb535a216feb411ffe5925f4ca668a679c3cc1c4260c2bf406baec +file 24.02.0/src/kmbox-24.02.0.tar.xz +chk 6ea8ea43483489d4467f528163101af4fb19ea33664c72857b2abfe8a468f403 # # Snapshots stored on the GnuPG server # server https://gnupg.org/ftp/gcrypt/snapshots # gpgol # last changed: 2023-11-21 # by: aheinecke # verified: Tarball created by aheinecke. # file gpgol/gpgol-2.5.10-beta23.tar.xz # chk 4582dd9d6c5f80018cd60102edf828d3e4fed159364af5fa8214a8fb17229b9a # gpg4win-tools -# last changed: 2023-11-21 +# last changed: 2024-03-12 # by: aheinecke # verified: Tarball created by aheinecke. -file gpg4win-tools/gpg4win-tools-202311210840.tar.xz -chk 312e90d9073e6409426db7d603e67b1430256131d9d652da15ac2a27ca5658d3 +file gpg4win-tools/gpg4win-tools-202403121234.tar.xz +chk fb814117962c9332ae2189a74cb1931f96aee1b0713298d8c2f34692a3269e82 # gpgpass -# last changed: 2023-12-12 +# last changed: 2024-03-12 # by: aheinecke # verified: Tarball created by aheinecke. -file gpgpass/gpgpass-202312121150.tar.xz -chk 6cc3eec7bec7ebe32860c86e97d541e8b53836d50150a392270ba2e05d30201a +file gpgpass/gpgpass-202403121234.tar.xz +chk 4d4677304e6fc9ec9e3924edf7988b3710904439b06b5c8de6d6cea5744f8148 # mimetreeparser -# last changed: 2023-12-03 +# last changed: 2024-03-22 # by: aheinecke # verified: Tarball created by aheinecke. -file mimetreeparser/mimetreeparser-202312030131.tar.xz -chk e5236e9c867664910d4019b17552822d84e92124490f40aa6ada05578c9ef200 +file mimetreeparser/mimetreeparser-202403220837.tar.xz +chk 054cf3c4b4ecb5b7f4132843540b0f31402b42ff73a597824f939a69dd3f8f11 # libkleo -# last changed: 2024-03-08 -# by: builder -# verified: Tarball created by builder. -file libkleo/libkleo-202403081149.tar.xz -chk 87b9769718ed87ca79dee49fcd04c7a76cfef89516e5ba7f742378f6f5eaf829 +# last changed: 2024-03-12 +# by: aheinecke +# verified: Tarball created by aheinecke. +file libkleo/libkleo-202403121233.tar.xz +chk c8da91e1e1b594501b286f3757c67a75db1d8fc9baabd3d0581b015d09419192 # kleopatra -# last changed: 2024-03-08 -# by: builder -# verified: Tarball created by builder. -file kleopatra/kleopatra-202403081151.tar.xz -chk d05f21511264c7f54b8b62108fe01f046a560f477f49402526a134d109e1dacb +# last changed: 2024-03-12 +# by: aheinecke +# verified: Tarball created by aheinecke. +file kleopatra/kleopatra-202403121232.tar.xz +chk 0b2d929d147662584295a129cb80a7ca517411e267f6d944bf718c4159942122 # Okular and dependencies # poppler -# last changed: 2023-09-08 +# last changed: 2024-03-12 # by: aheinecke # verified: Tarball created by aheinecke. -file poppler/poppler-202309080910.tar.xz -chk 2ca1273a6ef9ce00e9bc886b0864ef02b88f4df2525922e1ac322ce7360e6621 +file poppler/poppler-202403121235.tar.xz +chk 57cbfa9f51d3c10f8ae9da38bda704612c3a2498a814287ac12ff709a8e6542f # okular -# last changed: 2023-11-22 +# last changed: 2024-03-12 # by: aheinecke # verified: Tarball created by aheinecke. -file okular/okular-202311221749.tar.xz -chk 205df68c183900a1b21d1381d9a3d7554a642fa6dd3ef7e9bc5bbcfcd0aa8f1b +file okular/okular-202403121235.tar.xz +chk c49f31e746a3c9b970c118ce7113e07df4e2b45d23f2d49af3f93d413f057169 diff --git a/patches/breeze-icons/subset-crossbuild.patch b/patches/kf5/breeze-icons/subset-crossbuild.patch similarity index 100% rename from patches/breeze-icons/subset-crossbuild.patch rename to patches/kf5/breeze-icons/subset-crossbuild.patch diff --git a/patches/gpgme/0001-core-percent-decode-filename.patch b/patches/kf5/gpgme/0001-core-percent-decode-filename.patch similarity index 100% rename from patches/gpgme/0001-core-percent-decode-filename.patch rename to patches/kf5/gpgme/0001-core-percent-decode-filename.patch diff --git a/patches/kconfig/0001-Read-defaults-from-Windows-registry.patch b/patches/kf5/kconfig/0001-Read-defaults-from-Windows-registry.patch similarity index 100% rename from patches/kconfig/0001-Read-defaults-from-Windows-registry.patch rename to patches/kf5/kconfig/0001-Read-defaults-from-Windows-registry.patch diff --git a/patches/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch b/patches/kf5/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch similarity index 100% rename from patches/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch rename to patches/kf5/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch diff --git a/patches/kconfigwidgets/0001-Make-QDbus-optional.patch b/patches/kf5/kconfigwidgets/0001-Make-QDbus-optional.patch similarity index 100% rename from patches/kconfigwidgets/0001-Make-QDbus-optional.patch rename to patches/kf5/kconfigwidgets/0001-Make-QDbus-optional.patch diff --git a/patches/kcoreaddons/0001-Fix-MINGW-build.patch b/patches/kf5/kcoreaddons/0001-Fix-MINGW-build.patch similarity index 100% rename from patches/kcoreaddons/0001-Fix-MINGW-build.patch rename to patches/kf5/kcoreaddons/0001-Fix-MINGW-build.patch diff --git a/patches/kiconthemes/0001-Make-DBus-optional.patch b/patches/kf5/kiconthemes/0001-Make-DBus-optional.patch similarity index 100% rename from patches/kiconthemes/0001-Make-DBus-optional.patch rename to patches/kf5/kiconthemes/0001-Make-DBus-optional.patch diff --git a/patches/kiconthemes/dark-mode-detection.patch b/patches/kf5/kiconthemes/dark-mode-detection.patch similarity index 100% rename from patches/kiconthemes/dark-mode-detection.patch rename to patches/kf5/kiconthemes/dark-mode-detection.patch diff --git a/patches/kwidgetsaddons/0001-Set-the-modes-on-the-date-picker.patch b/patches/kf5/kwidgetsaddons/0001-Set-the-modes-on-the-date-picker.patch similarity index 100% rename from patches/kwidgetsaddons/0001-Set-the-modes-on-the-date-picker.patch rename to patches/kf5/kwidgetsaddons/0001-Set-the-modes-on-the-date-picker.patch diff --git a/patches/kwidgetsaddons/0002-Remove-No-date-option-from-date-picker-popup-used-by.patch b/patches/kf5/kwidgetsaddons/0002-Remove-No-date-option-from-date-picker-popup-used-by.patch similarity index 100% rename from patches/kwidgetsaddons/0002-Remove-No-date-option-from-date-picker-popup-used-by.patch rename to patches/kf5/kwidgetsaddons/0002-Remove-No-date-option-from-date-picker-popup-used-by.patch diff --git a/patches/kwidgetsaddons/fix-height-of-text-after-update.patch b/patches/kf5/kwidgetsaddons/fix-height-of-text-after-update.patch similarity index 100% rename from patches/kwidgetsaddons/fix-height-of-text-after-update.patch rename to patches/kf5/kwidgetsaddons/fix-height-of-text-after-update.patch diff --git a/patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch b/patches/kf5/qtbase/0001-Gpg4win-qstandardpaths-patch.patch similarity index 100% rename from patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch rename to patches/kf5/qtbase/0001-Gpg4win-qstandardpaths-patch.patch diff --git a/patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch b/patches/kf5/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch similarity index 100% rename from patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch rename to patches/kf5/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch diff --git a/patches/qtbase/CVE-2023-32763-qtbase-5.15.patch b/patches/kf5/qtbase/CVE-2023-32763-qtbase-5.15.patch similarity index 100% rename from patches/qtbase/CVE-2023-32763-qtbase-5.15.patch rename to patches/kf5/qtbase/CVE-2023-32763-qtbase-5.15.patch diff --git a/patches/qtbase/CVE-2023-37369-qtbase-5.15.patch b/patches/kf5/qtbase/CVE-2023-37369-qtbase-5.15.patch similarity index 100% rename from patches/qtbase/CVE-2023-37369-qtbase-5.15.patch rename to patches/kf5/qtbase/CVE-2023-37369-qtbase-5.15.patch diff --git a/patches/qtbase/CVE-2023-43114-5.15.patch b/patches/kf5/qtbase/CVE-2023-43114-5.15.patch similarity index 100% rename from patches/qtbase/CVE-2023-43114-5.15.patch rename to patches/kf5/qtbase/CVE-2023-43114-5.15.patch diff --git a/patches/qtbase/add-kleopatras-mime-types.patch b/patches/kf5/qtbase/add-kleopatras-mime-types.patch similarity index 100% rename from patches/qtbase/add-kleopatras-mime-types.patch rename to patches/kf5/qtbase/add-kleopatras-mime-types.patch diff --git a/patches/qtsvg/CVE-2023-32573-qtsvg-5.15.patch b/patches/kf5/qtsvg/CVE-2023-32573-qtsvg-5.15.patch similarity index 100% rename from patches/qtsvg/CVE-2023-32573-qtsvg-5.15.patch rename to patches/kf5/qtsvg/CVE-2023-32573-qtsvg-5.15.patch diff --git a/patches/qttools/disable-most-tools.patch b/patches/kf5/qttools/disable-most-tools.patch similarity index 100% rename from patches/qttools/disable-most-tools.patch rename to patches/kf5/qttools/disable-most-tools.patch diff --git a/patches/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch b/patches/kf5/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch similarity index 100% rename from patches/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch rename to patches/kf5/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch diff --git a/src/Makefile.am b/src/Makefile.am index 005e7cc2..bd76e29e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,696 +1,713 @@ # Makefile.am - Installer for GnuPG 4 Windows Makefile. # Copyright (C) 2005, 2006, 2007, 2008, 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, see . -EXTRA_DIST = pkg-config gpg4win.nsi gpg4win-src.nsi \ +EXTRA_DIST = gpg4win.nsi gpg4win-src.nsi \ config.site config.nsi.in \ libiconv.def libintl.def findicons.sh \ gpg4win-splash.wav exdll.h exdll.c g4wihelp.c desktopshellrun.cpp \ g4wihelp.nsi slideshow.cpp gpgwrap.c \ gpg-enable-keyboxd.bat gpg-disable-keyboxd.bat \ BreezeClassic.colors BreezeDark.colors \ inst-sections.nsi installer.nsi installer-finish.nsi \ zlib.pc sha1sum.c \ potomo Memento.nsh \ inst-gpg4win.nsi uninst-gpg4win.nsi \ inst-gettext.nsi uninst-gettext.nsi \ inst-gnupg-w32.nsi uninst-gnupg-w32.nsi \ inst-gpgme.nsi uninst-gpgme.nsi \ inst-paperkey.nsi uninst-paperkey.nsi \ inst-gpgol.nsi uninst-gpgol.nsi \ inst-gpgex.nsi uninst-gpgex.nsi \ inst-libassuan.nsi uninst-libassuan.nsi \ inst-libgpg-error.nsi uninst-libgpg-error.nsi \ inst-libiconv.nsi uninst-libiconv.nsi \ inst-compendium.nsi uninst-compendium.nsi \ inst-man_advanced_de.nsi uninst-man_advanced_de.nsi \ inst-man_advanced_en.nsi uninst-man_advanced_en.nsi \ inst-man_novice_de.nsi uninst-man_novice_de.nsi \ inst-man_novice_en.nsi uninst-man_novice_en.nsi \ inst-pcre2.nsi uninst-pcre2.nsi \ inst-pinentry.nsi uninst-pinentry.nsi \ inst-pkgconfig.nsi uninst-pkgconfig.nsi \ inst-zlib.nsi uninst-zlib.nsi \ inst-kconfig.nsi uninst-kconfig.nsi \ inst-kleopatra.nsi uninst-kleopatra.nsi \ inst-bzip2.nsi uninst-bzip2.nsi \ inst-qtbase.nsi uninst-qtbase.nsi \ inst-ki18n.nsi uninst-ki18n.nsi \ inst-kio.nsi uninst-kio.nsi \ inst-kbookmarks.nsi uninst-kbookmarks.nsi \ inst-kservice.nsi uninst-kservice.nsi \ inst-solid.nsi uninst-solid.nsi \ inst-kjobwidgets.nsi uninst-kjobwidgets.nsi \ inst-kwidgetsaddons.nsi uninst-kwidgetsaddons.nsi \ inst-kcompletion.nsi uninst-kcompletion.nsi \ inst-kwindowsystem.nsi uninst-kwindowsystem.nsi \ inst-ktextwidgets.nsi uninst-ktextwidgets.nsi \ inst-sonnet.nsi uninst-sonnet.nsi \ inst-libkleo.nsi uninst-libkleo.nsi \ inst-kcoreaddons.nsi uninst-kcoreaddons.nsi \ inst-kcodecs.nsi uninst-kcodecs.nsi \ inst-kconfigwidgets.nsi uninst-kconfigwidgets.nsi \ inst-kxmlgui.nsi uninst-kxmlgui.nsi \ inst-kiconthemes.nsi uninst-kiconthemes.nsi \ inst-breeze-icons.nsi uninst-breeze-icons.nsi \ inst-karchive.nsi uninst-karchive.nsi \ inst-kcrash.nsi uninst-kcrash.nsi \ inst-kitemviews.nsi uninst-kitemviews.nsi \ inst-kitemmodels.nsi uninst-kitemmodels.nsi \ inst-kguiaddons.nsi uninst-kguiaddons.nsi \ inst-kmbox.nsi uninst-kmbox.nsi \ inst-kmime.nsi uninst-kmime.nsi \ inst-kde-l10n.nsi uninst-kde-l10n.nsi \ inst-qtsvg.nsi uninst-qtsvg.nsi \ inst-qttools.nsi uninst-qttools.nsi \ inst-qttranslations.nsi uninst-qttranslations.nsi \ inst-qtwinextras.nsi uninst-qtwinextras.nsi \ inst-scute.nsi uninst-scute.nsi \ inst-extra-cmake-modules.nsi uninst-extra-cmake-modules.nsi \ inst-gpg4win-tools.nsi uninst-gpg4win-tools.nsi \ inst-gpgme-browser.nsi \ inst-poppler.nsi uninst-poppler.nsi \ inst-libpng.nsi uninst-libpng.nsi \ inst-openjpeg.nsi uninst-openjpeg.nsi \ inst-jpeg.nsi uninst-jpeg.nsi \ inst-tiff.nsi uninst-tiff.nsi \ inst-freetype.nsi uninst-freetype.nsi \ inst-threadweaver.nsi uninst-threadweaver.nsi \ inst-kparts.nsi uninst-kparts.nsi \ inst-okular.nsi uninst-okular.nsi \ inst-mimetreeparser.nsi uninst-mimetreeparser.nsi \ inst-kcalendarcore.nsi uninst-kcalendarcore.nsi \ inst-libical.nsi uninst-libical.nsi \ inst-qrencode.nsi uninst-qrencode.nsi \ inst-prison.nsi uninst-prison.nsi \ inst-gpgpass.nsi uninst-gpgpass.nsi \ + inst-knotifications.nsi uninst-knotifications.nsi \ + inst-kcolorscheme.nsi uninst-kcolorscheme.nsi \ inst-final.nsi index.theme \ slideshow/slides.dat \ slideshow/slide1-gpgol.png \ slideshow/slide2-gpgex.png \ slideshow/slide3-kleopatra.png \ slideshow/slide4-summary.png \ icons/file-ext.ico \ icons/mail-ext.ico \ kdeglobals qtlogging.ini \ make-msi.pl make-msi.guids \ build-gpg4win.sh \ WixUI_Gpg4win.wxs icons/shield.ico included-icons.txt +#inst-snoretoast.nsi uninst-snoretoast.nsi if BUILD_APPIMAGE appimage = appimage else appimage = endif SUBDIRS = ${appimage} # These paths must be absolute, as we switch directories pretty often. root := $(shell pwd)/playground stampdir := $(shell pwd)/stamps gpg4win_howto_smime_ll = en de HOWTO_files = $(addsuffix .txt, \ $(addprefix HOWTO-SMIME.,$(gpg4win_howto_smime_ll))) foosum_exe = sha1sum.exe md5sum.exe sha256sum.exe # Need to clean the dll because we bypassed automake. CLEANFILES = g4wihelp.dll desktopshellrun.o versioninfo.txt \ $(HOWTO_files) NEWS.tmp COMPONENTS-list.tmp \ license.blurb cdversioninfo.tmp slideshow.o \ $(foosum_exe) gpgwrap.exe # Supported source packages. (see also ../appimage/Makefile.am) gpg4win_spkgs = glib libffi gdk-pixbuf gtk+ \ libgpg-error gpgme gpgol gpgex libpng \ gpa opencdk jpeg \ pinentry libassuan ntbtls pcre \ paperkey regex libiconv gettext scute qrencode -gpg4win_qtpkgs = qtbase qttools qtwinextras qtsvg qttranslations - # Source packages following the KDE pattern -gpg4win_kdepkgs = kconfig kwidgetsaddons ki18n extra-cmake-modules \ +gpg4win_kdepkgs = qtbase qttools qtsvg qttranslations \ + kconfig kwidgetsaddons ki18n extra-cmake-modules \ kcompletion kwindowsystem kcoreaddons libkleo kcodecs \ kmime kconfigwidgets kxmlgui kguiaddons kitemviews \ kiconthemes kleopatra breeze-icons kitemmodels karchive \ gpg4win-tools kcrash kio kbookmarks kservice solid \ kjobwidgets poppler okular freetype threadweaver \ kparts tiff openjpeg sonnet ktextwidgets mimetreeparser \ - libical kcalendarcore kmbox pcre2 prison gpgpass + libical kcalendarcore kmbox pcre2 prison gpgpass \ + knotifications kcolorscheme +#snoretoast # Supported source packages to build in an additional architecture gpg4win_expkgs = libgpg-error libassuan libiconv gettext gpgex gpgol \ gpgme # Some variables WINE = wine WINHOST = win10 WINLIGHT = c:/wix/light.exe # Extra options to configure for individual packages. # We can use $(idir) here for the installation prefix. gpg4win_pkg_libiconv_ex_configure = \ --enable-shared=no --enable-static=yes gpg4win_pkg_gettext_configure = \ --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ CPPFLAGS=-I$(idir)/include CFLAGS=-O2 LDFLAGS=-L$(idir)/lib gpg4win_pkg_scute_configure = \ LDFLAGS=-lws2_32 gpg4win_pkg_gettext_ex_configure = \ --with-lib-prefix=$(ex_idir) --with-libiconv-prefix=$(ex_idir) \ CPPFLAGS=-I$(ex_idir)/include CFLAGS=-O2 LDFLAGS=-L$(ex_idir)/lib # We only need gettext-runtime and there is sadly no top level # configure option for this gpg4win_pkg_gettext_make_dir = gettext-runtime gpg4win_pkg_gettext_make_dir_inst = gettext-runtime gpg4win_pkg_gettext_ex_make_dir = gettext-runtime gpg4win_pkg_gettext_ex_make_dir_inst = gettext-runtime # Paperkey comes with a man pages which we have to convert. define gpg4win_pkg_paperkey_post_install (for i in paperkey ; \ do man -Tlatin1 -l $$$${pkgidir}/share/man/man1/$$$${i}.1 | \ sed `printf "s/_\b//g;s/\b.//g"` | \ sed -e 's/$$$$/\r/' > $$$${pkgidir}/share/man/man1/$$$${i}.man ; \ done) endef # Build the reference manual. define gpg4win_pkg_gpgol_post_install ( cd $$$${pkgbdir}/doc; make pdf ) endef # We would like to use --with-libiconv-prefix and # --with-libintl-prefix, but these don't work with the cheesy # non-"libfoo.la" versions of iconv and gettext that we are using. #gpg4win_pkg_libgpg_error_configure = \ # --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) gpg4win_pkg_libgpg_error_configure = --silent \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib \ --enable-static --enable-install-gpg-error-config gpg4win_pkg_libgpg_error_ex_configure = --silent \ --enable-static --enable-install-gpg-error-config # We convert the PO files to UTF-8. FIXME: This should be done in # libgpg-error proper. define gpg4win_pkg_libgpg_error_post_install (for i in `$(tsdir)/src/potomo --get-linguas $$$${pkgsdir}/po` ; do \ rm $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/libgpg-error.mo \ 2>/dev/null|| true; \ $(tsdir)/src/potomo $$$${pkgsdir}/po/$$$${i}.po \ $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/libgpg-error.mo; \ done) endef -gpg4win_pkg_libassuan_configure = --silent --enable-static +gpg4win_pkg_libassuan_configure = --with-gpg-error-prefix=$(idir) --enable-static -gpg4win_pkg_libassuan_ex_configure = --with-gpg-error-prefix=$(ex_idir) --silent --enable-static +gpg4win_pkg_libassuan_ex_configure = --with-gpg-error-prefix=$(ex_idir) --enable-static gpg4win_pkg_libpng_configure = HAVE_SOLARIS_LD_FALSE=yes CPPFLAGS=\"-I$(idir)/include -DPNG_BUILD_DLL\" LDFLAGS=\"-L$(idir)/lib\" LIBPNG_DEFINES=\"-DPNG_BUILD_DLL\" # We would like to use --with-libiconv-prefix and # --with-libintl-prefix, but these don't work with the cheesy # non-"libfoo.la" versions of iconv and gettext that we are using. gpg4win_pkg_pinentry_configure = \ --enable-pinentry-qt \ --disable-pinentry-fltk \ --disable-pinentry-curses \ --disable-fallback-curses \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib # --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) # The LDFLAGS is needed for -lintl for glib. The QT4 variables work # around the lack of cross compilation support in qt-dev. -gpg4win_pkg_gpgme_configure = --silent \ +gpg4win_pkg_gpgme_configure = \ --with-gpg-error-prefix=$(idir) --enable-static \ LDFLAGS=-L$(idir)/lib \ --enable-languages=qt,cpp \ --disable-gpg-test \ --disable-gpgsm-test -gpg4win_pkg_gpgme_ex_configure = --silent \ +gpg4win_pkg_gpgme_ex_configure = \ --with-gpg-error-prefix=$(ex_idir) --enable-static \ --with-libassuan-prefix=$(ex_idir) \ LDFLAGS=-L$(ex_idir)/lib \ --enable-languages=cpp \ --disable-gpg-test \ --disable-gpgsm-test gpg4win_pkg_gpgol_configure = --silent \ --with-gpgme-prefix=$(idir) --with-gpg-error-prefix=$(idir) \ --with-libassuan-prefix=$(idir) gpg4win_pkg_gpgol_ex_configure = --silent \ --with-gpgme-prefix=$(ex_idir) --with-gpg-error-prefix=$(ex_idir) \ --with-libassuan-prefix=$(ex_idir) gpg4win_pkg_gpgex_configure = --silent \ --with-gpg-error-prefix=$(idir) \ --with-libassuan-prefix=$(idir) gpg4win_pkg_gpgex_ex_configure = --silent \ --with-gpg-error-prefix=$(ex_idir) \ --with-libassuan-prefix=$(ex_idir) gpg4win_pkg_openjpeg_configure = -DBUILD_CODEC=OFF gpg4win_pkg_paperkey_configure = --silent gpg4win_pkg_sonnet_configure = -DSONNET_USE_QML=OFF gpg4win_pkg_ki18n_configure = -DBUILD_WITH_QML=OFF gpg4win_pkg_kconfig_configure = -DKCONFIG_USE_DBUS=OFF -DKCONFIG_USE_QML=OFF gpg4win_pkg_pcre2_configure = -DPCRE2_BUILD_PCRE2_8=OFF -DPCRE2_BUILD_PCRE2_16=ON \ -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF +gpg4win_pkg_karchive_configure = -DWITH_LIBZSTD=OFF -DWITH_LIBLZMA=OFF -gpg4win_pkg_qtbase_configure = \ - ../$$$${pkg_version}/configure \ - -opensource \ - -confirm-license \ - -xplatform win32-g++ \ - -device-option CROSS_COMPILE=$(host)- \ - -no-use-gold-linker \ - -release \ - -shared \ - -prefix $$$${pkgidir} \ - -I "$(idir)/include" \ - -L "$(idir)/lib" \ - -no-icu \ - -opengl desktop \ - -no-glib \ - -accessibility \ - -nomake examples \ - -nomake tests \ - -no-sql-mysql \ - -no-sql-sqlite \ - -no-sql-odbc \ - -no-sql-psql \ - -no-sql-tds \ - -system-zlib \ - -system-libpng \ - -system-libjpeg \ - -system-freetype \ - -system-pcre \ - -no-openssl \ - -no-dbus \ - -v - -# qtbase -# invoke qmake with removed debug options as a workaround for -# https://bugreports.qt-project.org/browse/QTBUG-30898 -gpg4win_pkg_qtbase_make_args = \ - QMAKE='$$$${pkgbdir}/bin/qmake' - -# Make install step. Somehow qtprintsupport is now installed automatically. -define gpg4win_pkg_qtbase_post_install - (cd $$$${pkgbdir}; \ - make install; \ - cd $$$${pkgbdir}/src/printsupport; \ - make install;) -endef +gpg4win_pkg_kcoreaddons_configure = -DKCOREADDONS_USE_QML=OFF +gpg4win_pkg_kwindowsystem_configure = -DKWINDOWSYSTEM_QML=OFF -gpg4win_pkg_qttools_configure = \ - "$(idir)/bin/qmake" ../$$$${pkg_version} +gpg4win_pkg_qtbase_configure = \ + -DQT_HOST_PATH=/usr \ + -DQt6HostInfo_DIR=/usr/lib64/cmake/Qt6HostInfo \ + -DQT_QMAKE_DEVICE_OPTIONS='CROSS_COMPILE=$(host)- \ + -DQT_QMAKE_TARGET_MKSPEC=win32-g++ \ + -DQT_BUILD_EXAMPLES=OFF \ + -DQT_BUILD_TESTS=OFF \ + -DBUILD_WITH_PCH=OFF \ + -DFEATURE_accessibility=ON \ + -DFEATURE_dbus=OFF \ + -DFEATURE_fontconfig=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_opengl_dynamic=ON \ + -DFEATURE_openssl=OFF \ + -DFEATURE_pkg_config=ON \ + -DFEATURE_sql_mysql=OFF \ + -DFEATURE_sql_odbc=ON \ + -DFEATURE_sql_psql=OFF \ + -DFEATURE_system_zlib=ON \ + -DFEATUeE_zstd=ON \ + -DFEATURE_system_pcre=ON \ + -DFEATURE_system_freetype=ON \ + -DFEATURE_system_harfbuzz=OFF \ + -DFEATURE_schannel=ON \ + -DFEATURE_use_gold_linker_alias=OFF \ + -DCMAKE_VERBOSE_MAKEFILE=ON + +# -DFEATURE_system_pcre2=ON \ +# ../$$$${pkg_version}/configure \ +# -opensource \ +# -confirm-license \ +# -xplatform win32-g++ \ +# -device-option CROSS_COMPILE=$(host)- \ +# -no-use-gold-linker \ +# -release \ +# -shared \ + # -prefix $$$${pkgidir} \ +# -I "$(idir)/include" \ +# -L "$(idir)/lib" \ +# -no-icu \ +# -opengl desktop \ +# -no-glib \ +# -accessibility \ +# -nomake examples \ +# -nomake tests \ +# -no-sql-mysql \ +# -no-sql-sqlite \ +# -no-sql-odbc \ +# -no-sql-psql \ +# -no-sql-tds \ +# -system-zlib \ +# -system-libpng \ +# -system-libjpeg \ +# -system-freetype \ +# -system-pcre \ +# -no-openssl \ +# -no-dbus \ +# -v -define gpg4win_pkg_qttools_post_install - (cd $$$${pkgbdir}; \ - mkdir -p $$$${pkgidir}; \ - cp -r bin lib include $$$${pkgidir}) -endef +# Make install step. Somehow qtprintsupport is now installed automatically. +#define gpg4win_pkg_qtbase_post_install +# (cd $$$${pkgbdir}; \ +# make install; \ +# cd $$$${pkgbdir}/src/printsupport; \ +# make install;) +#endef -# Qmake does not support setting the installation path. -# really https://bugreports.qt.io/browse/QTBUG-12341 -gpg4win_pkg_qtwinextras_configure = \ - "$(idir)/bin/qmake" ../$$$${pkg_version} -define gpg4win_pkg_qtwinextras_post_install - (cd $$$${pkgbdir}; \ - mkdir -p $$$${pkgidir}/bin; \ - cp -r lib include $$$${pkgidir}; \ - mv $$$${pkgidir}/lib/*.dll $$$${pkgidir}/bin;) -endef +#gpg4win_pkg_qttools_configure = \ +# "$(idir)/bin/qmake" ../$$$${pkg_version} -gpg4win_pkg_qtsvg_configure = \ - "$(idir)/bin/qmake" ../$$$${pkg_version} +#define gpg4win_pkg_qttools_post_install +# (cd $$$${pkgbdir}; \ +# mkdir -p $$$${pkgidir}; \ +# cp -r bin lib include $$$${pkgidir}) +#endef # XXX Adding the qtconf after qtsvg is a weird hack # because somhow (yay qmake) zlib is not linked if # the qt conf exists before that. The qt conf is # needed for qttranslations to find the correct path # of the translation tools. -define gpg4win_pkg_qtsvg_post_install - (cd $$$${pkgbdir}; \ - mkdir -p $$$${pkgidir}; \ - cp -r lib include plugins $$$${pkgidir}; \ - mkdir -p $$$${pkgidir}/bin; \ - mv $$$${pkgidir}/lib/*.dll $$$${pkgidir}/bin; \ - echo "[Paths]" > $$$${pkgidir}/bin/qt.conf; \ - echo "Prefix = .." >> $$$${pkgidir}/bin/qt.conf) -endef - -gpg4win_pkg_qttranslations_configure = \ - "$(idir)/bin/qmake" ../$$$${pkg_version} - -define gpg4win_pkg_qttranslations_post_install - ( rm -fR $$$${pkgidir}/qttranslations; \ - mkdir -p $$$${pkgidir}; \ - cp -r $$$${pkgbdir}/translations $$$${pkgidir}/qttranslations;) -endef +#define gpg4win_pkg_qtsvg_post_install +#(cd $$$${pkgbdir}; \ +# mkdir -p $$$${pkgidir}; \ +# cp -r lib include plugins $$$${pkgidir}; \ +# mkdir -p $$$${pkgidir}/bin; \ +# mv $$$${pkgidir}/lib/*.dll $$$${pkgidir}/bin; \ +# echo "[Paths]" > $$$${pkgidir}/bin/qt.conf; \ +# echo "Prefix = .." >> $$$${pkgidir}/bin/qt.conf) +# endef define gpg4win_pkg_okular_post_install ( rm $$$${pkgidir}/share/icons/hicolor/icon-theme.cache; ) endef gpg4win_pkg_kleopatra_configure = \ -DFORCE_DISABLE_KCMUTILS=ON \ -DDISABLE_KWATCHGNUPG=ON \ -DRELEASE_SERVICE_VERSION=Gpg4win-$(VERSION) \ -DKLEOPATRA_DISTRIBUTION_TEXT="$(DISTRIBUTION_TEXT)" gpg4win_pkg_kxmlgui_configure = \ -DFORCE_DISABLE_KGLOBALACCEL=ON \ -DFORCE_DISABLE_DBUS=ON \ -DXMLGUI_COMPILER_VERSION="i686-w64-mingw32-gcc" \ -DXMLGUI_DISTRIBUTION_TEXT="$(DISTRIBUTION_TEXT)" +gpg4win_pkg_knotifications_configure = \ + -DFORCE_DISABLE_CANBERRA=ON + gpg4win_pkg_breeze_icons_configure = \ -DBINARY_ICONS_RESOURCE=ON \ -DICON_SUBSET_INCLUDE_FILE=$(abs_srcdir)/included-icons.txt gpg4win_pkg_kbookmarks_configure = \ -DANDROID=ON gpg4win_pkg_kservice_configure = \ -DANDROID=ON gpg4win_pkg_kjobwidgets_configure = \ -DANDROID=ON +gpg4win_pkg_kiconthemes_configure = \ + -DANDROID=ON \ + -DKICONTHEMES_USE_QTQUICK=OFF + gpg4win_pkg_okular_configure = \ -DFORCE_NOT_REQUIRED_DEPENDENCIES="KF5Purpose\;Qt5TextToSpeech\;LibZip\;KF5Wallet\;KF5DocTools\;KF5JS\;Phonon4Qt5\;TIFF\;JPEG\;LibSpectre\;KF5KExiv2\;CHM\;KF5KHtml\;DjVuLibre\;EPub\;QMobipocket\;Discount\;Qt5Qml\;Qt5DBus" gpg4win_pkg_libical_configure = \ -DICAL_GLIB=false \ -DENABLE_GTK_DOC=false +gpg4win_pkg_prison_configure = \ + -DWITH_QUICK=OFF \ + -DWITH_MULTIMEDIA=OFF + # Supported make-only source packages. gpg4win_mpkgs = bzip2 zlib # Extra options for the make invocations for individual packages. # make_flags is used for building, make_args_inst is used for installing. gpg4win_pkg_bzip2_make_args = \ CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) gpg4win_pkg_bzip2_make_args_inst = \ PREFIX=$$$${pkgidir} CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) gpg4win_pkg_zlib_make_args = \ -fwin32/Makefile.gcc PREFIX=$(host)- IMPLIB=libz.dll.a gpg4win_pkg_zlib_make_args_inst = -fwin32/Makefile.gcc install \ BINARY_PATH=$$$${pkgidir}/bin INCLUDE_PATH=$$$${pkgidir}/include \ LIBRARY_PATH=$$$${pkgidir}/lib SHARED_MODE=1 IMPLIB=libz.dll.a # Supported binary packages. gpg4win_bpkgs = pkgconfig gnupg-w32 kde-l10n # libiconv needs some special magic to generate a usable import # library. # define gpg4win_pkg_libiconv_post_install # (cp $(srcdir)/libiconv.def $$$${pkgidir}/lib; \ # cd $$$${pkgidir}/lib; \ # $(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def) # endef # libiconv needs some special magic to generate a usable import # library. Note that we include some internal symbols that are not # actually part of the DLL. They are needed by the AM_GNU_GETTEXT # configure test, but not used otherwise. # define gpg4win_pkg_gettext_post_install # (cp $(srcdir)/libintl.def $$$${pkgidir}/lib; \ # cd $$$${pkgidir}/lib; \ # $(DLLTOOL) --output-lib libintl.dll.a --def libintl.def) # endef # Zlib needs some special magic to generate a libtool file. # We also install the pc file here. define gpg4win_pkg_zlib_post_install (mkdir $$$${pkgidir}/lib/pkgconfig || true; \ cp $(abs_srcdir)/zlib.pc $$$${pkgidir}/lib/pkgconfig/; \ cd $$$${pkgidir}; \ echo "# Generated by libtool" > lib/libz.la \ echo "dlname='../bin/zlib1.dll'" >> lib/libz.la; \ echo "library_names='libz.dll.a'" >> lib/libz.la; \ echo "old_library='libz.a'" >> lib/libz.la; \ echo "dependency_libs=''" >> lib/libz.la; \ echo "current=1" >> lib/libz.la; \ echo "age=2" >> lib/libz.la; \ echo "revision=5" >> lib/libz.la; \ echo "installed=yes" >> lib/libz.la; \ echo "shouldnotlink=no" >> lib/libz.la; \ echo "dlopen=''" >> lib/libz.la; \ echo "dlpreopen=''" >> lib/libz.la; \ echo "libdir=\"$$$${pkgidir}/lib\"" >> lib/libz.la) endef # We don't use khelpcenter in kleopatra so remove the help links and # point to the correct common folder # TODO Needs to be fixed with current doc #define gpg4win_pkg_kleopatra_post_install # (for i in de en ; do \ # (cd $$$${pkgidir}/share/doc/HTML/$$$${i}; \ # perl -pi -e 's/help:\///g' `find . -name \*.html`; \ # perl -pi -e 's@common/@../../common/@g' `find . -name \*.html`); \ # done) #endef #define gpg4win_pkg_libiconv_post_install #(cp $(srcdir)/libiconv.def $$$${pkgidir}/lib; \ #cd $$$${pkgidir}/lib; \ #$(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def) #endef # Supported internal packages. Internal packages do not require any # special support. Thus, this variable is actually unused, and no # rules are added in gpg4win.mk. gpg4win_ipkgs = man_novice_de man_advanced_de man_novice_en man_advanced_en \ compendium # Default to same version. VSD_VERSION=$(VERSION) # Include installer targets for customized packages -include gnupg-vsd/custom.mk $(stampdir)/stamp-msi-base: icons/shield.ico Makefile.am \ $(top_srcdir)/doc/logo/gpg4win-msi*.bmp \ $(top_srcdir)/po/gpg4win-de.wxl \ $(top_srcdir)/po/gpg4win-en.wxl ssh $(WINHOST) "mkdir AppData\\Local\\Temp\\gpg4win-$(VERSION)" || true scp $(top_srcdir)/packages/gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); scp $(top_srcdir)/src/icons/shield.ico $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp $(top_srcdir)/doc/logo/gpg4win-msi-header_install-493x58.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/header.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-493x312.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/dialog.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-493x312.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/dialog.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-info-32x32.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/info.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-exclamation-32x32.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/exclamation.bmp scp $(top_srcdir)/po/gpg4win-en.wxl $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp $(top_srcdir)/po/gpg4win-de.wxl $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp WixUI_Gpg4win.wxs $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) touch $(stampdir)/stamp-msi-base # Now do the bunch of the work. This is a bunch of dirty magic to # integrate our special makefile into automake, while not actually # including it (make should include it). This is in turn necessary # because automake can't deal with the elegant magic in the actual # Makefile. define INCLUDE_BY_MAKE include $(1) endef if BUILD_GPG4WIN $(eval $(call INCLUDE_BY_MAKE,gpg4win.mk)) gpg4win_clean = clean-gpg4win endif clean-local: $(gpg4win_clean) common_nsi = inst-sections.nsi installer.nsi installer-finish.nsi \ $(addsuffix .nsi,$(addprefix inst-,$(gpg4win_build_list))) \ $(addsuffix .nsi,$(addprefix uninst-,$(gpg4win_build_list))) # Sign additional files as per signing setup # This is a bit of a hack. # Exit in case of error because that usually means that sign.mk # is not up to date. $(stampdir)/stamp-additional-signedfiles: $(stampdir)/stamp-binaries \ $(foosum_exe) (set -e;\ cd "$(idir)"; \ for f in $(AUTHENTICODE_FILES); do \ if [ ! -f "$$f" ]; then \ echo "speedo: ERROR: file '$$f' not available for signing"; \ exit 1; \ fi;\ done; \ for f in $(AUTHENTICODE_FILES); do \ $(call AUTHENTICODE_sign,"$$f","$$f");\ done \ ) touch $(stampdir)/stamp-additional-signedfiles # Prepare the versioninfo file. The pipeline extracts the last # occurrence of a package with the same name, sorts the entries and # writes the file with DOS line endings. This helps to avoid # duplicate entries in case one package has been rebuild (which is # common when developing a new version). versioninfo.txt: $(SHA1SUM) $(pkg_files) versioninfo.tmp set -e; \ ( while read a b; do echo "$$a $$(basename $$b)"; \ done < versioninfo.tmp \ | sort -k2 -sf | tac | uniq -f1 ; \ echo '=========== SHA-1 checksum ============= == package ==' \ ) | tac | awk '{printf "%s\r\n", $$0}' > versioninfo.txt -rm versioninfo.tmp NEWS.tmp : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(de\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(en\)/," *"); print }' \ <$(top_srcdir)/NEWS >NEWS.tmp NEWS.de : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(en\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(de\)/,"-"); print }' \ <$(top_srcdir)/NEWS >NEWS.de; \ sed -i 's/^ / /' NEWS.de NEWS.en : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(de\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(en\)/,"-"); print }' \ <$(top_srcdir)/NEWS >NEWS.en; \ sed -i 's/^ / /' NEWS.en COMPONENTS-list.tmp : $(top_srcdir)/NEWS awk '/^~~~~~~~~~~~/ { ok++; next} ok==1 {print " "$$0}' \ < $(top_srcdir)/NEWS > COMPONENTS-list.tmp # For some nut-crazy reason someone thought it would be a great idea # if makensis changed to the directory of the source file at startup. # So we have to pull a couple of strings to correct this. installers/gpg4win-$(VERSION).exe: gpg4win.nsi $(common_nsi) $(stampdir)/stamp-final \ g4wihelp.dll gpgwrap.exe \ $(foosum_exe) \ $(HOWTO_files) \ license.blurb versioninfo.txt $(MAKENSIS) -V3 -DBUILD_DIR=`pwd` -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(EXTRA_MAKENSIS_FLAGS) $(srcdir)/gpg4win.nsi && \ mv gpg4win-$(VERSION).exe installers/gpg4win-$(VERSION).exe $(stampdir)/stamp-dist-self: versioninfo.txt (set -e; cd ..; make dist-xz) touch $(stampdir)/stamp-dist-self installers/gpg4win-src-$(VERSION).exe: gpg4win-src.nsi $(common_nsii) \ $(stampdir)/stamp-final \ $(stampdir)/stamp-dist-self \ license.blurb $(MAKENSIS) -V3 -DBUILD_DIR=`pwd` -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(EXTRA_MAKENSIS_FLAGS) $(srcdir)/gpg4win-src.nsi && \ mv gpg4win-src-$(VERSION).exe installers/gpg4win-src-$(VERSION).exe license.blurb: $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3 cat $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3 >$@ g4wihelp.dll: slideshow.cpp desktopshellrun.cpp g4wihelp.c exdll.h $(CC) -DUNICODE -static-libgcc -I. -O2 -c \ -o exdll.o $(srcdir)/exdll.c $(CC) -DUNICODE -static-libgcc -I. -O2 -c \ -o desktopshellrun.o $(srcdir)/desktopshellrun.cpp $(CC) -DUNICODE -static-libgcc -I. -O2 -c \ -o slideshow.o $(srcdir)/slideshow.cpp $(CC) -DUNICODE -DENABLE_SLIDE_SHOW -static-libgcc -I. -shared -O2 \ -o g4wihelp.dll $(srcdir)/g4wihelp.c \ desktopshellrun.o slideshow.o exdll.o \ -lwinmm -lgdi32 -luserenv -lshell32 \ -lole32 -loleaut32 -lshlwapi -lmsimg32 $(STRIP) g4wihelp.dll gpgwrap.exe: gpgwrap.c $(CC) -I. -I.. -DHAVE_CONFIG_H -O2 -Wl,-subsystem,windows -o $@ $^ $(STRIP) $@ sha1sum.exe: sha1sum.c $(CC) -O2 -o $@ $^ $(STRIP) $@ md5sum.exe: sha1sum.c $(CC) -DBUILD_MD5SUM -O2 -o $@ $^ $(STRIP) $@ sha256sum.exe: sha1sum.c $(CC) -DBUILD_SHA256SUM -O2 -o $@ $^ $(STRIP) $@ if BUILD_GPG4WIN all_full = installers/gpg4win-$(VERSION).exe endif all-local: $(all_full) if BUILD_GPG4WIN @echo "###################################################" @echo " Gpg4win $(VERSION) successfully build!" @echo " Installers can be found under src/installers" @echo "###################################################" endif clean-local: -rm -f installers/gpg4win-$(VERSION).exe \ installers/GnuPG-VS-Desktop-$(VERSION).msi \ installers/GnuPG-Desktop-$(VERSION).msi distclean-local: rm -f *.dll-x* diff --git a/src/config.nsi.in b/src/config.nsi.in index 0f9ad284..569ea687 100644 --- a/src/config.nsi.in +++ b/src/config.nsi.in @@ -1,320 +1,328 @@ # config.nsi - Configuration settings for gpg4win.nsi. -*- nsi -*- # Copyright (C) 2005, 2007 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. !define _PACKAGE @PACKAGE@ !define _VERSION @VERSION@ !define _BUILD_FILEVERSION @BUILD_FILEVERSION@ !define _BUILD_TIMESTAMP @BUILD_TIMESTAMP@ !define _BUILD_ISODATE @BUILD_ISODATE@ !define build @build_cpu@-@build_os@ !define host @host_cpu@-@host_os@ !define MAKE @MAKE@ !define UNZIP @UNZIP@ !define TAR @TAR@ !define MKDIR @MKDIR@ !define CP @CP@ !define RM @RM@ !define STOW @STOW@ !define INSTALL "@INSTALL@" !define WGET @WGET@ !define DOSLF "\r\n" # If debugging is desired. @GPG4WIN_DEBUG@ # The package build list, in order. !define gpg4win_build_list "@gpg4win_build_list@" # The default packages source directory. !define gpg4win_packages @gpg4win_packages@ # The path of each package. @HAVE_PKG_LIBGPG_ERROR@ !define gpg4win_pkg_libgpg_error @gpg4win_pkg_libgpg_error@ !define gpg4win_pkg_libgpg_error_version @gpg4win_pkg_libgpg_error_version@ @HAVE_PKG_LIBASSUAN@ !define gpg4win_pkg_libassuan @gpg4win_pkg_libassuan@ !define gpg4win_pkg_libassuan_version @gpg4win_pkg_libassuan_version@ @HAVE_PKG_GPGME@ !define gpg4win_pkg_gpgme @gpg4win_pkg_gpgme@ !define gpg4win_pkg_gpgme_version @gpg4win_pkg_gpgme_version@ @HAVE_PKG_GNUPG_W32@ !define gpg4win_pkg_gnupg_w32 @gpg4win_pkg_gnupg_w32@ !define gpg4win_pkg_gnupg_w32_version @gpg4win_pkg_gnupg_w32_version@ @HAVE_PKG_PINENTRY@ !define gpg4win_pkg_pinentry @gpg4win_pkg_pinentry@ !define gpg4win_pkg_pinentry_version @gpg4win_pkg_pinentry_version@ @HAVE_PKG_GPGOL@ !define gpg4win_pkg_gpgol @gpg4win_pkg_gpgol@ !define gpg4win_pkg_gpgol_version @gpg4win_pkg_gpgol_version@ @HAVE_PKG_GPGEX@ !define gpg4win_pkg_gpgex @gpg4win_pkg_gpgex@ !define gpg4win_pkg_gpgex_version @gpg4win_pkg_gpgex_version@ @HAVE_PKG_ZLIB@ !define gpg4win_pkg_zlib @gpg4win_pkg_zlib@ !define gpg4win_pkg_zlib_version @gpg4win_pkg_zlib_version@ @HAVE_PKG_BZIP2@ !define gpg4win_pkg_bzip2 @gpg4win_pkg_bzip2@ !define gpg4win_pkg_bzip2_version @gpg4win_pkg_bzip2_version@ @HAVE_PKG_PKGCONFIG@ !define gpg4win_pkg_pkgconfig @gpg4win_pkg_pkgconfig@ !define gpg4win_pkg_pkgconfig_version @gpg4win_pkg_pkgconfig_version@ !define gpg4win_pkg_pkgconfig_src @gpg4win_pkg_pkgconfig_src@ @HAVE_PKG_LIBICONV@ !define gpg4win_pkg_libiconv @gpg4win_pkg_libiconv@ !define gpg4win_pkg_libiconv_version @gpg4win_pkg_libiconv_version@ !define gpg4win_pkg_libiconv_src @gpg4win_pkg_libiconv_src@ @HAVE_PKG_GETTEXT@ !define gpg4win_pkg_gettext @gpg4win_pkg_gettext@ !define gpg4win_pkg_gettext_version @gpg4win_pkg_gettext_version@ !define gpg4win_pkg_gettext_src @gpg4win_pkg_gettext_src@ @HAVE_PKG_QTBASE@ !define gpg4win_pkg_qtbase @gpg4win_pkg_qtbase@ !define gpg4win_pkg_qtbase_version @gpg4win_pkg_qtbase_version@ !define gpg4win_pkg_qtbase_src @gpg4win_pkg_qtbase_src@ @HAVE_PKG_BREEZE_ICONS@ !define gpg4win_pkg_breeze_icons @gpg4win_pkg_breeze_icons@ !define gpg4win_pkg_breeze_icons_version @gpg4win_pkg_breeze_icons_version@ @HAVE_PKG_KLEOPATRA@ !define gpg4win_pkg_kleopatra @gpg4win_pkg_kleopatra@ !define gpg4win_pkg_kleopatra_version @gpg4win_pkg_kleopatra_version@ @HAVE_PKG_PAPERKEY@ !define gpg4win_pkg_paperkey @gpg4win_pkg_paperkey@ !define gpg4win_pkg_paperkey_version @gpg4win_pkg_paperkey_version@ @HAVE_PKG_KCONFIG@ !define gpg4win_pkg_kconfig @gpg4win_pkg_kconfig@ !define gpg4win_pkg_kconfig_version @gpg4win_pkg_kconfig_version@ @HAVE_PKG_QTTOOLS@ !define gpg4win_pkg_qttools @gpg4win_pkg_qttools@ !define gpg4win_pkg_qttools_version @gpg4win_pkg_qttools_version@ @HAVE_PKG_EXTRA_CMAKE_MODULES@ !define gpg4win_pkg_extra_cmake_modules @gpg4win_pkg_extra_cmake_modules@ !define gpg4win_pkg_extra_cmake_modules_version @gpg4win_pkg_extra_cmake_modules_version@ @HAVE_PKG_KI18N@ !define gpg4win_pkg_ki18n @gpg4win_pkg_ki18n@ !define gpg4win_pkg_ki18n_version @gpg4win_pkg_ki18n_version@ @HAVE_PKG_KWIDGETSADDONS@ !define gpg4win_pkg_kwidgetsaddons @gpg4win_pkg_kwidgetsaddons@ !define gpg4win_pkg_kwidgetsaddons_version @gpg4win_pkg_kwidgetsaddons_version@ @HAVE_PKG_KCOMPLETION@ !define gpg4win_pkg_kcompletion @gpg4win_pkg_kcompletion@ !define gpg4win_pkg_kcompletion_version @gpg4win_pkg_kcompletion_version@ @HAVE_PKG_KWINDOWSYSTEM@ !define gpg4win_pkg_kwindowsystem @gpg4win_pkg_kwindowsystem@ !define gpg4win_pkg_kwindowsystem_version @gpg4win_pkg_kwindowsystem_version@ @HAVE_PKG_QTWINEXTRAS@ !define gpg4win_pkg_qtwinextras @gpg4win_pkg_qtwinextras@ !define gpg4win_pkg_qtwinextras_version @gpg4win_pkg_qtwinextras_version@ @HAVE_PKG_KCOREADDONS@ !define gpg4win_pkg_kcoreaddons @gpg4win_pkg_kcoreaddons@ !define gpg4win_pkg_kcoreaddons_version @gpg4win_pkg_kcoreaddons_version@ @HAVE_PKG_LIBKLEO@ !define gpg4win_pkg_libkleo @gpg4win_pkg_libkleo@ !define gpg4win_pkg_libkleo_version @gpg4win_pkg_libkleo_version@ @HAVE_PKG_KCODECS@ !define gpg4win_pkg_kcodecs @gpg4win_pkg_kcodecs@ !define gpg4win_pkg_kcodecs_version @gpg4win_pkg_kcodecs_version@ @HAVE_PKG_KMIME@ !define gpg4win_pkg_kmime @gpg4win_pkg_kmime@ !define gpg4win_pkg_kmime_version @gpg4win_pkg_kmime_version@ @HAVE_PKG_KMBOX@ !define gpg4win_pkg_kmbox @gpg4win_pkg_kmbox@ !define gpg4win_pkg_kmbox_version @gpg4win_pkg_kmbox_version@ @HAVE_PKG_KCONFIGWIDGETS@ !define gpg4win_pkg_kconfigwidgets @gpg4win_pkg_kconfigwidgets@ !define gpg4win_pkg_kconfigwidgets_version @gpg4win_pkg_kconfigwidgets_version@ @HAVE_PKG_KXMLGUI@ !define gpg4win_pkg_kxmlgui @gpg4win_pkg_kxmlgui@ !define gpg4win_pkg_kxmlgui_version @gpg4win_pkg_kxmlgui_version@ @HAVE_PKG_KGUIADDONS@ !define gpg4win_pkg_kguiaddons @gpg4win_pkg_kguiaddons@ !define gpg4win_pkg_kguiaddons_version @gpg4win_pkg_kguiaddons_version@ @HAVE_PKG_KITEMVIEWS@ !define gpg4win_pkg_kitemviews @gpg4win_pkg_kitemviews@ !define gpg4win_pkg_kitemviews_version @gpg4win_pkg_kitemviews_version@ @HAVE_PKG_KITEMMODELS@ !define gpg4win_pkg_kitemmodels @gpg4win_pkg_kitemmodels@ !define gpg4win_pkg_kitemmodels_version @gpg4win_pkg_kitemmodels_version@ @HAVE_PKG_KICONTHEMES@ !define gpg4win_pkg_kiconthemes @gpg4win_pkg_kiconthemes@ !define gpg4win_pkg_kiconthemes_version @gpg4win_pkg_kiconthemes_version@ @HAVE_PKG_QTSVG@ !define gpg4win_pkg_qtsvg @gpg4win_pkg_qtsvg@ !define gpg4win_pkg_qtsvg_version @gpg4win_pkg_qtsvg_version@ @HAVE_PKG_QTTRANSLATIONS@ !define gpg4win_pkg_qttranslations @gpg4win_pkg_qttranslations@ !define gpg4win_pkg_qttranslations_version @gpg4win_pkg_qttranslations_version@ @HAVE_PKG_KARCHIVE@ !define gpg4win_pkg_karchive @gpg4win_pkg_karchive@ !define gpg4win_pkg_karchive_version @gpg4win_pkg_karchive_version@ @HAVE_PKG_KCRASH@ !define gpg4win_pkg_kcrash @gpg4win_pkg_kcrash@ !define gpg4win_pkg_kcrash_version @gpg4win_pkg_kcrash_version@ @HAVE_PKG_KIO@ !define gpg4win_pkg_kio @gpg4win_pkg_kio@ !define gpg4win_pkg_kio_version @gpg4win_pkg_kio_version@ @HAVE_PKG_KSERVICE@ !define gpg4win_pkg_kservice @gpg4win_pkg_kservice@ !define gpg4win_pkg_kservice_version @gpg4win_pkg_kservice_version@ @HAVE_PKG_SOLID@ !define gpg4win_pkg_solid @gpg4win_pkg_solid@ !define gpg4win_pkg_solid_version @gpg4win_pkg_solid_version@ @HAVE_PKG_KBOOKMARKS@ !define gpg4win_pkg_kbookmarks @gpg4win_pkg_kbookmarks@ !define gpg4win_pkg_kbookmarks_version @gpg4win_pkg_kbookmarks_version@ +@HAVE_PKG_KNOTIFICATIONS@ +!define gpg4win_pkg_knotifications @gpg4win_pkg_knotifications@ +!define gpg4win_pkg_knotifications_version @gpg4win_pkg_knotifications_version@ + @HAVE_PKG_KJOBWIDGETS@ !define gpg4win_pkg_kjobwidgets @gpg4win_pkg_kjobwidgets@ !define gpg4win_pkg_kjobwidgets_version @gpg4win_pkg_kjobwidgets_version@ @HAVE_PKG_OKULAR@ !define gpg4win_pkg_okular @gpg4win_pkg_okular@ !define gpg4win_pkg_okular_version @gpg4win_pkg_okular_version@ @HAVE_PKG_FREETYPE@ !define gpg4win_pkg_freetype @gpg4win_pkg_freetype@ !define gpg4win_pkg_freetype_version @gpg4win_pkg_freetype_version@ @HAVE_PKG_POPPLER@ !define gpg4win_pkg_poppler @gpg4win_pkg_poppler@ !define gpg4win_pkg_poppler_version @gpg4win_pkg_poppler_version@ @HAVE_PKG_LIBPNG@ !define gpg4win_pkg_libpng @gpg4win_pkg_libpng@ !define gpg4win_pkg_libpng_version @gpg4win_pkg_libpng_version@ @HAVE_PKG_TIFF@ !define gpg4win_pkg_tiff @gpg4win_pkg_tiff@ !define gpg4win_pkg_tiff_version @gpg4win_pkg_tiff_version@ @HAVE_PKG_PCRE2@ !define gpg4win_pkg_pcre2 @gpg4win_pkg_pcre2@ !define gpg4win_pkg_pcre2_version @gpg4win_pkg_pcre2_version@ @HAVE_PKG_OPENJPEG@ !define gpg4win_pkg_openjpeg @gpg4win_pkg_openjpeg@ !define gpg4win_pkg_openjpeg_version @gpg4win_pkg_openjpeg_version@ @HAVE_PKG_JPEG@ !define gpg4win_pkg_jpeg @gpg4win_pkg_jpeg@ !define gpg4win_pkg_jpeg_version @gpg4win_pkg_jpeg_version@ @HAVE_PKG_KPARTS@ !define gpg4win_pkg_kparts @gpg4win_pkg_kparts@ !define gpg4win_pkg_kparts_version @gpg4win_pkg_kparts_version@ @HAVE_PKG_KTEXTWIDGETS@ !define gpg4win_pkg_ktextwidgets @gpg4win_pkg_ktextwidgets@ !define gpg4win_pkg_ktextwidgets_version @gpg4win_pkg_ktextwidgets_version@ +@HAVE_PKG_KCOLORSCHEME@ +!define gpg4win_pkg_kcolorscheme @gpg4win_pkg_kcolorscheme@ +!define gpg4win_pkg_kcolorscheme_version @gpg4win_pkg_kcolorscheme_version@ + @HAVE_PKG_SONNET@ !define gpg4win_pkg_sonnet @gpg4win_pkg_sonnet@ !define gpg4win_pkg_sonnet_version @gpg4win_pkg_sonnet_version@ @HAVE_PKG_THREADWEAVER@ !define gpg4win_pkg_threadweaver @gpg4win_pkg_threadweaver@ !define gpg4win_pkg_threadweaver_version @gpg4win_pkg_threadweaver_version@ @HAVE_PKG_GPG4WIN_TOOLS@ !define gpg4win_pkg_gpg4win_tools @gpg4win_pkg_gpg4win_tools@ !define gpg4win_pkg_gpg4win_tools_version @gpg4win_pkg_gpg4win_tools_version@ @HAVE_PKG_SCUTE@ !define gpg4win_pkg_scute @gpg4win_pkg_scute@ !define gpg4win_pkg_scute_version @gpg4win_pkg_scute_version@ @HAVE_PKG_KCALENDARCORE@ !define gpg4win_pkg_kcalendarcore @gpg4win_pkg_kcalendarcore@ !define gpg4win_pkg_kcalendarcore_version @gpg4win_pkg_kcalendarcore_version@ @HAVE_PKG_LIBICAL@ !define gpg4win_pkg_libical @gpg4win_pkg_libical@ !define gpg4win_pkg_libical_version @gpg4win_pkg_libical_version@ @HAVE_PKG_MIMETREEPARSER@ !define gpg4win_pkg_mimetreeparser @gpg4win_pkg_mimetreeparser@ !define gpg4win_pkg_mimetreeparser_version @gpg4win_pkg_mimetreeparser_version@ @HAVE_PKG_QRENCODE@ !define gpg4win_pkg_qrencode @gpg4win_pkg_qrencode@ !define gpg4win_pkg_qrencode_version @gpg4win_pkg_qrencode_version@ @HAVE_PKG_PRISON@ !define gpg4win_pkg_prison @gpg4win_pkg_prison@ !define gpg4win_pkg_prison_version @gpg4win_pkg_prison_version@ @HAVE_PKG_GPGPASS@ !define gpg4win_pkg_gpgpass @gpg4win_pkg_gpgpass@ !define gpg4win_pkg_gpgpass_version @gpg4win_pkg_gpgpass_version@ # Internal packages. @HAVE_PKG_COMPENDIUM@ # @HAVE_PKG_MAN_NOVICE_EN@ # @HAVE_PKG_MAN_ADVANCED_EN@ diff --git a/src/gpg4win.mk.in b/src/gpg4win.mk.in index ea6bdb69..0c442a8e 100644 --- a/src/gpg4win.mk.in +++ b/src/gpg4win.mk.in @@ -1,1369 +1,1373 @@ # 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, see . AUTHENTICODE_FILES = \ bin/gpg-error.exe \ bin/gpgex.dll \ bin/gpgme-json.exe \ bin/gpgolconfig.exe \ bin/gpgol.dll \ bin/gpgolkeyadder.exe \ bin/kleopatra.exe \ bin/libassuan-0.dll \ bin/libfreetype.dll \ bin/libgpg-error-0.dll \ bin/libgpgme-11.dll \ bin/libgpgmepp-6.dll \ bin/libical.dll \ bin/libicalss.dll \ bin/libicalvcal.dll \ bin/libiconv-2.dll \ bin/libintl-8.dll \ bin/libjpeg-9.dll \ bin/libKF5Archive.dll \ bin/libKF5Bookmarks.dll \ bin/libKF5CalendarCore.dll \ bin/libKF5Codecs.dll \ bin/libKF5Completion.dll \ bin/libKF5ConfigCore.dll \ bin/libKF5ConfigGui.dll \ bin/libKF5ConfigWidgets.dll \ bin/libKF5CoreAddons.dll \ bin/libKF5Crash.dll \ bin/libKF5GuiAddons.dll \ bin/libKF5I18n.dll \ bin/libKF5IconThemes.dll \ bin/libKF5ItemModels.dll \ bin/libKF5ItemViews.dll \ bin/libKF5JobWidgets.dll \ bin/libKF5KIOCore.dll \ bin/libKF5KIOGui.dll \ bin/libKF5KIOWidgets.dll \ bin/libKF5Parts.dll \ bin/libKF5Service.dll \ bin/libKF5Solid.dll \ bin/libKF5SonnetCore.dll \ bin/libKF5SonnetUi.dll \ bin/libKF5TextWidgets.dll \ bin/libKF5ThreadWeaver.dll \ bin/libKF5WidgetsAddons.dll \ bin/libKF5WindowSystem.dll \ bin/libKF5XmlGui.dll \ bin/libkleopatraclientcore.dll \ bin/libkleopatraclientgui.dll \ bin/libKPim5Libkleo.dll \ bin/libKPim5Mbox.dll \ bin/libKPim5Mime.dll \ bin/libKPim5MimeTreeParserCore.dll \ bin/libKPim5MimeTreeParserWidgets.dll \ bin/libOkular5Core.dll \ bin/libopenjp2.dll \ bin/libpcre2-16.dll \ bin/libpng16-16.dll \ bin/libpoppler-130.dll \ bin/libpoppler-qt5-1.dll \ bin/libqgpgme-15.dll \ bin/libtiff.dll \ bin/okular.exe \ bin/overlayer.exe \ bin/paperkey.exe \ bin/pinentry.exe \ bin/pinentry-w32.exe \ bin/Qt5Core.dll \ bin/Qt5Gui.dll \ bin/Qt5Network.dll \ bin/Qt5PrintSupport.dll \ bin/Qt5Svg.dll \ bin/Qt5Widgets.dll \ bin/Qt5WinExtras.dll \ bin/Qt5Xml.dll \ bin/resolver.exe \ bin/zlib1.dll \ ../install-ex/bin/gpgex.dll \ ../install-ex/bin/gpgme-json.exe \ ../install-ex/bin/gpgol.dll \ ../install-ex/bin/libassuan-0.dll \ ../install-ex/bin/libgpg-error-0.dll \ ../install-ex/bin/libgpgme-11.dll \ ../install-ex/bin/libgpgmepp-6.dll \ ../install-ex/libexec/gpgme-w32spawn.exe \ libexec/gpgme-w32spawn.exe \ ../../libgcc_s_dw2-1.dll-x \ lib/plugins/kf5/kio/kio_file.dll \ lib/plugins/kf5/sonnet/sonnet_ispellchecker.dll \ lib/plugins/okular/generators/okularGenerator_poppler.dll \ lib/plugins/okularpart.dll \ lib/scute.dll \ ../../libstdc++-6.dll-x \ ../../libwinpthread-1.dll-x \ ../../libwinpthread-1.dll-x64 \ plugins/iconengines/qsvgicon.dll \ plugins/imageformats/qsvg.dll \ plugins/platforms/qwindows.dll \ plugins/printsupport/windowsprintersupport.dll \ plugins/styles/qwindowsvistastyle.dll \ ../../sha1sum.exe \ ../../sha256sum.exe # 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)-Beta else VSD_VERSION_FILE:=$(VSD_VERSION) endif ifeq ($(IS_GPD_BUILD),yes) MSI_FNAME_PREFIX := GnuPG-Desktop else MSI_FNAME_PREFIX := GnuPG-VS-Desktop 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 # Read signing information from ~/.gnupg-autogen.rc # See gnupg/build-aux/speedo.mk for a description of this file. define READ_AUTOGEN_template $(1) = $$(shell grep '^[[:blank:]]*$(1)[[:blank:]]*=' $$$$HOME/.gnupg-autogen.rc|cut -d= -f2|xargs) endef $(eval $(call READ_AUTOGEN_template,AUTHENTICODE_SIGNHOST)) $(eval $(call READ_AUTOGEN_template,AUTHENTICODE_TOOL)) $(eval $(call READ_AUTOGEN_template,AUTHENTICODE_TSURL)) $(eval $(call READ_AUTOGEN_template,AUTHENTICODE_KEY)) $(eval $(call READ_AUTOGEN_template,AUTHENTICODE_CERTS)) $(eval $(call READ_AUTOGEN_template,VERSION_SIGNKEY)) $(eval $(call READ_AUTOGEN_template,OSSLSIGNCODE)) $(eval $(call READ_AUTOGEN_template,OSSLPKCS11ENGINE)) $(eval $(call READ_AUTOGEN_template,SCUTEMODULE)) # The key to sign the MSI installer is usually the same as the key used # to sign the VERSION file. msi_signkey = $(VERSION_SIGNKEY) # 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 PKG_CONFIG_LIBDIR="$(idir)/lib/pkgconfig"; \ 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}") \ + (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 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.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.24.0")/' 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" \ + -DQT_MAJOR_VERSION="6" \ -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_GPD_BUILD)" = yes ]; then \ val_n="GnuPG Desktop" ;\ 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 '$(AUTHENTICODE_TSURL)' /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 $(AUTHENTICODE_TSURL) \ -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 "$(AUTHENTICODE_TSURL)" \ -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 \ 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) \ license.blurb \ 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) \ license.blurb \ 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 $(stampdir)/stamp-betanum echo "[Kleopatra]" > gnupg-vsd/$(1)/VERSION if [ "$(call GETVAR,msi_target_$(1)_VERSION)" = "VS-Desktop-$(VSD_VERSION)" ]; then \ echo "version=VS-Desktop-$(VSD_VERSION_FILE)" >> gnupg-vsd/$(1)/VERSION; \ else \ echo "version=$(call GETVAR,msi_target_$(1)_VERSION)" >> gnupg-vsd/$(1)/VERSION;\ fi echo "shortDescription=$(call GETVAR,msi_target_$(1)_DESC)" >> gnupg-vsd/$(1)/VERSION echo "otherText=$(call GETVAR,msi_target_$(1)_DESC_SHORT)" >> gnupg-vsd/$(1)/VERSION echo "bugAddress=$(VSD_BUG_REPORT)" >> gnupg-vsd/$(1)/VERSION echo "homepage=$(VSD_HOMEPAGE)" >> gnupg-vsd/$(1)/VERSION echo "copyrightStatement=
" >> gnupg-vsd/$(1)/VERSION
 	if [ -n "$(call GETVAR,msi_target_$(1)_statusline)" ]; then \
 		echo "statusline=$(call GETVAR,msi_target_$(1)_statusline)" >> gnupg-vsd/$(1)/VERSION; \
 	fi
 	if [ -n "$(call GETVAR,msi_target_$(1)_uidcomment)" ]; then \
 		echo "uidcomment=$(call GETVAR,msi_target_$(1)_uidcomment)" >> gnupg-vsd/$(1)/VERSION; \
 	fi
 	echo "" >> gnupg-vsd/$(1)/VERSION
 	echo "[Okular]" >> gnupg-vsd/$(1)/VERSION
 	if [ "$(call GETVAR,msi_target_$(1)_VERSION)" = "VS-Desktop-$(VSD_VERSION)" ]; then \
 		echo "version=VS-Desktop-$(VSD_VERSION_FILE)" >> gnupg-vsd/$(1)/VERSION; \
 	else \
 		echo "version=$(call GETVAR,msi_target_$(1)_VERSION)" >> gnupg-vsd/$(1)/VERSION;\
 	fi
 	echo "shortDescription=$(call GETVAR,msi_target_$(1)_DESC)" >> gnupg-vsd/$(1)/VERSION
 	echo "otherText=$(call GETVAR,msi_target_$(1)_DESC_SHORT)" >> gnupg-vsd/$(1)/VERSION
 	echo "bugAddress=$(VSD_BUG_REPORT)" >> gnupg-vsd/$(1)/VERSION
 	echo "homepage=$(VSD_HOMEPAGE)" >> gnupg-vsd/$(1)/VERSION
 	echo "displayName=$(OKULAR_DISPLAY_NAME)" >> 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 \
 	-ext WixUtilExtension \
 	-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 \
 	-ext WixUtilExtension \
 	-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 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
 
 $(stampdir)/stamp-betanum: $(top_srcdir)/config.log
 	if [ ! -e "$(stampdir)/stamp-betanum" -o "$$(cat "$(stampdir)/stamp-betanum")" != "$(BUILD_BETANUM)" ]; then \
 		echo -n "$(BUILD_BETANUM)" > "$(stampdir)/stamp-betanum"; \
 	fi
 
 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/$(MSI_FNAME_PREFIX)-$(VSD_VERSION).tar.xz
 	rsync -vP gnupg-vsd-$(VERSION).tar.xz.sig $(VSD_PUBLISH_HOST)/src/$(MSI_FNAME_PREFIX)-$(VSD_VERSION).tar.xz.sig
 	echo "Source links:"
 	echo "https://download.gnupg.com/files/src/$(MSI_FNAME_PREFIX)-$(VSD_VERSION).tar.xz"
 	echo "https://download.gnupg.com/files/src/$(MSI_FNAME_PREFIX)-$(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 \
 	$(addsuffix .msi,$(addprefix installers/$(MSI_FNAME_PREFIX)-$(VSD_VERSION_FILE)-,$(msi_targets)))
 	if [ -z "$(addsuffix .msi,$(addprefix installers/$(MSI_FNAME_PREFIX)-$(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 \
 	$(addsuffix .msi,$(addprefix signed_installers/$(MSI_FNAME_PREFIX)-$(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/$(MSI_FNAME_PREFIX)-$(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))))
+define uniq =
+  $(eval seen :=)
+  $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
+  ${seen}
+endef
+
+$(info $(sort $msi_targets))
+$(foreach msipkg, $(info $(call uniq,$msi_targets)), $(eval $(call MSI_template,$(msipkg))))
 
 # @emacs_local_vars_begin@
 # @emacs_local_vars_read_only@
 # @emacs_local_vars_end@
diff --git a/src/inst-sections.nsi b/src/inst-sections.nsi
index f5cdc2e7..ea27904f 100644
--- a/src/inst-sections.nsi
+++ b/src/inst-sections.nsi
@@ -1,1155 +1,1185 @@
 # inst-sections.nsi - Installer for GPG4Win sections.  -*- coding: latin-1; -*-
 # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2023 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 .
 
 !include "inst-gpg4win.nsi"
 
 # The order of installation must be the same as the build order.  You
 # can use tsort on the info in configure.ac, or just check out
 # gpg4win_build_list in config.nsi.  The order determines also the
 # order in the packages selection dialog.
 
 !ifdef HAVE_PKG_BZIP2
 !include "inst-bzip2.nsi"
 !endif
 !ifdef HAVE_PKG_LIBICONV
 !include "inst-libiconv.nsi"
 !endif
 !ifdef HAVE_PKG_LIBTASN1
 !include "inst-libtasn1.nsi"
 !endif
 !ifdef HAVE_PKG_BREEZE_ICONS
 !include "inst-breeze-icons.nsi"
 !endif
 !ifdef HAVE_PKG_PKGCONFIG
 !include "inst-pkgconfig.nsi"
 !endif
 !ifdef HAVE_PKG_ZLIB
 !include "inst-zlib.nsi"
 !endif
 !ifdef HAVE_PKG_QTBASE
 !include "inst-qtbase.nsi"
 !endif
 !ifdef HAVE_PKG_GETTEXT
 !include "inst-gettext.nsi"
 !endif
 !ifdef HAVE_PKG_LIBASSUAN
 !include "inst-libassuan.nsi"
 !endif
 !ifdef HAVE_PKG_LIBGPG_ERROR
 !include "inst-libgpg-error.nsi"
 !endif
 !ifdef HAVE_PKG_PINENTRY
 !include "inst-pinentry.nsi"
 !endif
 # BEGIN MSI IGNORE
 !ifdef HAVE_PKG_GNUPG_W32
 !include "inst-gnupg-w32.nsi"
 !endif
 # END MSI IGNORE
 !ifdef HAVE_PKG_GPGME
 !include "inst-gpgme.nsi"
 !endif
 !ifdef HAVE_PKG_QTTOOLS
 !include "inst-qttools.nsi"
 !endif
 !ifdef HAVE_PKG_QTWINEXTRAS
 !include "inst-qtwinextras.nsi"
 !endif
 !ifdef HAVE_PKG_KCONFIG
 !include "inst-kconfig.nsi"
 !endif
 !ifdef HAVE_PKG_KI18N
 !include "inst-ki18n.nsi"
 !endif
 !ifdef HAVE_PKG_KWIDGETSADDONS
 !include "inst-kwidgetsaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KCOMPLETION
 !include "inst-kcompletion.nsi"
 !endif
 !ifdef HAVE_PKG_KWINDOWSYSTEM
 !include "inst-kwindowsystem.nsi"
 !endif
 !ifdef HAVE_PKG_KCOREADDONS
 !include "inst-kcoreaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KCODECS
 !include "inst-kcodecs.nsi"
 !endif
 !ifdef HAVE_PKG_KCONFIGWIDGETS
 !include "inst-kconfigwidgets.nsi"
 !endif
 !ifdef HAVE_PKG_KXMLGUI
 !include "inst-kxmlgui.nsi"
 !endif
 !ifdef HAVE_PKG_KGUIADDONS
 !include "inst-kguiaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KMBOX
 !include "inst-kmbox.nsi"
 !endif
 !ifdef HAVE_PKG_KMIME
 !include "inst-kmime.nsi"
 !endif
 # include translations unconditionally
 !include "inst-kde-l10n.nsi"
 !ifdef HAVE_PKG_KICONTHEMES
 !include "inst-kiconthemes.nsi"
 !endif
 !ifdef HAVE_PKG_KARCHIVE
 !include "inst-karchive.nsi"
 !endif
 !ifdef HAVE_PKG_KJOBWIDGETS
 !include "inst-kjobwidgets.nsi"
 !endif
+!ifdef HAVE_PKG_KNOTIFICATIONS
+!include "inst-knotifications.nsi"
+!endif
+!ifdef HAVE_PKG_KCOLORSCHEME
+!include "inst-kcolorscheme.nsi"
+!endif
+#!ifdef HAVE_PKG_SNORETOAST
+#!include "inst-snoretoast.nsi"
+#!endif
 !ifdef HAVE_PKG_PCRE2
 !include "inst-pcre2.nsi"
 !endif
 !ifdef HAVE_PKG_LIBPNG
 !include "inst-libpng.nsi"
 !endif
 !ifdef HAVE_PKG_TIFF
 !include "inst-tiff.nsi"
 !endif
 !ifdef HAVE_PKG_OPENJPEG
 !include "inst-openjpeg.nsi"
 !endif
 !ifdef HAVE_PKG_JPEG
 !include "inst-jpeg.nsi"
 !endif
 !ifdef HAVE_PKG_KCRASH
 !include "inst-kcrash.nsi"
 !endif
 !ifdef HAVE_PKG_KIO
 !include "inst-kio.nsi"
 !endif
 !ifdef HAVE_PKG_SOLID
 !include "inst-solid.nsi"
 !endif
 !ifdef HAVE_PKG_FREETYPE
 !include "inst-freetype.nsi"
 !endif
 !ifdef HAVE_PKG_THREADWEAVER
 !include "inst-threadweaver.nsi"
 !endif
 !ifdef HAVE_PKG_POPPLER
 !include "inst-poppler.nsi"
 !endif
 !ifdef HAVE_PKG_KPARTS
 !include "inst-kparts.nsi"
 !endif
 !ifdef HAVE_PKG_OKULAR
 !include "inst-okular.nsi"
 !endif
 !ifdef HAVE_PKG_KBOOKMARKS
 !include "inst-kbookmarks.nsi"
 !endif
 !ifdef HAVE_PKG_KSERVICE
 !include "inst-kservice.nsi"
 !endif
 !ifdef HAVE_PKG_KITEMVIEWS
 !include "inst-kitemviews.nsi"
 !endif
 !ifdef HAVE_PKG_KITEMMODELS
 !include "inst-kitemmodels.nsi"
 !endif
 !ifdef HAVE_PKG_LIBKLEO
 !include "inst-libkleo.nsi"
 !endif
 !ifdef HAVE_PKG_EXTRA_CMAKE_MODULES
 !include "inst-extra-cmake-modules.nsi"
 !endif
 !ifdef HAVE_PKG_QTSVG
 !include "inst-qtsvg.nsi"
 !endif
 !ifdef HAVE_PKG_QTTRANSLATIONS
 !include "inst-qttranslations.nsi"
 !endif
 !ifdef HAVE_PKG_GPG4WIN_TOOLS
 !include "inst-gpg4win-tools.nsi"
 !endif
 !ifdef HAVE_PKG_SCUTE
 !include "inst-scute.nsi"
 !endif
 !ifdef HAVE_PKG_SONNET
 !include "inst-sonnet.nsi"
 !endif
 !ifdef HAVE_PKG_KTEXTWIDGETS
 !include "inst-ktextwidgets.nsi"
 !endif
 !ifdef HAVE_PKG_MIMETREEPARSER
 !include "inst-mimetreeparser.nsi"
 !endif
 !ifdef HAVE_PKG_KCALENDARCORE
 !include "inst-kcalendarcore.nsi"
 !endif
 !ifdef HAVE_PKG_LIBICAL
 !include "inst-libical.nsi"
 !endif
 !ifdef HAVE_PKG_QRENCODE
 !include "inst-qrencode.nsi"
 !endif
 !ifdef HAVE_PKG_PRISON
 !include "inst-prison.nsi"
 !endif
 !ifdef HAVE_PKG_GPGPASS
 !include "inst-gpgpass.nsi"
 !endif
 !ifdef HAVE_PKG_PAPERKEY
 !include "inst-paperkey.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_EN
 !include "inst-man_novice_en.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_ADVANCED_EN
 !include "inst-man_advanced_en.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_DE
 !include "inst-man_novice_de.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_ADVANCED_DE
 !include "inst-man_advanced_de.nsi"
 !endif
 
 # These are displayed in the selection dialog.
 
 !ifdef HAVE_PKG_KLEOPATRA
 !include "inst-kleopatra.nsi"
 !endif
 !ifdef HAVE_PKG_GPGOL
 !include "inst-gpgol.nsi"
 !endif
 !ifdef HAVE_PKG_GPGEX
 !include "inst-gpgex.nsi"
 !endif
 !ifdef HAVE_PKG_COMPENDIUM
 !include "inst-compendium.nsi"
 !endif
 
 !include "inst-gpgme-browser.nsi"
 
 !include "inst-final.nsi"
 
 # We have to invoke the uninstallers in reverse order!
 
 !ifdef HAVE_PKG_MAN_ADVANCED_DE
 !include "uninst-man_advanced_de.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_DE
 !include "uninst-man_novice_de.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_ADVANCED_EN
 !include "uninst-man_advanced_en.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_EN
 !include "uninst-man_novice_en.nsi"
 !endif
 !ifdef HAVE_PKG_COMPENDIUM
 !include "uninst-compendium.nsi"
 !endif
 !ifdef HAVE_PKG_PAPERKEY
 !include "uninst-paperkey.nsi"
 !endif
 !ifdef HAVE_PKG_GPGEX
 !include "uninst-gpgex.nsi"
 !endif
 !ifdef HAVE_PKG_GPGOL
 !include "uninst-gpgol.nsi"
 !endif
 !ifdef HAVE_PKG_KLEOPATRA
 !include "uninst-kleopatra.nsi"
 !endif
 
 !ifdef HAVE_PKG_GPGME
 !include "uninst-gpgme.nsi"
 !endif
 !ifdef HAVE_PKG_GNUPG_W32
 !include "uninst-gnupg-w32.nsi"
 !endif
 !ifdef HAVE_PKG_PINENTRY
 !include "uninst-pinentry.nsi"
 !endif
 !ifdef HAVE_PKG_GNUTLS
 !include "uninst-gnutls.nsi"
 !endif
 !ifdef HAVE_PKG_CURL
 !include "uninst-curl.nsi"
 !endif
 !ifdef HAVE_PKG_LIBGPG_ERROR
 !include "uninst-libgpg-error.nsi"
 !endif
 !ifdef HAVE_PKG_LIBASSUAN
 !include "uninst-libassuan.nsi"
 !endif
 !ifdef HAVE_PKG_GETTEXT
 !include "uninst-gettext.nsi"
 !endif
 !ifdef HAVE_PKG_QTBASE
 !include "uninst-qtbase.nsi"
 !endif
 !ifdef HAVE_PKG_ZLIB
 !include "uninst-zlib.nsi"
 !endif
 !ifdef HAVE_PKG_PKGCONFIG
 !include "uninst-pkgconfig.nsi"
 !endif
 !ifdef HAVE_PKG_BREEZE_ICONS
 !include "uninst-breeze-icons.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_ADVANCED_DE
 !include "uninst-man_advanced_de.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_DE
 !include "uninst-man_novice_de.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_ADVANCED_EN
 !include "uninst-man_advanced_en.nsi"
 !endif
 !ifdef HAVE_PKG_MAN_NOVICE_EN
 !include "uninst-man_novice_en.nsi"
 !endif
 !ifdef HAVE_PKG_LIBICONV
 !include "uninst-libiconv.nsi"
 !endif
 !ifdef HAVE_PKG_QTTOOLS
 !include "uninst-qttools.nsi"
 !endif
 !ifdef HAVE_PKG_QTWINEXTRAS
 !include "uninst-qtwinextras.nsi"
 !endif
 !ifdef HAVE_PKG_KCONFIG
 !include "uninst-kconfig.nsi"
 !endif
 !ifdef HAVE_PKG_KI18N
 !include "uninst-ki18n.nsi"
 !endif
 !ifdef HAVE_PKG_KWIDGETSADDONS
 !include "uninst-kwidgetsaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KCOMPLETION
 !include "uninst-kcompletion.nsi"
 !endif
 !ifdef HAVE_PKG_KWINDOWSYSTEM
 !include "uninst-kwindowsystem.nsi"
 !endif
 !ifdef HAVE_PKG_KCOREADDONS
 !include "uninst-kcoreaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KCODECS
 !include "uninst-kcodecs.nsi"
 !endif
 !ifdef HAVE_PKG_KCONFIGWIDGETS
 !include "uninst-kconfigwidgets.nsi"
 !endif
 !ifdef HAVE_PKG_KGUIADDONS
 !include "uninst-kguiaddons.nsi"
 !endif
 !ifdef HAVE_PKG_KXMLGUI
 !include "uninst-kxmlgui.nsi"
 !endif
 !ifdef HAVE_PKG_KICONTHEMES
 !include "uninst-kiconthemes.nsi"
 !endif
 !ifdef HAVE_PKG_KARCHIVE
 !include "uninst-karchive.nsi"
 !endif
 !ifdef HAVE_PKG_KJOBWIDGETS
 !include "uninst-kjobwidgets.nsi"
 !endif
 !ifdef HAVE_PKG_PCRE2
 !include "uninst-pcre2.nsi"
 !endif
 !ifdef HAVE_PKG_LIBPNG
 !include "uninst-libpng.nsi"
 !endif
 !ifdef HAVE_PKG_TIFF
 !include "uninst-tiff.nsi"
 !endif
 !ifdef HAVE_PKG_OPENJPEG
 !include "uninst-openjpeg.nsi"
 !endif
 !ifdef HAVE_PKG_JPEG
 !include "uninst-jpeg.nsi"
 !endif
 !ifdef HAVE_PKG_KCRASH
 !include "uninst-kcrash.nsi"
 !endif
 !ifdef HAVE_PKG_KIO
 !include "uninst-kio.nsi"
 !endif
-!ifdef HAVE_PKG_KJOBWIDGETS
-!include "uninst-kjobwidgets.nsi"
+!ifdef HAVE_PKG_KNOTIFICATIONS
+!include "uninst-knotifications.nsi"
 !endif
+!ifdef HAVE_PKG_KCOLORSCHEME
+!include "uninst-kcolorscheme.nsi"
+!endif
+#!ifdef HAVE_PKG_SNORETOAST
+#!include "uninst-snoretoast.nsi"
+#!endif
 !ifdef HAVE_PKG_SOLID
 !include "uninst-solid.nsi"
 !endif
 !ifdef HAVE_PKG_FREETYPE
 !include "uninst-freetype.nsi"
 !endif
 !ifdef HAVE_PKG_THREADWEAVER
 !include "uninst-threadweaver.nsi"
 !endif
 !ifdef HAVE_PKG_POPPLER
 !include "uninst-poppler.nsi"
 !endif
 !ifdef HAVE_PKG_KPARTS
 !include "uninst-kparts.nsi"
 !endif
 !ifdef HAVE_PKG_OKULAR
 !include "uninst-okular.nsi"
 !endif
 !ifdef HAVE_PKG_KBOOKMARKS
 !include "uninst-kbookmarks.nsi"
 !endif
 !ifdef HAVE_PKG_KSERVICE
 !include "uninst-kservice.nsi"
 !endif
 !ifdef HAVE_PKG_KITEMVIEWS
 !include "uninst-kitemviews.nsi"
 !endif
 !ifdef HAVE_PKG_KITEMMODELS
 !include "uninst-kitemmodels.nsi"
 !endif
 !ifdef HAVE_PKG_KMIME
 !include "uninst-kmime.nsi"
 !endif
 !ifdef HAVE_PKG_KMBOX
 !include "uninst-kmbox.nsi"
 !endif
 !include "uninst-kde-l10n.nsi"
 !ifdef HAVE_PKG_LIBKLEO
 !include "uninst-libkleo.nsi"
 !endif
 !ifdef HAVE_PKG_EXTRA_CMAKE_MODULES
 !include "uninst-extra-cmake-modules.nsi"
 !endif
 !ifdef HAVE_PKG_BZIP2
 !include "uninst-bzip2.nsi"
 !endif
 !ifdef HAVE_PKG_QTSVG
 !include "uninst-qtsvg.nsi"
 !endif
 !ifdef HAVE_PKG_QTTRANSLATIONS
 !include "uninst-qttranslations.nsi"
 !endif
 !ifdef HAVE_PKG_GPG4WIN_TOOLS
 !include "uninst-gpg4win-tools.nsi"
 !endif
 !ifdef HAVE_PKG_KTEXTWIDGETS
 !include "uninst-ktextwidgets.nsi"
 !endif
 !ifdef HAVE_PKG_KCALENDARCORE
 !include "uninst-kcalendarcore.nsi"
 !endif
 !ifdef HAVE_PKG_LIBICAL
 !include "uninst-libical.nsi"
 !endif
 !ifdef HAVE_PKG_MIMETREEPARSER
 !include "uninst-mimetreeparser.nsi"
 !endif
 !ifdef HAVE_PKG_QRENCODE
 !include "uninst-qrencode.nsi"
 !endif
 !ifdef HAVE_PKG_PRISON
 !include "uninst-prison.nsi"
 !endif
 !ifdef HAVE_PKG_GPGPASS
 !include "uninst-gpgpass.nsi"
 !endif
 !ifdef HAVE_PKG_SONNET
 !include "uninst-sonnet.nsi"
 !endif
 !ifdef HAVE_PKG_SCUTE
 !include "uninst-scute.nsi"
 !endif
 
 !include "uninst-gpg4win.nsi"
 
 
 # Dependency Management
 
 ${MementoSectionDone}
 
 Function CalcDefaults
 
 !ifdef HAVE_PKG_KLEOPATRA
   g4wihelp::config_fetch_bool "inst_kleopatra"
   StrCmp $R0 "1" 0 calc_defaults_kleopatra_not_one
    !insertmacro SelectSection ${SEC_kleopatra}
    Goto calc_defaults_kleopatra_done
   calc_defaults_kleopatra_not_one:
   StrCmp $R0 "0" 0 calc_defaults_kleopatra_done
    !insertmacro UnselectSection ${SEC_kleopatra}
 calc_defaults_kleopatra_done:
 !endif
 
 !ifdef HAVE_PKG_OKULAR
   g4wihelp::config_fetch_bool "inst_okular"
   StrCmp $R0 "1" 0 calc_defaults_okular_not_one
    !insertmacro SelectSection ${SEC_okular}
    Goto calc_defaults_okular_done
   calc_defaults_okular_not_one:
   StrCmp $R0 "0" 0 calc_defaults_okular_done
    !insertmacro UnselectSection ${SEC_okular}
 calc_defaults_okular_done:
 !endif
 
 !ifdef HAVE_PKG_GPGPASS
   g4wihelp::config_fetch_bool "inst_gpgpass"
   StrCmp $R0 "1" 0 calc_defaults_gpgpass_not_one
    !insertmacro SelectSection ${SEC_gpgpass}
    Goto calc_defaults_gpgpass_done
   calc_defaults_gpgpass_not_one:
   StrCmp $R0 "0" 0 calc_defaults_gpgpass_done
    !insertmacro UnselectSection ${SEC_gpgpass}
 calc_defaults_gpgpass_done:
 !endif
 
 !ifdef HAVE_PKG_GPGOL
   g4wihelp::config_fetch_bool "inst_gpgol"
   StrCmp $R0 "1" 0 calc_defaults_gpgol_not_one
    !insertmacro SelectSection ${SEC_gpgol}
    Goto calc_defaults_gpgol_done
   calc_defaults_gpgol_not_one:
   StrCmp $R0 "0" 0 calc_defaults_gpgol_done
    !insertmacro UnselectSection ${SEC_gpgol}
 calc_defaults_gpgol_done:
 !endif
 
 !ifdef HAVE_PKG_GPGEX
   g4wihelp::config_fetch_bool "inst_gpgex"
   StrCmp $R0 "1" 0 calc_defaults_gpgex_not_one
    !insertmacro SelectSection ${SEC_gpgex}
    Goto calc_defaults_gpgex_done
   calc_defaults_gpgex_not_one:
   StrCmp $R0 "0" 0 calc_defaults_gpgex_done
    !insertmacro UnselectSection ${SEC_gpgex}
 calc_defaults_gpgex_done:
 !endif
 
 !ifdef HAVE_PKG_PAPERKEY
   g4wihelp::config_fetch_bool "inst_paperkey"
   StrCmp $R0 "1" 0 calc_defaults_paperkey_not_one
    !insertmacro SelectSection ${SEC_paperkey}
    Goto calc_defaults_paperkey_done
   calc_defaults_paperkey_not_one:
   StrCmp $R0 "0" 0 calc_defaults_paperkey_done
    !insertmacro UnselectSection ${SEC_paperkey}
 calc_defaults_paperkey_done:
 !endif
 
 !ifdef HAVE_PKG_COMPENDIUM
   g4wihelp::config_fetch_bool "inst_compendium"
   StrCmp $R0 "1" 0 calc_defaults_compendium_not_one
    !insertmacro SelectSection ${SEC_compendium}
    Goto calc_defaults_compendium_done
   calc_defaults_compendium_not_one:
   StrCmp $R0 "0" 0 calc_defaults_compendium_done
    !insertmacro UnselectSection ${SEC_compendium}
 calc_defaults_compendium_done:
 !endif
 
 
 !ifdef HAVE_PKG_MAN_NOVICE_DE
   g4wihelp::config_fetch_bool "inst_man_novice_de"
   StrCmp $R0 "1" 0 calc_defaults_man_novice_de_not_one
    !insertmacro SelectSection ${SEC_man_novice_de}
    Goto calc_defaults_man_novice_de_done
   calc_defaults_man_novice_de_not_one:
   StrCmp $R0 "0" 0 calc_defaults_man_novice_de_done
    !insertmacro UnselectSection ${SEC_man_novice_de}
 calc_defaults_man_novice_de_done:
 !endif
 
 !ifdef HAVE_PKG_MAN_NOVICE_EN
   g4wihelp::config_fetch_bool "inst_man_novice_en"
   StrCmp $R0 "1" 0 calc_defaults_man_novice_en_not_one
    !insertmacro SelectSection ${SEC_man_novice_en}
    Goto calc_defaults_man_novice_en_done
   calc_defaults_man_novice_en_not_one:
   StrCmp $R0 "0" 0 calc_defaults_man_novice_en_done
    !insertmacro UnselectSection ${SEC_man_novice_en}
 calc_defaults_man_novice_en_done:
 !endif
 
 !ifdef HAVE_PKG_MAN_ADVANCED_DE
   g4wihelp::config_fetch_bool "inst_man_advanced_de"
   StrCmp $R0 "1" 0 calc_defaults_man_advanced_de_not_one
    !insertmacro SelectSection ${SEC_man_advanced_de}
    Goto calc_defaults_man_advanced_de_done
   calc_defaults_man_advanced_de_not_one:
   StrCmp $R0 "0" 0 calc_defaults_man_advanced_de_done
    !insertmacro UnselectSection ${SEC_man_advanced_de}
 calc_defaults_man_advanced_de_done:
 !endif
 
 !ifdef HAVE_PKG_MAN_ADVANCED_EN
   g4wihelp::config_fetch_bool "inst_man_advanced_en"
   StrCmp $R0 "1" 0 calc_defaults_man_advanced_en_not_one
    !insertmacro SelectSection ${SEC_man_advanced_en}
    Goto calc_defaults_man_advanced_en_done
   calc_defaults_man_advanced_en_not_one:
   StrCmp $R0 "0" 0 calc_defaults_man_advanced_en_done
    !insertmacro UnselectSection ${SEC_man_advanced_en}
 calc_defaults_man_advanced_en_done:
 !endif
 
 # Check if minimal install was requested on the command line
 
 StrCmp $is_minimal '1' select_minimal continue
 select_minimal:
    !insertmacro UnselectSection ${SEC_kleopatra}
    !insertmacro UnselectSection ${SEC_okular}
    !insertmacro UnselectSection ${SEC_gpgpass}
    !insertmacro UnselectSection ${SEC_gpgol}
    !insertmacro UnselectSection ${SEC_gpgex}
    !insertmacro UnselectSection ${SEC_gpgme_browser}
    !insertmacro UnselectSection ${SEC_compendium}
 
 # We only do pinentry and gnupg-w32
    !insertmacro SelectSection ${SEC_paperkey}
    !insertmacro SelectSection ${SEC_gnupg_w32}
    !insertmacro SelectSection ${SEC_pinentry}
    !insertmacro SelectSection ${SEC_gpgme}
 continue:
 
 # Check if browser integration was selected on the command line
 # or in the ini
 # You can either select the browser integration by adding
 # inst_browser = true to a gpg4win.ini or adding a
 # /WITH_BROWSER=1 command line switch to the installer.
 g4wihelp::config_fetch_bool "inst_browser"
 StrCmp $R0 "1" select_browser 0
 StrCmp $with_browser '1' select_browser skip_browser
 select_browser:
     !insertmacro SelectSection ${SEC_gpgme_browser}
 skip_browser:
 
 FunctionEnd
 
 
 
 Function CalcDepends
   # This section could very well be autogenerated from the
   # information in configure.ac.  Note that it doesn't hurt to have
   # stuff here for packages that we don't include.
 
   # First clear all indirect dependencies.
 !ifdef HAVE_PKG_LIBICONV
   !insertmacro UnselectSection ${SEC_libiconv}
 !endif
 !ifdef HAVE_PKG_GETTEXT
   !insertmacro UnselectSection ${SEC_gettext}
 !endif
 !ifdef HAVE_PKG_ZLIB
   !insertmacro UnselectSection ${SEC_zlib}
 !endif
 !ifdef HAVE_PKG_PKGCONFIG
   !insertmacro UnselectSection ${SEC_pkgconfig}
 !endif
 !ifdef HAVE_PKG_BZIP2
   !insertmacro UnselectSection ${SEC_bzip2}
 !endif
 !ifdef HAVE_PKG_LIBGPG_ERROR
   !insertmacro UnselectSection ${SEC_libgpg_error}
 !endif
 !ifdef HAVE_PKG_LIBASSUAN
   !insertmacro UnselectSection ${SEC_libassuan}
 !endif
 !ifdef HAVE_PKG_GPGME
   !insertmacro UnselectSection ${SEC_gpgme}
 !endif
 !ifdef HAVE_PKG_QTBASE
   !insertmacro UnselectSection ${SEC_qtbase}
 !endif
 !ifdef HAVE_PKG_QTTOOLS
   !insertmacro UnselectSection ${SEC_qttools}
 !endif
 !ifdef HAVE_PKG_QTWINEXTRAS
   !insertmacro UnselectSection ${SEC_qtwinextras}
 !endif
 !ifdef HAVE_PKG_FREETYPE
   !insertmacro UnselectSection ${SEC_freetype}
 !endif
 !ifdef HAVE_PKG_BREEZE_ICONS
   !insertmacro UnselectSection ${SEC_breeze_icons}
 !endif
 !ifdef HAVE_PKG_KCONFIG
   !insertmacro UnselectSection ${SEC_kconfig}
 !endif
 !ifdef HAVE_PKG_KI18N
   !insertmacro UnselectSection ${SEC_ki18n}
 !endif
 !ifdef HAVE_PKG_KWIDGETSADDONS
   !insertmacro UnselectSection ${SEC_kwidgetsaddons}
 !endif
 !ifdef HAVE_PKG_KCOMPLETION
   !insertmacro UnselectSection ${SEC_kcompletion}
 !endif
 !ifdef HAVE_PKG_KWINDOWSYSTEM
   !insertmacro UnselectSection ${SEC_kwindowsystem}
 !endif
 !ifdef HAVE_PKG_KCOREADDONS
   !insertmacro UnselectSection ${SEC_kcoreaddons}
 !endif
 !ifdef HAVE_PKG_KCODECS
   !insertmacro UnselectSection ${SEC_kcodecs}
 !endif
 !ifdef HAVE_PKG_KCONFIGWIDGETS
   !insertmacro UnselectSection ${SEC_kconfigwidgets}
 !endif
 !ifdef HAVE_PKG_KXMLGUI
   !insertmacro UnselectSection ${SEC_kxmlgui}
 !endif
 !ifdef HAVE_PKG_KICONTHEMES
   !insertmacro UnselectSection ${SEC_kiconthemes}
 !endif
 !ifdef HAVE_PKG_KARCHIVE
   !insertmacro UnselectSection ${SEC_karchive}
 !endif
 !ifdef HAVE_PKG_KCRASH
   !insertmacro UnselectSection ${SEC_kcrash}
 !endif
 !ifdef HAVE_PKG_KIO
   !insertmacro UnselectSection ${SEC_kio}
 !endif
+!ifdef HAVE_PKG_KNOTIFICATIONS
+  !insertmacro UnselectSection ${SEC_knotifications}
+!endif
+!ifdef HAVE_PKG_KCOLORSCHEME
+  !insertmacro UnselectSection ${SEC_kcolorscheme}
+!endif
+#!ifdef HAVE_PKG_SNORETOAST
+#  !insertmacro UnselectSection ${SEC_snoretoast}
+#!endif
 !ifdef HAVE_PKG_KJOBWIDGETS
   !insertmacro UnselectSection ${SEC_kjobwidgets}
 !endif
 !ifdef HAVE_PKG_LIBPNG
   !insertmacro UnselectSection ${SEC_libpng}
 !endif
 !ifdef HAVE_PKG_TIFF
   !insertmacro UnselectSection ${SEC_tiff}
 !endif
 !ifdef HAVE_PKG_PCRE2
   !insertmacro UnselectSection ${SEC_pcre2}
 !endif
 !ifdef HAVE_PKG_OPENJPEG
   !insertmacro UnselectSection ${SEC_openjpeg}
 !endif
 !ifdef HAVE_PKG_JPEG
   !insertmacro UnselectSection ${SEC_jpeg}
 !endif
 !ifdef HAVE_PKG_SOLID
   !insertmacro UnselectSection ${SEC_solid}
 !endif
 !ifdef HAVE_PKG_POPPLER
   !insertmacro UnselectSection ${SEC_poppler}
 !endif
 !ifdef HAVE_PKG_KPARTS
   !insertmacro UnselectSection ${SEC_kparts}
 !endif
 !ifdef HAVE_PKG_FREETYPE
   !insertmacro UnselectSection ${SEC_freetype}
 !endif
 !ifdef HAVE_PKG_KBOOKMARKS
   !insertmacro UnselectSection ${SEC_kbookmarks}
 !endif
 !ifdef HAVE_PKG_KSERVICE
   !insertmacro UnselectSection ${SEC_kservice}
 !endif
 !ifdef HAVE_PKG_KITEMVIEWS
   !insertmacro UnselectSection ${SEC_kitemviews}
 !endif
 !ifdef HAVE_PKG_KITEMMODELS
   !insertmacro UnselectSection ${SEC_kitemmodels}
 !endif
 !ifdef HAVE_PKG_KGUIADDONS
   !insertmacro UnselectSection ${SEC_kguiaddons}
 !endif
 !ifdef HAVE_PKG_LIBKLEO
   !insertmacro UnselectSection ${SEC_libkleo}
 !endif
 !ifdef HAVE_PKG_KMIME
   !insertmacro UnselectSection ${SEC_kmime}
 !endif
 !ifdef HAVE_PKG_KMBOX
   !insertmacro UnselectSection ${SEC_kmbox}
 !endif
 !ifdef HAVE_PKG_SONNET
   !insertmacro UnselectSection ${SEC_sonnet}
 !endif
 !ifdef HAVE_PKG_KTEXTWIDGETS
   !insertmacro UnselectSection ${SEC_ktextwidgets}
 !endif
 !ifdef HAVE_PKG_KCALENDARCORE
   !insertmacro UnselectSection ${SEC_kcalendarcore}
 !endif
 !ifdef HAVE_PKG_LIBICAL
   !insertmacro UnselectSection ${SEC_libical}
 !endif
 !ifdef HAVE_PKG_MIMETREEPARSER
   !insertmacro UnselectSection ${SEC_mimetreeparser}
 !endif
 !ifdef HAVE_PKG_PRISON
   !insertmacro UnselectSection ${SEC_prison}
 !endif
 !ifdef HAVE_PKG_QRENCODE
   !insertmacro UnselectSection ${SEC_qrencode}
 !endif
 !ifdef HAVE_PKG_KDE_L10N
   !insertmacro UnselectSection ${SEC_kde_l10n}
 !endif
 !ifdef HAVE_PKG_QTSVG
   !insertmacro UnselectSection ${SEC_qtsvg}
 !endif
 !ifdef HAVE_PKG_QTTRANSLATIONS
   !insertmacro UnselectSection ${SEC_qttranslations}
 !endif
 !ifdef HAVE_PKG_GPG4WIN_TOOLS
   !insertmacro UnselectSection ${SEC_gpg4win_tools}
 !endif
 
 # BEGIN MSI IGNORE
 # MSI pulls this in through the gnupg-w32 component.
   # Always install gnupg2.  This is also ensured by putting
   # these packages in the RO section and enabling them by default, but
   # it doesn't harm to add it explicitely here as well.
 
   # TODO: Handle newer / other gnupg versions
   !insertmacro SelectSection ${SEC_gnupg_w32}
   !insertmacro SelectSection ${SEC_gpgme}
 
   # Then enable all dependencies, mostly in reverse build list order!
 
   # First the explicitely installed packages.
 # END MSI IGNORE
 
 
 !ifdef HAVE_PKG_PAPERKEY
   !insertmacro SectionFlagIsSet ${SEC_paperkey} \
 		${SF_SELECTED} have_paperkey skip_paperkey
   have_paperkey:
   # All dependencies are linked in statically.
   skip_paperkey:
 !endif
 
 !ifdef HAVE_PKG_GPGEX
   !insertmacro SectionFlagIsSet ${SEC_gpgex} \
 		${SF_SELECTED} have_gpgex skip_gpgex
   have_gpgex:
 
   # This is not a build dependency, but it is a run-time dependency.
   !insertmacro SelectSection ${SEC_kleopatra}
 
   # Other dependencies are linked in statically.
   skip_gpgex:
 !endif
 
 !ifdef HAVE_PKG_GPGOL
   !insertmacro SectionFlagIsSet ${SEC_gpgol} \
 		${SF_SELECTED} have_gpgol skip_gpgol
   have_gpgol:
   !insertmacro SelectSection ${SEC_gpgme}
   !insertmacro SelectSection ${SEC_gpg4win_tools}
 
   # This is not a build dependency, but it is a run-time dependency.
   !insertmacro SelectSection ${SEC_kleopatra}
 
   skip_gpgol:
 !endif
 
 !ifdef HAVE_PKG_OKULAR
   ${IfNot} ${AtLeastWin7}
     # Disable Okular for Windows below 7
     SectionSetFlags ${SEC_okular} 16
   ${Endif}
   !insertmacro SectionFlagIsSet ${SEC_okular} ${SF_SELECTED} have_okular skip_okular
   have_okular:
   !insertmacro SelectSection ${SEC_gpgme}
   !insertmacro SelectSection ${SEC_qtbase}
   !insertmacro SelectSection ${SEC_breeze_icons}
   !insertmacro SelectSection ${SEC_kconfig}
   !insertmacro SelectSection ${SEC_ki18n}
   !insertmacro SelectSection ${SEC_kwidgetsaddons}
   !insertmacro SelectSection ${SEC_kcompletion}
   !insertmacro SelectSection ${SEC_kwindowsystem}
   !insertmacro SelectSection ${SEC_kcoreaddons}
   !insertmacro SelectSection ${SEC_kcodecs}
   !insertmacro SelectSection ${SEC_kconfigwidgets}
   !insertmacro SelectSection ${SEC_kxmlgui}
   !insertmacro SelectSection ${SEC_kitemviews}
   !insertmacro SelectSection ${SEC_kitemmodels}
   !insertmacro SelectSection ${SEC_kiconthemes}
   !insertmacro SelectSection ${SEC_karchive}
   !insertmacro SelectSection ${SEC_kio}
   !insertmacro SelectSection ${SEC_kjobwidgets}
+#  !insertmacro SelectSection ${SEC_snoretoast}
+  !insertmacro SelectSection ${SEC_kcolorscheme}
+  !insertmacro SelectSection ${SEC_knotifications}
   !insertmacro SelectSection ${SEC_solid}
   !insertmacro SelectSection ${SEC_kservice}
   !insertmacro SelectSection ${SEC_kbookmarks}
   !insertmacro SelectSection ${SEC_poppler}
   !insertmacro SelectSection ${SEC_threadweaver}
   !insertmacro SelectSection ${SEC_kparts}
   !insertmacro SelectSection ${SEC_kcrash}
   !insertmacro SelectSection ${SEC_kguiaddons}
   !insertmacro SelectSection ${SEC_kde_l10n}
   !insertmacro SelectSection ${SEC_extra-cmake-modules}
   !insertmacro SelectSection ${SEC_tiff}
   !insertmacro SelectSection ${SEC_sonnet}
   !insertmacro SelectSection ${SEC_ktextwidgets}
   !insertmacro SelectSection ${SEC_openjpeg}
   skip_okular:
 !endif
 
 !ifdef HAVE_PKG_GPGPASS
   ${IfNot} ${AtLeastWin7}
     # Disable Gpgpass for Windows below 7
     SectionSetFlags ${SEC_gpgpass} 16
   ${Endif}
   !insertmacro SectionFlagIsSet ${SEC_gpgpass} ${SF_SELECTED} have_gpgpass skip_gpgpass
   have_gpgpass:
   !insertmacro SelectSection ${SEC_kde_l10n}
 
   !insertmacro SelectSection ${SEC_gpgme}
   !insertmacro SelectSection ${SEC_qtbase}
   !insertmacro SelectSection ${SEC_breeze_icons}
   !insertmacro SelectSection ${SEC_kconfig}
   !insertmacro SelectSection ${SEC_qrencode}
   !insertmacro SelectSection ${SEC_prison}
   skip_gpgpass:
 !endif
 
 !ifdef HAVE_PKG_KLEOPATRA
 !ifndef SOURCES
   ${IfNot} ${AtLeastWin7}
     # Disable Kleo for Windows below 7
     SectionSetFlags ${SEC_kleopatra} 16
   ${Endif}
 !endif
   !insertmacro SectionFlagIsSet ${SEC_kleopatra} ${SF_SELECTED} have_kleopatra skip_kleopatra
   have_kleopatra:
   !insertmacro SelectSection ${SEC_gpgme}
   !insertmacro SelectSection ${SEC_compendium}
   !insertmacro SelectSection ${SEC_qtbase}
   !insertmacro SelectSection ${SEC_breeze_icons}
   !insertmacro SelectSection ${SEC_kconfig}
   !insertmacro SelectSection ${SEC_ki18n}
   !insertmacro SelectSection ${SEC_kwidgetsaddons}
   !insertmacro SelectSection ${SEC_kcompletion}
   !insertmacro SelectSection ${SEC_kwindowsystem}
   !insertmacro SelectSection ${SEC_kcoreaddons}
   !insertmacro SelectSection ${SEC_kcodecs}
   !insertmacro SelectSection ${SEC_kconfigwidgets}
   !insertmacro SelectSection ${SEC_kxmlgui}
   !insertmacro SelectSection ${SEC_kitemviews}
   !insertmacro SelectSection ${SEC_kitemmodels}
   !insertmacro SelectSection ${SEC_kiconthemes}
   !insertmacro SelectSection ${SEC_karchive}
   !insertmacro SelectSection ${SEC_kio}
   !insertmacro SelectSection ${SEC_kjobwidgets}
+#  !insertmacro SelectSection ${SEC_snoretoast}
+  !insertmacro SelectSection ${SEC_knotifications}
+  !insertmacro SelectSection ${SEC_kcolorscheme}
   !insertmacro SelectSection ${SEC_solid}
   !insertmacro SelectSection ${SEC_kservice}
   !insertmacro SelectSection ${SEC_kbookmarks}
   !insertmacro SelectSection ${SEC_kcrash}
   !insertmacro SelectSection ${SEC_kguiaddons}
   !insertmacro SelectSection ${SEC_kmbox}
   !insertmacro SelectSection ${SEC_kmime}
   !insertmacro SelectSection ${SEC_kde_l10n}
   !insertmacro SelectSection ${SEC_libkleo}
   !insertmacro SelectSection ${SEC_qttools}
   !insertmacro SelectSection ${SEC_qtwinextras}
   !insertmacro SelectSection ${SEC_extra-cmake-modules}
   !insertmacro SelectSection ${SEC_sonnet}
   !insertmacro SelectSection ${SEC_ktextwidgets}
   !insertmacro SelectSection ${SEC_mimetreeparser}
   !insertmacro SelectSection ${SEC_libical}
   !insertmacro SelectSection ${SEC_kcalendarcore}
   skip_kleopatra:
 !endif
 
 
 !insertmacro SectionFlagIsSet ${SEC_gpgme_browser} ${SF_SELECTED} have_gpgme_browser skip_gpgme_browser
 have_gpgme_browser:
 !insertmacro SelectSection ${SEC_gpgme}
 skip_gpgme_browser:
 
 # Now the implicitely installed packages.
 
 !ifdef HAVE_PKG_GPGME
   !insertmacro SectionFlagIsSet ${SEC_gpgme} \
 		${SF_SELECTED} have_gpgme skip_gpgme
   have_gpgme:
   # GPGME does not depend on gnupg2.  Do this in the
   # actual application instead.
   !insertmacro SelectSection ${SEC_libgpg_error}
   !insertmacro SelectSection ${SEC_libassuan}
 !ifdef HAVE_PKG_QTBASE
   !insertmacro SelectSection ${SEC_qtbase}
 !endif
    skip_gpgme:
 !endif
 
 !ifdef HAVE_PKG_PINENTRY
   !insertmacro SectionFlagIsSet ${SEC_pinentry} \
 		${SF_SELECTED} have_pinentry skip_pinentry
   have_pinentry:
   !insertmacro SelectSection ${SEC_libiconv}
   !insertmacro SelectSection ${SEC_libgpg_error}
   !insertmacro SelectSection ${SEC_libassuan}
 !ifdef HAVE_PKG_QTBASE
   !insertmacro SelectSection ${SEC_qtbase}
 !endif
 # BEGIN MSI IGNORE
 !ifdef HAVE_PKG_GTK_
   !insertmacro SelectSection ${SEC_gtk_}
 !endif
 # END MSI IGNORE
    skip_pinentry:
 !endif
 
 !ifdef HAVE_PKG_QTBASE
   !ifndef SOURCES
   ${IfNot} ${AtLeastWin7}
     # Disable qt for Windows below 7
     !insertmacro UnSelectSection ${SEC_qtbase}
   ${Endif}
   !endif
   !insertmacro SectionFlagIsSet ${SEC_qtbase} \
 		${SF_SELECTED} have_qtbase skip_qtbase
   have_qtbase:
   !insertmacro SelectSection ${SEC_zlib}
   !insertmacro SelectSection ${SEC_qttranslations}
   !insertmacro SelectSection ${SEC_freetype}
   !insertmacro SelectSection ${SEC_libpng}
   !insertmacro SelectSection ${SEC_jpeg}
   !insertmacro SelectSection ${SEC_pcre2}
   !insertmacro SelectSection ${SEC_qtsvg}
   !insertmacro SelectSection ${SEC_qtwinextras}
   !insertmacro SelectSection ${SEC_qttools}
   skip_qtbase:
 !endif
 
 !ifdef HAVE_PKG_LIBASSUAN
   !insertmacro SectionFlagIsSet ${SEC_libassuan} ${SF_SELECTED} have_libassuan skip_libassuan
   have_libassuan:
   !insertmacro SelectSection ${SEC_libgpg_error}
   skip_libassuan:
 !endif
 
 !ifdef HAVE_PKG_LIBGPG_ERROR
   !insertmacro SectionFlagIsSet ${SEC_libgpg_error} ${SF_SELECTED} have_libgpg_error skip_libgpg_error
   have_libgpg_error:
   !insertmacro SelectSection ${SEC_libiconv}
   !insertmacro SelectSection ${SEC_gettext}
   skip_libgpg_error:
 !endif
 
   # Package "bzip2" has no dependencies.
 
   # Package "pkgconfig" has no dependencies.
 
   # Package "zlib" has no dependencies.
 
 !ifdef HAVE_PKG_GETTEXT
   !insertmacro SectionFlagIsSet ${SEC_gettext} \
 		${SF_SELECTED} have_gettext skip_gettext
   have_gettext:
   !insertmacro SelectSection ${SEC_libiconv}
   skip_gettext:
 !endif
 
   # Package "libiconv" has no dependencies.
 
 FunctionEnd
 
 Function .onInstFailed
   Delete $TEMP\gpgspltmp.wav
 FunctionEnd
 
 Function .onInstSuccess
   ${MementoSectionSave}
   Delete $TEMP\gpgspltmp.wav
 FunctionEnd
 
 Function .onSelChange
   Call CalcDepends
 FunctionEnd
 
 
 
 # This also must be in a central place.  Also Urgs.
 
 Section "-startmenu"
 
   UserInfo::GetAccountType
   Pop $1
   StrCmp $1 "Admin" is_admin is_no_admin
 is_admin:
   SetShellVarContext all
 
 is_no_admin:
 
   # NOT SetOutPath.
   StrCpy $OUTDIR "%HOMEDRIVE%%HOMEPATH%"
 
   # Check if the start menu entries where requested.
   g4wihelp::config_fetch_bool "inst_start_menu"
   StrCmp $R0 "0" no_start_menu
 
 
 !ifdef HAVE_PKG_KLEOPATRA
     SectionGetFlags ${SEC_kleopatra} $R0
     IntOp $R0 $R0 & ${SF_SELECTED}
     IntCmp $R0 ${SF_SELECTED} 0 no_kleopatra_menu
     CreateShortCut "$SMPROGRAMS\Kleopatra.lnk" \
 	"$INSTDIR\bin\kleopatra.exe" \
         "" "$INSTDIR\bin\kleopatra.exe" "" SW_SHOWNORMAL "" $(DESC_Menu_kleopatra)
   no_kleopatra_menu:
 !endif
 
 !ifdef HAVE_PKG_OKULAR
     SectionGetFlags ${SEC_okular} $R0
     IntOp $R0 $R0 & ${SF_SELECTED}
     IntCmp $R0 ${SF_SELECTED} 0 no_okular_menu
     CreateShortCut "$SMPROGRAMS\Okular - GnuPG Edition.lnk" \
 	"$INSTDIR\bin\okular.exe" \
         "" "$INSTDIR\bin\okular.exe" "" SW_SHOWNORMAL "" $(DESC_Menu_okular)
   no_okular_menu:
 !endif
 
 !ifdef HAVE_PKG_GPGPASS
     SectionGetFlags ${SEC_gpgpass} $R0
     IntOp $R0 $R0 & ${SF_SELECTED}
     IntCmp $R0 ${SF_SELECTED} 0 no_gpgpass_menu
     CreateShortCut "$SMPROGRAMS\GnuPG Password Manager.lnk" \
 	"$INSTDIR\bin\gpgpass.exe" \
         "" "$INSTDIR\bin\gpgpass.exe" "" SW_SHOWNORMAL "" $(DESC_Menu_okular)
   no_gpgpass_menu:
 !endif
 
  no_start_menu:
 
   # Check if the desktop entries where requested.
   g4wihelp::config_fetch_bool "inst_desktop"
   StrCmp $R0 "0" no_desktop
 
 !ifdef HAVE_PKG_KLEOPATRA
     SectionGetFlags ${SEC_kleopatra} $R0
     IntOp $R0 $R0 & ${SF_SELECTED}
     IntCmp $R0 ${SF_SELECTED} 0 no_kleopatra_desktop
     StrCmp $is_update '1' no_kleopatra_desktop
     CreateShortCut "$DESKTOP\Kleopatra.lnk" \
 	"$INSTDIR\bin\kleopatra.exe" \
         "" "$INSTDIR\bin\kleopatra.exe" "" SW_SHOWNORMAL "" $(DESC_Menu_kleopatra)
   no_kleopatra_desktop:
 !endif
 
 no_desktop:
 
 SectionEnd
diff --git a/src/pkg-config b/src/pkg-config
deleted file mode 100755
index b3094859..00000000
--- a/src/pkg-config
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-# pkg-config - wrapper script for cross-compilation.
-# Copyright (C) 2005 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
-
-CMD=/usr/bin/pkg-config
-PREFIX=/usr
-
-if [ ! "$SYSROOT" ]; then
-    echo "pkg-config-filter: missing \$SYSROOT environment variable"
-    exit 2
-fi
-
-if [ ! "$PKG_CONFIG_LIBDIR" ]; then
-    export PKG_CONFIG_LIBDIR=$SYSROOT/lib/pkgconfig/
-fi
-
-export PKG_CONFIG_LIBDIR
-export PKG_CONFIG_PATH
-
-if $CMD $* |
-    sed -e "s~\-L/*$SYSROOT/*~-L=/~g; s~\-I/*$SYSROOT/*~-I=/~g;" | # protect already given sysroot 
-    sed -e "s~\-L$PREFIX/~-L=/~g; s~\-I$PREFIX/~-I=/~g;" | # add sysroot symbol to all absolute pathes
-    sed -e "s~\-L\=~-L$SYSROOT~g; s~\-I\=~-I$SYSROOT~g;"  # replace sysroot sign to sysroot path
-#    sed -e "s~\-x11\-~-win32-~g;" # replace x11 with win32 (target)
-#    sed -e "s~pangoxft~pangow32ft~g;" # replace x11 with win32 (target)
-then    
-#    echo "PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR" >&2
-#    echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >&2
-#    echo "OKAY" >&2;
-    # See question 11 in comp.unix.shell FAQ.
-    exit ${PIPESTATUS[0]};
-else
-    echo "pkg-config pipe failed!" >&2 
-    exit 1
-fi