# better way to find Git.pm officially?

4 messages from 2012-03-29 to 2012-03-29. Participants: Randal L. Schwartz, André Walker, Jeff King, Junio C Hamano.
Thread: https://gitlist.dev/t/30093

## Randal L. Schwartz, 2012-03-29 04:58

Subject: better way to find Git.pm officially?
Message-ID: <86r4wc9f6j.fsf@red.stonehenge.com>
URL: https://gitlist.dev/e/86r4wc9f6j.fsf%40red.stonehenge.com

```

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, 2012-03-29 05:10

Subject: Re: better way to find Git.pm officially?
Message-ID: <4F73EEDB.7000009@andrewalker.net>
URL: https://gitlist.dev/e/4F73EEDB.7000009%40andrewalker.net
In-Reply-To: <86r4wc9f6j.fsf@red.stonehenge.com>

```
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, 2012-03-29 06:13

Subject: Re: better way to find Git.pm officially?
Message-ID: <20120329061336.GE27604@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20120329061336.GE27604%40sigill.intra.peff.net
In-Reply-To: <86r4wc9f6j.fsf@red.stonehenge.com>

```
On Wed, Mar 28, 2012 at 09:58:12PM -0700, Randal L. Schwartz wrote:

> 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, 2012-03-29 06:45

Subject: Re: better way to find Git.pm officially?
Message-ID: <7vwr63rjku.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vwr63rjku.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20120329061336.GE27604@sigill.intra.peff.net>

```
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...

```
