speedo: Improve building of the w32 installer.
authorWerner Koch <wk@gnupg.org>
Wed, 11 Jun 2014 13:45:29 +0000 (15:45 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 11 Jun 2014 13:45:29 +0000 (15:45 +0200)
* build-aux/speedo.mk: Change name of build directory to PLAY.
Improve the dist-source target.
* build-aux/speedo/w32/gdk-pixbuf-loaders.cache: Add a blank
line (plus comment).
* build-aux/speedo/w32/inst.nsi: Change name of file to gnupg-w32-*.
Install more tools.
--

gdk-pixbuf-loaders.cache needs to end with an extra LF or the
gdk-pixbuf is not able to read the last entry.  The final comment is
to make our git sanity checks happy.

Running

 make -f build-aux/speedo.mk \
      TARGETOS=w32 TARBALLS=~/tarballs installer

does now create a working installer.  After removing dirmngr from the
installation GPA kind of works.  There are remaining problems with
dirmngr and scdaemon which will be fixed soon.

Running

 make -f build-aux/speedo.mk \
      TARGETOS=w32 TARBALLS=~/tarballs dist-source

creates an xz compressed tarball with all the sources used to build
the installer.  Distributing this tarball along with the installer is
sufficient to comply with the GPL.  Well, some more instructions
should be given in the readme files.

.gitignore
build-aux/speedo.mk
build-aux/speedo/w32/gdk-pixbuf-loaders.cache
build-aux/speedo/w32/inst.nsi

index d4816a1..5fc934a 100644 (file)
@@ -21,7 +21,7 @@ keyserver/gpg2keys_test
 tools/gpg-zip
 
 # Files created by make when not using a VPATH build
-play/
+PLAY/
 *.o
 po/en@boldquot.insert-header
 po/en@boldquot.po
index 34d5f98..1bebd8b 100644 (file)
@@ -23,7 +23,7 @@
 # or
 #   make -f speedo.mk
 #
-# Builds all packages and installs them under play/inst.  At the end,
+# Builds all packages and installs them under PLAY/inst.  At the end,
 # speedo prints commands that can be executed in the local shell to
 # make use of the installed packages.
 #
@@ -390,7 +390,7 @@ MAKENSIS=makensis
 BUILD_ISODATE=$(shell date -u +%Y-%m-%d)
 
 # These paths must be absolute, as we switch directories pretty often.
-root := $(shell pwd)/play
+root := $(shell pwd)/PLAY
 sdir := $(root)/src
 bdir := $(root)/build
 bdir6:= $(root)/build-w64
@@ -772,7 +772,7 @@ clean-stamps:
        $(RM) -fR $(stampdir)
 
 clean-speedo:
-       $(RM) -fR play
+       $(RM) -fR PLAY
 
 
 #
@@ -780,10 +780,16 @@ clean-speedo:
 #
 
 dist-source: all
-       for i in 00 01 02 03; do sleep 1;touch play/stamps/stamp-*-${i}-*;done
-       tar -cvJf gnupg-$(INST_VERSION)_$(BUILD_ISODATE).tar.xz \
-           --exclude-backups --exclude-vc \
-           patches play/stamps/stamp-*-00-unpack play/src
+       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" ;\
+        [ -f "$$tarname" ] && rm "$$tarname" ;\
+         tar -C $(topsrc) -cf "$$tarname" --exclude-backups --exclude-vc \
+             --anchored --exclude './PLAY' . ;\
+        tar --totals -rf "$$tarname" --exclude-backups --exclude-vc \
+            PLAY/stamps/stamp-*-00-unpack PLAY/src ;\
+         xz "$$tarname" ;\
+       )
 
 
 $(bdir)/NEWS.tmp: $(topsrc)/NEWS
@@ -820,6 +826,7 @@ installer: all w32_insthelpers $(bdir)/inst-options.ini $(bdir)/README.txt
                    -DVERSION=$(INST_VERSION) \
                    -DPROD_VERSION=$(INST_PROD_VERSION) \
                    $(w32src)/inst.nsi
+       @echo "Ready: $(idir)/gnupg-w32-$(INST_VERSION)"
 
 #
 # Mark phony targets
index af51346..78bc18a 100755 (executable)
 "image/x-xpixmap" ""
 "xpm" ""
 "/* XPM */" "" 100
+
+
+# eof #
index cf627f6..30b3871 100644 (file)
@@ -93,7 +93,7 @@ SetCompressor lzma
 Name "${PRETTY_PACKAGE}"
 
 # Set the output filename.
-OutFile "${PACKAGE}-${VERSION}.exe"
+OutFile "gnupg-w32-${VERSION}.exe"
 
 #Fixme: Do we need a logo
 #Icon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico"
@@ -526,6 +526,7 @@ Section "-gnupginst"
   # If we are reinstalling, try to kill a possible running agent using
   # an already installed gpgconf.
   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
+    ExecWait '"$INSTDIR\bin\gpgconf" --kill dirmngr'
     ExecWait '"$INSTDIR\bin\gpgconf" --kill gpg-agent'
 
   no_gpgconf:
@@ -542,9 +543,11 @@ Section "GnuPG" SEC_gnupg
 
   SetOutPath "$INSTDIR\bin"
   File /oname=gpg.exe "bin/gpg2.exe"
+  File /oname=gpgv.exe "bin/gpgv2.exe"
   File "bin/gpgsm.exe"
   File "bin/gpgconf.exe"
   File "bin/gpg-connect-agent.exe"
+  File "bin/gpgtar.exe"
 
   ClearErrors
   SetOverwrite try
@@ -554,6 +557,22 @@ Section "GnuPG" SEC_gnupg
       File /oname=gpg-agent.exe.tmp "bin/gpg-agent.exe"
       Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe
 
+  ClearErrors
+  SetOverwrite try
+  File "libexec/scdaemon.exe"
+  SetOverwrite lastused
+  ifErrors 0 +3
+      File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
+      Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
+
+  ClearErrors
+  SetOverwrite try
+  File "bin/dirmngr.exe"
+  SetOverwrite lastused
+  ifErrors 0 +3
+      File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
+      Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
+
   SetOutPath "$INSTDIR\share\gnupg"
   File "share/gnupg/gpg-conf.skel"
 SectionEnd
@@ -995,10 +1014,14 @@ SectionEnd
 
 Section "-un.gnupg"
   Delete "$INSTDIR\bin\gpg.exe"
+  Delete "$INSTDIR\bin\gpgv.exe"
   Delete "$INSTDIR\bin\gpgsm.exe"
   Delete "$INSTDIR\bin\gpg-agent.exe"
+  Delete "$INSTDIR\bin\scdaemon.exe"
+  Delete "$INSTDIR\bin\dirmngr.exe"
   Delete "$INSTDIR\bin\gpgconf.exe"
   Delete "$INSTDIR\bin\gpg-connect-agent.exe"
+  Delete "$INSTDIR\bin\gpgtar.exe"
 
   Delete "$INSTDIR\share\gnupg\gpg-conf.skel"
   RMDir  "$INSTDIR\share\gnupg"