All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git@vger.kernel.org,
	Pavan Kumar Sunkara <pavan.sss1991@gmail.com>,
	Petr Baudis <pasky@ucw.cz>,
	Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCHv2/RFC] gitweb: Prepare for splitting gitweb
Date: Wed, 14 Jul 2010 00:24:57 +0200	[thread overview]
Message-ID: <201007140024.58446.jnareb@gmail.com> (raw)
In-Reply-To: <201007072205.14345.jnareb@gmail.com>

On Wed, 7 Jul 2010, Jakub Narebski wrote:
> On Wed, 7 Jul 2010, Ævar Arnfjörð Bjarmason napisał:
> > On Wed, Jul 7, 2010 at 09:57, Jakub Narebski <jnareb@gmail.com> wrote:
> > > [...]
> > >  use strict;
> > >  use warnings;
> > > +
> > > +use File::Spec;
> > > +# __DIR__ is taken from Dir::Self __DIR__ fragment
> > > +sub __DIR__ () {
> > > +       File::Spec->rel2abs(join '', (File::Spec->splitpath(__FILE__))[0, 1]);
> > > +}
> > > +use lib __DIR__ . '/lib';
> > > +
> > 
> > What was the result of the discussion about using __DIR__ again? You
> > only need to use that method when you call a perl program whith *then*
> > includes a module. If you just need to add the lib/ directory relative
> > to the script you're invoking you can use FindBin:
> > 
> >     use FindBin qw($Bin);
> >     use lib "$Bin/lib";
> 
> It's
> 
>       use lib "$Bin/../lib";
> 
> (I don't like this ../lib here, but that's my personal preference).

Actually for gitweb, where gitweb.cgi is put in "top" directory, and
lib/ directory is in the same directory that the script is, it would
be

        use FindBin qw($Bin);
        use lib "$Bin/lib";

The documentation says that $FindBin::Bin is

        $Bin    - path to bin directory from where script was invoked

so it is path to directory, not to script itself.

If it worked...

> But you might be right that I am overly cautious in avoiding FindBin.
> It is nowadays not recommended solution (on #perl, for example), but
> it is perhaps true that the conditions where it fails are not fulfilled
> for the case of gitweb.
> 
> Or perhaps not:
> 
>   KNOWN ISSUES
> 
>   If there are two modules using FindBin from different directories
>   under the same interpreter, this won't work. Since FindBin uses a
>   BEGIN block, it'll be executed only once, and only the first caller
>   will get it right. This is a problem under **mod_perl** and other
>   persistent Perl environments, where you shouldn't use this module.
> 
> Gitweb can be used under mod_perl (to be more exact ModPerl::Registry).

I wrote simple script that tests result of __DIR__ and $FindBin::Bin.
For cgi-bin / mod_cgi it was:

  __DIR__       = /var/www/cgi-bin/gitweb (symlink to /home/local/gitweb)
  $FindBin::Bin = /home/local/gitweb

For mod_perl (ModPerl::Registry handler) it was

  __DIR__       = /var/www/perl/gitweb (symlink to /home/local/gitweb)
  $FindBin::Bin = /

As you can see it's useless.  I have't checked the FastCGI case...

-- 
Jakub Narebski
Poland

  parent reply	other threads:[~2010-07-13 22:25 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-07  9:57 [PATCHv2/RFC] gitweb: Prepare for splitting gitweb Jakub Narebski
2010-07-07 10:30 ` Ævar Arnfjörð Bjarmason
2010-07-07 20:05   ` Jakub Narebski
2010-07-08  7:01     ` Jakub Narebski
2010-07-13 22:24     ` Jakub Narebski [this message]
2010-07-13 22:30       ` Ævar Arnfjörð Bjarmason
2010-07-14  9:24         ` Jakub Narebski
2010-07-14 10:05           ` Ævar Arnfjörð Bjarmason
2010-07-14 21:21             ` Jakub Narebski
2010-07-07 16:25 ` Junio C Hamano
2010-07-07 20:20   ` Jakub Narebski
2010-07-08  0:30     ` Junio C Hamano
2010-07-08  6:59       ` Jakub Narebski
2010-07-08  7:20         ` [PATCHv3/RFC] " Jakub Narebski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201007140024.58446.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=avarab@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=pasky@ucw.cz \
    --cc=pavan.sss1991@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.