[Pkg-gnupg-commit] [gnupg2] 117/205: Now build "gpg" binary but install as "gpg2"

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed May 11 08:38:26 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gnupg2.

commit 96bcd4220f1f1313afe12097d8dc62342ac8de0d
Author: Werner Koch <wk at gnupg.org>
Date:   Mon Apr 4 17:42:24 2016 +0200

    Now build "gpg" binary but install as "gpg2"
    
    * configure.ac (USE_GPG2_HACK): New ac_define am_conditional.
    * common/homedir.c (gnupg_module_name): Replace use of macro
    NAME_OF_INSTALLED_GPG.
    * g10/keygen.c (generate_keypair): Ditto.
    * g10/Makefile.am (bin_PROGRAMS): Remove.
    (noinst_PROGRAMS): Add gpg or gpg2 and gpgv or gpg2.
    (gpg2_hack_list): New.
    (use_gpg2_hack): New.
    (gpg2_SOURCES): Rename to gpg_SOURCES.
    (gpgv2_SOURCES): Rename to gpgv_SOURCES.
    (gpg2_LDADD): Rename to gpg_LDADD.
    (gpgv2_LDADD): Rename to gpgv_LDADD.
    (gpg2_LDFLAGS): Rename to gpg_LDFLAGS.
    (gpgv2_LDFLAGS): Rename to gpgv2_LDFLAGS.
    (install-exec-hook): Remove WinCE specific rules and add new rules.
    (uninstall-local): Uninstall gpg/gpg2 and gpgv/gpgv2.
    * tests/openpgp/Makefile.am (required_pgms): s/gpg2/gpg/.
    * tests/openpgp/defs.inc: Ditto.
    * tests/openpgp/gpgtar.test: Ditto.
    * tests/openpgp/mkdemodirs: Ditto.
    * tests/openpgp/signdemokey: Ditto.
    
    * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Remove obsolete
    --enable-mailto, add --enable-gpg2-is-gpg.
    --
    
    Although we need to duplicate some automake generated code this method
    allows to easily switch the name of the installed target using the
    configure option "--enable-gpg2-is-gpg".
    
    Signed-off-by: Werner Koch <wk at gnupg.org>
---
 Makefile.am               |  3 +-
 common/homedir.c          |  6 +++-
 configure.ac              |  9 ++---
 g10/Makefile.am           | 83 +++++++++++++++++++++++++++++++++++++----------
 g10/keygen.c              |  7 +++-
 tests/openpgp/Makefile.am |  2 +-
 tests/openpgp/defs.inc    |  2 +-
 tests/openpgp/gpgtar.test |  2 +-
 tests/openpgp/mkdemodirs  |  2 +-
 tests/openpgp/signdemokey |  2 +-
 10 files changed, 87 insertions(+), 31 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 19f13fe..5527e24 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,7 +19,8 @@
 ## Process this file with automake to produce Makefile.in
 
 ACLOCAL_AMFLAGS = -I m4
-DISTCHECK_CONFIGURE_FLAGS = --enable-symcryptrun --enable-mailto --enable-g13
+DISTCHECK_CONFIGURE_FLAGS = --enable-symcryptrun --enable-g13 \
+  --enable-gpg2-is-gpg
 
 GITLOG_TO_CHANGELOG=gitlog-to-changelog
 
diff --git a/common/homedir.c b/common/homedir.c
index e0a88fa..5bf5173 100644
--- a/common/homedir.c
+++ b/common/homedir.c
@@ -729,7 +729,11 @@ gnupg_module_name (int which)
       X(bindir, "gpgsm");
 
     case GNUPG_MODULE_NAME_GPG:
-      X(bindir, NAME_OF_INSTALLED_GPG);
+#if USE_GPG2_HACK
+      X(bindir, GPG_NAME "2");
+#else
+      X(bindir, GPG_NAME);
+#endif
 
     case GNUPG_MODULE_NAME_CONNECT_AGENT:
       X(bindir, "gpg-connect-agent");
diff --git a/configure.ac b/configure.ac
index 0163dde..70c1d14 100644
--- a/configure.ac
+++ b/configure.ac
@@ -215,13 +215,10 @@ test -n "$GNUPG_DIRMNGR_LDAP_PGM" \
 AC_ARG_ENABLE(gpg2-is-gpg,
     AC_HELP_STRING([--enable-gpg2-is-gpg],[Set installed name of gpg2 to gpg]),
     gpg2_is_gpg=$enableval)
-if test "$gpg2_is_gpg" = "yes"; then
-   name_of_installed_gpg=gpg
-else
-   name_of_installed_gpg=gpg2
+if test "$gpg2_is_gpg" != "yes"; then
+   AC_DEFINE(USE_GPG2_HACK, 1, [Define to install gpg as gpg2])
 fi
