speedo: Support building from dist-source generated tarball.
authorWerner Koch <wk@gnupg.org>
Mon, 16 Jun 2014 21:25:44 +0000 (23:25 +0200)
committerWerner Koch <wk@gnupg.org>
Tue, 17 Jun 2014 08:37:55 +0000 (10:37 +0200)
README
build-aux/speedo.mk
build-aux/speedo/w32/inst.nsi
doc/HACKING

diff --git a/README b/README
index d5cd727..da4c498 100644 (file)
--- a/README
+++ b/README
@@ -70,6 +70,10 @@ binary gpg but a gpg2 so that this package won't conflict with a GnuPG
 In case of problem please ask on the gnupg-users@gnupg.org mailing
 list for advise.
 
 In case of problem please ask on the gnupg-users@gnupg.org mailing
 list for advise.
 
+Instruction on how to build for Windows can be found in the file
+doc/HACKING in the section "How to build an installer for Windows".
+This requires some experience as developer.
+
 Note that the PKITS tests are always skipped unless you copy the PKITS
 test data file into the tests/pkits directory.  There is no need to
 run these test and some of them may even fail because the test scripts
 Note that the PKITS tests are always skipped unless you copy the PKITS
 test data file into the tests/pkits directory.  There is no need to
 run these test and some of them may even fail because the test scripts
index 1bebd8b..1ef1600 100644 (file)
 SPEEDO_MK := $(realpath $(lastword $(MAKEFILE_LIST)))
 
 
 SPEEDO_MK := $(realpath $(lastword $(MAKEFILE_LIST)))
 
 
-# Set this to "git" or "release".
+# Set this to "git" to build from git,
+#          to "release" from tarballs,
+#          to "this" from the unpacked sources.
 WHAT=git
 
 # Set target to "native" or "w32"
 TARGETOS=w32
 
 WHAT=git
 
 # Set target to "native" or "w32"
 TARGETOS=w32
 
-# Set to the location of the directory with traballs of
+# Set to the location of the directory with tarballs of
 # external packages.
 TARBALLS=$(shell pwd)/../tarballs
 
 #  Number of parallel make jobs
 MAKE_J=3
 
 # external packages.
 TARBALLS=$(shell pwd)/../tarballs
 
 #  Number of parallel make jobs
 MAKE_J=3
 
+# Name to use for the w32 installer and sources
+INST_NAME=gnupg-w32
+
 # =====BEGIN LIST OF PACKAGES=====
 # The packages that should be built.  The order is also the build order.
 # Fixme: Do we need to build pkg-config for cross-building?
 # =====BEGIN LIST OF PACKAGES=====
 # The packages that should be built.  The order is also the build order.
 # Fixme: Do we need to build pkg-config for cross-building?
@@ -172,7 +177,8 @@ pkg2rep = $(TARBALLS)
 # Note that you can override the defaults in this file in a local file
 # "config.mk"
 
 # Note that you can override the defaults in this file in a local file
 # "config.mk"
 
-ifeq ($(WHAT),git)
+ifeq ($(WHAT),this)
+else ifeq ($(WHAT),git)
   speedo_pkg_libgpg_error_git = $(gitrep)/libgpg-error
   speedo_pkg_libgpg_error_gitref = master
   speedo_pkg_npth_git = $(gitrep)/npth
   speedo_pkg_libgpg_error_git = $(gitrep)/libgpg-error
   speedo_pkg_libgpg_error_gitref = master
   speedo_pkg_npth_git = $(gitrep)/npth
@@ -191,7 +197,7 @@ ifeq ($(WHAT),git)
   speedo_pkg_gpa_gitref = master
   speedo_pkg_gpgex_git = $(gitrep)/gpgex
   speedo_pkg_gpgex_gitref = master
   speedo_pkg_gpa_gitref = master
   speedo_pkg_gpgex_git = $(gitrep)/gpgex
   speedo_pkg_gpgex_gitref = master
