diff --git a/Makefile.am b/Makefile.am
index 89cbdce0..29904e6c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,134 +1,138 @@
# Makefile.am - Installer for GnuPG 4 Windows Makefile.
# Copyright (C) 2005, 2008, 2012 g10 Code GmbH
#
# This file is part of GPG4Win.
#
# GPG4Win is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GPG4Win is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = dist-xz no-dist-gzip
DISTCHECK_CONFIGURE_FLAGS = --host=i686-w64-mingw32
if BUILD_GPG4WIN
po = po
else
po =
endif
if BUILD_GPG4WIN
doc = doc
else
doc =
endif
SUBDIRS = ${po} packages ${doc} src
# find patches -type f | sort | sed 's/$/ \\/' | sed 's/^/ /'
# find patches-appimage -type f | sort | sed 's/$/ \\/' | sed 's/^/ /'
EXTRA_DIST = autogen.sh README.GIT ONEWS \
doc/license-page doc/GPLv3 \
build-aux/git-log-footer build-aux/git-log-fix \
docker/appimage/Dockerfile \
docker/build-appimage-docker-image.sh \
docker/build-gpg4win-docker-image.sh \
docker/gpg4win-bullseye/Dockerfile \
docker/run-appimage-build.sh \
docker/run-gpg4win-build.sh \
patches/extra-cmake-modules/0001-Use-BIN_INSTALL_DIR-data-for-DATAROOTDIR-on-Windows.patch \
patches/kconfig/0001-Read-defaults-from-Windows-registry.patch \
patches/kconfigwidgets/0001-Fix-crash-on-exit-on-Windows.patch \
patches/kconfigwidgets/0001-Make-QDbus-optional.patch \
patches/kcoreaddons/0001-Add-KSharedDataCache-for-Windows.patch \
patches/kiconthemes/0001-Make-DBus-optional.patch \
patches/kleopatra/set-windows-registry.patch \
patches/kleopatra/0001-Revert-new-dependency-to-KCMUtils.patch \
patches/kxmlgui/0001-make-qdbus-optional.patch \
patches/kxmlgui/0004-Cruedly-disable-KSendbugmail.patch \
patches/libkleo/set-cxx-standard.patch \
patches/qtbase/0001-Fix-build-without-std-thread.patch \
patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch \
patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch \
patches/qtsvg/CVE-2023-32573-qtsvg-5.15.patch \
patches/qtbase/CVE-2023-32763-qtbase-5.15.diff \
patches/qttools/disable-most-tools.patch \
patches/kcoreaddons/0001-Fix-MINGW-build.patch \
patches/ki18n/0001-Undef-snprintf-for-windows.patch \
patches/kio/0001-WIP-Remove-dependency-to-dbus.patch \
patches/kservice/0001-Remove-unused-include.patch \
patches/okular/0001-Build-without-KIOFilewidgets-and-DBUS.patch \
patches/okular/0001-Add-GnuPG-specific-manifest-to-okular.patch \
patches/poppler/0001-Explicitly-take-posix-variant-for-mingw-gcc-cross.patch \
patches/kparts/0001-Apply-implicit-android-DBUS-fix-for-Win.patch \
patches/kparts/disable-jobuidelegate.patch \
patches/sonnet/0001-W32-Force-ispellchecker-for-sonnet.patch \
patches/jpeg/fix-redefine.patch \
- patches-appimage/qtwayland-5.15.0/00-disable-wayland-server.patch \
- patches-appimage/libkleo/set-cxx-standard.patch \
+ patches-appimage/kleopatra/0001-Revert-new-dependency-to-KCMUtils.patch \
+ patches-appimage/kleopatra/require-ecm-5.104.patch \
patches-appimage/kmime/set-cxx-standard.patch \
- patches-appimage/qtsvg/CVE-2023-32573-qtsvg-5.15.patch \
- patches-appimage/qtbase/CVE-2023-32763-qtbase-5.15.diff \
patches-appimage/libkleo/gpg4win-check.patch \
- patches-appimage/kleopatra/0001-Revert-new-dependency-to-KCMUtils.patch \
- patches-appimage/kleopatra/require-ecm-5.104.patch
+ patches-appimage/libkleo/set-cxx-standard.patch \
+ patches-appimage/okular/0001-Disable-comicbook-generator.patch \
+ patches-appimage/okular/0001-Include-stdarg.h-for-va_start-and-va_end.patch \
+ patches-appimage/okular/lower-cmake-requirement.patch \
+ patches-appimage/poppler/fix-gpg-error-include.patch \
+ patches-appimage/qtbase/CVE-2023-32763-qtbase-5.15.diff \
+ patches-appimage/qtsvg/CVE-2023-32573-qtsvg-5.15.patch \
+ patches-appimage/qtwayland-5.15.0/00-disable-wayland-server.patch
copy-news:
cp NEWS doc/website/NEWS.last
copy-release: gpg4win-$(VERSION).tar.bz2 installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe
@echo Copying $(VERSION) to $(RELEASEHOST) >&2
@set -e;\
if ssh "$$(echo $(RELEASEHOST)|cut -d: -f -1)" \
test -f "$$(echo $(RELEASEHOST)/gpg4win-$(VERSION).exe|cut -d: -f2-)";\
then echo "This release has already been copied to the server" >&2 ;\
else scp gpg4win-$(VERSION).tar.bz2 \
installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe \
installers/gpg4win-src-$(VERSION).exe $(RELEASEHOST)/ ;\
for f in en de ; do \
scp src/README.$$f.txt \
$(RELEASEHOST)/README-$(VERSION).$$f.txt; \
done;\
fi
dist-hook: gen-ChangeLog
gen_start_date = 2012-03-26T00:00:00
.PHONY: gen-ChangeLog
gen-ChangeLog:
set -e; \
if test -d $(top_srcdir)/.git; then \
(cd $(top_srcdir) && \
$(GITLOG_TO_CHANGELOG) --append-dot --tear-off \
--amend=build-aux/git-log-fix \
--since=$(gen_start_date) ) > $(distdir)/cl-t; \
cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\
rm -f $(distdir)/ChangeLog; \
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
download: packages/packages.common packages/packages.4 packages/packages.3
(cd packages; ./download.sh)
msi:
$(MAKE) $(AM_MAKEFLAGS) -C src msi
msi-signed:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-signed
msi-upload:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-upload
diff --git a/configure.ac b/configure.ac
index a12edf55..31a752d7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,521 +1,529 @@
# 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.
m4_define([mym4_package],[gpg4win])
m4_define([mym4_isvsd],m4_if(m4_esyscmd([ls packages/gnupg-2.*.tar.* | \
head -1 | cut -d. -f2 | tr -d '\n']),[2],
[yes], [no]))
m4_if(mym4_isvsd,yes,
[m4_define([mym4_major],[3])
m4_define([mym4_minor],[1])
m4_define([mym4_micro],[27])],
[m4_define([mym4_major],[4])
m4_define([mym4_minor],[2])
m4_define([mym4_micro],[0])])
# 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])
# Remember to update these version numbers also in the NEWS file.
MANUALVERSION_EINSTEIGER="2.0.2"
MANUALDATE_EINSTEIGER="30. Mai 2006"
MANUALVERSION_DURCHBLICKER="2.0.2"
MANUALDATE_DURCHBLICKER="30. Mai 2006"
MANUALVERSION_NOVICES="1.0.0"
MANUALDATE_NOVICES="Nov. 30, 2006"
MANUALVERSION_ADVANCED="0.0.0"
MANUALDATE_ADVANCED="Nov. 30, 2006"
COMPENDIUM_VERSION_DE="4.0.1"
COMPENDIUM_DATE_DE="3. April 2018"
COMPENDIUMINPROGRESS_DE="zuletzt leicht korrigiert am 3. April 2018"
COMPENDIUM_VERSION_EN="3.0.0"
COMPENDIUM_DATE_EN="30th November 2016"
COMPENDIUMINPROGRESS_EN="last minor changes from 30th November 2016"
MANUALINPROGRESS_DE=m4_if(my_isbeta,[yes],["~und evtl. seitdem weiter bearbeitet"])
MANUALINPROGRESS_EN=m4_if(my_isbeta,[yes],["~and may have been further edited"])
IS_VSD_BUILD=mym4_isvsd
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
# 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
AM_CONFIG_HEADER(config.h)
# Language support
AM_PO_SUBDIRS
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
AC_SUBST(MANUALVERSION_EINSTEIGER)
AC_SUBST(MANUALDATE_EINSTEIGER)
AC_SUBST(MANUALVERSION_DURCHBLICKER)
AC_SUBST(MANUALDATE_DURCHBLICKER)
AC_SUBST(MANUALINPROGRESS_DE)
AC_SUBST(MANUALVERSION_NOVICES)
AC_SUBST(MANUALDATE_NOVICES)
AC_SUBST(MANUALVERSION_ADVANCED)
AC_SUBST(MANUALDATE_ADVANCED)
AC_SUBST(MANUALINPROGRESS_EN)
AC_SUBST(COMPENDIUM_VERSION_DE)
AC_SUBST(COMPENDIUM_DATE_DE)
AC_SUBST(COMPENDIUMINPROGRESS_DE)
AC_SUBST(COMPENDIUM_VERSION_EN)
AC_SUBST(COMPENDIUM_DATE_EN)
AC_SUBST(COMPENDIUMINPROGRESS_EN)
AC_SUBST(GIT_BETASTRING)
AC_SUBST(IS_BETA_BUILD)
AC_SUBST(IS_VSD_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}"
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)
# For development it is often faster to build without manuals.
AC_ARG_ENABLE(manuals,
AC_HELP_STRING([--disable-manuals],
[Do not build the manuals (for debugging)]),
build_manuals=$enableval,
build_manuals=yes)
AM_CONDITIONAL(BUILD_MANUALS, test "$build_manuals" = yes)
# Additionaly enable building gpgex for another host
AC_ARG_WITH([additional-gpgex-host],
AC_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,
AC_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(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="/usr/lib/x86_64-linux-gnu/cmake"
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)
GPG4WIN_RUNTIME_LIBRARY(libwinpthread-1)
if test -f "/usr/lib/gcc/i686-w64-mingw32/10-win32/libgcc_s_dw2-1.dll"; then
AC_MSG_NOTICE([Using dw2 exceptions.])
GPG4WIN_RUNTIME_LIBRARY(libgcc_s_dw2-1)
$CP /dev/null src/libgcc_s_sjlj-1.dll-x
else
AC_MSG_NOTICE([Using sjlj exceptions.])
GPG4WIN_RUNTIME_LIBRARY(libgcc_s_sjlj-1)
$CP /dev/null src/libgcc_s_dw2-1.dll-x
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])
# 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])
GPG4WIN_SPKG([qttools], [qtbase])
GPG4WIN_SPKG([qttranslations], [qtsvg qttools qtwinextras])
GPG4WIN_SPKG([qtwinextras], [qtbase])
GPG4WIN_SPKG([qtsvg], [qtbase])
GPG4WIN_KDEPKG([tiff])
GPG4WIN_KDEPKG([openjpeg], [tiff jpeg])
GPG4WIN_KDEPKG([breeze-icons], [extra-cmake-modules qtbase])
GPG4WIN_KDEPKG([kleopatra], [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([kcoreaddons], [qtbase qttools])
GPG4WIN_KDEPKG([kcodecs], [qtbase qttools])
GPG4WIN_KDEPKG([kguiaddons], [qtbase qttools])
GPG4WIN_KDEPKG([kmime], [kcodecs ki18n])
GPG4WIN_KDEPKG([kconfigwidgets], [kwidgetsaddons kguiaddons ki18n kcodecs kconfig])
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([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([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_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], [gnupg])
+ 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([kmime], [kcodecs ki18n])
APPIMAGE_KDEPKG([libkleo], [kmime kconfigwidgets kwindowsystem kcompletion gpgme])
APPIMAGE_KDEPKG([kleopatra], [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])
+
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(doc/manual/Makefile doc/manual/version.tex)
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}
"
if test -n "$JOBS"; then
echo " make jobs: ${JOBS}"
else
echo ""
fi
diff --git a/docker/appimage/Dockerfile b/docker/appimage/Dockerfile
index 153abc0b..bc3daafa 100644
--- a/docker/appimage/Dockerfile
+++ b/docker/appimage/Dockerfile
@@ -1,120 +1,123 @@
# Dockerfile - docker/appimage
# Copyright (C) 2021 g10 Code GmbH
#
# Software engineering by Ingo Klöcker
#
# This file is part of GnuPG.
#
# 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+
FROM centos:7
# Import the CentOS 7 package signing key after verifying its fingerprint.
# Then add the software collections repository from the CentOS SCLo SIG and
# import its package signing key after verifying the fingerprint.
# Ditto for the EPEL 7 package signing key.
RUN test $(gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 | grep ^pub: | wc -l) = 1 \
&& gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 | grep -q ^fpr:::::::::6341AB2753D78A78A7C27BB124C6A8A7F4A80EB5 \
&& rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 \
&& yum -y update \
&& yum -y install \
centos-release-scl \
&& test $(gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo | grep ^pub: | wc -l) = 1 \
&& gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo | grep -q ^fpr:::::::::C4DBD535B1FBBA14F8BA64A84EB84E71F2EE9D55 \
&& rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo \
&& yum -y update \
&& yum -y install \
epel-release \
&& test $(gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 | grep ^pub: | wc -l) = 1 \
&& gpg --with-colons --with-fingerprint < /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 | grep -q ^fpr:::::::::91E97D7C4A5E96F17F3E888F6A2FAEA2352C64E5 \
&& rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \
&& yum -y update \
&& rm -rf /root/.gnupg
RUN yum -y install \
at-spi2-core-devel \
automake \
bison \
boost169-devel \
bzip2 \
bzip2-devel \
cmake3 \
cups-devel \
dbus-devel \
devtoolset-10-binutils \
devtoolset-10-gcc \
devtoolset-10-gcc-c++ \
devtoolset-10-make \
double-conversion-devel \
egl-wayland-devel \
file \
flex \
fontconfig-devel \
freetype-devel \
gettext \
git \
gnutls-devel \
gperf \
gtk-update-icon-cache \
harfbuzz-devel \
libXrender-devel \
libicu-devel \
libinput-devel \
libjpeg-devel \
libmount-devel \
libpng-devel \
+ libtiff-devel \
libusbx-devel \
libxkbcommon-x11-devel \
libzstd-devel \
mesa-libEGL-devel \
mesa-libGL-devel \
mtdev-devel \
+ nss-devel \
+ openjpeg2-devel \
openldap-devel \
openssl11-devel \
patch \
pcre2-devel \
python36-lxml \
readline-devel \
stow \
systemd-devel \
wayland-devel \
wget \
which \
xcb-util-image-devel \
xcb-util-keysyms-devel \
xcb-util-renderutil-devel \
xcb-util-wm-devel \
xcb-util-devel \
xz-devel \
zlib-devel
# download the necessary linuxdeploy AppImages and extract them because we have no fuse in the container
RUN mkdir -p /tmp/download \
&& cd /tmp/download \
&& wget --no-verbose https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \
&& wget --no-verbose https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \
&& chmod +x linuxdeploy-* \
&& cd /tmp \
&& download/linuxdeploy-plugin-qt-x86_64.AppImage --appimage-extract \
&& download/linuxdeploy-x86_64.AppImage --appimage-extract \
&& rm -rf /tmp/download \
&& mkdir -p /opt \
&& mv /tmp/squashfs-root /opt/linuxdeploy
# No need to copy the build scripts becuase it is available
# in the mounted /src hierachy.
# COPY build-appimage.sh /
# RUN chmod +x build-appimage.sh
diff --git a/packages/gen-frameworks.sh b/packages/gen-frameworks.sh
index 746c76b2..66b22920 100755
--- a/packages/gen-frameworks.sh
+++ b/packages/gen-frameworks.sh
@@ -1,118 +1,119 @@
#!/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
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"
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/packages.common b/packages/packages.common
index ffd476d9..43b8e0f1 100644
--- a/packages/packages.common
+++ b/packages/packages.common
@@ -1,547 +1,554 @@
# 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.
#
# zlib
#
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
#
# GNU
#
server ftp://ftp.gnu.org/pub/gnu
# last-changed: 2017-02-15
# by: ah
# verified: Sig 68D9 4D8A AEEA D48A E7DC 5B90 4F49 4A94 2E46 16C2
file libiconv/libiconv-1.15.tar.gz
chk ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
# last-changed: 2021-08-17
# by: ah (checksum added by ik)
# verified: Sig 9001 B85A F9E1 B83D F1BD A942 F5BE 8B26 7C6A 406D
file gettext/gettext-0.21.tar.xz
chk d20fcbb537e02dcf1383197ba05bd0734ef7bf5db06bdb241eb69b7d16b73192
# last-changed: 2023-05-03
# by ah
# verified: verification of checksum from both sf and libpng.org
server https://downloads.sourceforge.net
file libpng/libpng16/1.6.39/libpng-1.6.39.tar.xz
chk 1f4696ce70b4ee5f85f1e1623dc1229b210029fa4b7aee573df3e2ba7b036937
# 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: verification of checksum from multiple sources e.g. homebrew
server https://github.com/uclouvain/openjpeg/archive/refs/tags/
name openjpeg-2.5.0.tar.gz
file v2.5.0.tar.gz
chk 0333806d6adecc6f7a91243b2b839ff4d2053823634d4f6ed7a59bc87409122a
# 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
#
# 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
# Stripped down version of BZIP2
# (full source at http://bzip.org)
# checked: 2014-07-16 ah
file bzip2/bzip2-1.0.6-g10.tar.gz
chk c2a9b3aec1a38d34b66106116a39f64b01d84f475fef75c40ea0bda0ea67ed07
# last changed 2023-04-11
# by wk
# verified: swdb
file libgpg-error/libgpg-error-1.47.tar.bz2
chk 9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb
# last-changed: 2023-06-19
# by: wk
# verified: build tree
file libassuan/libassuan-2.5.6.tar.bz2
chk e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426
# last changed 2021-09-20
# by ik
# verified: distsigkey.gpg
file npth/npth-1.6.tar.bz2
chk 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1
# last changed 2023-06-19
# by wk
# verified: build tree
file libksba/libksba-1.6.4.tar.bz2
chk bbb43f032b9164d86c781ffe42213a83bf4f2fee91455edfa4654521b8b03b6b
# last changed 2022-04-07
# by wk
# verified: swdb
file ntbtls/ntbtls-0.3.1.tar.bz2
chk 8922181fef523b77b71625e562e4d69532278eabbd18bc74579dbe14135729ba
#name gnupg-msi-2.3.1-beta18-20210420-src.tar.xz
#file binary/gnupg-w32-2.3.1_20210420.tar.xz
#chk e1a2dc705c940938b7bf7a17f521a41b1ef14139acd8860b2fd59aed2750aa3b
#name gnupg-msi-2.3.1-20210420-bin.wixlib
#file binary/gnupg-w32-2.3.1_20210420.wixlib
#chk 133817a4c4d11996956676c5c200222839ee5dc16e9476bd682d4e68b33ef73e
# pinentry
# last changed: 2022-08-24
# by: wk
# verified: swdb
file pinentry/pinentry-1.2.1.tar.bz2
chk 457a185e5a85238fb945a955dc6352ab962dc8b48720b62fc9fa48c7540a4067
# last changed 2023-04-20
# by wk
# verified: [build tree]
#file gpgme/gpgme-1.20.0.tar.bz2
#chk 25a5785a5da356689001440926b94e967d02e13c49eb7743e35ef0cf22e42750
# last changed: 2021-01-07
# by: ah
file scute/scute-1.7.0.tar.bz2
chk 437fe758b27c243a5ee2535c6b065ea1d09f2c9a02d83567d2f934bb6395c249
# GpgOL
# last-changed: 2023-05-16
# by: ah
# verified: build tree
file gpgol/gpgol-2.5.7.tar.bz2
chk c07aa700ca98aa6465ed3b521edfbc9a670d451b4ad67109afb78c5d75728efd
#
# GpgEX
#
# last-changed: 2022-11-18
# by: ah
# verified: distsigkey.gpg
#file gpgex/gpgex-1.0.10-beta5.tar.bz2
#chk f7e4c619aefed02dfbb07363a4435878a50999b290c60779e670fceb826e283e
#
# GnuPG utilities
#
server http://www.jabberwocky.com/software/paperkey
# last-changed: 2017-12-05
# by: ah
# verified: SIG 7D92 FD31 3AB6 F373 4CC5 9CA1 DB69 8D71 9924 2560
file paperkey-1.5.tar.gz
chk c4737943083ce92e41faf13c27a9d608105b6285c0840dfb684a7ee294142ddf
#
# Kleopatra and dependencies
#
# Qt base
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtbase-everywhere-opensource-src-5.15.9.tar.xz.sha256
server http://download.qt.io/official_releases/qt/
name qtbase-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtbase-everywhere-opensource-src-5.15.9.tar.xz
chk 1947deb9d98aaf46bf47e6659b3e1444ce6616974470523756c082041d396d1e
# Qt Tools
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qttools-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qttools-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qttools-everywhere-opensource-src-5.15.9.tar.xz
chk 40dce7845bc156dce7878b304e05b19f1ce7dedd4221c67af3bdf0138196006d
# Qt Winextras
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtwinextras-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtwinextras-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtwinextras-everywhere-opensource-src-5.15.9.tar.xz
chk ea5107105b2072ea7194c16cc0721212f28f77c484ce38b370aaa78bfca45798
# Qt X11 extras
# last changed: 2021-09-20
# by: ik
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtx11extras-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtx11extras-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtx11extras-everywhere-opensource-src-5.15.9.tar.xz
chk 7ba3123de7b4ff87d02f513ffa1e4c4284e8f882563d114f29cb98d4c00fcbdb
# Qt WaylandClient
# last changed: 2021-09-21
# by: ik
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtwayland-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtwayland-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtwayland-everywhere-opensource-src-5.15.9.tar.xz
chk b719baf33068f3b92309ac610c3b7ed70edb5bf1e8fa07eefc7cbae6ab6a3c12
# Qt svg
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qtsvg-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qtsvg-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qtsvg-everywhere-opensource-src-5.15.9.tar.xz
chk 881f75d3c4a29a4ef88202763115c19d4869af2638227e9c3474e422639abb5a
# Qt translations
# last changed: 2023-05-08
# by: ah
# verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.9/submodules/qttranslations-everywhere-opensource-src-5.15.9.tar.xz.sha256
name qttranslations-5.15.9.tar.xz
file 5.15/5.15.9/submodules/qttranslations-everywhere-opensource-src-5.15.9.tar.xz
chk 35f4c4496e8a1f0605b3fb2e28c4b08e191796c9c03c32175a608e9c4dc4bb60
# KDE Frameworks generated by gen-frameworks.sh
# When outdated activate this link:
#server https://download.kde.org/Attic/frameworks/
server https://download.kde.org/stable/frameworks
##### Paste Here #####
#
# Don't forget to update gpg4win.mk.in with new version numbers
#
# extra-cmake-modules
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/extra-cmake-modules-5.104.0.tar.xz
chk e49eb21fdb66634b84cccbf6ba65eae3f8e0eee0dc72d50f627280f49df585d9
# kconfig
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kconfig-5.104.0.tar.xz
chk b8e7a6b7b0e78e3eb01755a965d893bd95c231befeff10479243e5a182ec2938
# ki18n
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/ki18n-5.104.0.tar.xz
chk fe815b9e28c680fa472c7ab56e4d7934a8915f19409734a13433797a4be14ee1
# kwidgetsaddons
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kwidgetsaddons-5.104.0.tar.xz
chk 4abbb552cd43e51ad2070d8780ca7112e2c9771c2258734ae4a97712b9123120
# kcompletion
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kcompletion-5.104.0.tar.xz
chk b0ed0246871283df04c62f0df2b221e32911cb4d292d5ae42f860958032eb510
# kwindowsystem
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kwindowsystem-5.104.0.tar.xz
chk 6b10ee354ebb7d2dfd6baa1374929d30811f8169c8233e55849e31e38e6af81a
# kcoreaddons
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kcoreaddons-5.104.0.tar.xz
chk ed760d4a7fed6c03480dcc3cfe621a49ac5ca9853c846080afe393f7ce794e40
# kcodecs
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kcodecs-5.104.0.tar.xz
chk 7ec909f6865eba87a99b046a9aeaa6a83c01308ad1dda87be3f69e91a7909d6b
# kconfigwidgets
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kconfigwidgets-5.104.0.tar.xz
chk eb9014b813a1c8a18c78ef11be296964b31338e5237080a74234bf97ead64522
# kdbusaddons
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kdbusaddons-5.104.0.tar.xz
chk 4c6add0481c407bc3768729e27e8644feba748c333872e62aaa3260338fd56b4
# kxmlgui
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kxmlgui-5.104.0.tar.xz
chk f45d5a5411b3ca0197c1e4720c27c7d85e351aeee03aca861066e8db3c7c93e6
# kguiaddons
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kguiaddons-5.104.0.tar.xz
chk fb8d8de25b684af6f9e9e893912664a18231486ac995d2522676018c3e93840d
# kitemviews
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kitemviews-5.104.0.tar.xz
chk 94920dc68c187319fa79c64e194e9ebecaef8c97fc4bd6aba342c18bc75a48bc
# kitemmodels
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kitemmodels-5.104.0.tar.xz
chk 0bac2fe2fc607443e3332911655ced5dd309e346f2f6a2ff3f29b2f45b7b18d7
# kiconthemes
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kiconthemes-5.104.0.tar.xz
chk 70f4d9f950acdaa28b539838226ed1cff7e70cdcf177272185bac7c75a6cccdf
# breeze-icons
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/breeze-icons-5.104.0.tar.xz
chk ff2dacc3fb6f1c7acd378638329f2e5b5fc4fdb3dab1321716d2d54b32eaae6a
# karchive
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/karchive-5.104.0.tar.xz
chk b62f3dfe68691ad2917d0592d66ffc02cfbcc7571b7d1fb1d3fadd695534fd2e
# kcrash
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kcrash-5.104.0.tar.xz
chk 12d6004f9e2e51a9d74f044462753dd7410e10a40a1f6b07727dcd5b52a7ea96
# kio
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kio-5.104.0.tar.xz
chk 5a8b93a5de72406fc4cc7b9aa4715be6d1d5264e617b26be257f5d0e26dde310
# kbookmarks
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kbookmarks-5.104.0.tar.xz
chk 85e565590233cfc6dc8c3459717c327961e79c74199d4d1c2741b40946936354
# kservice
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kservice-5.104.0.tar.xz
chk 215b109738ea5a10f97c4abbd3c9b9da58c826127708eddd34af345b4e8ad8a3
# solid
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/solid-5.104.0.tar.xz
chk 2a9a33bc71b4cafec35b9692bd7681a736eeb4e4b81c25f5bd87dbec38c143cf
# kjobwidgets
# last changed: 2023-03-22
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kjobwidgets-5.104.0.tar.xz
chk 3b254124d3bf20666a514710fef8990325da2ade14f49368b1bed1256eb8fea1
# threadweaver
# last changed: 2023-04-19
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/threadweaver-5.104.0.tar.xz
chk 963decfdf0cf780406eb585efdb213539a00cd16ae4dff2b2ffe8822a609a647
# kparts
# last changed: 2023-04-19
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kparts-5.104.0.tar.xz
chk 66a40646cc4890669991cc63d33803ec335b0c08b7aeb0476b2a852951e700cd
# ktextwidgets
# last changed: 2023-05-08
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/ktextwidgets-5.104.0.tar.xz
chk 48fe28cbe8a54b1227a0ce502c3f4534e46789a4988db44b2e5f362ee2e17dea
# sonnet
# last changed: 2023-05-08
# by: ah
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/sonnet-5.104.0.tar.xz
chk 17276e51f0f4ac2f8745796db135d3143f2f91ee3fc8fb823c94072de5c0b953
# kauth
# last changed: 2023-06-05
# by: ikloecker
# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
file 5.104/kauth-5.104.0.tar.xz
chk 614086598e66c1f136e5a6296f358548509e0e868f62a03c97ade73d9b7d581e
+# kactivities
+# last changed: 2023-07-03
+# by: ikloecker
+# verified: PGP Signed by ./kde-release-keys.gpg (created by gen-frameworks.sh)
+file 5.104/kactivities-5.104.0.tar.xz
+chk 29c31525763a44def441fed012af951fe424bd9a88892701ddf16d84f0917953
+
### END PASTE ###
server http://download.kde.org/stable/release-service/
# kmime
# last changed: 2022-02-01
# by: ah
# verified: PGP Sig D81C0CB38EB725EF6691C385BB463350D6EF31EF
#file 21.12.1/src/kmime-21.12.1.tar.xz
#chk c1f4c06c61f6b4ddde7395b1cfb1f2411a32638e09c6f0a58c6557a7dffe4120
#
# Snapshots stored on the GnuPG server
#
server https://gnupg.org/ftp/gcrypt/snapshots
# gpgme
# last changed: 2023-06-22
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpgme/gpgme-1.21.0-beta463.tar.xz
chk 68965570c3b244654b6e300af6c61f0fb663cc0c3397e12664de03b584eaeb04
# gpgex
# last changed: 2022-12-06
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpgex/gpgex-1.0.10-beta5.tar.xz
chk 2c227634528ef76bcca7fd4b7fe5c38a535f6e68bbe5b2cdc6cc4a74810b2dba
# gpg4win-tools
# last changed: 2023-06-21
# by: aheinecke
# verified: Tarball created by aheinecke.
file gpg4win-tools/gpg4win-tools-202306211455.tar.xz
chk d62e15b63c3837277c99548933ec2bc17d38af3d09fccb468b590951d934ea7a
# kmime
# last changed: 2023-03-22
# by: aheinecke
# verified: Tarball created by aheinecke.
file kmime/kmime-202303221649.tar.xz
chk 0a26c6b7a1b921191e52ee17d8d131f606a1def9ed09e31074a1c7aed5c4c6b7
# libkleo
# last changed: 2023-06-29
# by: aheinecke
# verified: Tarball created by aheinecke.
file libkleo/libkleo-202306291243.tar.xz
chk 2799682fada297898669053fe4bce6069e9584c8604f91191851121fb6522306
# kleopatra
# last changed: 2023-06-29
# by: aheinecke
# verified: Tarball created by aheinecke.
file kleopatra/kleopatra-202306291241.tar.xz
chk 00d1bf37d2c3857d38a4b7526bb6989401792609bb4be5264f44aed124bf0153
# Okular and dependencies
# poppler
# last changed: 2023-05-31
# by: aheinecke
# verified: Tarball created by aheinecke.
file poppler/poppler-202305311402.tar.xz
chk cb86be10bb3f3f937e0bcba1adca74f0d0b610fd1072b409ea558c2af6882566
# okular
# last changed: 2023-05-31
# by: aheinecke
# verified: Tarball created by aheinecke.
file okular/okular-202305311441.tar.xz
chk 8645ebfc9cbd359daf2505de09d919f0cc89cf42b6bb6530a87b560f7d189397
diff --git a/patches-appimage/okular/0001-Disable-comicbook-generator.patch b/patches-appimage/okular/0001-Disable-comicbook-generator.patch
new file mode 100755
index 00000000..30205d1a
--- /dev/null
+++ b/patches-appimage/okular/0001-Disable-comicbook-generator.patch
@@ -0,0 +1,28 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+From a66e7e20ece9d06ae149ac7731027c43b6d21d6b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?=
+Date: Mon, 3 Jul 2023 16:42:58 +0200
+Subject: [PATCH] Disable comicbook generator
+
+---
+ generators/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/generators/CMakeLists.txt b/generators/CMakeLists.txt
+index 4942e61e0..eebd9b30f 100644
+--- a/generators/CMakeLists.txt
++++ b/generators/CMakeLists.txt
+@@ -41,7 +41,7 @@ add_subdirectory(xps)
+
+ add_subdirectory(fictionbook)
+
+-add_subdirectory(comicbook)
++# add_subdirectory(comicbook)
+
+ add_subdirectory(fax)
+
+--
+2.41.0
diff --git a/patches-appimage/okular/0001-Include-stdarg.h-for-va_start-and-va_end.patch b/patches-appimage/okular/0001-Include-stdarg.h-for-va_start-and-va_end.patch
new file mode 100755
index 00000000..752bc357
--- /dev/null
+++ b/patches-appimage/okular/0001-Include-stdarg.h-for-va_start-and-va_end.patch
@@ -0,0 +1,37 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+From 3a195d97ed37f08010e16857f7cbb40595408069 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?=
+Date: Mon, 3 Jul 2023 17:36:51 +0200
+Subject: [PATCH] Include stdarg.h for va_start and va_end
+
+Fixes "implicit declaration of function" errors.
+---
+ core/synctex/synctex_parser.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/core/synctex/synctex_parser.c b/core/synctex/synctex_parser.c
+index cc97ecc52..e212bb878 100644
+--- a/core/synctex/synctex_parser.c
++++ b/core/synctex/synctex_parser.c
+@@ -8012,6 +8012,8 @@ struct synctex_updater_t {
+ int length; /* the number of chars appended */
+ };
+
++#include
++
+ static int _synctex_updater_print(synctex_updater_p updater, const char *format, ...) SYNCTEX_PRINTF_FORMAT(2, 3);
+ static int _synctex_updater_print(synctex_updater_p updater, const char *format, ...)
+ {
+@@ -8025,7 +8027,6 @@ static int _synctex_updater_print(synctex_updater_p updater, const char *format,
+ return result;
+ }
+ #if defined(_MSC_VER) || defined(__MINGW32__)
+-#include
+ #include
+ #include
+
+--
+2.41.0
diff --git a/patches-appimage/okular/lower-cmake-requirement.patch b/patches-appimage/okular/lower-cmake-requirement.patch
new file mode 100755
index 00000000..85f538ab
--- /dev/null
+++ b/patches-appimage/okular/lower-cmake-requirement.patch
@@ -0,0 +1,14 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b66bd756f..b5a9c6072 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.22)
++cmake_minimum_required(VERSION 3.17)
+
+ # KDE Application Version, managed by release script
+ set (RELEASE_SERVICE_VERSION_MAJOR "23")
diff --git a/patches-appimage/poppler/fix-gpg-error-include.patch b/patches-appimage/poppler/fix-gpg-error-include.patch
new file mode 100755
index 00000000..d7f57b9d
--- /dev/null
+++ b/patches-appimage/poppler/fix-gpg-error-include.patch
@@ -0,0 +1,127 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+--- a/CMakeLists.txt 2023-06-07 16:09:36.754853490 +0200
++++ b/CMakeLists.txt 2023-06-07 16:07:50.594157656 +0200
+@@ -368,6 +368,7 @@
+ endif()
+ if(ENABLE_GPGME)
+ list(APPEND SIGNATURE_BACKENDS "GPG")
++ find_package(LibGpgError 1.36 REQUIRED)
+ endif()
+
+ list(LENGTH SIGNATURE_BACKENDS _signing_backends_count)
+@@ -560,7 +561,7 @@
+ set(poppler_SRCS ${poppler_SRCS}
+ poppler/GPGMECryptoSignBackend.cc
+ )
+- set(poppler_LIBS ${poppler_LIBS} Gpgmepp)
++ set(poppler_LIBS ${poppler_LIBS} Gpgmepp LibGpgError::LibGpgError)
+ endif()
+ if (OpenJPEG_FOUND)
+ set(poppler_SRCS ${poppler_SRCS}
+--- a/cmake/modules/FindLibGpgError.cmake 1970-01-01 01:00:00.000000000 +0100
++++ b/cmake/modules/FindLibGpgError.cmake 2023-06-07 15:27:03.005887682 +0200
+@@ -0,0 +1,101 @@
++# SPDX-FileCopyrightText: 2022 g10 Code GmbH
++# SPDX-FileContributor: Ingo Klöcker
++#
++# SPDX-License-Identifier: BSD-3-Clause
++
++#[=======================================================================[.rst:
++FindLibGpgError
++---------------
++
++Try to find the Libgpg-error library.
++
++This will define the following variables:
++
++``LibGpgError_FOUND``
++ True if (the requested version of) Libgpg-error was found
++``LibGpgError_VERSION``
++ The version of the Libgpg-error library which was found
++``LibGpgError_LIBRARIES``
++ Libraries you need to link when using Libgpg-error This can be passed to
++ target_link_libraries() instead of the ``LibGpgError::LibGpgError`` target.
++``LibGpgError_INCLUDE_DIRS``
++ Include directories needed to use Libgpg-error This should be passed to
++ target_include_directories() if the target is not used for linking.
++``LibGpgError_DEFINITIONS``
++ Compile definitions to use when compiling code that uses Libgpg-error
++ This should be passed to target_compile_options() if the target is not
++ used for linking.
++
++If ``LibGpgError_FOUND`` is TRUE, it will also define the following imported target:
++
++``LibGpgError::LibGpgError``
++ The Libgpg-error library
++
++#]=======================================================================]
++
++find_package(PkgConfig QUIET)
++pkg_check_modules(PC_LibGpgError QUIET gpg-error)
++
++set(LibGpgError_VERSION ${PC_LibGpgError_VERSION})
++set(LibGpgError_DEFINITIONS ${PC_LibGpgError_CFLAGS_OTHER})
++
++find_path(LibGpgError_INCLUDE_DIR
++ NAMES
++ gpg-error.h
++ PATHS
++ ${PC_LibGpgError_INCLUDE_DIRS}
++)
++find_library(LibGpgError_LIBRARY
++ NAMES
++ gpg-error
++ PATHS
++ ${PC_LibGpgError_LIBRARY_DIRS}
++)
++
++if(LibGpgError_INCLUDE_DIR AND NOT LibGpgError_VERSION)
++ # The version is given in the format MAJOR.MINOR optionally followed
++ # by an intermediate "beta" version given as -betaNUM, e.g. "1.47-beta7".
++ file(STRINGS "${LibGpgError_INCLUDE_DIR}/gpg-error.h" LibGpgError_VERSION_STR
++ REGEX "^#[\t ]*define[\t ]+GPG_ERROR_VERSION[\t ]+\"([0-9])+\\.([0-9])+(-[a-z0-9]*)?\".*")
++ string(REGEX REPLACE "^.*GPG_ERROR_VERSION[\t ]+\"([0-9]+\\.[0-9]+(-[a-z0-9]*)?)\".*$"
++ "\\1" LibGpgError_VERSION_STR "${LibGpgError_VERSION_STR}")
++
++ set(LibGpgError_VERSION "${LibGpgError_VERSION_STR}")
++
++ unset(LibGpgError_VERSION_STR)
++endif()
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(LibGpgError
++ REQUIRED_VARS
++ LibGpgError_LIBRARY
++ LibGpgError_INCLUDE_DIR
++ LibGpgError_VERSION
++ VERSION_VAR
++ LibGpgError_VERSION
++)
++
++if(LibGpgError_FOUND AND NOT TARGET LibGpgError::LibGpgError)
++ add_library(LibGpgError::LibGpgError UNKNOWN IMPORTED)
++ set_target_properties(LibGpgError::LibGpgError PROPERTIES
++ IMPORTED_LOCATION "${LibGpgError_LIBRARY}"
++ INTERFACE_COMPILE_OPTIONS "${LibGpgError_DEFINITIONS}"
++ INTERFACE_INCLUDE_DIRECTORIES "${LibGpgError_INCLUDE_DIR}"
++ )
++endif()
++
++mark_as_advanced(
++ LibGpgError_INCLUDE_DIR
++ LibGpgError_LIBRARY
++)
++
++if(LibGpgError_FOUND)
++ set(LibGpgError_LIBRARIES ${LibGpgError_LIBRARY})
++ set(LibGpgError_INCLUDE_DIRS ${LibGpgError_INCLUDE_DIR})
++endif()
++
++include(FeatureSummary)
++set_package_properties(LibGpgError PROPERTIES
++ DESCRIPTION "Runtime library for all GnuPG components"
++ URL https://www.gnupg.org/software/libgpg-error
++)
diff --git a/src/appimage/Makefile.am b/src/appimage/Makefile.am
index 1ab05191..544ea721 100644
--- a/src/appimage/Makefile.am
+++ b/src/appimage/Makefile.am
@@ -1,212 +1,224 @@
# Makefile.am - Makefile for building AppImage of Kleopatra
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 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+
EXTRA_DIST = AppRun start-shell build-appimage.sh
SUBDIRS = rsync-filters
root := /build
stampdir := $(root)/stamps
# Source packages for the AppImage (see also ../src/Makefile.am)
appimage_spkgs = sqlite libgpg-error libassuan npth libgcrypt libksba gnupg \
- pinentry gpgme paperkey ntbtls
+ pinentry gpgme paperkey ntbtls \
+ freetype
appimage_pkg_libgpg_error_configure = --enable-install-gpg-error-config
# Qt packages for the AppImage
appimage_qtpkgs = qtbase qttools qtx11extras qtwayland qtsvg qttranslations
# KDE packages for the AppImage
appimage_kdepkgs = kconfig kwidgetsaddons ki18n extra-cmake-modules \
kcompletion kwindowsystem kcoreaddons libkleo kcodecs \
kmime kconfigwidgets kxmlgui kguiaddons kitemviews \
kiconthemes kleopatra breeze-icons kitemmodels karchive \
kcrash kdbusaddons kio kbookmarks kservice solid \
kjobwidgets \
- sonnet ktextwidgets kauth
+ sonnet ktextwidgets kauth \
+ threadweaver kparts poppler okular kactivities
# Binary packages for the AppImage
# appimage_bpkgs =
appimage_pkg_gpgme_configure = --enable-languages=cpp,qt \
--disable-gpg-test \
--disable-gpgsm-test
# TODO: Disable Qt Sql?
# TODO: Disable Qt Testlib?
appimage_pkg_qtbase_configure = ../$$$${pkg_version}/configure -opensource \
-confirm-license \
-platform linux-g++ \
-release \
-shared \
-prefix $$$${pkgidir} \
-I '$(idir)/include' \
-L '$(idir)/lib' \
-opengl desktop \
-no-glib \
-accessibility \
-nomake examples \
-nomake tests \
-no-sql-mysql \
-no-sql-sqlite \
-no-sql-odbc \
-no-sql-psql \
-no-sql-tds \
-qt-harfbuzz \
-v \
-xcb \
OPENSSL_INCDIR=/usr/include/openssl11
define appimage_pkg_qtbase_post_install
(cd $$$${pkgbdir}; \
make install;)
endef
appimage_pkg_qttools_configure = \
"$(idir)/bin/qmake" ../$$$${pkg_version}
define appimage_pkg_qttools_post_install
(cd $$$${pkgbdir}; \
mkdir -p $$$${pkgidir}; \
cp -r bin lib include $$$${pkgidir})
endef
appimage_pkg_qtx11extras_configure = \
"$(idir)/bin/qmake" ../$$$${pkg_version}
define appimage_pkg_qtx11extras_post_install
(cd $$$${pkgbdir}; \
mkdir -p $$$${pkginstallroot}; \
make install INSTALL_ROOT=$$$${pkginstallroot}; \
mkdir -p $$$${pkgidir}; \
mv $$$${pkgbladir}/* $$$${pkgidir}; \
rm -rf $$$${pkginstallroot};)
endef
appimage_pkg_qtwayland_configure = \
"$(idir)/bin/qmake" ../$$$${pkg_version}
define appimage_pkg_qtwayland_post_install
(cd $$$${pkgbdir}; \
mkdir -p $$$${pkginstallroot}; \
make install INSTALL_ROOT=$$$${pkginstallroot}; \
mkdir -p $$$${pkgidir}; \
mv $$$${pkgbladir}/* $$$${pkgidir}; \
rm -rf $$$${pkginstallroot};)
endef
appimage_pkg_qtsvg_configure = \
"$(idir)/bin/qmake" ../$$$${pkg_version}
# 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 appimage_pkg_qtsvg_post_install
(cd $$$${pkgbdir}; \
mkdir -p $$$${pkgidir}; \
cp -r lib include plugins $$$${pkgidir}; \
mkdir -p $$$${pkgidir}/bin; \
echo "[Paths]" > $$$${pkgidir}/bin/qt.conf; \
echo "Prefix = .." >> $$$${pkgidir}/bin/qt.conf)
endef
appimage_pkg_qttranslations_configure = \
"$(idir)/bin/qmake" ../$$$${pkg_version}
define appimage_pkg_qttranslations_post_install
( rm -rf $$$${pkgidir}/translations; \
mkdir -p $$$${pkgidir}; \
cp -r $$$${pkgbdir}/translations $$$${pkgidir}/translations;)
endef
# do not create the huge icon resource files
appimage_pkg_breeze_icons_configure = -DBINARY_ICONS_RESOURCE=OFF
+appimage_pkg_kactivities_configure = \
+ -DBOOST_INCLUDEDIR=/usr/include/boost169 \
+ -DBOOST_LIBRARYDIR=/usr/lib64/boost169 \
+ -DKACTIVITIES_LIBRARY_ONLY=ON
+
appimage_pkg_kcompletion_configure = \
-DBUILD_DESIGNERPLUGIN=OFF
appimage_pkg_kconfigwidgets_configure = \
-DBUILD_DESIGNERPLUGIN=OFF
appimage_pkg_kconfig_configure = -DKCONFIG_USE_DBUS=OFF -DKCONFIG_USE_QML=OFF
appimage_pkg_kguiaddons_configure = -DWITH_WAYLAND=OFF
appimage_pkg_sonnet_configure = -DSONNET_USE_QML=OFF
appimage_pkg_ki18n_configure = -DBUILD_WITH_QML=OFF
appimage_pkg_kiconthemes_configure = \
-DBUILD_DESIGNERPLUGIN=OFF
appimage_pkg_kitemviews_configure = \
-DBUILD_DESIGNERPLUGIN=OFF
appimage_pkg_kwidgetsaddons_configure = \
-DBUILD_DESIGNERPLUGIN=OFF
# FIXME: Uses spaces in distribution text
appimage_pkg_kxmlgui_configure = \
-DBUILD_DESIGNERPLUGIN=OFF \
-DFORCE_DISABLE_KGLOBALACCEL=ON \
-DXMLGUI_DISTRIBUTION_TEXT=g10_Code_GmbH_AppImage
appimage_pkg_libkleo_configure = \
-DBOOST_INCLUDEDIR=/usr/include/boost169 \
-DBOOST_LIBRARYDIR=/usr/lib64/boost169
appimage_pkg_kleopatra_configure = \
-DBOOST_INCLUDEDIR=/usr/include/boost169 \
-DBOOST_LIBRARYDIR=/usr/lib64/boost169 \
-DDISABLE_KWATCHGNUPG=ON \
-DRELEASE_SERVICE_VERSION=AppImage-$(VERSION)
+appimage_pkg_poppler_configure = \
+ -DENABLE_BOOST=OFF
+
+appimage_pkg_okular_configure = \
+ -DFORCE_NOT_REQUIRED_DEPENDENCIES="KF5Wallet\;KF5DocTools\;KF5JS\;KF5Purpose\;Qt5TextToSpeech\;Phonon4Qt5\;LibSpectre\;KF5KExiv2\;CHM\;KF5KHtml\;LibZip\;DjVuLibre\;EPub\;QMobipocket\;Discount"
########################################################################
# 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
$(eval $(call INCLUDE_BY_MAKE,appimage.mk))
clean-local: clean-appimage
license.blurb: $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3
cat $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3 >$@
all-local: $(stampdir)/stamp-final
@echo "###################################################"
@echo " AppDir prepared successfully for the AppImage!"
@echo " Now run linuxdeploy to create the AppImage."
@echo "###################################################"
diff --git a/src/appimage/appimage.mk.in b/src/appimage/appimage.mk.in
index 17de5d13..67489646 100644
--- a/src/appimage/appimage.mk.in
+++ b/src/appimage/appimage.mk.in
@@ -1,475 +1,476 @@
# appimage.m4.in - Makefile for building AppImage of Kleopatra. -*- makefile -*-
# Copyright (C) 2005, 2009, 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+
# No servicable parts below this line :)
# These paths must be absolute, as we switch directories pretty often.
logdir := $(root)/logs
bdir := $(root)/build
appdir := $(root)/AppDir
idir := $(root)/install
ipdir := $(root)/install/pkgs
tsdir := $(shell pwd)/${top_srcdir}
pdir := $(shell pwd)/${top_srcdir}/patches-appimage
rsyncfilterdir := $(tsdir)/src/appimage/rsync-filters
# We collect the names of all pkg files used.
pkg_files =
# The build area is our scratch area, where we unpack, build and
# install the packages.
$(stampdir)/stamp-directories:
$(MKDIR) -p $(root)
$(MKDIR) -p $(stampdir)
$(MKDIR) -p $(logdir)
$(MKDIR) -p $(bdir)
$(MKDIR) -p $(idir)
$(MKDIR) -p $(ipdir)
$(MKDIR) -p $(appdir)/usr
touch $(bdir)/versioninfo.txt
touch $(stampdir)/stamp-directories
# Frob the name $1 by converting all '-' and '+' characters to '_'.
define FROB_macro
$(subst +,_,$(subst -,_,$(1)))
endef
# Get the variable $(1) (which may contain '-' and '+' characters).
define GETVAR
$($(call FROB_macro,$(1)))
endef
# Set a couple of common variables.
define SETVARS
set -e; \
set -o pipefail; \
pkg="$(call GETVAR,appimage_pkg_$(1))"; \
pkg_version="$(1)-$(call GETVAR,appimage_pkg_$(1)_version)"; \
pkglogdir="$(logdir)/$$$${pkg_version}"; \
pkgsdir="$(bdir)/$$$${pkg_version}"; \
pkgbdir="$(bdir)/$$$${pkg_version}-build"; \
pkgpdir="$(pdir)/$$$${pkg_version}"; \
pkgpbdir="$(pdir)/$(1)"; \
pkgidir="$(ipdir)/$$$${pkg_version}"; \
pkginstallroot="/tmp/$$$${pkg_version}"; \
pkgbladir="/tmp/$$$${pkg_version}/$(idir)"; \
pkgcfg="$(call GETVAR,appimage_pkg_$(1)_configure)"; \
pkgextracflags="$(call GETVAR,appimage_pkg_$(1)_extracflags)"; \
pkgmkargs="$(call GETVAR,appimage_pkg_$(1)_make_args)"; \
pkgmkargs_inst="$(call GETVAR,appimage_pkg_$(1)_make_args_inst)";\
pkgmkdir="$(call GETVAR,appimage_pkg_$(1)_make_dir)"; \
pkgmkdir_inst="$(call GETVAR,appimage_pkg_$(1)_make_dir)"; \
pkgrsyncfilter="$(rsyncfilterdir)/$(1).rsync-filter"; \
- export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig"; \
+ export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig:$(idir)/lib64/pkgconfig"; \
+ export FREETYPE_DIR="$(idir)" \
export PATH="$(idir)/bin:$${PATH}"
endef
# Support macro. Unpack the archive $(1).
define DEFLATE_macro
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)" ;; \
*/qtx11extras*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qtx11extras-everywhere-src,qtx11extras,' -f "$(1)" ;; \
*/qtwayland*.*.tar.xz) \
$(TAR) -xJ --transform='s,^qtwayland-everywhere-src,qtwayland,' -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)" ;; \
*/sqlite*.*.tar.gz) \
$(TAR) -xz --transform='s,^sqlite-autoconf-3270200,sqlite-3.27.2,' -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
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
define GETDEPS
$(addprefix $(stampdir)/stamp-final-, $(call GETVAR,appimage_pkg_$(1)_deps))
endef
# Template for source packages.
define SPKG_template_
pkg_files += $(call GETVAR,appimage_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)); \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
set -x; \
mkdir -p "$$$${pkglogdir}"; \
mkdir -p "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
eval "../$$$${pkg_version}/configure" \
--prefix="$$$${pkgidir}" \
$$$${pkgcfg} \
CFLAGS=\"-mms-bitfields $$$${pkgextracflags}\" | \
tee "$$$${pkglogdir}/configure.log"; \
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 appimage_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-rsync: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
set -x; \
$(RSYNC) -a --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(idir)/" )
touch $(stampdir)/stamp-$(1)-05-rsync
$(stampdir)/stamp-$(1)-06-copy-to-appdir: $(stampdir)/stamp-$(1)-05-rsync
($(call SETVARS,$(1)); \
set -x; \
if test -f "$$$${pkgrsyncfilter}"; then \
cp "$$$${pkgrsyncfilter}" "$$$${pkgidir}/.rsync-filter"; \
$(RSYNC) -av -FF --omit-dir-times --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(appdir)/usr/"; \
fi )
touch $(stampdir)/stamp-$(1)-06-copy-to-appdir
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-06-copy-to-appdir
touch $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
(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,appimage_pkg_$(1))),
$(call SPKG_template_,$1))
endef
# Template for binary packages.
define BPKG_template_
pkg_files += $(call GETVAR,appimage_pkg_$(1))
$(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
$(stampdir)/stamp-$(1)-01-rsync: $(stampdir)/stamp-$(1)-00-install
($(call SETVARS,$(1)); \
set -x; \
$(RSYNC) -a --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(idir)/" )
touch $(stampdir)/stamp-$(1)-01-rsync
$(stampdir)/stamp-$(1)-02-copy-to-appdir: $(stampdir)/stamp-$(1)-01-rsync
($(call SETVARS,$(1)); \
set -x; \
if test -f "$$$${pkgrsyncfilter}"; then \
cp "$$$${pkgrsyncfilter}" "$$$${pkgidir}/.rsync-filter"; \
$(RSYNC) -av -FF --omit-dir-times --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(appdir)/usr/"; \
fi )
touch $(stampdir)/stamp-$(1)-02-copy-to-appdir
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-02-copy-to-appdir
touch $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
cd $(ipdir) && \
(rm -fR "$$$${pkg_version}"))
rm -f $(stampdir)/stamp-final-$(1) $(stampdir)/stamp-$(1)-*
endef
define BPKG_template
$(if $(filter-out no, $(call GETVAR,appimage_pkg_$(1))),
$(call BPKG_template_,$1))
endef
# Template for Qt packages.
define QTPKG_template_
pkg_files += $(call GETVAR,appimage_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)); \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
($(call SETVARS,$(1)); \
set -x; \
mkdir -p "$$$${pkglogdir}"; \
mkdir -p "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
$$$${pkgcfg} | \
tee "$$$${pkglogdir}/configure.log")
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}"; \
export LD_LIBRARY_PATH=$(idir)/lib; \
$(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)); \
set -x; \
$(call appimage_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-rsync: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
set -x; \
$(RSYNC) -a --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(idir)/" )
touch $(stampdir)/stamp-$(1)-05-rsync
$(stampdir)/stamp-$(1)-06-copy-to-appdir: $(stampdir)/stamp-$(1)-05-rsync
($(call SETVARS,$(1)); \
set -x; \
if test -f "$$$${pkgrsyncfilter}"; then \
cp "$$$${pkgrsyncfilter}" "$$$${pkgidir}/.rsync-filter"; \
$(RSYNC) -av -FF --omit-dir-times --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(appdir)/usr/"; \
fi )
touch $(stampdir)/stamp-$(1)-06-copy-to-appdir
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-06-copy-to-appdir
touch $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
(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,appimage_pkg_$(1))),
$(call QTPKG_template_,$1))
endef
# Template for KDE packages.
define KDEPKG_template_
pkg_files += $(call GETVAR,appimage_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)); \
cd "$$$${pkgsdir}"; \
sed -i 's/set(KF5_MIN_VERSION.*)/set(KF5_MIN_VERSION "5.77.0")/' CMakeLists.txt; \
sed -i 's/set(KF5_VERSION.*)/set(KF5_VERSION "5.77.0")/' CMakeLists.txt; \
sed -i 's/set(KMIME_VERSION.*)/set(KMIME_VERSION "5.2.40")/' CMakeLists.txt; \
for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \
(cd "$$$${pkgsdir}"; chmod +x "$$$${pfile}"; "$$$${pfile}") \
done)
touch $(stampdir)/stamp-$(1)-01-patch
$(stampdir)/stamp-$(1)-02-configure: $(stampdir)/stamp-$(1)-01-patch
(set -x; \
$(call SETVARS,$(1)); \
mkdir -p "$$$${pkglogdir}"; \
mkdir -p "$$$${pkgbdir}"; \
cd "$$$${pkgbdir}"; \
$(CMAKE) \
-DCMAKE_INSTALL_PREFIX="$$$${pkgidir}" \
-DCMAKE_PREFIX_PATH="$$$${pkgidir}" \
-DKDE_INSTALL_DATADIR="$$$${pkgidir}/share" \
-DBUILD_TESTING=False \
$$$${pkgcfg} $$$${pkgextracflags} "../$$$${pkg_version}" | \
tee "$$$${pkglogdir}/configure.log")
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}"; \
export LD_LIBRARY_PATH=$(idir)/lib; \
$(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 appimage_pkg_$(call FROB_macro,$(1))_post_install))
touch $(stampdir)/stamp-$(1)-04-install
$(stampdir)/stamp-$(1)-05-rsync: $(stampdir)/stamp-$(1)-04-install
($(call SETVARS,$(1)); \
set -x; \
$(RSYNC) -a --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(idir)/" )
touch $(stampdir)/stamp-$(1)-05-rsync
$(stampdir)/stamp-$(1)-06-copy-to-appdir: $(stampdir)/stamp-$(1)-05-rsync
($(call SETVARS,$(1)); \
set -x; \
if test -f "$$$${pkgrsyncfilter}"; then \
cp "$$$${pkgrsyncfilter}" "$$$${pkgidir}/.rsync-filter"; \
$(RSYNC) -av -FF --omit-dir-times --link-dest="$$$${pkgidir}/" "$$$${pkgidir}/" "$(appdir)/usr/"; \
fi )
touch $(stampdir)/stamp-$(1)-06-copy-to-appdir
$(stampdir)/stamp-final-$(1): $(stampdir)/stamp-$(1)-06-copy-to-appdir
touch $(stampdir)/stamp-final-$(1)
.PHONY : clean-$(1)
clean-$(1):
($(call SETVARS,$(1)); \
(cd $(ipdir) && \
(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,appimage_pkg_$(1))),
$(call KDEPKG_template_,$1))
endef
# Insert the template for each source package.
$(foreach spkg, $(appimage_spkgs), $(eval $(call SPKG_template,$(spkg))))
# Insert the template for each binary package.
$(foreach bpkg, $(appimage_bpkgs), $(eval $(call BPKG_template,$(bpkg))))
# Insert the template for Qt packages.
$(foreach qtpkg, $(appimage_qtpkgs), $(eval $(call QTPKG_template,$(qtpkg))))
# Insert the template for KDE packages.
$(foreach kdepkg, $(appimage_kdepkgs), $(eval $(call KDEPKG_template,$(kdepkg))))
$(stampdir)/stamp-final: $(stampdir)/stamp-directories
$(stampdir)/stamp-final: $(addprefix $(stampdir)/stamp-final-,$(appimage_build_list))
touch $(stampdir)/stamp-final
$(bdir)/versioninfo.txt: $(stampdir)/stamp-final
touch $(bdir)/versioninfo.txt
all-appimage: $(stampdir)/stamp-final
# Just to check if we catched all stamps.
clean-stamps:
$(RM) -fR $(stampdir)
clean-appimage:
$(RM) -fR $(bdir) $(idir) $(stampdir) $(logdir) $(appdir)
.PHONY : all-appimage clean-stamps clean-appimage
# @emacs_local_vars_begin@
# @emacs_local_vars_read_only@
# @emacs_local_vars_end@
diff --git a/src/appimage/build-appimage.sh b/src/appimage/build-appimage.sh
index 82833beb..0de2be9f 100755
--- a/src/appimage/build-appimage.sh
+++ b/src/appimage/build-appimage.sh
@@ -1,151 +1,177 @@
#!/bin/sh
# Build an AppImage of GnuPG (VS-)Desktop
# Copyright (C) 2021 g10 Code GmbH
#
# Software engineering by Ingo Klöcker
#
# This file is part of GnuPG.
#
# GnuPG 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 3 of the License, or
# (at your option) any later version.
#
# GnuPG 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-3.0+
set -e
. /opt/rh/devtoolset-10/enable
cd /src
./configure --enable-appimage --enable-maintainer-mode --disable-manuals
cd /src
make
if [ -f /src/src/gnupg-vsd/custom.mk ]; then
if ls /src/packages/gnupg-2.2* >/dev/null 2>&1 ; then
GNUPG_BUILD_VSD=yes
else
GNUPG_BUILD_VSD=desktop
fi
else
GNUPG_BUILD_VSD=no
fi
export GNUPG_BUILD_VSD
echo 'rootdir = $APPDIR/usr' >/build/AppDir/usr/bin/gpgconf.ctl
if [ $GNUPG_BUILD_VSD = yes ]; then
echo 'sysconfdir = /etc/gnupg-vsd' >>/build/AppDir/usr/bin/gpgconf.ctl
else
echo 'sysconfdir = /etc/gnupg' >>/build/AppDir/usr/bin/gpgconf.ctl
fi
# Copy the start-shell helper for use AppRun
cp /src/src/appimage/start-shell /build/AppDir/
chmod +x /build/AppDir/start-shell
# Copy standard global configuration
if [ $GNUPG_BUILD_VSD = yes ]; then
mkdir -p /build/AppDir/usr/share/gnupg/conf/gnupg-vsd
rsync -aLv --delete --omit-dir-times \
/src/src/gnupg-vsd/Standard/etc/gnupg/ \
/build/AppDir/usr/share/gnupg/conf/gnupg-vsd/
fi
export PATH=/opt/linuxdeploy/usr/bin:$PATH
-export LD_LIBRARY_PATH=/build/install/lib
+export LD_LIBRARY_PATH=/build/install/lib:/build/install/lib64
# tell the linuxdeploy qt-plugin where to find qmake
export QMAKE=/build/install/bin/qmake
# create plugin directories expected by linuxdeploy qt-plugin
# workaround for
# [qt/stdout] Deploy[qt/stderr] terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
# [qt/stderr] what(): boost::filesystem::directory_iterator::construct: No such file or directory: "/build/AppDir/usr/plugins/sqldrivers"
# ERROR: Failed to run plugin: qt (exit code: 6)
mkdir -p /build/install/plugins/sqldrivers
# copy KDE plugins
-for d in iconengines kf5 pim5; do
+for d in iconengines kauth kf5 okular pim5 plasma; do
mkdir -p /build/AppDir/usr/plugins/${d}/
rsync -av --delete --omit-dir-times /build/install/lib64/plugins/${d}/ /build/AppDir/usr/plugins/${d}/
done
+cp -av /build/install/lib64/plugins/okularpart.so /build/AppDir/usr/plugins/
+
+mkdir -p /build/AppDir/usr/lib
+# copy dependencies of the plugins
+# okularGenerator_*.so
+cp -av /build/install/lib/libfreetype* /build/AppDir/usr/lib
+# okularGenerator_poppler.so
+cp -av /build/install/lib64/libpoppler* /build/AppDir/usr/lib
+# okularGenerator_tiff.so
+cp -av /usr/lib64/libtiff.so* /build/AppDir/usr/lib
+
+# copy other libraries that are loaded dynamically
+mkdir -p /build/AppDir/usr/lib
+cp -av /build/install/lib64/libOkular5Core.so* /build/AppDir/usr/lib
cd /build
# Remove existing AppRun and wrapped AppRun, that may be left over
# from a previous run of linuxdeploy, to ensure that our custom AppRun
# is deployed
rm -f /build/AppDir/AppRun /build/AppDir/AppRun.wrapped 2>/dev/null
# Remove existing translations that may be left over from a previous
# run of linuxdeploy
rm -rf /build/AppDir/usr/translations
# Remove the version files to make sure that only one will be created.
rm -f /build/AppDir/GnuPG-VS-Desktop-VERSION 2>/dev/null
rm -f /build/AppDir/GnuPG-Desktop-VERSION 2>/dev/null
rm -f /build/AppDir/GnuPG-Foo-VERSION 2>/dev/null
# Extract gnupg version or (for VSD builds) gpg4win version for use
# as filename of the AppImage
if [ $GNUPG_BUILD_VSD = yes ]; then
myversion=$(grep PACKAGE_VERSION /src/config.h|sed -n 's/.*"\(.*\)"$/\1/p')
OUTPUT=gnupg-vs-desktop-${myversion}-x86_64.AppImage
echo "Packaging GnuPG VS-Desktop Appimage: $myversion"
echo $myversion >/build/AppDir/GnuPG-VS-Desktop-VERSION
cp /src/src/gnupg-vsd/Standard/VERSION* /build/AppDir/usr/
echo "Packaging help files"
mkdir -p /build/AppDir/usr/share/doc/gnupg-vsd
cp /src/src/gnupg-vsd/help/*.pdf /build/AppDir/usr/share/doc/gnupg-vsd
echo "Packaging kleopatrarc"
mkdir -p /build/AppDir/usr/etc/xdg
cp /src/src/gnupg-vsd/Standard/kleopatrarc /build/AppDir/usr/etc/xdg
elif [ $GNUPG_BUILD_VSD = desktop ]; then
myversion=$(ls /src/packages/gnupg-2.*tar.* \
| sed -n 's,.*/gnupg-\(2.*\).tar.bz2,\1,p')
OUTPUT=gnupg-desktop-${myversion}-x86_64.AppImage
echo "Packaging GnuPG Desktop Appimage: $myversion"
echo $myversion >/build/AppDir/GnuPG-Desktop-VERSION
cp /src/src/gnupg-vsd/Desktop/VERSION* /build/AppDir/usr/
if [ -f /src/src/gnupg-vsd/Desktop/kleopatrarc ]; then
echo "Packaging kleopatrarc"
mkdir -p /build/AppDir/usr/etc/xdg
cp /src/src/gnupg-vsd/Desktop/kleopatrarc /build/AppDir/usr/etc/xdg
fi
else
myversion=$(ls /src/packages/gnupg-2.*tar.bz2 \
| sed -n 's,.*/gnupg-\(2.*\).tar.*,\1,p')
OUTPUT=gnupg-foo-${myversion}-x86_64.AppImage
echo "Packaging Gpg4win Appimage: $myversion"
echo $myversion >/build/AppDir/GnuPG-Foo-VERSION
fi
export OUTPUT
# Hack around that linuxdeploy does not know libexec
for f in dirmngr_ldap gpg-check-pattern \
gpg-preset-passphrase gpg-protect-tool \
gpg-wks-client scdaemon \
keyboxd gpg-pair-tool; do
# Ignore errors because some files might not exist depending
# on GnuPG Version
/opt/linuxdeploy/usr/bin/patchelf \
--set-rpath '$ORIGIN/../lib' /build/AppDir/usr/libexec/$f || true
done
+# linuxdeploy also doesn't know about non-Qt plugins
+for d in iconengines kauth kf5 okular pim5 plasma; do
+ for f in $(find /build/AppDir/usr/plugins/${d}/ -mindepth 1 -maxdepth 1 -type f); do
+ /opt/linuxdeploy/usr/bin/patchelf --set-rpath '$ORIGIN/../../lib' $f
+ done
+ for f in $(find /build/AppDir/usr/plugins/${d}/ -mindepth 2 -maxdepth 2 -type f); do
+ /opt/linuxdeploy/usr/bin/patchelf --set-rpath '$ORIGIN/../../../lib' $f
+ done
+done
+/opt/linuxdeploy/usr/bin/patchelf \
+ --set-rpath '$ORIGIN/../lib' /build/AppDir/usr/plugins/okularpart.so
+
# Fix up everything and build the file system
linuxdeploy --appdir /build/AppDir \
--desktop-file /build/AppDir/usr/share/applications/org.kde.kleopatra.desktop \
--icon-file /build/AppDir/usr/share/icons/hicolor/256x256/apps/kleopatra.png \
--custom-apprun /src/src/appimage/AppRun \
--plugin qt \
--output appimage \
2>&1 | tee /build/logs/linuxdeploy-gnupg-desktop.log
echo ready
diff --git a/src/appimage/rsync-filters/freetype.rsync-filter b/src/appimage/rsync-filters/freetype.rsync-filter
new file mode 100644
index 00000000..f81c1e51
--- /dev/null
+++ b/src/appimage/rsync-filters/freetype.rsync-filter
@@ -0,0 +1,3 @@
+- /include/
+- /lib/
+- /share/
diff --git a/src/appimage/rsync-filters/kactivities.rsync-filter b/src/appimage/rsync-filters/kactivities.rsync-filter
new file mode 100644
index 00000000..3afa7f27
--- /dev/null
+++ b/src/appimage/rsync-filters/kactivities.rsync-filter
@@ -0,0 +1,5 @@
+- /bin/
+- /include/
+- /lib64/
+- /mkspecs/
+- /share/qlogging-categories5/
diff --git a/src/appimage/rsync-filters/kparts.rsync-filter b/src/appimage/rsync-filters/kparts.rsync-filter
new file mode 100644
index 00000000..7cd97e13
--- /dev/null
+++ b/src/appimage/rsync-filters/kparts.rsync-filter
@@ -0,0 +1,8 @@
+- /include/
+- /lib64/
+- /mkspecs/
+
+- /share/kdevappwizard/
++ /share/kservicetypes5/
++ /share/locale/
+- /share/qlogging-categories5/
diff --git a/src/appimage/rsync-filters/okular.rsync-filter b/src/appimage/rsync-filters/okular.rsync-filter
new file mode 100644
index 00000000..e2acf298
--- /dev/null
+++ b/src/appimage/rsync-filters/okular.rsync-filter
@@ -0,0 +1,4 @@
++ /bin/
+- /include/
+- /lib64/
++ /share/
diff --git a/src/appimage/rsync-filters/poppler.rsync-filter b/src/appimage/rsync-filters/poppler.rsync-filter
new file mode 100644
index 00000000..433ba073
--- /dev/null
+++ b/src/appimage/rsync-filters/poppler.rsync-filter
@@ -0,0 +1,4 @@
++ /bin/
+- /include/
+- /lib64/
+- /share/man
diff --git a/src/appimage/rsync-filters/threadweaver.rsync-filter b/src/appimage/rsync-filters/threadweaver.rsync-filter
new file mode 100644
index 00000000..2aef9331
--- /dev/null
+++ b/src/appimage/rsync-filters/threadweaver.rsync-filter
@@ -0,0 +1,3 @@
+- /include/
+- /lib64/
+- /mkspecs/