Something that will help avoid the default key poping you in the
release.  This patch will ensure that the tag and the make major are
executed with the required key.  Don't know how relevant getting rid of
gpg_key_ID in cfg.mk is after this patch.

Regards.
On Fri, Jul 24, 2009 at 08:14:08AM +0200, Jim Meyering wrote:
> Joel Granados wrote:
> > This is to announce parted-1.9.0, a release we're calling "stable",
> > because we think it's solid enough for general use.
> ...
> >   gpg --keyserver keys.gnupg.net --recv-keys B9AB9A16
> 
> Hi Joel,
> 
> The announcement notice lists my GPG key ID,
> yet the tarballs are signed with yours:
> 
>     $ grep B9 cfg.mk
>     gpg_key_ID = B9AB9A16
> 
> This means the new release script should override that by
> running "make major gpg_key_ID=YOUR_KEY_ID".
> Ideally, we should remove my key and add a rule that
> ensures one is specified or determined automatically.

-- 
Joel Andres Granados
Brno, Czech Republic, Red Hat.
From e298c172554933b77853d8e275284ec6f7d1f092 Mon Sep 17 00:00:00 2001
From: Joel Granados Moreno <jgran...@redhat.com>
Date: Fri, 24 Jul 2009 14:37:13 +0200
Subject: [PATCH] Explicitly handle the signing key.

Now we are sure that we have the key, we are able to use it in any
subroutine (like make major).

* build-aux/parted-release (_find_signingkey): New function.
(_do_release): Use the key_id to sign the tag and to execute `make
major`.
---
 build-aux/parted-release |   68 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 56 insertions(+), 12 deletions(-)

diff --git a/build-aux/parted-release b/build-aux/parted-release
index 62157a3..fbaad6a 100755
--- a/build-aux/parted-release
+++ b/build-aux/parted-release
@@ -4,7 +4,6 @@ v=""
 date=$(date +%F)
 logfile="release.log"
 parted_dir=""
-key_string=""
 key_id=""
 stage_dir="$(pwd)/parted_release-$$"
 
@@ -26,7 +25,6 @@ while [ $# -gt 0 ] ; do
   case $1 in
 
     --key-id)
-      key_string="-u $2"
       key_id="$2"
       shift; shift
     ;;
@@ -56,15 +54,52 @@ while [ $# -gt 0 ] ; do
   esac
 done
 
-if [ "x$v" = "x" ] ; then
-  usage
+_find_signingkey()
+{
+  # If its already set, return.
+  if [ "x$key_id" != "x" ] ; then
+      return 0
+  fi
+
+  # Maybe the global git config has the key :)
+  key_id=$(git config user.signingkey)
+  if [ "x$key_id" != "x" ] ; then
+    return 0
+  fi
+
+  # Lets ask gpg using git config user.email.  We will choose the first
+  # one in case of multiple keys with the same email.
+  git_uemail=$(git config user.email)
+  if [ "x$git_uemail" != "x" ] ; then
+      key_id=$(gpg --list-keys --with-colons --fixed-list "$git_uemail" |
+               grep pub |
+               head -n 1 |
+               awk -F ':' '{print $5}' |
+               cut -c 9-)
+    if [ "x$key_id" != "x" ] ; then
+      return 0
+    fi
+  fi
+
+  # Lets try with the name.
+  git_uname=$(git config user.name)
+  if [ "x$git_uname" != "x" ] ; then
+      key_id=$(gpg --list-keys --with-colons --fixed-list "$git_uname" |
+               grep pub |
+               head -n 1 |
+               awk -F ':' '{print $5}' |
+               cut -c 9-)
+    if [ "x$key_id" != "x" ] ; then
+      return 0
+    fi
+  fi
+
+  # Don't know where else to look.
+  echo "There was an error finding the key needed to sing the release tag."
+  echo "Please use the --key-id argument when you execute $0 or set the"
+  echo "user.signingkey value in your ~/.gitconfig"
   exit 1
-fi
-
-if [ "x$key_string" = "x" -o "x$key_id" = "x" ] ; then
-  key_string="-s"
-  key_id="FIXME: YOUR_KEY"
-fi
+}
 
 _do_git_clone()
 {
@@ -102,11 +137,11 @@ _do_release()
     commit_message="version $v\n\n* NEWS: Record release date.\n"
     sed -e "s/^.*in release.* (????-??-??) .*/$news_line/" -i NEWS && \
     printf "$commit_message" | git commit NEWS -F - && \
-    git tag $key_string -m "parted $v" v$v HEAD && \
+    git tag -u $key_id -m "parted $v" v$v HEAD && \
     ./bootstrap && \
     ./configure && \
     make && \
-    make major && \
+    make major gpg_key_ID=$key_id && \
     return 0
   ) >> $logfile 2>&1 || return 1
 }
@@ -130,6 +165,15 @@ configuration for possible overlooked issues.
   exit 1
 }
 
+if [ "x$v" = "x" ] ; then
+  usage
+  exit 1
+fi
+
+if [ "x$key_id" = "x" ] ; then
+  _find_signingkey
+fi
+
 _require_git
 echo "git is installed..."
 
-- 
1.6.0.6

Attachment: pgpgnJz4wkPZ3.pgp
Description: PGP signature

_______________________________________________
bug-parted mailing list
bug-parted@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-parted

Reply via email to