-AC_DEFINE_UNQUOTED(NAME_OF_INSTALLED_GPG, "$name_of_installed_gpg",
-                   [The name of the installed GPG tool])
+AM_CONDITIONAL(USE_GPG2_HACK, test "$gpg2_is_gpg" != "yes")
 
 
 # SELinux support includes tracking of sensitive files to avoid
diff --git a/g10/Makefile.am b/g10/Makefile.am
index a30bc01..1b52e64 100644
--- a/g10/Makefile.am
+++ b/g10/Makefile.am
@@ -32,11 +32,24 @@ AM_CFLAGS = $(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS) \
 
 needed_libs = ../kbx/libkeybox.a $(libcommon)
 
-bin_PROGRAMS = gpg2
+# Because there are no program specific transform macros we need to
+# work around that to allow installaing gpg as gpg2.
+gpg2_hack_list = gpg gpgv
+if USE_GPG2_HACK
+gpg2_hack_uninst = gpg2 gpgv2
+use_gpg2_hack = yes
+else
+gpg2_hack_uninst = $(gpg2_hack_list)
+use_gpg2_hack = no
+endif
+
+# NB: We use noinst_ for gpg and gpgv so that we can install them with
+# the install-hook target under the name gpg2/gpgv2.
+noinst_PROGRAMS = gpg
 if !HAVE_W32CE_SYSTEM
-bin_PROGRAMS += gpgv2
+noinst_PROGRAMS += gpgv
 endif
-noinst_PROGRAMS = gpgcompose $(module_tests)
+noinst_PROGRAMS += gpgcompose $(module_tests)
 TESTS = $(module_tests)
 
 if ENABLE_BZIP2_SUPPORT
@@ -133,12 +146,12 @@ gpg_sources = server.c          \
 	      $(card_source) \
 	      exec.c exec.h
 
-gpg2_SOURCES  = gpg.c \
+gpg_SOURCES  = gpg.c \
 	keyedit.c 	\
 	$(gpg_sources)
 
 gpgcompose_SOURCES  = gpgcompose.c  $(gpg_sources)
-gpgv2_SOURCES = gpgv.c           \
+gpgv_SOURCES = gpgv.c           \
 	      $(common_source)  \
 	      verify.c \
 	      dearmor.c
@@ -152,14 +165,14 @@ gpgv2_SOURCES = gpgv.c           \
 
 LDADD =  $(needed_libs) ../common/libgpgrl.a \
          $(ZLIBS) $(LIBINTL) $(CAPLIBS) $(NETLIBS)
-gpg2_LDADD = $(LDADD) $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS) $(LIBREADLINE) \
+gpg_LDADD = $(LDADD) $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS) $(LIBREADLINE) \
              $(LIBASSUAN_LIBS) $(GPG_ERROR_LIBS) \
 	     $(LIBICONV) $(resource_objs) $(extra_sys_libs)
-gpg2_LDFLAGS = $(extra_bin_ldflags)
-gpgv2_LDADD = $(LDADD) $(LIBGCRYPT_LIBS) \
+gpg_LDFLAGS = $(extra_bin_ldflags)
+gpgv_LDADD = $(LDADD) $(LIBGCRYPT_LIBS) \
               $(GPG_ERROR_LIBS) \
 	      $(LIBICONV) $(resource_objs) $(extra_sys_libs)
-gpgv2_LDFLAGS = $(extra_bin_ldflags)
+gpgv_LDFLAGS = $(extra_bin_ldflags)
 
 gpgcompose_LDADD = $(LDADD) $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS) $(LIBREADLINE) \
              $(LIBASSUAN_LIBS) $(GPG_ERROR_LIBS) \
@@ -185,6 +198,42 @@ t_stutter_LDADD = $(LDADD) $(LIBGCRYPT_LIBS) $(GPG_ERROR_LIBS) \
 
 $(PROGRAMS): $(needed_libs) ../common/libgpgrl.a
 
+# NB: To install gpg and gpgv we use this -hook.  This code has to
+# duplicate most of the automake generated install-binPROGRAMS target
+# so that directories are created and the transform feature works.
+install-exec-hook:
+	@echo "running install-exec-hook"; \
+        echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+        $(MKDIR_P) "$(DESTDIR)$(bindir)"; \
+	for p in $(gpg2_hack_list); do \
+          echo "$$p$(EXEEXT) $$p$(EXEEXT)"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    for f in $$files; do \
+	       if test $(use_gpg2_hack) = yes ; \
+		 then f2=`echo "$${f}" | sed 's/$(EXEEXT)$$//'`2$(EXEEXT); \
+	         else f2="$${f}" ;\
+	       fi ; \
+	       echo "$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \
+                     $${f} '$(DESTDIR)$(bindir)/$${f2}'"; \
+	       $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \
+                     $${f} "$(DESTDIR)$(bindir)/$${f2}"; \
+	    done; \
+	done
+
+
 install-data-local:
 	$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
 	$(INSTALL_DATA) $(srcdir)/options.skel \
@@ -194,15 +243,15 @@ install-data-local:
 	$(INSTALL_DATA) $(srcdir)/distsigkey.gpg \
 				$(DESTDIR)$(pkgdatadir)/distsigkey.gpg
 
