From: Tomas Doran Date: Wed, 9 Dec 2009 01:45:32 +0000 (+0000) Subject: Commit all of the local::lib scripts in base form X-Git-Tag: 0.002002~30 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FGitalist.git;a=commitdiff_plain;h=dc39dae6dc57cd161f707705926cd4356ce28123 Commit all of the local::lib scripts in base form --- diff --git a/Makefile.PL b/Makefile.PL index 5a924aa..7b519ec 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,4 +1,6 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/script/env" or die $@ } use strict; use warnings; diff --git a/script/bootstrap.pl b/script/bootstrap.pl new file mode 100644 index 0000000..3ee6ed2 --- /dev/null +++ b/script/bootstrap.pl @@ -0,0 +1,107 @@ +#!/usr/bin/env perl + +# This script installs an initial local::lib into your application directory +# named local-lib5, which automatically turns on local::lib support by default. + +# Needs to be run as script/bootstrap.pl + +# Will then install Module::Install, and all of your dependencies into +# the local lib directory created. + +use strict; +use warnings; + +use lib; +use FindBin; +use CPAN; + +# Do not take no for an answer. + +$ENV{CATALYST_LOCAL_LIB}=1; + +# Get the base paths and setup your %ENV + +my $basedir; +if (-r "$FindBin::Bin/Makefile.PL") { + $basedir = $FindBin::Bin; +} +elsif (-r "$FindBin::Bin/../Makefile.PL") { + $basedir = "$FindBin::Bin/.."; +} + +$basedir ||= ''; +my $target = "$basedir/local-lib5"; +my $lib = "$target/lib/perl5"; + +# Start installing stuff in the target dir +$ENV{PERL_MM_OPT} = "INSTALL_BASE=$target"; +$ENV{PERL_MM_USE_DEFAULT} = "1"; +# And allow dependency checks to find it +lib->import("$target/lib/perl5"); + +# Deal with the weird case that cpan has never been run before and +# cpan wants to create a .cpan directory in /root or somewhere you +# can't access + +local %CPAN::Config; +require CPAN::HandleConfig;w +CPAN::HandleConfig->load(); +$CPAN::Config->{prefs_dir} = "~/.cpan/prefs"; + +# First just force install local::lib to get it local to $target +force(qw/install LWP::UserAgent/); # Need LWP for CPAN to work on Mac, as curl and + # wget puke on the spaces in + # ~/Library/Applicaton Support + # Note - this needs to happen before File::HomeDir +# Need to force File::HomeDir on the Mac +if ($^O eq "darwin") { + force(qw/install Mac::Carbon/); +} +force(qw/install local::lib/); + +require local::lib; # Turn local::lib on +local::lib->import( $target ); + +# Become fully self contained +$ENV{PERL5LIB} = ""; # If we used a local::lib to bootstrap, this kills it. + +# Sorry kane ;) +$ENV{PERL_AUTOINSTALL_PREFER_CPAN}=1; +$ENV{PERL_MM_OPT} .= " INSTALLMAN1DIR=none INSTALLMAN3DIR=none"; + +local::lib->import( '--self-contained', $target ); + +# Force a re-install of local::lib here to get the dependencies for local::lib +# It requires things which ensure we have an unfucked toolchain :) +force(qw/install local::lib/); + +# Install the base modules +install('Module::Install'); +install('YAML'); +install('CPAN'); +install('Module::Install::Catalyst'); + +# setup distroprefs +{ + # Ok, god only knows what version of CPAN we started with, so lets nuke the + # config and try to reload it here for safety + local %CPAN::Config; + require CPAN::HandleConfig; # not installed till we installed CPAN (5.8.x) + CPAN::HandleConfig->load(); + mkdir $CPAN::Config->{prefs_dir} unless -d $CPAN::Config->{prefs_dir}; + open(my $prefs, ">", File::Spec->catfile($CPAN::Config->{prefs_dir}, + "catalyst_local-lib-disable-mech-live.yml")) or die "Can't open prefs_dir: $!"; + + print $prefs qq{--- +comment: "WWW-Mechanize regularly fails its live tests, turn them off." +match: + distribution: "^PETDANCE/WWW-Mechanize-1.\\d+\\.tar\\.gz" +patches: + - "BOBTFISH/WWW-Mechanize-1.XX-BOBTFISH-01_notests.patch.gz" +}; + + close($prefs); +} + +print "local::lib setup, type perl Makefile.PL && make installdeps to install dependencies"; + diff --git a/script/env b/script/env new file mode 100755 index 0000000..d7c7686 --- /dev/null +++ b/script/env @@ -0,0 +1,77 @@ +#!/usr/bin/env perl +# vim: set filetype=perl: + +# env is a perl script similar in concept to /usr/bin/env + +# If you have a local-lib5 directory then this script will set it up for +# you as it executes. + +# If used like /usr/bin/env then it will run other commands based on +# your current path settings (with a local::lib environment if present) +# +# e.g. script/env bash +# +# NOTE: This environment _IS NOT_ self contained + +# If included inside another perl script, then it will be a no-op if +# a local::lib environment is not present, but if one is, it will be +# used as a --self-contained environment, expected to contain all non-core +# dependencies for your perl +# +# e.g. +# use FindBin; +# BEGIN { do "$FindBin::Bin/env" or die $@ } + +# The local::lib behavior can be explicitly enabled or disabled by setting +# the CATALYST_LOCAL_LIB enviromnent variable to true or false. + +use strict; +use warnings; +use Carp; +use lib; +use FindBin; + +my $basedir; +if (-r "$FindBin::Bin/Makefile.PL") { + $basedir = $FindBin::Bin; +} +elsif (-r "$FindBin::Bin/../Makefile.PL") { + $basedir = "$FindBin::Bin/.."; +} + +$basedir ||= ''; +my $target = "$basedir/local-lib5"; + +my $on = -d $target; +$on = ! ! $ENV{CATALYST_LOCAL_LIB} + if (exists $ENV{CATALYST_LOCAL_LIB} and defined $ENV{CATALYST_LOCAL_LIB}); + +Carp::confess("Could not find local-lib5 from '$FindBin::Bin'") + if ($on && ! length $basedir); + +if ( $on ) { + # So we can find local::lib when fully self contained + lib->import("$target/lib/perl5"); + + # . for CPAN + app dir + my @include = ('.', "$basedir/lib"); + + $ENV{PERL5LIB} = join ':', @include; + + # Sorry kane ;) + $ENV{PERL_AUTOINSTALL_PREFER_CPAN}=1; + + $ENV{PERL_MM_OPT} .= " INSTALLMAN1DIR=none INSTALLMAN3DIR=none"; + + require local::lib; + local::lib->import( '--self-contained', $target ); +} + +unless ( caller ) { + if ( @ARGV ) { + exec @ARGV; + } +} + +1; + diff --git a/script/gitalist_cgi.pl b/script/gitalist_cgi.pl index 9ef29e6..4afe54e 100755 --- a/script/gitalist_cgi.pl +++ b/script/gitalist_cgi.pl @@ -1,5 +1,8 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/env" or die $@ } + use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('Gitalist', 'CGI'); diff --git a/script/gitalist_create.pl b/script/gitalist_create.pl index 41cf45e..b8e3fea 100755 --- a/script/gitalist_create.pl +++ b/script/gitalist_create.pl @@ -1,4 +1,6 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/env" or die $@ } use strict; use warnings; diff --git a/script/gitalist_fastcgi.pl b/script/gitalist_fastcgi.pl index 37f989b..6948d49 100755 --- a/script/gitalist_fastcgi.pl +++ b/script/gitalist_fastcgi.pl @@ -1,4 +1,6 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/env" or die $@ } use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('Gitalist','FastCGI'); diff --git a/script/gitalist_server.pl b/script/gitalist_server.pl index 2e60bce..37d6b1f 100755 --- a/script/gitalist_server.pl +++ b/script/gitalist_server.pl @@ -1,4 +1,6 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/env" or die $@ } BEGIN { $ENV{CATALYST_SCRIPT_GEN} = 40; diff --git a/script/gitalist_test.pl b/script/gitalist_test.pl index 67621d5..ab28c5c 100755 --- a/script/gitalist_test.pl +++ b/script/gitalist_test.pl @@ -1,4 +1,6 @@ #!/usr/bin/env perl +use FindBin; +BEGIN { do "$FindBin::Bin/env" or die $@ } use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('Gitalist','Test');