Matthew Booth
2010-Feb-16 13:51 UTC
[Libguestfs] [PATCH] Build: Make changelog action call git directly without Git module
The changelog action needs to checkout git2cl as a submodule. For some reason,
when called through the Git module, command('submodule',
'update') was doing
something unfathomable, and different to just calling 'git submodule
update'. As
Git is just a command line wrapper anyway, I've sidestepped this by just
calling
the command directly.
---
Build.PL | 18 ++----------------
1 files changed, 2 insertions(+), 16 deletions(-)
diff --git a/Build.PL b/Build.PL
index efce5dd..51afae8 100644
--- a/Build.PL
+++ b/Build.PL
@@ -150,22 +150,8 @@ sub ACTION_changelog
return 1;
}
- # Check that git is available
- eval "use Git;";
- if($@) {
- $self->log_info("Git is not installed\n");
- return 1;
- }
-
- # Update submodules to get git2cl
- my $repo = Git->repository(Directory => '.');
-
- eval {
- $repo->command_noisy('submodule', 'update');
- };
-
- if($@) {
- $self->log_info("Failed to initialise git2cl\n");
+ unless(system("git", "submodule", "update")
== 0) {
+ $self->log_info("Failed to initialise git2cl: $@\n");
return 1;
}
--
1.6.6
Richard W.M. Jones
2010-Feb-19 09:44 UTC
[Libguestfs] [PATCH] Build: Make changelog action call git directly without Git module
On Tue, Feb 16, 2010 at 01:51:45PM +0000, Matthew Booth wrote:> The changelog action needs to checkout git2cl as a submodule. For some reason, > when called through the Git module, command('submodule', 'update') was doing > something unfathomable, and different to just calling 'git submodule update'. As > Git is just a command line wrapper anyway, I've sidestepped this by just calling > the command directly. > --- > Build.PL | 18 ++---------------- > 1 files changed, 2 insertions(+), 16 deletions(-) > > diff --git a/Build.PL b/Build.PL > index efce5dd..51afae8 100644 > --- a/Build.PL > +++ b/Build.PL > @@ -150,22 +150,8 @@ sub ACTION_changelog > return 1; > } > > - # Check that git is available > - eval "use Git;"; > - if($@) { > - $self->log_info("Git is not installed\n"); > - return 1; > - } > - > - # Update submodules to get git2cl > - my $repo = Git->repository(Directory => '.'); > - > - eval { > - $repo->command_noisy('submodule', 'update'); > - }; > - > - if($@) { > - $self->log_info("Failed to initialise git2cl\n"); > + unless(system("git", "submodule", "update") == 0) { > + $self->log_info("Failed to initialise git2cl: $@\n"); > return 1; > } >Seems sensible, ACK. Did you see the script that Jim Meyering wrote which we use for libguestfs? (It's part of Gnulib) http://git.annexia.org/?p=libguestfs.git;a=blob;f=Makefile.am;h=0abe3dd06aa0a33647b5a3a50334283c7f9a161e;hb=HEAD#l150 Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html