فهرست منبع

gpg-patch-6.2-rc7 tty allocation for pinentry in gpgv2 w/ compatibility for gpg1

Signed-off-by: Michael Gardner <michael.gardner@lexisnexis.com>
Michael Gardner 8 سال پیش
والد
کامیت
490edfadab
1فایلهای تغییر یافته به همراه21 افزوده شده و 17 حذف شده
  1. 21 17
      cmake_modules/commonSetup.cmake

+ 21 - 17
cmake_modules/commonSetup.cmake

@@ -166,30 +166,33 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
 
   if (SIGN_MODULES)
       message(STATUS "GPG signing check")
-      if(DEFINED SIGN_MODULES_PASSPHRASE)
-          set(GPG_PASSPHRASE_OPTION --passphrase)
-      endif()
-      if(DEFINED SIGN_MODULES_KEYID)
-        set(GPG_DEFAULT_KEY_OPTION --default-key)
-      endif()
       execute_process(COMMAND bash "-c" "gpg --version | awk 'NR==1{print $3}'"
         OUTPUT_VARIABLE GPG_VERSION
         OUTPUT_STRIP_TRAILING_WHITESPACE
         ERROR_QUIET)
-    if(${GPG_VERSION} VERSION_GREATER "2.1")
-          set(GPG_PINENTRY_MODE --pinentry-mode loopback --batch --no-tty)
+      set(GPG_COMMAND_STR "gpg")
+      if(${GPG_VERSION} VERSION_GREATER "2.1")
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --pinentry-mode loopback --batch --no-tty")
       else()
-          set(GPG_PINENTRY_MODE --batch --no-tty)
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --batch --no-tty")
+      endif()
+      if(DEFINED SIGN_MODULES_PASSPHRASE)
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --passphrase ${SIGN_MODULES_PASSPHRASE}")
+      endif()
+      if(DEFINED SIGN_MODULES_KEYID)
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --default-key ${SIGN_MODULES_KEYID}")
       endif()
+      set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --output sm_keycheck.asc --clearsign sm_keycheck.tmp")
       execute_process(
           COMMAND rm -f sm_keycheck.tmp sm_keycheck.asc
           COMMAND touch sm_keycheck.tmp
-          COMMAND gpg --clearsign ${GPG_PINENTRY_MODE} ${GPG_DEFAULT_KEY_OPTION} ${SIGN_MODULES_KEYID} ${GPG_PASSPHRASE_OPTION} ${SIGN_MODULES_PASSPHRASE} --output sm_keycheck.asc sm_keycheck.tmp
+          COMMAND bash "-c" "${GPG_COMMAND_STR}"
           TIMOUT 120
           WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
           RESULT_VARIABLE rc_var
+          OUTPUT_VARIABLE out_var
           ERROR_VARIABLE err_var
-          OUTPUT_QUIET)
+          )
       if(NOT "${rc_var}" STREQUAL "0")
           message(STATUS "GPG signing check - failed")
           message(FATAL_ERROR "gpg signing of std ecllibrary unsupported in current environment. \
@@ -242,7 +245,7 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     message(STATUS "gpg version ${GPG_VERSION}")
     #export gpg public key used for signing to new installation
     add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/pub.key
-      COMMAND gpg --output=${CMAKE_BINARY_DIR}/pub.key --batch --no-tty --export ${SIGN_MODULES_KEYID}
+      COMMAND bash "-c" "gpg --output=${CMAKE_BINARY_DIR}/pub.key --batch --no-tty --export ${SIGN_MODULES_KEYID}"
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
       COMMENT "Exporting public key for eclcc signed modules to ${CMAKE_BINARY_DIR}/pub.key"
       VERBATIM
@@ -961,19 +964,20 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
 
   MACRO(SIGN_MODULE module)
     if(SIGN_MODULES)
+      set(GPG_COMMAND_STR "gpg")
       if(DEFINED SIGN_MODULES_PASSPHRASE)
-        set(GPG_PASSPHRASE_OPTION --passphrase)
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --passphrase ${SIGN_MODULES_PASSPHRASE}")
       endif()
       if(DEFINED SIGN_MODULES_KEYID)
-        set(GPG_DEFAULT_KEY_OPTION --default-key)
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --default-key ${SIGN_MODULES_KEYID}")
       endif()
-      set(GPG_BATCH_OPTIONS --batch --no-tty)
       if("${GPG_VERSION}" VERSION_GREATER "2.1")
-          set(GPG_BATCH_OPTIONS --pinentry-mode=loopback ${GPG_BATCH_OPTIONS})
+          set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --pinentry-mode loopback")
       endif()
+      set(GPG_COMMAND_STR "${GPG_COMMAND_STR} --batch --no-tty --output ${CMAKE_CURRENT_BINARY_DIR}/${module} --clearsign ${module}")
       add_custom_command(
         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module}
-        COMMAND gpg ${GPG_BATCH_OPTIONS} --output ${CMAKE_CURRENT_BINARY_DIR}/${module} ${GPG_PASSPHRASE_OPTION} ${SIGN_MODULES_PASSPHRASE} ${GPG_DEFAULT_KEY_OPTION} ${SIGN_MODULES_KEYID} --clearsign ${module} </dev/null
+        COMMAND bash "-c" "${GPG_COMMAND_STR}"
         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
         COMMENT "Adding signed ${module} to project"
         )