# [PATCH] use 'installsitelib' even with NO_PERL_MAKEMAKER

5 messages from 2012-01-30 to 2012-02-06. Participants: Nicholas Harteau, Jeff King.
Thread: https://gitlist.dev/t/29474

## Nicholas Harteau, 2012-01-30 10:51

Subject: [PATCH] use 'installsitelib' even with NO_PERL_MAKEMAKER
Message-ID: <24482D02-B773-4FE3-8FC7-92B8B4D8C0FA@spotify.com>
URL: https://gitlist.dev/e/24482D02-B773-4FE3-8FC7-92B8B4D8C0FA%40spotify.com

```
perl/Makefile installs Git.pm into $prefix/lib when ExtUtils::MakeMaker
is not present.  perl can't "use Git;" in that scenario, as $prefix/lib
isn't in perl's include path.

This patch installs Git.pm into perl's 'installsitelib', generally
$prefix/lib/perl5/site_perl, so that even when ExtUtils::MakeMaker isn't
present, Git.pm gets installed in a location where 'use Git;' just
works.

for some additional discussion, see:
https://github.com/mxcl/homebrew/pull/8643
https://github.com/mxcl/homebrew/issues/8620
---
 perl/Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/perl/Makefile b/perl/Makefile
index b2977cd..2199eb1 100644
--- a/perl/Makefile
+++ b/perl/Makefile
@@ -21,7 +21,7 @@ clean:
 	$(RM) $(makfile).old
 
 ifdef NO_PERL_MAKEMAKER
-instdir_SQ = $(subst ','\'',$(prefix)/lib)
+instdir_SQ = $(subst ','\'',$(subst installsitelib=,'',$(shell $(PERL_PATH_SQ) -V:installsitelib)))
 $(makfile): ../GIT-CFLAGS Makefile
 	echo all: private-Error.pm Git.pm > $@
 	echo '	mkdir -p blib/lib' >> $@
-- 
1.7.8.3

--
nicholas harteau
nrh@spotify.com

```

## Nicholas Harteau, 2012-02-06 19:38

Subject: Re: [PATCH] perl/Makefile: use 'installsitelib' even with NO_PERL_MAKEMAKER
Message-ID: <7328033C-8A11-452D-A927-E81E2DC4ABD6@spotify.com>
URL: https://gitlist.dev/e/7328033C-8A11-452D-A927-E81E2DC4ABD6%40spotify.com
In-Reply-To: <24482D02-B773-4FE3-8FC7-92B8B4D8C0FA@spotify.com>

```
This is a boring patch, I know, but it affects anyone doing a vanilla git installation on an os that bundles perl but not ExtUtils::MakeMaker, which is quite common.  Git's own utilities in perl can use Git.pm, but any other perl programs will fail to 'use Git;'

Any takers?

On Jan 30, 2012, at 11:51 AM, Nicholas Harteau wrote:

> perl/Makefile installs Git.pm into $prefix/lib when ExtUtils::MakeMaker
> is not present.  perl can't "use Git;" in that scenario, as $prefix/lib
> isn't in perl's include path.
> 
> This patch installs Git.pm into perl's 'installsitelib', generally
> $prefix/lib/perl5/site_perl, so that even when ExtUtils::MakeMaker isn't
> present, Git.pm gets installed in a location where 'use Git;' just
> works.
> 
> for some additional discussion, see:
> https://github.com/mxcl/homebrew/pull/8643
> https://github.com/mxcl/homebrew/issues/8620
> ---
> perl/Makefile |    2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/perl/Makefile b/perl/Makefile
> index b2977cd..2199eb1 100644
> --- a/perl/Makefile
> +++ b/perl/Makefile
> @@ -21,7 +21,7 @@ clean:
> 	$(RM) $(makfile).old
> 
> ifdef NO_PERL_MAKEMAKER
> -instdir_SQ = $(subst ','\'',$(prefix)/lib)
> +instdir_SQ = $(subst ','\'',$(subst installsitelib=,'',$(shell $(PERL_PATH_SQ) -V:installsitelib)))
> $(makfile): ../GIT-CFLAGS Makefile
> 	echo all: private-Error.pm Git.pm > $@
> 	echo '	mkdir -p blib/lib' >> $@
> -- 
> 1.7.8.3
> 
> --
> nicholas harteau
> nrh@spotify.com
> 
> 
> 
> 

--
nicholas harteau
nrh@spotify.com

```

## Jeff King, 2012-02-06 20:26

Subject: Re: [PATCH] perl/Makefile: use 'installsitelib' even with NO_PERL_MAKEMAKER
Message-ID: <20120206202610.GC30776@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20120206202610.GC30776%40sigill.intra.peff.net
In-Reply-To: <7328033C-8A11-452D-A927-E81E2DC4ABD6@spotify.com>