-else
+else ifeq ($(WHAT),release)
   speedo_pkg_libgpg_error_tar = \
        $(pkgrep)/libgpg-error/libgpg-error-$(libgpg_error_ver).tar.bz2
   speedo_pkg_npth_tar = \
   speedo_pkg_libgpg_error_tar = \
        $(pkgrep)/libgpg-error/libgpg-error-$(libgpg_error_ver).tar.bz2
   speedo_pkg_npth_tar = \
@@ -210,6 +216,8 @@ else
        $(pkgrep)/gpa/gpa-$(gpa_ver).tar.bz2
   speedo_pkg_gpgex_tar = \
        $(pkgrep)/gpex/gpgex-$(gpa_ver).tar.bz2
        $(pkgrep)/gpa/gpa-$(gpa_ver).tar.bz2
   speedo_pkg_gpgex_tar = \
        $(pkgrep)/gpex/gpgex-$(gpa_ver).tar.bz2
+else
+  $(error invalid value for WHAT (use on of: git release this))
 endif
 
 speedo_pkg_pkg_config_tar = $(pkg2rep)/pkg-config-$(pkg_config_ver).tar.gz
 endif
 
 speedo_pkg_pkg_config_tar = $(pkg2rep)/pkg-config-$(pkg_config_ver).tar.gz
