diff --git a/Makefile.am b/Makefile.am index c80e6314..03114af0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,99 +1,99 @@ # 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-bzip2 no-dist-gzip DISTCHECK_CONFIGURE_FLAGS = --host=i686-w64-mingw32 SUBDIRS = po packages doc src # find patches -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 \ patches/boost/boost-1-fixes.patch \ patches/extra-cmake-modules/0001-Use-BIN_INSTALL_DIR-data-for-DATAROOTDIR-on-Windows.patch \ - patches/glib-2.41.5/01-socket.patch \ - patches/glib-2.41.5/02-formatsec.patch \ + patches/glib/glib-1-fixes.patch \ + patches/glib/glib-2-fixes.patch \ patches/kconfigwidgets/0001-Make-QDbus-optional.patch \ patches/kiconthemes/0001-Make-DBus-optional.patch \ patches/kxmlgui/0001-make-qdbus-optional.patch \ patches/kxmlgui/0004-Cruedly-disable-KSendbugmail.patch \ patches/qtbase/0001-Fix-build-without-std-thread.patch \ patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch \ patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch \ patches/qttools/disable-most-tools.patch \ patches/w32pth-2.0.5/workaround-broken-libtool.patch \ patches/breeze-icons/0001-Make-binary-icons-cross-compilable.patch \ patches/libkleo/lower-cmake-requirement.patch \ patches/libkleo/0001-Revert-Use-more-target-centric-cmake-code.patch \ patches/kleopatra/lower-cmake-requirement.patch \ patches/gpgme/0001-cpp-Use-keyID-as-fallback-for-primaryFingerprint.patch \ patches/gpgol/0001-Enable-sync-encryption-again.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.current (cd packages; ./download.sh) msi: $(MAKE) $(AM_MAKEFLAGS) -C src msi msi-signed: $(MAKE) $(AM_MAKEFLAGS) -C src msi-signed msi-upload: $(MAKE) $(AM_MAKEFLAGS) -C src msi-upload diff --git a/packages/packages.current b/packages/packages.current index 886a58bb..f209f9e1 100644 --- a/packages/packages.current +++ b/packages/packages.current @@ -1,601 +1,601 @@ # packages.current - list of current 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 SHA1 checksum of # the last file. # # zlib # server http://zlib.net # last-changed: 2017-01-23 # by: ah # verified: Sig 5ED4 6A67 21D3 6558 7791 E2AA 783F CD8E 58BC AFBA file zlib-1.2.11.tar.gz chk c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 # # 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 # verified: Sig 9001 B85A F9E1 B83D F1BD A942 F5BE 8B26 7C6A 406D file gettext/gettext-0.21.tar.xz # Glib needs PCRE # last-changed: 2021-09-02 # verified: Sig: 45F6 8D54 BBE2 3FB3 039B 46E5 9766 E084 FB0F 43D8 server https://ftp.pcre.org/pub/pcre/ file pcre-8.44.tar.gz # # GLIB # # The GTK boyz seem to think that sha256sum files on the server # magically get them a lot of additional security karma. # # And it's plain to see # You were meant for me # Yeah I'm your .sig # Your 21th Century sig # 21th Century sig, I wanna be your file # -server http://ftp.gnome.org/pub/gnome/sources/glib/2.49 +server http://ftp.gnome.org/pub/gnome/sources/glib/2.50 -# last-changed: 2021-08-17 +# last-changed: 2021-09-02 # by: ah -file glib-2.49.7.tar.xz -chk 0fd13406ca31d6f654c3be620e0adaaa4f9fb788e164e265e33edf4b21e64ef6 +file glib-2.50.2.tar.xz +chk be68737c1f268c05493e503b3b654d2b7f43d7d0b8c5556f7e4651b870acfbf5 # # GDK-PIXBUF # server http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.30/ # checked: 2015-06-05 # by: ah # There is a 2.31 series but afaik no security problems with 2.30 # verified: with linuxfromscratch and frugalware checksums file gdk-pixbuf-2.30.8.tar.xz chk 4853830616113db4435837992c0aebd94cbb993c44dc55063cee7f72a7bef8be # # ATK # server http://ftp.gnome.org/pub/gnome/sources/atk/1.32 # checked: 2013-04-29 wk (1.32.0 still the latest in 1.32) file atk-1.32.0.tar.bz2 chk e9a3e598f75c4db1af914f8b052dd9f7e89e920a96cc187c18eb06b8339cb16e server http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.32 # checked: 2013-04-29 wk name atk-1.32.0.zip file atk_1.32.0-2_win32.zip chk cadc6d52f2af21996a6dcba7b1fac27ce66721e14d1c4ab21fde7bc9965f5037 # checked: 2013-04-29 wk name atk-dev-1.32.0.zip file atk-dev_1.32.0-2_win32.zip chk 5021d64043d270350d6a8d50b91db691a7421a68ca0bfa4eeb0c8804a176ac44 # # PANGO # server http://ftp.gnome.org/pub/gnome/sources/pango/1.29 # fixme: 2013-04-29 wk - There is a 1.29.5 but no 1.29.5 binaries # What shall we do: Update to 1.32? There are no # 1.32 binaries either. file pango-1.29.4.tar.bz2 chk f15deecaecf1e9dcb7db0e4947d12b5bcff112586434f8d30a5afd750747ff2b server http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.29 name pango-1.29.4.zip file pango_1.29.4-1_win32.zip chk e1b865ae2e4054388c598f92b34593b3d24d7fd15e6308c8926ee634717c21ce name pango-dev-1.29.4.zip file pango-dev_1.29.4-1_win32.zip chk 0d7fb255e65ed4bd43acedab4405986e4877b87ba8227d5fa22b38330485e3cb # # CAIRO # server http://cairographics.org/releases # checked: 2013-04-29 wk - 1.10.2 is the latest in the 1.10 series. file cairo-1.10.2.tar.gz chk 32018c7998358eebc2ad578ff8d8559d34fc80252095f110a572ed23d989fc41 server http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies # checked: 2013-07-16 ah most recent package on that server is from # 2012-09-27 TODO -> Move to another source / source build of those # dependencies # checked: 2013-04-29 wk name cairo-1.10.2.zip file cairo_1.10.2-2_win32.zip chk e6c361ec1df4ccb23edbe5b68db16329d563a19eeee7fa70d583dda3d2358f4e name cairo-dev-1.10.2.zip file cairo-dev_1.10.2-2_win32.zip chk b86f875bf776bbf578e3fa8c46866b84c93200b962b30d03cf795f82157e3167 # checked: 2013-04-29 wk file freetype-2.4.2.tar.bz2 chk 9a987aef8c50d9bcfdfdc9f012f8bd0de6095cc1a5524e62c1a037deb8dacbfe name freetype-2.4.2.zip file freetype_2.4.2-1_win32.zip chk bdf67e6573363fd2256a58295931cc1186382fd0ad1fe420059d6ffdb5fba7c0 name freetype-dev-2.4.2.zip file freetype-dev_2.4.2-1_win32.zip chk eed58c2807b65d5e0ec78031e89f1628577ad76bf47f02eaecde432c0b99eae9 server http://www.fontconfig.org/release # checked: 2013-04-29 wk - 2.8.0 still the latest in 2.8 file fontconfig-2.8.0.tar.gz chk fa2a1c6eea654d9fce7a4b1220f10c99cdec848dccaf1625c01f076b31382335 server http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies # checked: 2013-04-29 wk name fontconfig-2.8.0.zip file fontconfig_2.8.0-2_win32.zip chk 9d6bcaeed0eced43a649953132d9f2b3e15b98c7bb9e4a207872dfeade818204 name fontconfig-dev-2.8.0.zip file fontconfig-dev_2.8.0-2_win32.zip chk 2f15af3d27ca507dad2a208e58409f484aa7e7c7eac10b49edca079b31ae7073 server ftp://ftp.g10code.com/g10code/misc # checked: 2013-04-29 wk - 2.0.1 still the latest in 2.0 file expat-2.0.1.tar.gz chk 847660b4df86e707c9150e33cd8c25bc5cd828f708c7418e765e3e983a2e5e93 server http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies # checked: 2013-04-29 wk name expat-2.0.1.zip file expat_2.0.1-1_win32.zip chk 77b88ab780e698d6590426b26a877878584b9f8b6357909699674fb5045737bd name expat-dev-2.0.1.zip file expat-dev_2.0.1-1_win32.zip chk 67b92b7f3441fee077bdc0094bf4dd673870acdf51899e32e199246801538162 # # GTK+ # server http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24 # last-changed: 2015-06-05 # by: ah # verified: chk from https://download.gnome.org/core/3.17/3.17.2/sources/SHA256SUMS-for-xz file gtk+-2.24.28.tar.xz chk b2c6441e98bc5232e5f9bba6965075dcf580a8726398f7374d39f90b88ed4656 # # 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 # PNG # last changed: 2017-08-28 # by: js # verified: Sig 8048 643B A2C8 40F4 F92A 195F F549 84BF A16C 640F server ftp://ftp.simplesystems.org/pub/png/src file libpng14/libpng-1.4.22.tar.xz chk 8d419a8b2a5edddda5cbcb897ded92205344a3249fa7a00d6384ea23ac3ccbd8 # # LibFFI # server ftp://sourceware.org/pub/libffi # checked: 2013-04-29 wk - updated from 3.0.10. # checked: 2014-07-16 ah - only rc availble from 3.0.14 file libffi-3.0.13.tar.gz chk 1dddde1400c3bcb7749d398071af88c3e4754058d2d4c0b3696c2f82dc5cf11c # # GpgOL # server http://files.gpg4win.org/src # by: ah # verified: Sig 5B80 C575 4298 F0CB 55D8 ED6A BCEF 7E29 4B09 2E28 file gpgol/gpgol-2.5.0.tar.bz2 chk 76cb742ae53cf54f2d42d258f6ba657d2b98c752d2c742b1e4f04b26a6baf0df # for beta #server http://files.intevation.de/projects/gpg4all #file gpgol/gpgol-2.5.0-beta36.tar.bz2 #chk cf3431d9ffb06f6c86af4aaa35fd69f343a18854016ab7d4145844a9be8346cf # # GpgEX # server http://files.gpg4win.org/src # last-changed: 2021-01-26 # by: ah # verified: Sig 5B80 C575 4298 F0CB 55D8 ED6A BCEF 7E29 4B09 2E28 file gpgex/gpgex-1.0.7.tar.bz2 chk ff6b9cce03d835bbf0fbfd5fbe986ed42813ababa4a98a791da8b57d745b5848 # # Pth emulation # server ftp://ftp.g10code.com/g10code/w32pth # checked: 2014-07-16 ah file w32pth-2.0.5.tar.bz2 chk 5e462d06ed50e9e961546ab5264258e606b101860a74c1e410d086432ec27a06 # # Stripped down version of BZIP2 # (full source at http://bzip.org) # server ftp://ftp.g10code.com/g10code/bzip2 # checked: 2014-07-16 ah file bzip2-1.0.6-g10.tar.gz chk c2a9b3aec1a38d34b66106116a39f64b01d84f475fef75c40ea0bda0ea67ed07 # # GnuPG et al. # # All tarballs from this server are verified with an openpgp # signature made by "Werner Koch (dist sig)". # D869 2123 C406 5DEA 5E0F 3AB5 249B 39D2 4F25 E3B6 server ftp://ftp.gnupg.org/gcrypt # last changed 2021-04-21 # by ah # verified: distsigkey.gpg server ftp://ftp.gnupg.org/gcrypt file libgpg-error/libgpg-error-1.42.tar.bz2 chk fc07e70f6c615f8c4f590a8e37a9b8dd2e2ca1e9408f8e60459c67452b925e23 # last-changed: 2021-04-21 # by: ah # verified: distsigkey.gpg file libassuan/libassuan-2.5.5.tar.bz2 chk 8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4 # last changed: 2021-08-27 # by: ah # verified: distsigkey.gpg name gnupg-w32-2.2.30-20210826-bin.exe file binary/gnupg-w32-2.2.30_20210826.exe chk 646833b59645a6dd1138b1a93ae384f702ee4b55b72a26b5d42a185d9b6523c4 name gnupg-w32-2.2.30-20210826-src.tar.xz file binary/gnupg-w32-2.2.30_20210826.tar.xz chk 0d30b30c207a1ecb0472b65f167e651d161d096d629589722ec72742d50b8b04 name gnupg-msi-2.2.30-20210826-src.tar.xz file binary/gnupg-w32-2.2.30_20210826.tar.xz chk 0d30b30c207a1ecb0472b65f167e651d161d096d629589722ec72742d50b8b04 name gnupg-msi-2.2.30-20210826-bin.wixlib file binary/gnupg-w32-2.2.30_20210826.wixlib chk 93e05470f126c64964d67d5789c74903c4f0190e44ccfa1187db1ede3fa3931f server ftp://ftp.gnupg.org/gcrypt # last changed: 2021-04-21 # by: ah file pinentry/pinentry-1.2.0.tar.bz2 chk 10072045a3e043d0581f91cd5676fcac7ffee957a16636adedaa4f583a616470 # last changed: 2021-01-08 # by: wk # verified: swdb.mac #cd file gpgme/gpgme-1.15.1.tar.bz2 #chk eebc3c1b27f1c8979896ff361ba9bb4778b508b2496c2fc10e3775a40b1de1ad # last changed: 2018-10-17 # by: ah file gpa/gpa-0.10.0.tar.bz2 chk 95dbabe75fa5c8dc47e3acf2df7a51cee096051e5a842b4c9b6d61e40a6177b1 # last changed: 2021-01-07 # by: ah file scute/scute-1.7.0.tar.bz2 chk 437fe758b27c243a5ee2535c6b065ea1d09f2c9a02d83567d2f934bb6395c249 # # 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 # # Boost # last changes: 2016-01-21 # by: ah # verified: Second source https://github.com/mxe/mxe/commit/fdd5b9f7aa8bf0e40c1f1f8119701af96e51457e server http://downloads.sourceforge.net/project/boost/boost/ name boost-1.60.0.tar.bz2 file 1.60.0/boost_1_60_0.tar.bz2 chk 686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b # Qt base # last changed: 2020-07-22 # by: ah # verified: HTTPS https://download.qt.io/official_releases/qt/5.10/5.15.0/submodules/qtbase-everywhere-src-5.15.0.tar.xz.sha256 server http://download.qt.io/official_releases/qt/ name qtbase-5.15.0.tar.xz file 5.15/5.15.0/submodules/qtbase-everywhere-src-5.15.0.tar.xz chk 9e7af10aece15fa9500369efde69cb220eee8ec3a6818afe01ce1e7d484824c5 # Qt Tools # last changed: 2020-07-22 # by: ah # verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.0/submodules/qttools-everywhere-src-5.15.0.tar.xz.sha256 name qttools-5.15.0.tar.xz file 5.15/5.15.0/submodules/qttools-everywhere-src-5.15.0.tar.xz chk ddbcb49aab3a2e3672582c6e2e7bec0058feff790f67472343c79e2895e0e437 # Qt Winextras # last changed: 2020-07-22 # by: ah # verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.0/submodules/qtwinextras-everywhere-src-5.15.0.tar.xz.sha256 name qtwinextras-5.15.0.tar.xz file 5.15/5.15.0/submodules/qtwinextras-everywhere-src-5.15.0.tar.xz chk d77f2cb2ce83bdbfd0a970bc8d7d11c96b2df16befc257d6594f79dfd92abff0 # Qt svg # last changed: 2020-07-22 # by: ah # verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.0/submodules/qtsvg-everywhere-src-5.15.0.tar.xz.sha256 name qtsvg-5.15.0.tar.xz file 5.15/5.15.0/submodules/qtsvg-everywhere-src-5.15.0.tar.xz chk ee4d287e2e205ca8c08921b9cbe0fc58bf46be080b5359ad4d7fbdee44aeee0d # Qt translations # last changed: 2020-07-22 # by: ah # verified: HTTPS https://download.qt.io/official_releases/qt/5.15/5.15.0/submodules/qttranslations-everywhere-src-5.15.0.tar.xz.sha256 name qttranslations-5.15.0.tar.xz file 5.15/5.15.0/submodules/qttranslations-everywhere-src-5.15.0.tar.xz chk 45c43268d9df50784d4d8ca345fce9288a1055fd074ac0ef508097f7aeba22fe # 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: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/extra-cmake-modules-5.77.0.tar.xz chk 42f071f628b192122894026de20097cb0b3de411cb41c6935b48eb86ce992a65 # kconfig # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kconfig-5.77.0.tar.xz chk 30e81a7d00cc862e9d07d0e6d0fa55b561641850b7aaffcf51d4b390f1eff981 # ki18n # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/ki18n-5.77.0.tar.xz chk b2e1b74dedc1a3af88f04c470922d1fafb892d5846ea91ad139d421070cff357 # kwidgetsaddons # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kwidgetsaddons-5.77.0.tar.xz chk c72094fdad6740280513ff27477003839f20555071817337d3bf5c95761d7ae4 # kcompletion # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kcompletion-5.77.0.tar.xz chk 2ed7c90a575de468fd025688e7aa566b30003f4e43b1d7ed0c5dacafa0abf3d4 # kwindowsystem # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kwindowsystem-5.77.0.tar.xz chk 064d31310a8568fb1900c19b955176e245d96f0b42061c15c20bc2e2a7ab4f82 # kcoreaddons # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kcoreaddons-5.77.0.tar.xz chk 238e4cc422a62a2c3cb12915dbb52ad1a04be2ed13f59bfe3d1959266f08471d # kcodecs # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kcodecs-5.77.0.tar.xz chk c1b34aac21f6ab21e91e0e11f620949574678146f4407c853516c0f456e81fc4 # kconfigwidgets # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kconfigwidgets-5.77.0.tar.xz chk 5f4a6897ef58992d38e820e8b0112069aec2ef0e7b943eb14265482c4fb22cd1 # kxmlgui # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kxmlgui-5.77.0.tar.xz chk ae6df2146464ea403d33e8b0e4b69579428bf76c1e13f5fffb8634a65da930f1 # kguiaddons # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kguiaddons-5.77.0.tar.xz chk df674a64142d494345daed77cb64ab5b27960ebeda94ae30287bf311acaef63c # kitemviews # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kitemviews-5.77.0.tar.xz chk 1013c09c47b87c51b21e6cfe5a6ed112ba43ab9b18b8d41fe7ffe2214faf1b23 # kitemmodels # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kitemmodels-5.77.0.tar.xz chk decc3f607a0b2e9e6d585188eb6664a2cf06646db50d4d60dce83d96a0456534 # kiconthemes # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kiconthemes-5.77.0.tar.xz chk 735834671bd32f26da075d25f4209faac04fcc6af2f4090f99d055a3a277dc79 # breeze-icons # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/breeze-icons-5.77.0.tar.xz chk 96ad021edd6999e632991bff286f13601b898dc623388e52e82b68b5ac0a0f82 # karchive # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/karchive-5.77.0.tar.xz chk 2239af811b9205d9f4486791f4b25ff5ea299b3873021a646e1c8b9d44c2be36 # kcrash # last changed: 2021-01-06 # by: ah # verified: PGP Signed by ./kde-release-key.gpg (created by gen-frameworks.sh) file 5.77/kcrash-5.77.0.tar.xz chk bda5567aca769590fbdd96d82d64ef6200350e3c88029d26c7a3603ce880a84e ##### End Paste ##### # KDE Applications # For older releases check here: server https://download.kde.org/Attic/applications # server http://download.kde.org/stable/applications/ # kmime # last changed: 2020-11-12 # by: ah # verified: PGP Sig F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87 file 19.08.3/src/kmime-19.08.3.tar.xz chk e659e1154fbc11db624f1b76bc1a8e5cf8c7f6731cef7b4ff6fad9ccf90580dd # Snapshots which contain unreleased fixes important for Gpg4win server http://files.intevation.de/projects/gpg4all #by ah #file scute/scute-1.6.0-beta187.tar.bz2 #chk 8d2a56dff6e6c12d628dd32075497326e8345c0096dec1280f7ab2c737410837 # by: ah # file pinentry/pinentry-1.1.1-beta44.tar.bz2 # chk c2091536687cd83569c9919d6d9fc8c3a53e74d8419320bcbb8b7dc36019c677 # by: ah file gpgme/gpgme-1.16.1-beta16.tar.bz2 chk 2aebf01c533a68372ce4b95ffaa6cd5144aa147c143f1125a947dff5d4dda6c9 # Libkleo # last changed: see package date. # by: ah # verified: Tarball created by ah. file libkleo/libkleo-202108261518.tar.gz chk aa5e5da428075f61a3bb62e8e0065efd8756cf535558c254d1de94e6efce1ff1 # KDE-L10n # last changed: see package date. # by: ah # verified: Tarball created by ah with script kde-l10n.sh file kde-l10n/kde-l10n-202106110943-bin.tar.xz chk 25f7fdcf28b099f4468a1b284e5b91d4bde6ad82341d8267b2258625a660bc4f file kde-l10n/kde-l10n-202106110943-src.tar.xz chk 2bbd748c5bd4ed6b9389ed9d05eeb9d0f543104ef916c09a1d89b1633632f2a4 # Gpg4win-tools package # last changed: see package date. # by: ah # verified: Tarball created by ah. file gpg4win-tools/gpg4win-tools-202104211124.tar.gz chk 79ea82ede46bbd02f70a64e4f003c6279e98cf4ad1e302eca753087c42fccdf3 # Kleopatra # last changed: see package date. # by: ah # verified: Tarball created by ah. file kleopatra/kleopatra-202108261520.tar.gz chk 4440c6992acbf05a7283e8fb62fbe878cb3f38799d2d5f0985c3a80e2245027b diff --git a/patches/glib-2.41.5/01-socket.patch b/patches/glib-2.41.5/01-socket.patch deleted file mode 100755 index c91c3cb8..00000000 --- a/patches/glib-2.41.5/01-socket.patch +++ /dev/null @@ -1,93 +0,0 @@ -#! /bin/sh -patch -p1 -l -f $* < $0 -exit $? - -Fix a couple of buglets in the I/O channel implementation. - - -diff -rup glib-2.20.0-orig/glib/giowin32.c glib-2.20.0/glib/giowin32.c ---- glib-2.20.0-orig/glib/giowin32.c 2009-03-13 05:09:59.000000000 +0100 -+++ glib-2.20.0/glib/giowin32.c 2009-04-08 15:24:59.000000000 +0200 -@@ -285,7 +285,7 @@ g_io_channel_win32_init (GIOWin32Channel - - channel->event_mask = 0; - channel->last_events = 0; -- channel->event = NULL; -+ channel->event = WSA_INVALID_EVENT; - channel->write_would_have_blocked = FALSE; - channel->ever_writable = FALSE; - } -@@ -1144,7 +1144,7 @@ g_io_win32_free (GIOChannel *channel) - g_free (emsg); - } - -- if (win32_channel->event) -+ if (win32_channel->event != WSA_INVALID_EVENT) - if (!WSACloseEvent (win32_channel->event)) - if (win32_channel->debug) - { -@@ -1595,7 +1595,7 @@ g_io_win32_sock_create_watch (GIOChannel - - watch->condition = condition; - -- if (win32_channel->event == 0) -+ if (win32_channel->event == WSA_INVALID_EVENT) - win32_channel->event = WSACreateEvent (); - - watch->pollfd.fd = (gintptr) win32_channel->event; -@@ -2161,7 +2161,54 @@ g_io_channel_win32_make_pollfd (GIOChann - break; - - case G_IO_WIN32_SOCKET: -- fd->fd = (gintptr) WSACreateEvent (); -+ if (win32_channel->event == WSA_INVALID_EVENT) -+ win32_channel->event = WSACreateEvent (); -+ fd->fd = (gintptr) win32_channel->event; -+ -+ if (fd->fd == (gintptr) WSA_INVALID_EVENT) -+ { -+ gchar *emsg = g_win32_error_message (GetLastError ()); -+ -+ g_error ("Error creating event: %s", emsg); -+ g_free (emsg); -+ } -+ else -+ { -+ int event_mask = 0; -+ -+ if (condition & G_IO_IN) -+ event_mask |= (FD_READ | FD_ACCEPT); -+ if (condition & G_IO_OUT) -+ event_mask |= (FD_WRITE | FD_CONNECT); -+ event_mask |= FD_CLOSE; -+ -+ ResetEvent ((WSAEVENT) fd->fd); -+ -+ if (win32_channel->debug) -+ g_print ("WSAEventSelect(%d,%p,{%s})", -+ win32_channel->fd, (HANDLE) fd->fd, -+ event_mask_to_string (event_mask)); -+ if (WSAEventSelect (win32_channel->fd, (HANDLE) fd->fd, -+ event_mask) == SOCKET_ERROR) -+ if (win32_channel->debug) -+ { -+ gchar *emsg = g_win32_error_message (WSAGetLastError ()); -+ -+ g_print (" failed: %s", emsg); -+ g_free (emsg); -+ } -+ if (win32_channel->debug) -+ g_print ("\n"); -+ -+ if ((event_mask & FD_WRITE) && -+ win32_channel->ever_writable && -+ !win32_channel->write_would_have_blocked) -+ { -+ if (win32_channel->debug) -+ g_print ("WSASetEvent(%p)\n", (WSAEVENT) fd->fd); -+ WSASetEvent ((WSAEVENT) fd->fd); -+ } -+ } - break; - - case G_IO_WIN32_WINDOWS_MESSAGES: diff --git a/patches/glib-2.41.5/02-formatsec.patch b/patches/glib-2.41.5/02-formatsec.patch deleted file mode 100755 index 7752cfd1..00000000 --- a/patches/glib-2.41.5/02-formatsec.patch +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh -patch -p0 -l -f $* < $0 -exit $? - ---- gio/gregistrysettingsbackend.c.orig 2017-05-02 12:29:41.949315510 +0200 -+++ gio/gregistrysettingsbackend.c 2017-05-02 12:30:04.273740051 +0200 -@@ -228,7 +228,7 @@ - if (result_code == ERROR_KEY_DELETED) - trace ("(%s)", win32_message); - else -- g_message (win32_message); -+ g_message ("%s", win32_message); - }; diff --git a/patches/glib/glib-1-fixes.patch b/patches/glib/glib-1-fixes.patch new file mode 100755 index 00000000..995b7e22 --- /dev/null +++ b/patches/glib/glib-1-fixes.patch @@ -0,0 +1,709 @@ +#! /bin/sh +patch -p1 -l -f $* < $0 +exit $? + +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mark Brand +Date: Thu, 23 Sep 2010 21:42:46 +0200 +Subject: [PATCH 01/10] fix tool paths + + +diff --git a/glib-2.0.pc.in b/glib-2.0.pc.in +index 1111111..2222222 100644 +--- a/glib-2.0.pc.in ++++ b/glib-2.0.pc.in +@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@ + libdir=@libdir@ + includedir=@includedir@ + +-glib_genmarshal=glib-genmarshal +-gobject_query=gobject-query +-glib_mkenums=glib-mkenums ++glib_genmarshal=@bindir@/glib-genmarshal ++gobject_query=@bindir@/gobject-query ++glib_mkenums=@bindir@/glib-mkenums + + Name: GLib + Description: C Utility Library + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans Petter Jansson +Date: Fri, 15 Jun 2012 15:25:01 +0200 +Subject: [PATCH 02/10] Avoid DllMain symbol conflict when linking statically + +Adjusted by Boris Nagaev on 29-Jan-2017 to fix +https://gist.github.com/starius/f4fc85939352cb50122ba29e0f5b140d +when updating to glib-2.50.2. + +diff --git a/gio/giomodule.c b/gio/giomodule.c +index 1111111..2222222 100644 +--- a/gio/giomodule.c ++++ b/gio/giomodule.c +@@ -928,14 +928,12 @@ extern GType g_cocoa_notification_backend_get_type (void); + + static HMODULE gio_dll = NULL; + +-#ifdef DLL_EXPORT +- +-BOOL WINAPI DllMain (HINSTANCE hinstDLL, ++BOOL WINAPI gio_DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved); + + BOOL WINAPI +-DllMain (HINSTANCE hinstDLL, ++gio_DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) + { +@@ -945,8 +943,6 @@ DllMain (HINSTANCE hinstDLL, + return TRUE; + } + +-#endif +- + void * + _g_io_win32_get_module (void) + { +diff --git a/glib/glib-init.c b/glib/glib-init.c +index 1111111..2222222 100644 +--- a/glib/glib-init.c ++++ b/glib/glib-init.c +@@ -245,14 +245,14 @@ glib_init (void) + + #if defined (G_OS_WIN32) + +-BOOL WINAPI DllMain (HINSTANCE hinstDLL, ++BOOL WINAPI glib_DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved); + + HMODULE glib_dll; + + BOOL WINAPI +-DllMain (HINSTANCE hinstDLL, ++glib_DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) + { +diff --git a/gobject/gtype.c b/gobject/gtype.c +index 1111111..2222222 100644 +--- a/gobject/gtype.c ++++ b/gobject/gtype.c +@@ -4450,7 +4450,7 @@ gobject_init (void) + _g_signal_init (); + } + +-#if defined (G_OS_WIN32) ++#if 0 + + BOOL WINAPI DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans Petter Jansson +Date: Fri, 15 Jun 2012 15:27:22 +0200 +Subject: [PATCH 03/10] Allow building without inotify support + + +diff --git a/configure.ac b/configure.ac +index 1111111..2222222 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1599,10 +1599,16 @@ dnl ***************************** + dnl ** Check for inotify (GIO) ** + dnl ***************************** + inotify_support=no ++ AC_ARG_ENABLE(inotify, ++ AC_HELP_STRING([--disable-inotify], ++ [build without inotify support])) ++ ++ if test "x$enable_inotify" != "xno"; then + AC_CHECK_HEADERS([sys/inotify.h], + [ + AC_CHECK_FUNCS(inotify_init1, [inotify_support=yes], [inotify_support=no]) + ]) ++fi + + AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"]) + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans Petter Jansson +Date: Fri, 15 Jun 2012 15:28:14 +0200 +Subject: [PATCH 04/10] Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF. + Backported from upstream + + +diff --git a/configure.ac b/configure.ac +index 1111111..2222222 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -511,6 +511,8 @@ LT_INIT([disable-static win32-dll]) + dnl when using libtool 2.x create libtool early, because it's used in configure + m4_ifdef([LT_OUTPUT], [LT_OUTPUT]) + ++# Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF ++AS_IF([false], [AC_CHECK_HEADER([stdint.h])]) + + AS_IF([test "$glib_native_win32" = "yes"], [ + if test x$enable_static = xyes -a x$enable_shared = xyes; then + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans Petter Jansson +Date: Fri, 15 Jun 2012 15:29:06 +0200 +Subject: [PATCH 05/10] Link with dnsapi + + +diff --git a/gio-2.0.pc.in b/gio-2.0.pc.in +index 1111111..2222222 100644 +--- a/gio-2.0.pc.in ++++ b/gio-2.0.pc.in +@@ -13,6 +13,6 @@ Description: glib I/O library + Version: @VERSION@ + Requires: glib-2.0 gobject-2.0 + Requires.private: gmodule-no-export-2.0 +-Libs: -L${libdir} -lgio-2.0 ++Libs: -L${libdir} -lgio-2.0 -ldnsapi -liphlpapi + Libs.private: @ZLIB_LIBS@ @NETWORK_LIBS@ @SELINUX_LIBS@ @COCOA_LIBS@ @CARBON_LIBS@ + Cflags: + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans Petter Jansson +Date: Fri, 15 Jun 2012 15:29:38 +0200 +Subject: [PATCH 06/10] Ensure globals are initialized even when DllMain is not + being run + + +diff --git a/glib/gmain.c b/glib/gmain.c +index 1111111..2222222 100644 +--- a/glib/gmain.c ++++ b/glib/gmain.c +@@ -2657,12 +2657,15 @@ g_get_real_time (void) + #if defined (G_OS_WIN32) + static ULONGLONG (*g_GetTickCount64) (void) = NULL; + static guint32 g_win32_tick_epoch = 0; ++static gboolean g_win32_clock_is_initialized; + + void + g_clock_win32_init (void) + { + HMODULE kernel32; + ++ g_win32_clock_is_initialized = TRUE; ++ + g_GetTickCount64 = NULL; + kernel32 = GetModuleHandle ("KERNEL32.DLL"); + if (kernel32 != NULL) +@@ -2721,6 +2724,9 @@ g_get_monotonic_time (void) + * timeBeginPeriod() to increase it as much as they want + */ + ++ if (!g_win32_clock_is_initialized) ++ g_clock_win32_init (); ++ + if (g_GetTickCount64 != NULL) + { + guint32 ticks_as_32bit; +diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c +index 1111111..2222222 100644 +--- a/glib/gthread-win32.c ++++ b/glib/gthread-win32.c +@@ -116,18 +116,28 @@ typedef struct + void (__stdcall * WakeConditionVariable) (gpointer cond); + } GThreadImplVtable; + ++/* Needed for static builds where DllMain initializer doesn't get called */ ++static gboolean g_threads_is_initialized; ++G_GNUC_INTERNAL void g_thread_win32_init (void); ++ + static GThreadImplVtable g_thread_impl_vtable; + + /* {{{1 GMutex */ + void + g_mutex_init (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeSRWLock (mutex); + } + + void + g_mutex_clear (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteSRWLock != NULL) + g_thread_impl_vtable.DeleteSRWLock (mutex); + } +@@ -135,18 +145,27 @@ g_mutex_clear (GMutex *mutex) + void + g_mutex_lock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockExclusive (mutex); + } + + gboolean + g_mutex_trylock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockExclusive (mutex); + } + + void + g_mutex_unlock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockExclusive (mutex); + } + +@@ -157,6 +176,9 @@ g_rec_mutex_impl_new (void) + { + CRITICAL_SECTION *cs; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + cs = g_slice_new (CRITICAL_SECTION); + InitializeCriticalSection (cs); + +@@ -167,6 +189,10 @@ static void + g_rec_mutex_impl_free (CRITICAL_SECTION *cs) + { + DeleteCriticalSection (cs); ++ ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_slice_free (CRITICAL_SECTION, cs); + } + +@@ -175,6 +201,9 @@ g_rec_mutex_get_impl (GRecMutex *mutex) + { + CRITICAL_SECTION *impl = mutex->p; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if G_UNLIKELY (mutex->p == NULL) + { + impl = g_rec_mutex_impl_new (); +@@ -189,30 +218,45 @@ g_rec_mutex_get_impl (GRecMutex *mutex) + void + g_rec_mutex_init (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + mutex->p = g_rec_mutex_impl_new (); + } + + void + g_rec_mutex_clear (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_rec_mutex_impl_free (mutex->p); + } + + void + g_rec_mutex_lock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + EnterCriticalSection (g_rec_mutex_get_impl (mutex)); + } + + void + g_rec_mutex_unlock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + LeaveCriticalSection (mutex->p); + } + + gboolean + g_rec_mutex_trylock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return TryEnterCriticalSection (g_rec_mutex_get_impl (mutex)); + } + +@@ -221,12 +265,18 @@ g_rec_mutex_trylock (GRecMutex *mutex) + void + g_rw_lock_init (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeSRWLock (lock); + } + + void + g_rw_lock_clear (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteSRWLock != NULL) + g_thread_impl_vtable.DeleteSRWLock (lock); + } +@@ -234,36 +284,54 @@ g_rw_lock_clear (GRWLock *lock) + void + g_rw_lock_writer_lock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockExclusive (lock); + } + + gboolean + g_rw_lock_writer_trylock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockExclusive (lock); + } + + void + g_rw_lock_writer_unlock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockExclusive (lock); + } + + void + g_rw_lock_reader_lock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockShared (lock); + } + + gboolean + g_rw_lock_reader_trylock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockShared (lock); + } + + void + g_rw_lock_reader_unlock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockShared (lock); + } + +@@ -271,12 +339,18 @@ g_rw_lock_reader_unlock (GRWLock *lock) + void + g_cond_init (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeConditionVariable (cond); + } + + void + g_cond_clear (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteConditionVariable) + g_thread_impl_vtable.DeleteConditionVariable (cond); + } +@@ -284,12 +358,18 @@ g_cond_clear (GCond *cond) + void + g_cond_signal (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.WakeConditionVariable (cond); + } + + void + g_cond_broadcast (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.WakeAllConditionVariable (cond); + } + +@@ -297,6 +377,9 @@ void + g_cond_wait (GCond *cond, + GMutex *entered_mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.SleepConditionVariableSRW (cond, entered_mutex, INFINITE, 0); + } + +@@ -307,6 +390,9 @@ g_cond_wait_until (GCond *cond, + { + gint64 span; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + span = end_time - g_get_monotonic_time (); + + if G_UNLIKELY (span < 0) +@@ -339,6 +425,9 @@ g_private_get_impl (GPrivate *key) + + if G_UNLIKELY (impl == 0) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + EnterCriticalSection (&g_private_lock); + impl = (DWORD) key->p; + if (impl == 0) +@@ -432,6 +521,9 @@ g_system_thread_free (GRealThread *thread) + { + GThreadWin32 *wt = (GThreadWin32 *) thread; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + win32_check_for_error (CloseHandle (wt->handle)); + g_slice_free (GThreadWin32, wt); + } +@@ -439,6 +531,9 @@ g_system_thread_free (GRealThread *thread) + void + g_system_thread_exit (void) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + _endthreadex (0); + } + +@@ -447,6 +542,9 @@ g_thread_win32_proxy (gpointer data) + { + GThreadWin32 *self = data; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + self->proxy (self); + + g_system_thread_exit (); +@@ -464,6 +562,9 @@ g_system_thread_new (GThreadFunc func, + GThreadWin32 *thread; + guint ignore; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + thread = g_slice_new0 (GThreadWin32); + thread->proxy = func; + +@@ -493,6 +594,9 @@ g_system_thread_wait (GRealThread *thread) + { + GThreadWin32 *wt = (GThreadWin32 *) thread; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + win32_check_for_error (WAIT_FAILED != WaitForSingleObject (wt->handle, INFINITE)); + } + +@@ -1041,6 +1145,8 @@ g_thread_lookup_native_funcs (void) + void + g_thread_win32_init (void) + { ++ g_threads_is_initialized = TRUE; ++ + if (!g_thread_lookup_native_funcs ()) + g_thread_xp_init (); + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gerardo Ballabio +Date: Sun, 16 Aug 2015 13:18:24 +0200 +Subject: [PATCH 07/10] Remove an annoying runtime warning + +that pops up when using GtkApplication in Gtk+ 3 programs. + +diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c +index 1111111..2222222 100644 +--- a/gio/gdbusaddress.c ++++ b/gio/gdbusaddress.c +@@ -1387,6 +1387,7 @@ __declspec(dllexport) void CALLBACK g_win32_run_session_bus (HWND hwnd, HINSTANC + __declspec(dllexport) void CALLBACK + g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow) + { ++ /* + GDBusDaemon *daemon; + GMainLoop *loop; + const char *address; +@@ -1418,6 +1419,7 @@ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow + + g_main_loop_unref (loop); + g_object_unref (daemon); ++ */ + } + + static gchar * + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: aquiles2k +Date: Wed, 6 Apr 2016 22:39:53 +0300 +Subject: [PATCH 08/10] fix error "won't overwrite defined macro" on OSX + +See https://github.com/mxe/mxe/issues/1281 + +diff --git a/m4macros/glib-gettext.m4 b/m4macros/glib-gettext.m4 +index 1111111..2222222 100644 +--- a/m4macros/glib-gettext.m4 ++++ b/m4macros/glib-gettext.m4 +@@ -36,8 +36,8 @@ dnl We go to great lengths to make sure that aclocal won't + dnl try to pull in the installed version of these macros + dnl when running aclocal in the glib directory. + dnl +-m4_copy([AC_DEFUN],[glib_DEFUN]) +-m4_copy([AC_REQUIRE],[glib_REQUIRE]) ++m4_copy_force([AC_DEFUN],[glib_DEFUN]) ++m4_copy_force([AC_REQUIRE],[glib_REQUIRE]) + dnl + dnl At the end, if we're not within glib, we'll define the public + dnl definitions in terms of our private definitions. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Theodore +Date: Mon, 26 Feb 2018 16:09:53 +1100 +Subject: [PATCH 09/10] darwin: disable g_cocoa_notification_backend + + +diff --git a/gio/Makefile.am b/gio/Makefile.am +index 1111111..2222222 100644 +--- a/gio/Makefile.am ++++ b/gio/Makefile.am +@@ -279,10 +279,6 @@ unix_sources = \ + + appinfo_sources += $(unix_appinfo_sources) + +-if OS_COCOA +-unix_sources += gcocoanotificationbackend.c +-endif +- + giounixincludedir=$(includedir)/gio-unix-2.0/gio + giounixinclude_HEADERS = \ + gdesktopappinfo.h \ +diff --git a/gio/giomodule.c b/gio/giomodule.c +index 1111111..2222222 100644 +--- a/gio/giomodule.c ++++ b/gio/giomodule.c +@@ -918,9 +918,6 @@ extern GType g_proxy_resolver_portal_get_type (void); + extern GType g_network_monitor_portal_get_type (void); + #endif + +-#ifdef HAVE_COCOA +-extern GType g_cocoa_notification_backend_get_type (void); +-#endif + + #ifdef G_PLATFORM_WIN32 + +@@ -1117,9 +1114,6 @@ _g_io_modules_ensure_loaded (void) + g_type_ensure (g_network_monitor_portal_get_type ()); + g_type_ensure (g_proxy_resolver_portal_get_type ()); + #endif +-#ifdef HAVE_COCOA +- g_type_ensure (g_cocoa_notification_backend_get_type ()); +-#endif + #ifdef G_OS_WIN32 + g_type_ensure (_g_winhttp_vfs_get_type ()); + #endif + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ernestas Kulik +Date: Tue, 29 Jan 2019 09:50:46 +0100 +Subject: [PATCH 10/10] gdbus: Avoid printing null strings + +This mostly affects the 2.56 branch, but, given that GCC 9 is being +stricter about passing null string pointers to printf-like functions, it +might make sense to proactively fix such calls. + +gdbusauth.c: In function '_g_dbus_auth_run_server': +gdbusauth.c:1302:11: error: '%s' directive argument is null +[-Werror=format-overflow=] + 1302 | debug_print ("SERVER: WaitingForBegin, read '%s'", + line); + | + +gdbusmessage.c: In function ‘g_dbus_message_to_blob’: +gdbusmessage.c:2730:30: error: ‘%s’ directive argument is null [-Werror=format-overflow=] + 2730 | tupled_signature_str = g_strdup_printf ("(%s)", signature_str); + | + +diff --git a/gio/gdbusauth.c b/gio/gdbusauth.c +index 1111111..2222222 100644 +--- a/gio/gdbusauth.c ++++ b/gio/gdbusauth.c +@@ -1295,9 +1295,9 @@ _g_dbus_auth_run_server (GDBusAuth *auth, + &line_length, + cancellable, + error); +- debug_print ("SERVER: WaitingForBegin, read '%s'", line); + if (line == NULL) + goto out; ++ debug_print ("SERVER: WaitingForBegin, read '%s'", line); + if (g_strcmp0 (line, "BEGIN") == 0) + { + /* YAY, done! */ +diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c +index 1111111..2222222 100644 +--- a/gio/gdbusmessage.c ++++ b/gio/gdbusmessage.c +@@ -2695,7 +2695,6 @@ g_dbus_message_to_blob (GDBusMessage *message, + if (message->body != NULL) + { + gchar *tupled_signature_str; +- tupled_signature_str = g_strdup_printf ("(%s)", signature_str); + if (signature == NULL) + { + g_set_error (error, +@@ -2703,10 +2702,10 @@ g_dbus_message_to_blob (GDBusMessage *message, + G_IO_ERROR_INVALID_ARGUMENT, + _("Message body has signature '%s' but there is no signature header"), + signature_str); +- g_free (tupled_signature_str); + goto out; + } +- else if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0) ++ tupled_signature_str = g_strdup_printf ("(%s)", signature_str); ++ if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0) + { + g_set_error (error, + G_IO_ERROR, diff --git a/patches/glib/glib-2-fixes.patch b/patches/glib/glib-2-fixes.patch new file mode 100755 index 00000000..6ddd4b5a --- /dev/null +++ b/patches/glib/glib-2-fixes.patch @@ -0,0 +1,28 @@ +#! /bin/sh +patch -p1 -l -f $* < $0 +exit $? + +See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1428 + +--- a/glib/gtypes.h 2016-10-22 07:21:52.000000000 +0200 ++++ b/glib/gtypes.h 2020-05-17 11:13:49.369639688 +0200 +@@ -522,7 +522,7 @@ + # else /* !GLIB_STATIC_COMPILATION */ + # ifdef GLIB_COMPILATION + # ifdef DLL_EXPORT +-# define GLIB_VAR __declspec(dllexport) ++# define GLIB_VAR extern __declspec(dllexport) + # else /* !DLL_EXPORT */ + # define GLIB_VAR extern + # endif /* !DLL_EXPORT */ +--- a/gobject/gparamspecs.h 2016-10-22 07:22:21.000000000 +0200 ++++ b/gobject/gparamspecs.h 2020-05-17 11:16:37.803281391 +0200 +@@ -1144,7 +1144,7 @@ + # else /* !GOBJECT_STATIC_COMPILATION */ + # ifdef GOBJECT_COMPILATION + # ifdef DLL_EXPORT +-# define GOBJECT_VAR __declspec(dllexport) ++# define GOBJECT_VAR extern __declspec(dllexport) + # else /* !DLL_EXPORT */ + # define GOBJECT_VAR extern + # endif /* !DLL_EXPORT */ diff --git a/src/Makefile.am b/src/Makefile.am index 2d4b8870..d3f6d0e5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,813 +1,814 @@ # Makefile.am - Installer for GnuPG 4 Windows Makefile. # Copyright (C) 2005, 2006, 2007, 2008, 2009 g10 Code GmbH # # This file is part of Gpg4win. # # Gpg4win is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # Gpg4win is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . EXTRA_DIST = pkg-config gpg4win.nsi gpg4win-src.nsi \ config.site config.nsi.in \ libiconv.def libintl.def loreley.mid \ gpg4win-splash.wav exdll.h g4wihelp.c desktopshellrun.cpp \ g4wihelp.nsi slideshow.cpp gpgwrap.c \ inst-sections.nsi installer.nsi installer-finish.nsi \ zlib.pc sha1sum.c mkportable.c \ mkportable-vanilla.h mkportable-full.h \ potomo Memento.nsh \ inst-gpg4win.nsi uninst-gpg4win.nsi \ inst-atk.nsi uninst-atk.nsi \ inst-expat.nsi uninst-expat.nsi \ inst-freetype.nsi uninst-freetype.nsi \ inst-fontconfig.nsi uninst-fontconfig.nsi \ inst-cairo.nsi uninst-cairo.nsi \ inst-gettext.nsi uninst-gettext.nsi \ inst-libffi.nsi uninst-libffi.nsi \ inst-glib.nsi uninst-glib.nsi \ inst-gnupg-w32.nsi uninst-gnupg-w32.nsi \ inst-gpa.nsi uninst-gpa.nsi \ inst-gpgme.nsi uninst-gpgme.nsi \ inst-paperkey.nsi uninst-paperkey.nsi \ inst-gpgol.nsi uninst-gpgol.nsi \ inst-gpgex.nsi uninst-gpgex.nsi \ inst-gdk-pixbuf.nsi uninst-gdk-pixbuf.nsi \ inst-gtk+.nsi uninst-gtk+.nsi \ inst-libassuan.nsi uninst-libassuan.nsi \ inst-libgpg-error.nsi uninst-libgpg-error.nsi \ inst-libiconv.nsi uninst-libiconv.nsi \ inst-libpng.nsi uninst-libpng.nsi \ inst-compendium.nsi uninst-compendium.nsi \ inst-man_advanced_de.nsi uninst-man_advanced_de.nsi \ inst-man_advanced_en.nsi uninst-man_advanced_en.nsi \ inst-man_novice_de.nsi uninst-man_novice_de.nsi \ inst-man_novice_en.nsi uninst-man_novice_en.nsi \ inst-pango.nsi uninst-pango.nsi \ inst-pinentry.nsi uninst-pinentry.nsi \ inst-pkgconfig.nsi uninst-pkgconfig.nsi \ inst-w32pth.nsi uninst-w32pth.nsi \ inst-zlib.nsi uninst-zlib.nsi \ inst-kconfig.nsi uninst-kconfig.nsi \ inst-kleopatra.nsi uninst-kleopatra.nsi \ inst-bzip2.nsi uninst-bzip2.nsi \ uninst-claws-mail.nsi uninst-claws-mail-cmds.nsi \ inst-qtbase.nsi uninst-qtbase.nsi \ inst-ki18n.nsi uninst-ki18n.nsi \ inst-kwidgetsaddons.nsi uninst-kwidgetsaddons.nsi \ inst-kcompletion.nsi uninst-kcompletion.nsi \ inst-kwindowsystem.nsi uninst-kwindowsystem.nsi \ inst-libkleo.nsi uninst-libkleo.nsi \ inst-kcoreaddons.nsi uninst-kcoreaddons.nsi \ inst-kcodecs.nsi uninst-kcodecs.nsi \ inst-kconfigwidgets.nsi uninst-kconfigwidgets.nsi \ inst-kxmlgui.nsi uninst-kxmlgui.nsi \ inst-kiconthemes.nsi uninst-kiconthemes.nsi \ inst-breeze-icons.nsi uninst-breeze-icons.nsi \ inst-karchive.nsi uninst-karchive.nsi \ inst-kcrash.nsi uninst-kcrash.nsi \ inst-kitemviews.nsi uninst-kitemviews.nsi \ inst-kitemmodels.nsi uninst-kitemmodels.nsi \ inst-kguiaddons.nsi uninst-kguiaddons.nsi \ inst-kmime.nsi uninst-kmime.nsi \ inst-kde-l10n.nsi uninst-kde-l10n.nsi \ inst-qtsvg.nsi uninst-qtsvg.nsi \ inst-qttools.nsi uninst-qttools.nsi \ inst-qttranslations.nsi uninst-qttranslations.nsi \ inst-qtwinextras.nsi uninst-qtwinextras.nsi \ inst-boost.nsi uninst-boost.nsi \ inst-scute.nsi uninst-scute.nsi \ inst-extra-cmake-modules.nsi uninst-extra-cmake-modules.nsi \ inst-gpg4win-tools.nsi uninst-gpg4win-tools.nsi \ inst-gpgme-browser.nsi \ inst-final.nsi index.theme \ inst-pcre.nsi uninst-pcre.nsi \ slideshow/slides.dat \ slideshow/slide1-gpgol.png \ slideshow/slide2-gpgex.png \ slideshow/slide3-kleopatra.png \ slideshow/slide4-summary.png \ file-ext.ico \ kdeglobals qtlogging.ini \ make-msi.pl WixUI_Gpg4win.wxs shield.ico gpg4win_readme_ll = en de ar es fr ru pt zh README_files = $(addsuffix .txt,$(addprefix README.,$(gpg4win_readme_ll))) gpg4win_howto_smime_ll = en de HOWTO_files = $(addsuffix .txt, \ $(addprefix HOWTO-SMIME.,$(gpg4win_howto_smime_ll))) foosum_exe = sha1sum.exe md5sum.exe sha256sum.exe mkportable.exe # Need to clean the dll because we bypassed automake. CLEANFILES = g4wihelp.dll desktopshellrun.o versioninfo.txt $(README_files) \ $(HOWTO_files) NEWS.tmp COMPONENTS-list.tmp \ license.blurb cdversioninfo.tmp slideshow.o \ $(foosum_exe) gpgwrap.exe # Supported source packages. gpg4win_spkgs = glib libffi gdk-pixbuf gtk+ \ libgpg-error gpgme gpgol gpgex libpng \ gpa opencdk \ pinentry libassuan pcre \ w32pth paperkey regex libiconv gettext scute gpg4win_qtpkgs = qtbase qttools qtwinextras qtsvg qttranslations # Source packages following the KDE pattern gpg4win_kdepkgs = kconfig kwidgetsaddons ki18n extra-cmake-modules \ kcompletion kwindowsystem kcoreaddons libkleo kcodecs \ kmime kconfigwidgets kxmlgui kguiaddons kitemviews \ kiconthemes kleopatra breeze-icons kitemmodels karchive \ gpg4win-tools kcrash # Supported source packages to build in an additional architecture gpg4win_expkgs = libgpg-error libassuan libiconv gettext w32pth gpgex gpgol \ gpgme # Some variables WINE = wine WINHOST = win10 WINLIGHT = c:/wix/light.exe # Extra options to configure for individual packages. # We can use $(idir) here for the installation prefix. gpg4win_pkg_libiconv_ex_configure = \ --enable-shared=no --enable-static=yes gpg4win_pkg_gettext_configure = \ --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ CPPFLAGS=-I$(idir)/include CFLAGS=-O2 LDFLAGS=-L$(idir)/lib gpg4win_pkg_scute_configure = \ LDFLAGS=-lws2_32 gpg4win_pkg_gettext_ex_configure = \ --with-lib-prefix=$(ex_idir) --with-libiconv-prefix=$(ex_idir) \ CPPFLAGS=-I$(ex_idir)/include CFLAGS=-O2 LDFLAGS=-L$(ex_idir)/lib # We only need gettext-runtime and there is sadly no top level # configure option for this gpg4win_pkg_gettext_make_dir = gettext-runtime gpg4win_pkg_gettext_make_dir_inst = gettext-runtime gpg4win_pkg_gettext_ex_make_dir = gettext-runtime gpg4win_pkg_gettext_ex_make_dir_inst = gettext-runtime gpg4win_pkg_glib_configure = \ --disable-modular-tests \ --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ + CFLAGS=-DGLIB_COMPILATION \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib CCC=$(host)-g++ gpg4win_pkg_glib_extracflags = -march=i486 gpg4win_pkg_gdk_pixbuf_configure = \ --with-lib-prefix=$(idir) --with-libiconv-prefix=$(idir) \ --with-included-loaders=yes \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib gpg4win_pkg_gtk__configure = \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib --disable-cups gpg4win_pkg_pcre_configure = \ --enable-utf \ --enable-unicode-properties \ --enable-cpp \ --disable-pcregrep-libz \ --disable-pcregrep-libbz2 \ --disable-pcretest-libreadline # The GnuPG package provides man pages which we have to convert. # We also create the MO files here. define gpg4win_pkg_gnupg2_post_install (for i in gpg2 gpgv2 gpgsm gpg-agent scdaemon gpg-connect-agent gpgconf ; \ do man -Tlatin1 -l $$$${pkgidir}/share/man/man1/$$$${i}.1 | \ sed `printf "s/_\b//g;s/\b.//g"` | \ sed -e 's/$$$$/\r/' > $$$${pkgidir}/share/man/man1/$$$${i}.man ; \ done ; \ for i in `$(tsdir)/src/potomo --get-linguas $$$${pkgsdir}/po` ; do \ $(MKDIR_P) $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES || true; \ rm $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/gnupg2.mo 2>/dev/null \ || true; \ $(tsdir)/src/potomo $$$${pkgsdir}/po/$$$${i}.po \ $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/gnupg2.mo; \ done) endef # Paperkey comes with a man pages which we have to convert. define gpg4win_pkg_paperkey_post_install (for i in paperkey ; \ do man -Tlatin1 -l $$$${pkgidir}/share/man/man1/$$$${i}.1 | \ sed `printf "s/_\b//g;s/\b.//g"` | \ sed -e 's/$$$$/\r/' > $$$${pkgidir}/share/man/man1/$$$${i}.man ; \ done) endef # Build the reference manual. define gpg4win_pkg_gpgol_post_install ( cd $$$${pkgbdir}/doc; make pdf ) endef # We would like to use --with-libiconv-prefix and # --with-libintl-prefix, but these don't work with the cheesy # non-"libfoo.la" versions of iconv and gettext that we are using. #gpg4win_pkg_libgpg_error_configure = \ # --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) gpg4win_pkg_libgpg_error_configure = --silent \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib \ --enable-static gpg4win_pkg_libgpg_error_ex_configure = --silent \ --enable-static # We convert the PO files to UTF-8. FIXME: This should be done in # libgpg-error proper. define gpg4win_pkg_libgpg_error_post_install (for i in `$(tsdir)/src/potomo --get-linguas $$$${pkgsdir}/po` ; do \ rm $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/libgpg-error.mo \ 2>/dev/null|| true; \ $(tsdir)/src/potomo $$$${pkgsdir}/po/$$$${i}.po \ $$$${pkgidir}/share/locale/$$$${i}/LC_MESSAGES/libgpg-error.mo; \ done) endef gpg4win_pkg_libassuan_configure = --silent --enable-static gpg4win_pkg_libassuan_ex_configure = --silent --enable-static gpg4win_pkg_libpng_configure = HAVE_SOLARIS_LD_FALSE=yes CPPFLAGS=\"-I$(idir)/include -DPNG_BUILD_DLL\" LDFLAGS=\"-L$(idir)/lib\" LIBPNG_DEFINES=\"-DPNG_BUILD_DLL\" # We would like to use --with-libiconv-prefix and # --with-libintl-prefix, but these don't work with the cheesy # non-"libfoo.la" versions of iconv and gettext that we are using. gpg4win_pkg_pinentry_configure = \ --enable-pinentry-qt \ $(pinentry_enable_disable) \ --disable-pinentry-fltk \ --enable-pinentry-gtk2 \ CPPFLAGS=-I$(idir)/include LDFLAGS=-L$(idir)/lib # --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) # The LDFLAGS is needed for -lintl for glib. The QT4 variables work # around the lack of cross compilation support in qt-dev. gpg4win_pkg_gpgme_configure = --silent \ --with-gpg-error-prefix=$(idir) --enable-static \ `test -n "@HAVE_PKG_GLIB@" && echo "--enable-w32-glib"` \ CFLAGS=-I$(idir)/include/glib-2.0/ \ LDFLAGS=-L$(idir)/lib \ --enable-languages=qt,cpp \ --disable-gpg-test \ --disable-gpgsm-test gpg4win_pkg_gpgme_ex_configure = --silent \ --with-gpg-error-prefix=$(ex_idir) --enable-static \ --with-libassuan-prefix=$(ex_idir) \ LDFLAGS=-L$(ex_idir)/lib \ --enable-languages=cpp \ --disable-gpg-test \ --disable-gpgsm-test gpg4win_pkg_gpa_configure = --silent \ --with-libiconv-prefix=$(idir) --with-libintl-prefix=$(idir) \ --with-gpgme-prefix=$(idir) --with-zlib=$(idir) \ --with-libassuan-prefix=$(idir) --with-gpg-error-prefix=$(idir) gpg4win_pkg_gpgol_configure = --silent \ --with-gpgme-prefix=$(idir) --with-gpg-error-prefix=$(idir) \ --with-libassuan-prefix=$(idir) --enable-mime-send gpg4win_pkg_gpgol_ex_configure = --silent \ --with-gpgme-prefix=$(ex_idir) --with-gpg-error-prefix=$(ex_idir) \ --with-libassuan-prefix=$(ex_idir) --enable-mime-send gpg4win_pkg_gpgex_configure = --silent \ --with-gpg-error-prefix=$(idir) \ --with-libassuan-prefix=$(idir) gpg4win_pkg_gpgex_ex_configure = --silent \ --with-gpg-error-prefix=$(ex_idir) \ --with-libassuan-prefix=$(ex_idir) gpg4win_pkg_paperkey_configure = --silent gpg4win_pkg_ki18n_configure = -DBUILD_WITH_QML=OFF gpg4win_pkg_kconfig_configure = -DKCONFIG_USE_DBUS=OFF gpg4win_pkg_qtbase_configure = ../$$$${pkg_version}/configure -opensource \ -confirm-license \ -xplatform win32-g++ \ -device-option CROSS_COMPILE=$(host)- \ -device-option PKG_CONFIG='$(host)-pkg-config' \ -no-use-gold-linker \ -release \ -shared \ -prefix $$$${pkgidir} \ -I '$(idir)/include' \ -L '$(idir)/lib' \ -no-icu \ -opengl desktop \ -no-glib \ -accessibility \ -nomake examples \ -nomake tests \ -no-sql-mysql \ -no-sql-sqlite \ -no-sql-odbc \ -no-sql-psql \ -no-sql-tds \ -qt-zlib \ -qt-libpng \ -qt-libjpeg \ -qt-freetype \ -qt-pcre \ -no-openssl \ -no-dbus \ -v # qtbase # invoke qmake with removed debug options as a workaround for # https://bugreports.qt-project.org/browse/QTBUG-30898 gpg4win_pkg_qtbase_make_args = \ QMAKE='$$$${pkgbdir}/bin/qmake' # Qmake still writes debug names in pkgconfig files. define gpg4win_pkg_qtbase_post_install (cd $$$${pkgbdir}; \ make install;) endef gpg4win_pkg_qttools_configure = \ "$(idir)/bin/qmake" ../$$$${pkg_version} define gpg4win_pkg_qttools_post_install (cd $$$${pkgbdir}; \ mkdir -p $$$${pkgidir}; \ cp -r bin lib include $$$${pkgidir}) endef # Qmake does not support setting the installation path. # really https://bugreports.qt.io/browse/QTBUG-12341 gpg4win_pkg_qtwinextras_configure = \ "$(idir)/bin/qmake" ../$$$${pkg_version} define gpg4win_pkg_qtwinextras_post_install (cd $$$${pkgbdir}; \ mkdir -p $$$${pkgidir}/bin; \ cp -r lib include $$$${pkgidir}; \ mv $$$${pkgidir}/lib/*.dll $$$${pkgidir}/bin;) endef gpg4win_pkg_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 gpg4win_pkg_qtsvg_post_install (cd $$$${pkgbdir}; \ mkdir -p $$$${pkgidir}; \ cp -r lib include plugins $$$${pkgidir}; \ mkdir -p $$$${pkgidir}/bin; \ mv $$$${pkgidir}/lib/*.dll $$$${pkgidir}/bin; \ echo "[Paths]" > $$$${pkgidir}/bin/qt.conf; \ echo "Prefix = .." >> $$$${pkgidir}/bin/qt.conf) endef gpg4win_pkg_qttranslations_configure = \ "$(idir)/bin/qmake" ../$$$${pkg_version} define gpg4win_pkg_qttranslations_post_install ( rm -f $$$${pkgidir}/qttranslations; \ mkdir -p $$$${pkgidir}; \ cp -r $$$${pkgbdir}/translations $$$${pkgidir}/qttranslations;) endef gpg4win_pkg_kleopatra_configure = \ -DFORCE_DISABLE_KCMUTILS=ON \ -DDISABLE_KWATCHGNUPG=ON \ -DRELEASE_SERVICE_VERSION=Gpg4win-$(VERSION) gpg4win_pkg_kxmlgui_configure = \ -DFORCE_DISABLE_KGLOBALACCEL=ON \ -DFORCE_DISABLE_DBUS=ON \ -DXMLGUI_COMPILER_VERSION="i686-w64-mingw32-gcc" \ -DXMLGUI_DISTRIBUTION_TEXT="Gpg4win" gpg4win_pkg_breeze_icons_configure = \ -DBINARY_ICONS_RESOURCE=OFF # Supported make-only source packages. gpg4win_mpkgs = bzip2 zlib # Extra options for the make invocations for individual packages. # make_flags is used for building, make_args_inst is used for installing. gpg4win_pkg_bzip2_make_args = \ CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) gpg4win_pkg_bzip2_make_args_inst = \ PREFIX=$$$${pkgidir} CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) gpg4win_pkg_zlib_make_args = \ -fwin32/Makefile.gcc PREFIX=$(host)- IMPLIB=libz.dll.a gpg4win_pkg_zlib_make_args_inst = -fwin32/Makefile.gcc install \ BINARY_PATH=$$$${pkgidir}/bin INCLUDE_PATH=$$$${pkgidir}/include \ LIBRARY_PATH=$$$${pkgidir}/lib SHARED_MODE=1 IMPLIB=libz.dll.a # Supported binary packages. gpg4win_bpkgs = pkgconfig pango expat freetype fontconfig \ cairo atk gnupg-w32 kde-l10n # libiconv needs some special magic to generate a usable import # library. # define gpg4win_pkg_libiconv_post_install # (cp $(srcdir)/libiconv.def $$$${pkgidir}/lib; \ # cd $$$${pkgidir}/lib; \ # $(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def) # endef # libiconv needs some special magic to generate a usable import # library. Note that we include some internal symbols that are not # actually part of the DLL. They are needed by the AM_GNU_GETTEXT # configure test, but not used otherwise. # define gpg4win_pkg_gettext_post_install # (cp $(srcdir)/libintl.def $$$${pkgidir}/lib; \ # cd $$$${pkgidir}/lib; \ # $(DLLTOOL) --output-lib libintl.dll.a --def libintl.def) # endef # Zlib needs some special magic to generate a libtool file. # We also install the pc file here. define gpg4win_pkg_zlib_post_install (mkdir $$$${pkgidir}/lib/pkgconfig || true; \ cp $(abs_srcdir)/zlib.pc $$$${pkgidir}/lib/pkgconfig/; \ cd $$$${pkgidir}; \ echo "# Generated by libtool" > lib/libz.la \ echo "dlname='../bin/zlib1.dll'" >> lib/libz.la; \ echo "library_names='libz.dll.a'" >> lib/libz.la; \ echo "old_library='libz.a'" >> lib/libz.la; \ echo "dependency_libs=''" >> lib/libz.la; \ echo "current=1" >> lib/libz.la; \ echo "age=2" >> lib/libz.la; \ echo "revision=5" >> lib/libz.la; \ echo "installed=yes" >> lib/libz.la; \ echo "shouldnotlink=no" >> lib/libz.la; \ echo "dlopen=''" >> lib/libz.la; \ echo "dlpreopen=''" >> lib/libz.la; \ echo "libdir=\"$$$${pkgidir}/lib\"" >> lib/libz.la) endef # We need to fix the prefix in the various packages using pkgconfig, # or we can't substitute it properly in our pkg-config wrapper. # glib also installs an empty charset.alias for mingw which creates # a stow conflict with the one from iconv. define gpg4win_pkg_glib_post_install (cd $$$${pkgidir}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`; \ rm $$$${pkgidir}/lib/charset.alias) endef define gpg4win_pkg_libffi_post_install (cd $$$${pkgidir}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_gdk_pixbuf_post_install (cd $$$${pkgidir}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_atk_post_install (cd $$$${pkgidir_dev}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_freetype_post_install (cd $$$${pkgidir_dev}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_fontconfig_post_install (cd $$$${pkgidir_dev}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_cairo_post_install (cd $$$${pkgidir_dev}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_pango_post_install (cd $$$${pkgidir_dev}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef define gpg4win_pkg_libpng_post_install (cd $$$${pkgidir}; \ perl -pi -e 's/^prefix=.*$$$$/prefix=\/usr/' `find . -name \*.pc`) endef # We don't use khelpcenter in kleopatra so remove the help links and # point to the correct common folder # TODO Needs to be fixed with current doc #define gpg4win_pkg_kleopatra_post_install # (for i in de en ; do \ # (cd $$$${pkgidir}/share/doc/HTML/$$$${i}; \ # perl -pi -e 's/help:\///g' `find . -name \*.html`; \ # perl -pi -e 's@common/@../../common/@g' `find . -name \*.html`); \ # done) #endef #define gpg4win_pkg_libiconv_post_install #(cp $(srcdir)/libiconv.def $$$${pkgidir}/lib; \ #cd $$$${pkgidir}/lib; \ #$(DLLTOOL) --output-lib libiconv.dll.a --def libiconv.def) #endef # Supported internal packages. Internal packages do not require any # special support. Thus, this variable is actually unused, and no # rules are added in gpg4win.mk. gpg4win_ipkgs = man_novice_de man_advanced_de man_novice_en man_advanced_en \ compendium # Default to same version. VSD_VERSION=$(VERSION) # Include installer targets for customized packages -include gnupg-vsd/custom.mk # Signging host/key setup for codesigning -include gnupg-vsd/sign.mk stamps/stamp-msi-base: playground/install/gpg4win-$(VERSION).wixlib \ shield.ico Makefile.am \ $(top_srcdir)/doc/logo/gpg4win-msi*.bmp \ $(top_srcdir)/po/gpg4win-de.wxl \ $(top_srcdir)/po/gpg4win-en.wxl ssh $(WINHOST) "mkdir AppData\\Local\\Temp\\gpg4win-$(VERSION)" || true scp $(idir)/gpg4win-$(VERSION).wixlib $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp $(top_srcdir)/packages/gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); scp $(top_srcdir)/src/shield.ico $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp $(top_srcdir)/doc/logo/gpg4win-msi-header_install-493x58.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/header.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-493x312.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/dialog.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-493x312.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/dialog.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-info-32x32.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/info.bmp scp $(top_srcdir)/doc/logo/gpg4win-msi-wizard_install-exclamation-32x32.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/exclamation.bmp scp $(top_srcdir)/po/gpg4win-en.wxl $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp $(top_srcdir)/po/gpg4win-de.wxl $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) scp WixUI_Gpg4win.wxs $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION) touch stamps/stamp-msi-base # Now do the bunch of the work. This is a bunch of dirty magic to # integrate our special makefile into automake, while not actually # including it (make should include it). This is in turn necessary # because automake can't deal with the elegant magic in the actual # Makefile. define INCLUDE_BY_MAKE include $(1) endef $(eval $(call INCLUDE_BY_MAKE,gpg4win.mk)) clean-local: clean-gpg4win common_nsi = inst-sections.nsi installer.nsi installer-finish.nsi \ $(addsuffix .nsi,$(addprefix inst-,$(gpg4win_build_list))) \ $(addsuffix .nsi,$(addprefix uninst-,$(gpg4win_build_list))) # Sign additional files as per signing setup # This is a bit of a hack. stamps/stamp-additional-signedfiles: (set -e;\ cd "$(idir)"; \ for f in $(AUTHENTICODE_FILES); do \ if [ -f "$$f" ]; then \ $(call AUTHENTICODE_sign,"$$f","$$f");\ else \ echo "speedo: WARNING: file '$$f' not available for signing";\ fi;\ done \ ) touch stamps/stamp-additional-signedfiles playground/install/gpg4win-$(VERSION).wixlib: \ gpg4win-$(VERSION).wxs stamps/stamp-final \ $(foosum_exe) \ $(README_files) $(HOWTO_files) \ license.blurb versioninfo.txt \ WixUI_Gpg4win.wxs \ stamps/stamp-additional-signedfiles ($(call SETVARS_WINE_TWO_DOLLAR,); \ echo "Gpg4win" > $(srcdir)/playground/VERSION; \ echo "$(VERSION)" >> $(srcdir)/playground/VERSION; \ (ln -s $(idir) $$WINEINST; \ ln -s $(ex_idir) $$WINEINSTEX; \ ln -s `readlink -f $(top_srcdir)` $$WINESRC; \ $(WINE) $$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$MSI_VERSION \ -out k:\\gpg4win-$(VERSION).wixobj \ -pedantic -wx i:\\src\\gpg4win-$(VERSION).wxs \ -arch x64 || exit 1;\ $(WINE) $$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$MSI_VERSION \ -out k:\\gpg4win-ui.wixobj \ -arch x64 \ -pedantic -wx i:\\src\\WixUI_Gpg4win.wxs || exit 1;\ \ $(WINE) $$WIXPREFIX2/lit.exe \ -out k:\\gpg4win-$(VERSION).wixlib \ -bf \ -wx \ -pedantic \ k:\\gpg4win-$(VERSION).wixobj k:\\gpg4win-ui.wixobj || exit 1; \ \ ) || ERR=1; (rm $$WINEINST; rm $$WINESRC; rm $$WINEINSTEX); \ if [ -n "$$ERR" ]; then \ exit 1; \ fi) playground/install/gpg4win-$(VERSION)-x86.wixlib: \ gpg4win-$(VERSION).wxs stamps/stamp-final \ $(foosum_exe) \ $(README_files) $(HOWTO_files) \ license.blurb versioninfo.txt \ WixUI_Gpg4win.wxs \ stamps/stamp-additional-signedfiles ($(call SETVARS_WINE_TWO_DOLLAR,); \ echo "Gpg4win" > $(srcdir)/playground/VERSION; \ echo "$(VERSION)" >> $(srcdir)/playground/VERSION; \ (ln -s $(idir) $$WINEINST; \ ln -s $(ex_idir) $$WINEINSTEX; \ ln -s `readlink -f $(top_srcdir)` $$WINESRC; \ $(WINE) $$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$MSI_VERSION \ -arch x86 \ -out k:\\gpg4win-$(VERSION)-x86.wixobj \ -pedantic -wx i:\\src\\gpg4win-$(VERSION).wxs || exit 1;\ $(WINE) $$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$MSI_VERSION \ -arch x86 \ -out k:\\gpg4win-ui-x86.wixobj \ -pedantic -wx i:\\src\\WixUI_Gpg4win.wxs || exit 1;\ \ $(WINE) $$WIXPREFIX2/lit.exe \ -out k:\\gpg4win-$(VERSION)-x86.wixlib \ -bf \ -wx \ -pedantic \ k:\\gpg4win-$(VERSION)-x86.wixobj k:\\gpg4win-ui-x86.wixobj || exit 1; \ \ ) || ERR=1; (rm $$WINEINST; rm $$WINESRC; rm $$WINEINSTEX); \ if [ -n "$$ERR" ]; then \ exit 1; \ fi) gpg4win-$(VERSION).wxs: gpg4win.nsi $(common_nsi) stamps/stamp-final \ $(foosum_exe) gpgwrap.exe \ $(README_files) $(HOWTO_files) \ versioninfo.txt make-msi.pl \ $(addsuffix /VERSION.sig,$(addprefix gnupg-vsd/,$(msi_targets))) perl make-msi.pl --guids $(srcdir)/make-msi.guids \ --manifest gpg4win-$(VERSION).files \ --version $(VSD_VERSION) \ -DBUILD_DIR=. -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(srcdir)/gpg4win.nsi > $@ # Prepare the versioninfo file. The pipeline extracts the last # occurrence of a package with the same name, sorts the entries and # writes the file with DOS line endings. This helps to avoid # duplicate entries in case one package has been rebuild (which is # common when developing a new version). versioninfo.txt: $(SHA1SUM) $(pkg_files) versioninfo.tmp set -e; \ ( while read a b; do echo "$$a $$(basename $$b)"; \ done < versioninfo.tmp \ | sort -k2 -sf | tac | uniq -f1 ; \ echo '=========== SHA-1 checksum ============= == package ==' \ ) | tac | awk '{printf "%s\r\n", $$0}' > versioninfo.txt -rm versioninfo.tmp NEWS.tmp : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(de\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(en\)/," *"); print }' \ <$(top_srcdir)/NEWS >NEWS.tmp NEWS.de : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(en\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(de\)/,"-"); print }' \ <$(top_srcdir)/NEWS >NEWS.de; \ sed -i 's/^ / /' NEWS.de NEWS.en : $(top_srcdir)/NEWS awk '/^#/ {next} /^\(de\)/ {skip=1;next} /^[^[:space:]]/ {skip=0} \ !skip { sub(/^\(en\)/,"-"); print }' \ <$(top_srcdir)/NEWS >NEWS.en; \ sed -i 's/^ / /' NEWS.en COMPONENTS-list.tmp : $(top_srcdir)/NEWS awk '/^~~~~~~~~~~~/ { ok++; next} ok==1 {print " "$$0}' \ < $(top_srcdir)/NEWS > COMPONENTS-list.tmp # For some nut-crazy reason someone thought it would be a great idea # if makensis changed to the directory of the source file at startup. # So we have to pull a couple of strings to correct this. installers/gpg4win-$(VERSION).exe: gpg4win.nsi $(common_nsi) stamps/stamp-final \ g4wihelp.dll gpgwrap.exe \ $(foosum_exe) \ $(README_files) $(HOWTO_files) \ license.blurb versioninfo.txt $(MAKENSIS) -V3 -DBUILD_DIR=`pwd` -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(EXTRA_MAKENSIS_FLAGS) $(srcdir)/gpg4win.nsi && \ mv gpg4win-$(VERSION).exe installers/gpg4win-$(VERSION).exe stamps/stamp-dist-self: versioninfo.txt (set -e; cd ..; make dist-bzip2) touch stamps/stamp-dist-self installers/gpg4win-src-$(VERSION).exe: gpg4win-src.nsi $(common_nsii) \ stamps/stamp-final \ stamps/stamp-dist-self \ license.blurb $(MAKENSIS) -V3 -DBUILD_DIR=`pwd` -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(EXTRA_MAKENSIS_FLAGS) $(srcdir)/gpg4win-src.nsi && \ mv gpg4win-src-$(VERSION).exe installers/gpg4win-src-$(VERSION).exe license.blurb: $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3 cat $(top_srcdir)/doc/license-page $(top_srcdir)/doc/GPLv3 >$@ g4wihelp.dll: slideshow.cpp desktopshellrun.cpp g4wihelp.c exdll.h $(CC) -static-libgcc -I. -O2 -c -o desktopshellrun.o $(srcdir)/desktopshellrun.cpp $(CC) -static-libgcc -I. -O2 -c -o slideshow.o $(srcdir)/slideshow.cpp $(CC) -static-libgcc -I. -shared -O2 -o g4wihelp.dll $(srcdir)/g4wihelp.c \ desktopshellrun.o slideshow.o -lwinmm -lgdi32 -luserenv -lshell32 \ -lole32 -loleaut32 -lshlwapi -lmsimg32 $(STRIP) g4wihelp.dll gpgwrap.exe: gpgwrap.c $(CC) -I. -I.. -DHAVE_CONFIG_H -O2 -Wl,-subsystem,windows -o $@ $^ $(STRIP) $@ sha1sum.exe: sha1sum.c $(CC) -O2 -o $@ $^ $(STRIP) $@ md5sum.exe: sha1sum.c $(CC) -DBUILD_MD5SUM -O2 -o $@ $^ $(STRIP) $@ sha256sum.exe: sha1sum.c $(CC) -DBUILD_SHA256SUM -O2 -o $@ $^ $(STRIP) $@ mkportable.exe: mkportable.c \ mkportable-vanilla.h mkportable-full.h $(CC) -O2 -o $@ $(srcdir)/mkportable.c $(STRIP) $@ all_full = installers/gpg4win-$(VERSION).exe all-local: $(all_full) $(all_src) @echo "###################################################" @echo " Gpg4win $(VERSION) successfully build!" @echo " Installers can be found under src/installers" @echo "###################################################" clean-local: rm -f installers/gpg4win-$(VERSION).exe \ installers/GnuPG-VS-Desktop-$(VERSION).msi diff --git a/src/gpg4win.mk.in b/src/gpg4win.mk.in index 042d04e6..5d2a8215 100644 --- a/src/gpg4win.mk.in +++ b/src/gpg4win.mk.in @@ -1,1108 +1,1108 @@ # gpg4win.m4.in - Installer for GnuPG 4 Windows Makefile. -*- makefile -*- # Copyright (C) 2005, 2009 g10 Code GmbH # # This file is part of GPG4Win. # # GPG4Win is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # GPG4Win is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # No servicable parts below this line :) # These paths must be absolute, as we switch directories pretty often. root := $(shell pwd)/playground bdir := $(root)/build idir := $(root)/install ipdir := $(root)/install/pkgs tsdir := $(shell pwd)/${top_srcdir} pdir := $(shell pwd)/${top_srcdir}/patches ex_idir := $(root)/install-ex ex_ipdir := $(root)/install-ex/pkgs # We collect the names of all pkg files used. pkg_files = # The playground area is our scratch area, where we unpack, build and # install the packages. stamps/stamp-directories: $(MKDIR) stamps $(MKDIR) playground $(MKDIR) -p installers $(MKDIR) $(bdir) $(MKDIR) $(idir) $(MKDIR) $(ipdir) $(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_idir)) $(if $GPGEX_ADD_HOST, $(MKDIR) $(ex_ipdir)) touch $(bdir)/versioninfo.txt touch stamps/stamp-directories # Frob the name $1 by converting all '-' and '+' characters to '_'. define FROB_macro $(subst +,_,$(subst -,_,$(1))) endef # Get the variable $(1) (which may contain '-' and '+' characters). define GETVAR $($(call FROB_macro,$(1))) endef # Set a couple of common variables. define SETVARS set -e; \ pkg="$(call GETVAR,gpg4win_pkg_$(1))"; \ pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \ pkgsdir="$(bdir)/$$$${pkg_version}"; \ pkgbdir="$(bdir)/$$$${pkg_version}-build"; \ pkgpdir="$(pdir)/$$$${pkg_version}"; \ pkgpbdir="$(pdir)/$(1)"; \ pkgidir="$(ipdir)/$$$${pkg_version}"; \ pkg_dev="$(call GETVAR,gpg4win_pkg_$(1)_dev)"; \ pkg_version_dev="$(1)-dev-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \ pkgidir_dev="$(ipdir)/$$$${pkg_version_dev}"; \ pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_configure)"; \ pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_extracflags)"; \ pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_make_args)"; \ pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_args_inst)";\ pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)"; \ pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_make_dir)"; \ export PKG_CONFIG="$(tsdir)/src/pkg-config"; \ export PKG_CONFIG_PATH="$(idir)/lib/pkgconfig"; \ export PKG_CONFIG_LIBDIR=""; \ export PATH="$(idir)/bin:$${PATH}"; \ export SYSROOT="$(idir)"; \ export CONFIG_SITE="$(tsdir)/src/config.site" endef # Set variables for building in an additional architecture define SETVARS_EX set -e; \ pkg="$(call GETVAR,gpg4win_pkg_$(1))"; \ pkg_version="$(1)-$(call GETVAR,gpg4win_pkg_$(1)_version)"; \ pkgsdir="$(bdir)/$$$${pkg_version}"; \ pkgbdir="$(bdir)/$$$${pkg_version}-ex-build"; \ pkgpdir="$(pdir)/$$$${pkg_version}"; \ pkgpbdir="$(pdir)/$(1)"; \ pkgidir="$(ex_ipdir)/$$$${pkg_version}"; \ pkgidir_dev="$(ex_ipdir)/$$$${pkg_version_dev}"; \ pkgcfg="$(call GETVAR,gpg4win_pkg_$(1)_ex_configure)"; \ pkgextracflags="$(call GETVAR,gpg4win_pkg_$(1)_ex_extracflags)"; \ pkgmkargs="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args)"; \ pkgmkargs_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_args_inst)"; \ pkgmkdir="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)"; \ pkgmkdir_inst="$(call GETVAR,gpg4win_pkg_$(1)_ex_make_dir)"; \ export PKG_CONFIG="$(tsdir)/src/pkg-config"; \ export PKG_CONFIG_PATH="$(ex_idir)/lib/pkgconfig"; \ export PKG_CONFIG_LIBDIR=""; \ export PATH="$(ex_idir)/bin:$${PATH}"; \ export SYSROOT="$(ex_idir)" endef define SETVARS_WINE set -e; \ if [ -z "$$$$(which $(WINE))" ]; then \ echo "ERROR: For the msi-package wine needs to be installed."; \ exit 1; \ fi; \ if [ -z "$(WIXPREFIX)" ]; then \ if [ -d `readlink -f ~/w32root/wixtools` ]; then \ WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \ echo "Using $$$$WIXPREFIX2 as WIXPREFIX"; \ else \ echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \ exit 1; \ fi; \ else \ WIXPREFIX2="$(WIXPREFIX)"; \ fi; \ if [ -z "$$$$WINEPREFIX" ]; then \ WINEPREFIX="$$$$HOME/.wine"; \ if [ ! -e "$$$$WINEPREFIX/dosdevices" ]; then \ echo "ERROR: No wine prefix found under $$WINEPREFIX"; \ exit 1; \ fi; \ fi; \ WINEINST=$$$$WINEPREFIX/dosdevices/k:; \ WINESRC=$$$$WINEPREFIX/dosdevices/i:; \ WINEINSTEX=$$$$WINEPREFIX/dosdevices/j:; \ if [ -e "$$$$WINEINST" ]; then \ echo "ERROR: $$$$WINEINST already exists. Please remove."; \ exit 1; \ fi; \ if [ -e "$$$$WINESRC" ]; then \ echo "ERROR: $$$$WINESRC already exists. Please remove."; \ exit 1; \ fi; \ if [ -e "$$$$WINEINSTEX" ]; then \ echo "ERROR: $$$$WINEINSTEX already exists. Please remove."; \ exit 1; \ fi; \ MSI_VERSION=$$$$(echo $(VSD_VERSION)) endef # Same as above define SETVARS_WINE_TWO_DOLLAR set -e; \ if [ -z "$$(which $(WINE))" ]; then \ echo "ERROR: For the msi-package wine needs to be installed."; \ exit 1; \ fi; \ if [ -z "$(WIXPREFIX)" ]; then \ if [ -d `readlink -f ~/w32root/wixtools` ]; then \ WIXPREFIX2=`readlink -f ~/w32root/wixtools`; \ echo "Using $$WIXPREFIX2 as WIXPREFIX"; \ else \ echo "ERROR: You must set WIXPREFIX to an installation of wixtools."; \ exit 1; \ fi; \ else \ WIXPREFIX2="$(WIXPREFIX)"; \ fi; \ if [ -z "$$WINEPREFIX" ]; then \ WINEPREFIX="$$HOME/.wine"; \ if [ ! -e "$$WINEPREFIX/dosdevices" ]; then \ echo "ERROR: No wine prefix found under $$WINEPREFIX"; \ exit 1; \ fi; \ fi; \ WINEINST=$$WINEPREFIX/dosdevices/k:; \ WINESRC=$$WINEPREFIX/dosdevices/i:; \ WINEINSTEX=$$WINEPREFIX/dosdevices/j:; \ if [ -e "$$WINEINST" ]; then \ echo "ERROR: $$WINEINST already exists. Please remove."; \ exit 1; \ fi; \ if [ -e "$$WINESRC" ]; then \ echo "ERROR: $$WINESRC already exists. Please remove."; \ exit 1; \ fi; \ if [ -e "$$WINEINSTEX" ]; then \ echo "ERROR: $$WINEINSTEX already exists. Please remove."; \ exit 1; \ fi; \ MSI_VERSION=$$(echo $(VSD_VERSION)) endef # Support macro. Unpack the archive $(1). define DEFLATE_macro rm -rf $$$${pkgsdir}; \ case "$(1)" in \ */qtbase*.*.tar.xz) \ $(TAR) -xJ --transform='s,^qtbase-everywhere-src,qtbase,' -f "$(1)" ;; \ */qttools*.*.tar.xz) \ $(TAR) -xJ --transform='s,^qttools-everywhere-src,qttools,' -f "$(1)" ;; \ */qtwinextras*.*.tar.xz) \ $(TAR) -xJ --transform='s,^qtwinextras-everywhere-src,qtwinextras,' -f "$(1)" ;; \ */qtsvg*.*.tar.xz) \ $(TAR) -xJ --transform='s,^qtsvg-everywhere-src,qtsvg,' -f "$(1)" ;; \ */qttranslations*.*.tar.xz) \ $(TAR) -xJ --transform='s,^qttranslations-everywhere-src,qttranslations,' -f "$(1)" ;; \ */boost*.*.tar.bz2) \ $(TAR) -xj --transform='s,^boost_1_60_0,boost-1.60.0,' -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 # Support macro. Strip all exe files below $(1) using STRIP_EX. define STRIP_EX_macro if test -z '$(DEBUG)'; then \ (cd $(1); \ for f in `find . -name \*.exe -o -name \*.dll`; do \ echo Calling $(STRIP_EX) "$$$${pkg_version}/$$$${f}"; \ $(STRIP_EX) "$$$${f}"; done); \ fi endef define GETDEPS $(addprefix stamps/stamp-final-, $(call GETVAR,gpg4win_pkg_$(1)_deps)) endef define GETDEPS_EX $(addprefix stamps/stamp-final-ex-, $(call GETVAR,gpg4win_pkg_$(1)_ex_deps)) endef # Template for source packages to build for an additional host define EXPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-ex-00-unpack: stamps/stamp-$(1)-00-unpack $(call GETDEPS_EX,$(1)) touch stamps/stamp-$(1)-ex-00-unpack stamps/stamp-$(1)-ex-01-patch: stamps/stamp-$(1)-ex-00-unpack stamps/stamp-$(1)-01-patch touch stamps/stamp-$(1)-ex-01-patch stamps/stamp-$(1)-ex-02-configure: stamps/stamp-$(1)-ex-01-patch ($(call SETVARS_EX,$(1)); \ mkdir "$$$${pkgbdir}"; \ cd "$$$${pkgbdir}"; \ eval "../$$$${pkg_version}/configure" \ --prefix="$$$${pkgidir}" \ --host=$(GPGEX_ADD_HOST) \ --build=$(build) \ - $$$${pkgcfg} CFLAGS=\"-mms-bitfields $$$${pkgextracflags}\";\ + $$$${pkgcfg} CFLAGS=\"-mms-bitfields -fcommon $$$${pkgextracflags}\";\ shopt -s nullglob; \ for pfile in "$$$${pkgpbdir}"/*.postcfg \ "$$$${pkgpdir}"/*.postcfg ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done; \ for pfile in "$$$${pkgpbdir}"/*.postcfg-build \ "$$$${pkgpdir}"/*.postcfg-build ; do \ (cd "$$$${pkgbdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-ex-02-configure stamps/stamp-$(1)-ex-03-make: stamps/stamp-$(1)-ex-02-configure ($(call SETVARS_EX,$(1)); \ cd "$$$${pkgbdir}"; \ test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs} \ ) touch stamps/stamp-$(1)-ex-03-make # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. stamps/stamp-$(1)-ex-04-install: stamps/stamp-$(1)-ex-03-make ($(call SETVARS_EX,$(1)); \ cd "$$$${pkgbdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \ $(call STRIP_EX_macro,"$$$${pkgidir}"); \ rm -f "$$$${pkgidir}/share/info/dir"; \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_ex_post_install)) touch stamps/stamp-$(1)-ex-04-install stamps/stamp-$(1)-ex-05-stow: stamps/stamp-$(1)-ex-04-install ($(call SETVARS_EX,$(1)); \ cd $(ex_ipdir); \ $(STOW) -t `readlink -f $(ex_idir)` "$$$${pkg_version}") touch stamps/stamp-$(1)-ex-05-stow stamps/stamp-final-ex-$(1): stamps/stamp-$(1)-ex-05-stow touch stamps/stamp-final-ex-$(1) .PHONY : clean-ex-$(1) clean-ex-$(1): ($(call SETVARS_EX,$(1)); \ (cd $(ex_ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}") rm -f stamps/stamp-final-ex-$(1) stamps/stamp-$(1)-ex-* endef define EXPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call EXPKG_template_,$1)) endef # Template for source packages. define SPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-00-unpack: stamps/stamp-directories $(call GETDEPS,$(1)) (cd $(bdir); \ $(call SETVARS,$(1)); \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-unpack stamps/stamp-$(1)-01-patch: stamps/stamp-$(1)-00-unpack (shopt -s nullglob; \ $(call SETVARS,$(1)); \ for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-01-patch stamps/stamp-$(1)-02-configure: stamps/stamp-$(1)-01-patch ($(call SETVARS,$(1)); \ mkdir "$$$${pkgbdir}"; \ cd "$$$${pkgbdir}"; \ eval "../$$$${pkg_version}/configure" \ --prefix="$$$${pkgidir}" \ --host=$(host) \ --build=$(build) \ - $$$${pkgcfg} CFLAGS=\"-mms-bitfields $$$${pkgextracflags}\";\ + $$$${pkgcfg} CFLAGS=\"-mms-bitfields -fcommon $$$${pkgextracflags}\";\ shopt -s nullglob; \ for pfile in "$$$${pkgpbdir}"/*.postcfg \ "$$$${pkgpdir}"/*.postcfg ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done; \ for pfile in "$$$${pkgpbdir}"/*.postcfg-build \ "$$$${pkgpdir}"/*.postcfg-build ; do \ (cd "$$$${pkgbdir}"; "$$$${pfile}") \ done;) && \ touch stamps/stamp-$(1)-02-configure stamps/stamp-$(1)-03-make: stamps/stamp-$(1)-02-configure ($(call SETVARS,$(1)); \ cd "$$$${pkgbdir}"; \ test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs}) touch stamps/stamp-$(1)-03-make # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. stamps/stamp-$(1)-04-install: stamps/stamp-$(1)-03-make ($(call SETVARS,$(1)); \ cd "$$$${pkgbdir}"; \ cd "$$$${pkgmkdir_inst}"; \ $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \ $(call STRIP_macro,"$$$${pkgidir}"); \ rm -f "$$$${pkgidir}/share/info/dir"; \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) touch stamps/stamp-$(1)-04-install stamps/stamp-$(1)-05-stow: stamps/stamp-$(1)-04-install ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-05-stow stamps/stamp-final-$(1): stamps/stamp-$(1)-05-stow touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ (cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}") rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef define SPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call SPKG_template_,$1)) endef # Template for source packages using only make and no build # directory. define MPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-00-unpack: stamps/stamp-directories $(call GETDEPS,$(1)) (cd $(bdir); \ $(call SETVARS,$(1)); \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-unpack stamps/stamp-$(1)-01-patch: stamps/stamp-$(1)-00-unpack (shopt -s nullglob; \ $(call SETVARS,$(1)); \ for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-01-patch stamps/stamp-$(1)-03-make: stamps/stamp-$(1)-01-patch ($(call SETVARS,$(1)); \ cd "$$$${pkgsdir}"; \ test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs}) touch stamps/stamp-$(1)-03-make stamps/stamp-$(1)-04-install: stamps/stamp-$(1)-03-make ($(call SETVARS,$(1)); \ cd "$$$${pkgsdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \ $(call STRIP_macro,"$$$${pkgidir}"); \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) touch stamps/stamp-$(1)-04-install stamps/stamp-$(1)-05-stow: stamps/stamp-$(1)-04-install ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-05-stow stamps/stamp-final-$(1): stamps/stamp-$(1)-05-stow touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ (cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}") rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef define MPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call MPKG_template_,$1)) endef # Template for binary packages. define BPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) pkg_files += $(call GETVAR,gpg4win_pkg_$(1)_dev) stamps/stamp-$(1)-00-install: stamps/stamp-directories $(call GETDEPS,$(1)) ($(call SETVARS,$(1)); \ $(MKDIR) "$$$${pkgidir}"; \ cd $$$${pkgidir}; \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-install # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. stamps/stamp-$(1)-01-install-dev: stamps/stamp-$(1)-00-install ($(call SETVARS,$(1)); \ $(MKDIR) "$$$${pkgidir_dev}"; \ (cd $$$${pkgidir_dev}; \ $(call DEFLATE_macro,$$$${pkg_dev})); \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) touch stamps/stamp-$(1)-01-install-dev stamps/stamp-$(1)-02-stow: stamps/stamp-$(1)-01-install-dev ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-02-stow stamps/stamp-$(1)-03-stow-dev: stamps/stamp-$(1)-02-stow ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version_dev}") touch stamps/stamp-$(1)-03-stow-dev stamps/stamp-final-$(1): stamps/stamp-$(1)-03-stow-dev touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ $(STOW) -D "$$$${pkg_version_dev}"; \ rm -fR "$$$${pkg_version}" "$$$${pkg_version_dev}")) rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef define BPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call BPKG_template_,$1)) endef # Template for qt packages. define QTPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-00-unpack: stamps/stamp-directories $(call GETDEPS,$(1)) (cd $(bdir); \ $(call SETVARS,$(1)); \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-unpack stamps/stamp-$(1)-01-patch: stamps/stamp-$(1)-00-unpack (shopt -s nullglob; \ $(call SETVARS,$(1)); \ for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-01-patch stamps/stamp-$(1)-02-configure: stamps/stamp-$(1)-01-patch ($(call SETVARS,$(1)); \ mkdir "$$$${pkgbdir}"; \ cd "$$$${pkgbdir}"; \ $$$${pkgcfg}) && \ touch stamps/stamp-$(1)-02-configure stamps/stamp-$(1)-03-make: stamps/stamp-$(1)-02-configure ($(call SETVARS,$(1)); \ cd "$$$${pkgbdir}"; \ test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs}) touch stamps/stamp-$(1)-03-make # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. stamps/stamp-$(1)-04-install: stamps/stamp-$(1)-03-make ($(call SETVARS,$(1)); \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) touch stamps/stamp-$(1)-04-install stamps/stamp-$(1)-05-stow: stamps/stamp-$(1)-04-install ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-05-stow stamps/stamp-final-$(1): stamps/stamp-$(1)-05-stow touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ (cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}") rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef define QTPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call QTPKG_template_,$1)) endef # Template for internal packages. define IPKG_template stamps/stamp-final-$(1): stamps/stamp-directories $(call GETDEPS,$(1)) touch stamps/stamp-final-$(1) endef # Template for README files # (The final awk command converts the file endings). define README_template README.$(1).txt : versioninfo.txt NEWS.tmp $(top_srcdir)/doc/README.$(1).txt \ COMPONENTS-list.tmp $(top_srcdir)/doc/beta-warning.txt sed -e '/^;.*/d;/!VERSIONINFO!/{r versioninfo.txt' -e 'd;}' \ -e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \ -e '/!NEWSFILE!/{r NEWS.tmp' -e 'd;}' \ -e '/!COMPONENTS!/{r COMPONENTS-list.tmp' -e 'd;}' \ -e '/!PKG-COPYRIGHT!/{r $(top_srcdir)/doc/pkg-copyright.txt' -e 'd;}' \ -e 's,!VERSION!,$(VERSION),g' \ -e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \ < $(top_srcdir)/doc/README.$(1).txt \ | (if echo "$(VERSION)" | egrep 'svn|rc|beta|git' >/dev/null; then \ sed -e '/!BETA-WARNING!/{r $(top_srcdir)/doc/beta-warning.txt' \ -e 'd;}'; else sed -e 's,!BETA-WARNING!,,g'; fi) \ | awk '{printf "%s\r\n", $$$$0}' >README.$(1).txt endef define HOWTO_template HOWTO-$(1).$(2).txt : $(top_srcdir)/doc/HOWTO-$(1).$(2).txt sed -e '/^;.*/d' \ -e 's,!VERSION!,$(VERSION),g' \ -e 's,!BUILD_ISODATE!,$(BUILD_ISODATE),g' \ < $(top_srcdir)/doc/HOWTO-$(1).$(2).txt \ | awk '{printf "%s\r\n", $$$$0}' > HOWTO-$(1).$(2).txt endef # Special Template for boost. define BOOST_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-00-unpack: stamps/stamp-directories $(call GETDEPS,$(1)) (cd $(bdir); \ $(call SETVARS,$(1)); \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-unpack stamps/stamp-$(1)-01-patch: stamps/stamp-$(1)-00-unpack (shopt -s nullglob; \ $(call SETVARS,$(1)); \ for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-01-patch stamps/stamp-$(1)-02-build: stamps/stamp-$(1)-01-patch ($(call SETVARS,$(1)); \ cd $$$${pkgsdir}/tools/build/; \ ./bootstrap.sh; \ cd $$$${pkgsdir}; \ echo "using gcc : mxe : $(host)-g++ : $(host)-windres $(host)-ar $(host)-ranlib ;" > "user-config.jam"; \ ./tools/build/b2 \ -a \ -q \ '$(GPG4WIN_PARALLEL)' \ --ignore-site-config \ --user-config=user-config.jam \ abi=ms \ address-model=32 \ architecture=x86 \ binary-format=pe \ link=shared \ target-os=windows \ threadapi=win32 \ threading=multi \ variant=release \ toolset=gcc-mxe \ cxxflags=-std=gnu++98 \ --layout=tagged \ --disable-icu \ --without-mpi \ --without-python \ --prefix=$$$${pkgidir} \ --exec-prefix=$$$${pkgidir}/bin \ --libdir=$$$${pkgidir}/lib \ --includedir=$$$${pkgidir}/include \ -sEXPAT_INCLUDE='$(idir)/include' \ -sEXPAT_LIBPATH='$(idir)/lib' \ -sBZIP2_INCLUDE='$(idir)/include' \ -sBZIP2_LIBPATH='$(idir)/lib' \ install) && \ touch stamps/stamp-$(1)-02-build stamps/stamp-$(1)-03-stow: stamps/stamp-$(1)-02-build ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-03-stow stamps/stamp-final-$(1): stamps/stamp-$(1)-03-stow touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ (cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}") rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef # Template for source packages of KDE software define KDEPKG_template_ pkg_files += $(call GETVAR,gpg4win_pkg_$(1)) stamps/stamp-$(1)-00-unpack: stamps/stamp-directories $(call GETDEPS,$(1)) (cd $(bdir); \ $(call SETVARS,$(1)); \ $(call DEFLATE_macro,$$$${pkg})) touch stamps/stamp-$(1)-00-unpack stamps/stamp-$(1)-01-patch: stamps/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; \ sed -i 's/set(LIBKLEO_VERSION.*)/set(LIBKLEO_VERSION "5.4.40")/' CMakeLists.txt; \ sed -i 's/set(QT_REQUIRED_VERSION.*)/set(QT_REQUIRED_VERSION "5.10.0")/' CMakeLists.txt; \ sed -i 's/set(GPGME_REQUIRED_VERSION.*)/set(GPGME_REQUIRED_VERSION "1.10.0")/' CMakeLists.txt; \ for pfile in "$$$${pkgpbdir}"/*.patch "$$$${pkgpdir}"/*.patch ; do \ (cd "$$$${pkgsdir}"; "$$$${pfile}") \ done) touch stamps/stamp-$(1)-01-patch stamps/stamp-$(1)-02-configure: stamps/stamp-$(1)-01-patch ($(call SETVARS,$(1)); \ mkdir "$$$${pkgbdir}"; \ cd "$$$${pkgbdir}"; \ cmake \ -DCMAKE_INSTALL_PREFIX="$$$${pkgidir}" \ -DCMAKE_PREFIX_PATH="$$$${pkgidir}" \ -DCMAKE_TOOLCHAIN_FILE=$(abs_top_srcdir)/src/toolchain.cmake \ -DKDE_INSTALL_DATADIR="$$$${pkgidir}/share" \ -DBUILD_TESTING=False \ $$$${pkgcfg} $$$${pkgextracflags} "../$$$${pkg_version}") && \ touch stamps/stamp-$(1)-02-configure stamps/stamp-$(1)-03-make: stamps/stamp-$(1)-02-configure ($(call SETVARS,$(1)); \ cd "$$$${pkgbdir}"; \ test -n "$$$${pkgmkdir}" && cd "$$$${pkgmkdir}"; \ $(MAKE) $(AM_MAKEFLAGS) $(GPG4WIN_PARALLEL) $$$${pkgmkargs}) touch stamps/stamp-$(1)-03-make # Note that post_install must come last because it may be empty and # "; ;" is a syntax error. stamps/stamp-$(1)-04-install: stamps/stamp-$(1)-03-make ($(call SETVARS,$(1)); \ cd "$$$${pkgbdir}"; \ cd "$$$${pkgmkdir_inst}"; \ $(MAKE) $(AM_MAKEFLAGS) $$$${pkgmkargs_inst} install; \ $(call STRIP_macro,"$$$${pkgidir}"); \ $(call gpg4win_pkg_$(call FROB_macro,$(1))_post_install)) touch stamps/stamp-$(1)-04-install stamps/stamp-$(1)-05-stow: stamps/stamp-$(1)-04-install ($(call SETVARS,$(1)); \ cd $(ipdir); \ $(STOW) "$$$${pkg_version}") touch stamps/stamp-$(1)-05-stow stamps/stamp-final-$(1): stamps/stamp-$(1)-05-stow touch stamps/stamp-final-$(1) .PHONY : clean-$(1) clean-$(1): ($(call SETVARS,$(1)); \ (cd $(ipdir) && \ ($(STOW) -D "$$$${pkg_version}"; \ rm -fR "$$$${pkg_version}")); \ rm -fR "$$$${pkgsdir}" "$$$${pkgbdir}") rm -f stamps/stamp-final-$(1) stamps/stamp-$(1)-* endef define KDEPKG_template $(if $(filter-out no, $(call GETVAR,gpg4win_pkg_$(1))), $(call KDEPKG_template_,$1)) endef # Sign the file $1 and save the result as $2 define AUTHENTICODE_sign set -e;\ if [ -n "$(AUTHENTICODE_SIGNHOST)" ]; then \ echo "speedo: Signing via host $(AUTHENTICODE_SIGNHOST)";\ scp $(1) "$(AUTHENTICODE_SIGNHOST):a.exe" ;\ ssh "$(AUTHENTICODE_SIGNHOST)" $(AUTHENTICODE_TOOL) sign \ /a /n '"g10 Code GmbH"' \ /tr 'http://rfc3161timestamp.globalsign.com/advanced' /td sha256 \ /d '"GnuPG VS-Desktop"' \ /fd sha256 /du https://gnupg.com a.exe; \ scp "$(AUTHENTICODE_SIGNHOST):a.exe" $(2);\ echo "signed file is '$(2)'" ;\ else \ echo "speedo: Signing using key $(AUTHENTICODE_KEY)";\ osslsigncode sign -certs $(AUTHENTICODE_CERTS) \ -pkcs12 $(AUTHENTICODE_KEY) -askpass \ -ts "http://timestamp.globalsign.com/scripts/timstamp.dll" \ -h sha256 -n GnuPG -i https://gnupg.org \ -in $(1) -out $(2) ;\ fi endef define MSI_template .PHONY : $(1)-package $(1)-package: installers/GnuPG-VS-Desktop-$(VERSION)-$(1).msi playground/install/$(1)-x86.wixlib: gnupg-vsd/$(1)/$(1).wxs ($(call SETVARS_WINE,); \ ( \ ln -s $(idir) $$$$WINEINST; \ ln -s $(ex_idir) $$$$WINEINSTEX; \ ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \ $(WINE) $$$$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$$$MSI_VERSION \ -arch x86 \ -out k:\\$(1)-$(VERSION)-x86.wixobj \ -pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\ $(WINE) $$$$WIXPREFIX2/lit.exe \ -out k:\\$(1)-x86.wixlib \ -bf \ -wx \ -pedantic \ k:\\$(1)-$(VERSION)-x86.wixobj || exit 1; \ \ ) || ERR=1; \ (rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \ if [ -n "$$$$ERR" ]; then \ exit 1; \ fi \ ) playground/install/$(1).wixlib: gnupg-vsd/$(1)/$(1).wxs ($(call SETVARS_WINE,); \ ( \ ln -s $(idir) $$$$WINEINST; \ ln -s $(ex_idir) $$$$WINEINSTEX; \ ln -s `readlink -f $(top_srcdir)` $$$$WINESRC; \ $(WINE) $$$$WIXPREFIX2/candle.exe \ -dInstDir=k: \ -dInstDirEx=j: \ -dSrcDir=i:\\src \ -dVersion=$$$$MSI_VERSION \ -out k:\\$(1)-$(VERSION).wixobj \ -arch x64 \ -pedantic -wx i:\\src\\gnupg-vsd\\$(1)\\$(1).wxs || exit 1;\ $(WINE) $$$$WIXPREFIX2/lit.exe \ -out k:\\$(1).wixlib \ -bf \ -wx \ -pedantic \ k:\\$(1)-$(VERSION).wixobj || exit 1; \ \ ) || ERR=1; \ (rm $$$$WINEINST; rm $$$$WINESRC; rm $$$$WINEINSTEX); \ if [ -n "$$$$ERR" ]; then \ exit 1; \ fi \ ) # This is generated by make-msi.pl gnupg-vsd/$(1)/$(1).wxs: gnupg-vsd/$(1)/VERSION.sig make-msi.pl gpg4win-$(VERSION).wxs perl make-msi.pl --guids $(srcdir)/make-msi.guids \ --manifest gpg4win-$(VERSION).files \ --version $(VSD_VERSION) \ -DBUILD_DIR=. -DTOP_SRCDIR=$(top_srcdir) \ -DSRCDIR=$(srcdir) $(srcdir)/gpg4win.nsi > /dev/null gnupg-vsd/$(1)/VERSION.sig: gnupg-vsd/$(1)/VERSION echo "----------SIGNING----------" echo "using key: $(msi_signkey)" cat gnupg-vsd/$(1)/VERSION gpg --yes -o gnupg-vsd/$(1)/VERSION.sig -bau $(msi_signkey) gnupg-vsd/$(1)/VERSION gnupg-vsd/$(1)/VERSION: gnupg-vsd/custom.mk echo "$(call GETVAR,msi_target_$(1)_VERSION)" > gnupg-vsd/$(1)/VERSION echo "$(call GETVAR,msi_target_$(1)_DESC)" >> gnupg-vsd/$(1)/VERSION echo "$(call GETVAR,msi_target_$(1)_DESC_SHORT)" >> gnupg-vsd/$(1)/VERSION gnupg-vsd/$(1)/announcement.txt: gnupg-vsd/custom.mk gnupg-vsd/announcement.de.in gnupg-vsd/announcement.en.in cat gnupg-vsd/$(call GETVAR,msi_target_$(1)_announcement) | \ sed 's/VSD_VERSION/$(VSD_VERSION)/' | \ sed 's@GNUPG_VSD_CUSTOMER_LINK@https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi@' | \ sed 's@GNUPG_VSD_SOURCE_LINK@https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2@' > gnupg-vsd/$(1)/announcement.txt installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi: stamps/stamp-msi-base playground/install/$(1).wixlib \ gnupg-vsd/$(1)/license.rtf scp gnupg-vsd/$(1)/license.rtf \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ scp playground/install/$(1).wixlib \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \ -spdb \ -ext WixUIExtension \ -out GnuPG-VS-Desktop-$(VERSION)-$(1).msi \ $(call GETVAR,msi_target_$(1)_l10n) \ -dcl:high \ -v -pedantic \ \ gpg4win-$(VERSION).wixlib \ gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \ $(1).wixlib"; \ scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/GnuPG-VS-Desktop-$(VERSION)-$(1).msi \ installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi; installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1)-x86.msi: stamps/stamp-msi-base playground/install/$(1)-x86.wixlib \ gnupg-vsd/$(1)/license.rtf \ playground/install/gpg4win-$(VERSION)-x86.wixlib scp gnupg-vsd/$(1)/license.rtf \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ scp playground/install/gpg4win-$(VERSION)-x86.wixlib \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ scp playground/install/$(1)-x86.wixlib \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ scp $(call GETVAR,msi_target_$(1)_branding)/*.bmp \ $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION); \ ssh $(WINHOST) "cd AppData/Local/Temp/gpg4win-$(VERSION) && $(WINLIGHT) \ -spdb \ -ext WixUIExtension \ -out GnuPG-VS-Desktop-$(VERSION)-$(1)-x86.msi \ $(call GETVAR,msi_target_$(1)_l10n) \ -dcl:high \ -v -pedantic \ \ gpg4win-$(VERSION)-x86.wixlib \ gnupg-msi-$(gpg4win_pkg_gnupg_msi_version)-bin.wixlib \ $(1)-x86.wixlib"; \ scp $(WINHOST):AppData/Local/Temp/gpg4win-$(VERSION)/GnuPG-VS-Desktop-$(VERSION)-$(1)-x86.msi \ installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1)-x86.msi; signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi: installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi mkdir -p signed_installers $(call AUTHENTICODE_sign,"installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi","signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi");\ stamps/stamp-$(1)-upload: signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi (cd signed_installers; sha256sum GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi > \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.sha256; \ if [ -f "../gnupg-vsd/$(1)/customer-enc-key.asc" ]; then \ echo "Encrypting installer"; \ gpg --yes -o GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg -seu $(msi_signkey) \ -f "../gnupg-vsd/$(1)/customer-enc-key.asc" \ -f "../gnupg-vsd/general-enc-key.asc" \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi;\ sha256sum GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg > \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg.sha256; \ scp GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg.sha256 \ $(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \ echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.gpg" \ > ../stamps/stamp-$(1)-upload; \ else \ gpg --yes -o GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.sig -bu $(msi_signkey) \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi; \ scp GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.sha256 \ GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.sig \ $(VSD_PUBLISH_HOST)/$(call GETVAR,msi_target_$(1)_directory); \ ssh `echo $(VSD_PUBLISH_HOST) | cut -d ":" -f 1` \ "cd `echo $(VSD_PUBLISH_HOST) | cut -d ":" -f 2`/$(call GETVAR,msi_target_$(1)_directory) && rm -f GnuPG-VS-Desktop.msi && \ ln -s gnupg-vs-desktop-$(VSD_VERSION)-$(1).msi GnuPG-VS-Desktop.msi"; \ echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi" \ > ../stamps/stamp-$(1)-upload; \ echo "https://download.gnupg.com/files/$(call GETVAR,msi_target_$(1)_directory)/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1).msi.sig" \ >> ../stamps/stamp-$(1)-upload; \ fi) .phony : $(1) $(1): installers/gnupg-vs-desktop-$(VSD_VERSION)-$(1).msi .PHONY : $(1)-x86 $(1)-x86: installers/GnuPG-VS-Desktop-$(VSD_VERSION)-$(1)-x86.msi echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" echo "XXXX FIXME: x86 Registration of GpgOL and GpgEX does not work! XXXX" echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" .PHONY : $(1)-upload $(1)-upload: stamps/stamp-$(1)-upload gpg --yes -o gnupg-vsd-$(VERSION).tar.bz2.sig -bau $(msi_signkey) \ ../gpg4win-$(VERSION).tar.bz2 rsync -vP ../gpg4win-$(VERSION).tar.bz2 $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2 rsync -vP gnupg-vsd-$(VERSION).tar.bz2.sig $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig echo "Upload URLs:" cat stamps/stamp-$(1)-upload echo "Source links:" echo "https://download.gnupg.com/files/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2" echo "https://download.gnupg.com/files/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig" $(1)-announce: gnupg-vsd/$(1)/announcement.txt set -x echo "-------- Announcement for $(1) ---------" cat gnupg-vsd/$(1)/announcement.txt echo "-----------------------------" echo "Send to: $(call GETVAR,msi_target_$(1)_contact)" echo "Ticket: $(call GETVAR,msi_target_$(1)_ticket)" echo "-----------------------------" endef # Insert the template for each source package. $(foreach spkg, $(gpg4win_spkgs), $(eval $(call SPKG_template,$(spkg)))) # Insert the template for each gpgEx architecture package. $(foreach expkg, $(gpg4win_expkgs), $(eval $(call EXPKG_template,$(expkg)))) # Insert the template for each make only source package. $(foreach mpkg, $(gpg4win_mpkgs), $(eval $(call MPKG_template,$(mpkg)))) # Insert the template for each binary package. $(foreach bpkg, $(gpg4win_bpkgs), $(eval $(call BPKG_template,$(bpkg)))) # Insert the template for each internal package. $(foreach ipkg, $(gpg4win_ipkgs), $(eval $(call IPKG_template,$(ipkg)))) # Insert the template for the README and HOWTO files. $(foreach rll, $(gpg4win_readme_ll), $(eval $(call README_template,$(rll)))) # Insert the template for KDE packages. $(foreach kdepkg, $(gpg4win_kdepkgs), $(eval $(call KDEPKG_template,$(kdepkg)))) # Insert the template for qt packages. $(foreach qtpkg, $(gpg4win_qtpkgs), $(eval $(call QTPKG_template,$(qtpkg)))) $(foreach rll, $(gpg4win_howto_smime_ll), \ $(eval $(call HOWTO_template,SMIME,$(rll)))) $(eval $(call BOOST_template_,boost)) stamps/stamp-final: stamps/stamp-directories stamps/stamp-final: $(addprefix stamps/stamp-final-,$(gpg4win_build_list)) \ $(addprefix stamps/stamp-final-ex-,$(gpg4win_build_ex_list)) touch stamps/stamp-final $(bdir)/versioninfo.txt: stamps/stamp-final touch $(bdir)/versioninfo.txt all-gpg4win: stamps/stamp-final # Just to check if we catched all stamps. clean-stamps: $(RM) -fR $(stamps) clean-gpg4win: $(RM) -fR playground stamps stamps/stamp-versions-all-signed: stamps/stamp-directories \ $(addsuffix /VERSION.sig, $(addprefix gnupg-vsd/,$(msi_targets))) touch stamps/stamp-versions-all-signed stamps/stamp-all-upload: stamps/stamp-dist-self \ $(addsuffix -upload, $(addprefix stamps/stamp-,$(msi_targets))) echo "Upload URLs:" cat $(addsuffix -upload, $(addprefix stamps/stamp-,$(msi_targets))) gpg --yes -o gnupg-vsd-$(VERSION).tar.bz2.sig -bau $(msi_signkey) \ ../gpg4win-$(VERSION).tar.bz2 rsync -vP ../gpg4win-$(VERSION).tar.bz2 $(VSD_PUBLISH_HOST)/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2 rsync -vP gnupg-vsd-$(VERSION).tar.bz2.sig $(VSD_PUBLISH_HOST)/src/GnuPG-VS-Desktop-$(VSD_VERSION).tar.bz2.sig echo "Source links:" echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2" echo "https://download.gnupg.com/files/src/Gnupg-VS-Desktop-$(VSD_VERSION).tar.bz2.sig" touch stamps/stamps-all-upload msi: stamps/stamp-versions-all-signed \ $(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION)-,$(msi_targets))) if [ -z "$(addsuffix .msi,$(addprefix installers/GnuPG-VS-Desktop-$(VSD_VERSION)-,$(msi_targets)))" ]; then \ echo "No MSI targets configured."; \ else \ echo "######################"; \ echo "# MSI Packaging done #"; \ echo "######################"; \ fi stamps/stamp-msi-all-signed: gnupg-vsd/sign.mk \ $(addsuffix .msi,$(addprefix signed_installers/GnuPG-VS-Desktop-$(VSD_VERSION)-,$(msi_targets))) touch stamps/stamp-msi-all-signed msi-signed: stamps/stamp-msi-all-signed msi-upload: stamps/stamp-all-upload stamps/stamp-dist-self .PHONY : all-gpg4win clean-stamps clean-gpg4win msi msi-signed msi-upload # Insert the template for msi packages. $(foreach msipkg, $(msi_targets), $(eval $(call MSI_template,$(msipkg)))) # @emacs_local_vars_begin@ # @emacs_local_vars_read_only@ # @emacs_local_vars_end@