```
On Mon, Feb 06, 2012 at 02:38:20PM -0500, Nicholas Harteau wrote:

> > perl/Makefile installs Git.pm into $prefix/lib when ExtUtils::MakeMaker
> > is not present.  perl can't "use Git;" in that scenario, as $prefix/lib
> > isn't in perl's include path.
> > 
> > This patch installs Git.pm into perl's 'installsitelib', generally
> > $prefix/lib/perl5/site_perl, so that even when ExtUtils::MakeMaker isn't
> > present, Git.pm gets installed in a location where 'use Git;' just
> > works.
> [...]
> > ifdef NO_PERL_MAKEMAKER
> > -instdir_SQ = $(subst ','\'',$(prefix)/lib)
> > +instdir_SQ = $(subst ','\'',$(subst installsitelib=,'',$(shell $(PERL_PATH_SQ) -V:installsitelib)))

Isn't this a regression if I am a non-root user installing into
$HOME/local or similar? With MakeMaker, I end up with this in my
perl.mak:

  PREFIX = /home/peff/local
  ...
  SITEPREFIX = $(PREFIX)
  ...
  INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.14.2

which works great.  Before your patch, without MakeMaker, git would
install into /home/peff/local/lib, which is also OK. But with your
patch, it will try:

  $ perl -V:installsitelib
  installsitelib='/usr/local/share/perl/5.14.2';

which is not writable by me, and the install will fail.

I know it's more convenient for some uses, because we know that
installsitelib will be in perl's @INC. But git has always installed out
of the box for non-root users, and I don't think we want to change that.

-Peff

```

## Nicholas Harteau, 2012-02-06 20:30

Subject: Re: [PATCH] perl/Makefile: use 'installsitelib' even with NO_PERL_MAKEMAKER
Message-ID: <9D199309-85A6-42EE-9417-8C4E61534670@spotify.com>
URL: https://gitlist.dev/e/9D199309-85A6-42EE-9417-8C4E61534670%40spotify.com
In-Reply-To: <20120206202610.GC30776@sigill.intra.peff.net>

```
On Feb 6, 2012, at 3:26 PM, Jeff King wrote:

> On Mon, Feb 06, 2012 at 02:38:20PM -0500, Nicholas Harteau wrote:
> 
>>> perl/Makefile installs Git.pm into $prefix/lib when ExtUtils::MakeMaker
>>> is not present.  perl can't "use Git;" in that scenario, as $prefix/lib
>>> isn't in perl's include path.
>>> 
>>> This patch installs Git.pm into perl's 'installsitelib', generally
>>> $prefix/lib/perl5/site_perl, so that even when ExtUtils::MakeMaker isn't
>>> present, Git.pm gets installed in a location where 'use Git;' just
>>> works.
>> [...]
>>> ifdef NO_PERL_MAKEMAKER
>>> -instdir_SQ = $(subst ','\'',$(prefix)/lib)
>>> +instdir_SQ = $(subst ','\'',$(subst installsitelib=,'',$(shell $(PERL_PATH_SQ) -V:installsitelib)))
> 
> Isn't this a regression if I am a non-root user installing into
> $HOME/local or similar? With MakeMaker, I end up with this in my
> perl.mak:
> 
>  PREFIX = /home/peff/local
>  ...
>  SITEPREFIX = $(PREFIX)
>  ...
>  INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.14.2
> 
> which works great.  Before your patch, without MakeMaker, git would
> install into /home/peff/local/lib, which is also OK. But with your
> patch, it will try:
> 
>  $ perl -V:installsitelib
>  installsitelib='/usr/local/share/perl/5.14.2';
> 
> which is not writable by me, and the install will fail.
> 
> I know it's more convenient for some uses, because we know that
> installsitelib will be in perl's @INC. But git has always installed out
> of the box for non-root users, and I don't think we want to change that.


Totally correct - let me re-think the non-root case.  Thanks.



--
Nicholas Harteau
nrh@spotify.com

```

## Jeff King, 2012-02-06 20:34

Subject: Re: [PATCH] perl/Makefile: use 'installsitelib' even with NO_PERL_MAKEMAKER
Message-ID: <20120206203429.GA31404@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20120206203429.GA31404%40sigill.intra.peff.net
In-Reply-To: <9D199309-85A6-42EE-9417-8C4E61534670@spotify.com>

```
On Mon, Feb 06, 2012 at 03:30:54PM -0500, Nicholas Harteau wrote:

> >>> ifdef NO_PERL_MAKEMAKER
> >>> -instdir_SQ = $(subst ','\'',$(prefix)/lib)
> >>> +instdir_SQ = $(subst ','\'',$(subst installsitelib=,'',$(shell $(PERL_PATH_SQ) -V:installsitelib)))
> > 
> > Isn't this a regression if I am a non-root user installing into
> > $HOME/local or similar? With MakeMaker, I end up with this in my
> > perl.mak:
> [...]
> 
> Totally correct - let me re-think the non-root case.  Thanks.

I just read the github PR you linked to. It sounds like it might work to
just add a knob that the homebrew recipe could tweak to enable this
behavior (with the knob off by default).

-Peff

```