@@ -529,7 +537,9 @@ $(stampdir)/stamp-$(1)-00-unpack: $(stampdir)/stamp-directories
        @echo "speedo:  */"
        @(set -e; cd $(sdir);                           \
         $(call SETVARS,$(1));                          \
        @echo "speedo:  */"
        @(set -e; cd $(sdir);                           \
         $(call SETVARS,$(1));                          \
-        if [ "$(1)" = "gnupg" ]; then                  \
+        if [ "$(WHAT)" = "this" ]; then                \
+           echo "speedo: using included source";        \
+        elif [ "$(1)" = "gnupg" ]; then                \
           cd $$$${pkgsdir};                            \
            if [ -f config.log ]; then                   \
              echo "GnuPG has already been build in-source" >&2  ;\
           cd $$$${pkgsdir};                            \
            if [ -f config.log ]; then                   \
              echo "GnuPG has already been build in-source" >&2  ;\
@@ -782,11 +792,13 @@ clean-speedo:
 dist-source: all
        for i in 00 01 02 03; do sleep 1;touch PLAY/stamps/stamp-*-${i}-*;done
        (set -e;\
 dist-source: all
        for i in 00 01 02 03; do sleep 1;touch PLAY/stamps/stamp-*-${i}-*;done
        (set -e;\
-        tarname="gnupg-w32-$(INST_VERSION)_$(BUILD_ISODATE).tar" ;\
+        tarname="$(INST_NAME)-$(INST_VERSION)_$(BUILD_ISODATE).tar" ;\
         [ -f "$$tarname" ] && rm "$$tarname" ;\
          tar -C $(topsrc) -cf "$$tarname" --exclude-backups --exclude-vc \
         [ -f "$$tarname" ] && rm "$$tarname" ;\
          tar -C $(topsrc) -cf "$$tarname" --exclude-backups --exclude-vc \
+             --transform='s,^\./,$(INST_NAME)-$(INST_VERSION)/,' \
              --anchored --exclude './PLAY' . ;\
         tar --totals -rf "$$tarname" --exclude-backups --exclude-vc \
              --anchored --exclude './PLAY' . ;\
         tar --totals -rf "$$tarname" --exclude-backups --exclude-vc \
+              --transform='s,^,$(INST_NAME)-$(INST_VERSION)/,' \
             PLAY/stamps/stamp-*-00-unpack PLAY/src ;\
          xz "$$tarname" ;\
        )
             PLAY/stamps/stamp-*-00-unpack PLAY/src ;\
          xz "$$tarname" ;\
        )
@@ -823,10 +835,11 @@ installer: all w32_insthelpers $(bdir)/inst-options.ini $(bdir)/README.txt
                     -DTOP_SRCDIR=$(topsrc) \
                     -DW32_SRCDIR=$(w32src) \
                     -DBUILD_ISODATE=$(BUILD_ISODATE) \
                     -DTOP_SRCDIR=$(topsrc) \
                     -DW32_SRCDIR=$(w32src) \
                     -DBUILD_ISODATE=$(BUILD_ISODATE) \
+                   -DNAME=$(INST_NAME) \
                    -DVERSION=$(INST_VERSION) \
                    -DPROD_VERSION=$(INST_PROD_VERSION) \
                    $(w32src)/inst.nsi
                    -DVERSION=$(INST_VERSION) \
                    -DPROD_VERSION=$(INST_PROD_VERSION) \
                    $(w32src)/inst.nsi
-       @echo "Ready: $(idir)/gnupg-w32-$(INST_VERSION)"
+       @echo "Ready: $(idir)/$(INST_NAME)-$(INST_VERSION)"
 
 #
 # Mark phony targets
 
 #
 # Mark phony targets
index 30b3871..5f8c55c 100644 (file)
@@ -23,6 +23,7 @@
 #  TOP_SRCDIR
 #  W32_SRCDIR
 #  BUILD_ISODATE
 #  TOP_SRCDIR
 #  W32_SRCDIR
 #  BUILD_ISODATE
+#  NAME
 #  VERSION
 #  PROD_VERSION
 
 #  VERSION
 #  PROD_VERSION
 
@@ -93,7 +94,7 @@ SetCompressor lzma
 Name "${PRETTY_PACKAGE}"
 
 # Set the output filename.
 Name "${PRETTY_PACKAGE}"
 
 # Set the output filename.
-OutFile "gnupg-w32-${VERSION}.exe"
+OutFile "$(NAME)-${VERSION}.exe"
 
 #Fixme: Do we need a logo
 #Icon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico"
 
 #Fixme: Do we need a logo
 #Icon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico"
index 8116c3f..252bc42 100644 (file)
@@ -93,12 +93,47 @@ appear in the ChangeLog.
   need.  If you really need to do it, use a separate commit for such a
   change.
 
   need.  If you really need to do it, use a separate commit for such a
   change.
 
+* Windows
+** How to build an installer for Windows
+
+   Your best bet is to use a decent Debian System for development.
+   You need to install a long list of tools for building.  This list
+   still needs to be compiled.  However, the build process will stop
+   if a tool is missing.  GNU make is required (on non GNU systems
+   often installed as "gmake").  The installer requires a couple of
+   extra software to be available either as tarballs or as local git
+   repositories.  In case this file here is part of a gnupg-w32-2.*.xz
+   complete tarball as distributed from the same place as a binary
+   installer, all such tarballs are already included.
+
+   Cd to the GnuPG source directory and use one of one of these
+   command:
+
+   - If sources are included (gnupg-w32-*.tar.xz)
+
+     make -f build-aux/speedo.mk WHAT=this installer
+
+   - To build from tarballs
+
+     make -f build-aux/speedo.mk WHAT=release TARBALLS=TARDIR installer
+
+   - To build from local GIT repos
+
+     make -f build-aux/speedo.mk WHAT=git TARBALLS=TARDIR installer
+
+   Note that also you need to supply tarballs with supporting
+   libraries even if you build from git.  The makefile expects only
+   the core GnuPG software to be available as local GIT repositories.
+   speedo.mk has the versions of the tarballs and the branch names of
+   the git repositories.  In case of problems, don't hesitate to ask
+   on the gnupg-devel mailing for help.
+
+
 * Debug hints
 
   See the manual for some hints.
 
 * Standards
 * Debug hints
 
   See the manual for some hints.
 
 * Standards
-
 ** RFCs
 
 1423  Privacy Enhancement for Internet Electronic Mail:
 ** RFCs
 
 1423  Privacy Enhancement for Internet Electronic Mail:
@@ -120,6 +155,8 @@ appear in the ChangeLog.
 
 4880  Current OpenPGP specification.
 
 
 4880  Current OpenPGP specification.
 
+6337  Elliptic Curve Cryptography (ECC) in OpenPGP
+
 * Various information
 
 ** Directory Layout
 * Various information
 
 ** Directory Layout