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/