[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: maint.mk: absolute VPATH build fix
From: |
Akim Demaille |
Subject: |
Re: maint.mk: absolute VPATH build fix |
Date: |
Sun, 29 Jul 2012 08:49:42 +0200 |
Le 28 juil. 2012 à 23:26, Bruno Haible a écrit :
> Hi Akim,
>
> Akim Demaille wrote:
>> + $$(git --git-dir $(srcdir)/.git cat-file tag v$(VERSION) \
>
> This code makes the assumption that the top-level dir of a project
> (that is, the one with the top-level Makefile.am and configure.ac)
> is at the root of the git project. Which is not necessarily the case.
> For an example, see the
> http://git.savannah.gnu.org/gitweb/?p=bibledit.git;a=tree
> project: it has several subdirectories with configure.ac and Makefile.am
> each, but none at the top level.
>
> Can you make it work without this assumption? I.e. from $(srcdir), walk
> up to the first ancestor directory that contains a .git subdir?
Hi Bruno,
This is easy to do in that case:
commit 767b67254209634a7a13eb99a51df5dc1e9388f0
Author: Akim Demaille <address@hidden>
Date: Sat Jul 28 12:40:53 2012 +0200
maint.mk: absolute VPATH build fix
* top/maint.mk (gpg_key_ID): Help git find .git when, for instance,
$(srcdir) is not a parent of $(builddir).
diff --git a/ChangeLog b/ChangeLog
index 378c405..51f4a76 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-29 Akim Demaille <address@hidden>
+
+ maint.mk: absolute VPATH build fix
+ * top/maint.mk (gpg_key_ID): Help git find .git when, for instance,
+ $(srcdir) is not a parent of $(builddir).
+
2012-07-27 Jim Meyering <address@hidden>
maint.mk: new rule: refresh-gnulib-patches
diff --git a/top/maint.mk b/top/maint.mk
index baff0e9..2af938e 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -1256,10 +1256,11 @@ bootstrap-tools ?= autoconf,automake,gnulib
# If it's not already specified, derive the GPG key ID from
# the signed tag we've just applied to mark this release.
-gpg_key_ID ?= \
- $$(git cat-file tag v$(VERSION) \
- | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \
- | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
+gpg_key_ID ?= \
+ $$(cd $(srcdir) \
+ && git cat-file tag v$(VERSION) \
+ | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \
+ | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
translation_project_ ?= address@hidden
But there's another occurrence of that issue. I suggest this patch.
(I'd like a critical eye from a native on the --help snippet :).
commit 67ad543c52477f07acef242178f1090f76900dcf
Author: Akim Demaille <address@hidden>
Date: Sun Jul 29 08:46:55 2012 +0200
gitlog-to-changelog: don't expect .git to be in $srcdir
Reported by Bruno Haible.
<http://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00265.html>
* build-aux/gitlog-to-changelog (&git_dir_option): New.
Use it.
diff --git a/ChangeLog b/ChangeLog
index 51f4a76..36812a0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2012-07-29 Akim Demaille <address@hidden>
+ gitlog-to-changelog: don't expect .git to be in $srcdir
+ Reported by Bruno Haible.
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00265.html>
+ * build-aux/gitlog-to-changelog (&git_dir_option): New.
+ Use it.
+
+2012-07-29 Akim Demaille <address@hidden>
+
maint.mk: absolute VPATH build fix
* top/maint.mk (gpg_key_ID): Help git find .git when, for instance,
$(srcdir) is not a parent of $(builddir).
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
index d79e7aa..7e75707 100755
--- a/build-aux/gitlog-to-changelog
+++ b/build-aux/gitlog-to-changelog
@@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
if 0;
# Convert git log output to ChangeLog format.
-my $VERSION = '2012-07-16 18:34'; # UTC
+my $VERSION = '2012-07-29 06:11'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
@@ -68,7 +68,8 @@ OPTIONS:
header; the default is to cluster adjacent commit messages
if their headers are the same and neither commit message
contains multiple paragraphs.
- --srcdir=DIR the root of the source tree, containing the '.git' directory.
+ --srcdir=DIR the root of the source tree, a parent of whom contains
+ the '.git' directory.
--since=DATE convert only the logs since DATE;
the default is to convert all log entries.
--format=FMT set format string for commit subject and body;
@@ -193,6 +194,30 @@ sub parse_amend_file($)
return $h;
}
+# git_dir_option $SRCDIR
+#
+# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
+# is undef). Return as a list (0 or 1 element).
+sub git_dir_option($)
+{
+ my ($srcdir) = @_;
+ my @res = ();
+ if (defined $srcdir)
+ {
+ my $qdir = shell_quote $srcdir;
+ my $cmd = "cd $qdir && git rev-parse --show-toplevel";
+ my $qcmd = shell_quote $cmd;
+ my $git_dir = qx($cmd);
+ defined $git_dir
+ or die "$ME: cannot run $qcmd: $!\n";
+ die "$ME: $qcmd had unexpected exit code or signal ($?)\n"
+ if $?;
+ chomp $git_dir;
+ push @res, "--git-dir=$git_dir/.git";
+ }
+ @res;
+}
+
{
my $since_date;
my $format_string = '%s%n%b%n';
@@ -224,7 +249,7 @@ sub parse_amend_file($)
my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
my @cmd = ('git',
- defined $srcdir ? ("--git-dir=$srcdir/.git") : (),
+ git_dir_option $srcdir,
qw(log --log-size),
'--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV);
open PIPE, '-|', @cmd
- maint: absolute VPATH build fix, Akim Demaille, 2012/07/28
- Re: maint: absolute VPATH build fix, Akim Demaille, 2012/07/28
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/28
- Re: maint.mk: absolute VPATH build fix, Jim Meyering, 2012/07/28
- Re: maint.mk: absolute VPATH build fix, Bruno Haible, 2012/07/28
- Re: maint.mk: absolute VPATH build fix,
Akim Demaille <=
- Re: maint.mk: absolute VPATH build fix, Jim Meyering, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Jim Meyering, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Jim Meyering, 2012/07/29
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/30
- Re: maint.mk: absolute VPATH build fix, Jim Meyering, 2012/07/30
- Re: maint.mk: absolute VPATH build fix, Akim Demaille, 2012/07/30