+# NB: For uninstalling gpg and gpgv we use -local because there is
+# no need for a specific order the targets need to be run.
 uninstall-local:
 	- at rm $(DESTDIR)$(pkgdatadir)/gpg-conf.skel
 	- at rm $(DESTDIR)$(pkgdatadir)/dirmngr-conf.skel
 	- at rm $(DESTDIR)$(pkgdatadir)/distsigkey.gpg
-
-
-# There has never been a gpg for WindowsCE, thus we don't need a gpg2 here
-if HAVE_W32CE_SYSTEM
-install-exec-hook:
-	mv -f $(DESTDIR)$(bindir)/gpg2$(EXEEXT) \
-              $(DESTDIR)$(bindir)/gpg$(EXEEXT)
-endif
+	- at files=`for p in $(gpg2_hack_uninst); do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
diff --git a/g10/keygen.c b/g10/keygen.c
index a7d7d27..06710eb 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -3779,7 +3779,12 @@ generate_keypair (ctrl_t ctrl, int full, const char *fname,
     {
       tty_printf ( _("Note: Use \"%s %s\""
                      " for a full featured key generation dialog.\n"),
-                   NAME_OF_INSTALLED_GPG, "--full-gen-key" );
+#if USE_GPG2_HACK
+                   GPG_NAME "2"
+#else
+                   GPG_NAME
+#endif
+                   , "--full-gen-key" );
       para = quickgen_set_para (para, 0,
                                 DEFAULT_STD_ALGO, DEFAULT_STD_KEYSIZE,
                                 DEFAULT_STD_CURVE);
diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am
index 4e09c23..bab0b7d 100644
--- a/tests/openpgp/Makefile.am
+++ b/tests/openpgp/Makefile.am
@@ -20,7 +20,7 @@
 
 
 # Programs required before we can run these tests.
-required_pgms = ../../g10/gpg2$(EXEEXT) ../../agent/gpg-agent$(EXEEXT) \
+required_pgms = ../../g10/gpg$(EXEEXT) ../../agent/gpg-agent$(EXEEXT) \
                 ../../tools/gpg-connect-agent$(EXEEXT) \
 		../../tools/mk-tdata$(EXEEXT)
 
diff --git a/tests/openpgp/defs.inc b/tests/openpgp/defs.inc
index 8f969db..ea86c69 100755
--- a/tests/openpgp/defs.inc
+++ b/tests/openpgp/defs.inc
@@ -215,7 +215,7 @@ fi
 unset GPG_AGENT_INFO
 
 # (--no-permission-warning makes only sense on the commandline)
-GPG="../../g10/gpg2 --no-permission-warning "
+GPG="../../g10/gpg --no-permission-warning "
 # (We may not use a relative name for gpg-agent.)
 GPG_AGENT="$(cd ../../agent && /bin/pwd)/gpg-agent"
 GPG_CONNECT_AGENT="../../tools/gpg-connect-agent"
diff --git a/tests/openpgp/gpgtar.test b/tests/openpgp/gpgtar.test
index daba514..63bed70 100755
--- a/tests/openpgp/gpgtar.test
+++ b/tests/openpgp/gpgtar.test
@@ -27,7 +27,7 @@ FILELIST="${TESTDIR}/filelist"
 PPFILE="${TESTDIR}/passphrase"
 PPFLAGS="--gpg-args --passphrase-file=$PPFILE"
 
-GPG=../../g10/gpg2
+GPG=../../g10/gpg
 GPGARGS="$opt_always --no-permission-warning"
 
 GPGTAR="../../tools/gpgtar"
diff --git a/tests/openpgp/mkdemodirs b/tests/openpgp/mkdemodirs
index a381681..fd8a741 100755
--- a/tests/openpgp/mkdemodirs
+++ b/tests/openpgp/mkdemodirs
@@ -4,7 +4,7 @@ set -e
 
 # We need to use --no-options so that a gpg.conf from an older version
 # of gpg is not used.
-GPG="../../g10/gpg2 --no-options --batch --quiet
+GPG="../../g10/gpg --no-options --batch --quiet
      --no-secmem-warning --allow-secret-key-import"
 
 NAMES='Alpha Bravo Charlie Delta Echo Foxtrot Golf Hotel India
diff --git a/tests/openpgp/signdemokey b/tests/openpgp/signdemokey
index 9a1257c..13c5784 100755
--- a/tests/openpgp/signdemokey
+++ b/tests/openpgp/signdemokey
@@ -10,7 +10,7 @@ name="$1"
 user_id="$2"
 user_id_no="$3"
 
-echo "abc" | ../g10/gpg2 --options ./gpg.conf --homedir $name \
+echo "abc" | ../g10/gpg --options ./gpg.conf --homedir $name \
 		--sign-key --batch --yes --passphrase-fd 0 $user_id \
 		$user_id_no sign save
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list