Subject: Re: [PATCH] instaweb: make the perl path configurable

From: Charles McGarvey <[email-masked]>
Date: Wed, 12 Jun 2013 12:48:17 -0600

On 06/12/2013 08:00 AM, Jakub Narebski wrote:
> Charles McGarvey <chazmcgarvey <at> brokenzipper.com> writes:
> 
>> It is convenient for the user to be able to customize the path to perl if they
>> do not want to use the system perl.  This may be the case, for example, if the
>> user wants to use the plackup httpd but its extra dependencies are not
>> installed in the system perl; they can set the perl path to a perl that they
>> install and have control over in their own home directory.
> 
> Is it really necessary?  There is always PERL5LIB if one wants to use Perl
> modules installed in one's own home directory.  If one is using local::lib
> one has it "for free".

Yes, that's right.  Using PERL5LIB would solve the example problem in the
commit message, and it would even be pretty simple to set up using local::lib.
 So, no, this isn't strictly necessary.

> If they do not want to use system perl there is always perlbrew.

Well, perlbrew is actually what I had in mind for this patch.  Without it, it
seems like the perl path -- which is configured while building git.git so is
not easily changed by the user -- is "hard-coded" in the shebang line of the
plackup script file which is then made executable and exec'd, to start the
httpd.  Given that process, I don't see how that code allows the user to use
any other perl, or am I missing something?

If adding a new config variable seems too heavy-handed for such a trivial
problem, another approach would be to use the first perl in PATH and fall back
on the git.git build system-configured perl if there is no perl in PATH.
However, considering the nature of perlbrew, the user may have many different
perls installed and multiple terminals open with shells configured for
different perls.  To make the instaweb command search the PATH for perl would
introduce some unpredictability; the command would succeed or fail depending
on whether or not the perl being "used" in the current shell has the plackup
httpd dependencies installed.  So I think I prefer the ability to configure
which perl to have git always use for instaweb over this approach.

In short summary, this patch isn't necessary because everyone could use
local::lib to manage dependencies not installed at the system level, but I
think this patch is desirable for those of us who use perlbrew and not
local::lib.  Of course, I'm open to alternatives and other suggestions.

Thanks Jakub,

-- 
Charles McGarvey