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@