threads / discuss / 30093

better way to find Git.pm officially?

Subject: better way to find Git.pm officially?

## tl;dr

4 messages between Mar 29, 2012 and Mar 29, 2012.

replies: 3people: 4as markdown or json

Randal L. Schwartz· Mar 29, 2012, 04:58 UTC · lore

I'm using Git.pm in a git subcommand. There doesn't (yet :) seem to be an official way to *find* the directory Git.pm was installed in to add it to my @INC, so I can up with this ugly hack:

    #!/usr/bin/perl
    use strict;
    use lib $ENV{GITPERLLIB}
      ? split(/:/, $ENV{GITPERLLIB})
      : do {
        chomp(my $exec_path = qx{git --exec-path});
        open my $gitsvn, "<", "$exec_path/git-svn" or die "Cannot find
      git-svn";
        {
          last unless local $_ = readline $gitsvn;
          redo unless m{\Ause lib.*GITPERLLIB.*\|\| "(.*)"};
          "$1";
        }
      };
    use Git;

As in, find the git-svn binary (via git --exec-path), parse its second line to see where the git installer put the GITPERLLIB, and then add that myself.

Is there a simpler way? Can we get "git --perl-path" added to the binary or something?

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.posterous.com/ for Smalltalk discussion
André Walker· Mar 29, 2012, 05:10 UTC · re: Randal L. Schwartz · lore

Re: better way to find Git.pm officially?

On 03/29/2012 01:58 AM, Randal L. Schwartz wrote:
> Is there a simpler way?  Can we get "git --perl-path" added to the
> binary or something?

Maybe after the GSoC project? :) Although a --perl-path would probably become unnecessary for newer versions. I guess after we publish Git.pm to CPAN, we could install it like a regular Perl module, and just have the perl scripts use it from default directories in @INC. Unless this will make too much trouble with compatibility (i.e., installing Git.pm v1.9 on a machine with git v1.8 installed).

Jeff King· Mar 29, 2012, 06:13 UTC · re: Randal L. Schwartz · lore

Re: better way to find Git.pm officially?

On Wed, Mar 28, 2012 at 09:58:12PM -0700, Randal L. Schwartz wrote:
Show 6 quoted lines
> As in, find the git-svn binary (via git --exec-path), parse its second
> line to see where the git installer put the GITPERLLIB, and then add
> that myself.
> 
> Is there a simpler way?  Can we get "git --perl-path" added to the
> binary or something?

I always assumed that it was the responsibility of the user or the packager to put Git.pm into a sane place that is found by perl's normal lookup (possibly via the user's PERL5LIB if it is a per-user installation). Doesn't our use of MakeMaker generally pick such a suitable directory?

-Peff
Junio C Hamano· Mar 29, 2012, 06:45 UTC · re: Jeff King · lore

Re: better way to find Git.pm officially?

Jeff King <peff@peff.net> writes:
> I always assumed that it was the responsibility of the user or the
> packager to put Git.pm into a sane place that is found by perl's normal
> lookup (possibly via the user's PERL5LIB if it is a per-user
> installation).
Unfortunately, not really.
See what this target does in our Makefile:
	$(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl

Our scripts know where INSTLIBDIR is, so that we can redirect INSTLIBDIR to whatever directory that the packager or the user wants to, which may be outside the usual PERL5LIB.

Especially with NO_PERL_MAKEMAKER installation, perl/Makefile points at $(prefix)/lib with INSTLIBDIR, and $(prefix) is by default $(HOME), so...

← back to recent threads