diff -Naurp bricolage-1.10.2.orig/Makefile bricolage-1.10.2/Makefile --- bricolage-1.10.2.orig/Makefile 2006-09-01 09:34:01.000000000 -0400 +++ bricolage-1.10.2/Makefile 2006-09-01 09:44:30.000000000 -0400 @@ -24,6 +24,14 @@ PERL = /usr/bin/perl # Blank by default, but set to QUIET to ask essential questions only INSTALL_VERBOSITY?= STANDARD +# Destdir support +DESTDIR?= / + +# INSTALLDIRS support +INSTALLDIRS?= site + +USE_DEFAULTS?=standard + # can't load Bric since it loads Bric::Config which has dependencies # that won't be solved till make install. BRIC_VERSION = `$(PERL) -ne '/VERSION.*?([\d\.]+)/ and print $$1 and exit' < lib/Bric.pm` @@ -53,7 +61,9 @@ postgres.db : inst/postgres.pl required $(PERL) inst/postgres.pl $(INSTALL_VERBOSITY) config.db : inst/config.pl required.db apache.db postgres.db - $(PERL) inst/config.pl $(INSTALL_VERBOSITY) + $(PERL) inst/config.pl INSTALL_VERBOSITY=$(INSTALL_VERBOSITY) \ + DESTDIR=$(DESTDIR) INSTALLDIRS=$(INSTALLDIRS) \ + USE_DEFAULTS=$(USE_DEFAULTS) bconf/bricolage.conf : required.db inst/conf.pl $(PERL) inst/conf.pl INSTALL $(BRIC_VERSION) @@ -184,11 +194,11 @@ cpan : modules.db postgres.db inst/cpa lib : -rm -f lib/Makefile - cd lib; $(PERL) Makefile.PL; $(MAKE) install + cd lib; $(PERL) Makefile.PL INSTALLDIRS=$(INSTALLDIRS) DESTDIR=$(DESTDIR) ; $(MAKE) install bin : -rm -f bin/Makefile - cd bin; $(PERL) Makefile.PL; $(MAKE) install + cd bin; $(PERL) Makefile.PL INSTALLDIRS=$(INSTALLDIRS) DESTDIR=$(DESTDIR) ; $(MAKE) install files : config.db bconf/bricolage.conf $(PERL) inst/files.pl diff -Naurp bricolage-1.10.2.orig/Makefile.PL bricolage-1.10.2/Makefile.PL --- bricolage-1.10.2.orig/Makefile.PL 2006-09-01 09:34:01.000000000 -0400 +++ bricolage-1.10.2/Makefile.PL 2006-09-01 09:45:46.000000000 -0400 @@ -7,9 +7,19 @@ use File::Copy; my $old = 'Makefile'; my $new = 'Makefile.new'; +my $PREFIX = ""; +my $DESTDIR = "/"; +my $INSTALLDIRS="site"; open OLD, "<", $old or die "Unable to open $old: $!\n"; open NEW, ">", $new or die "Unable to open $new: $!\n"; + +foreach my $key (@ARGV) { + if ($key =~ m/^PREFIX/) { $PREFIX = $key } + if ($key =~ m/^DESTDIR/) { $DESTDIR = $key } + if ($key =~ m/^INSTALLDIRS/) { $INSTALLDIRS = $key } +} + my $flag; while () { if ($flag) { @@ -17,6 +27,12 @@ while () { next; } elsif (/^PERL\s*=\s*/) { print NEW "PERL = $Config{perlpath}\n"; + } elsif (/^PREFIX/) { + print NEW "$PREFIX\n" + } elsif (/^DESTDIR/) { + print NEW "$DESTDIR\n"; + } elsif (/^INSTALLDIRS/) { + print NEW "$INSTALLDIRS\n" } else { print NEW; } diff -Naurp bricolage-1.10.2.orig/bin/Makefile.PL bricolage-1.10.2/bin/Makefile.PL --- bricolage-1.10.2.orig/bin/Makefile.PL 2006-09-01 09:34:00.000000000 -0400 +++ bricolage-1.10.2/bin/Makefile.PL 2006-09-01 09:48:02.000000000 -0400 @@ -30,18 +30,28 @@ manifypods: } } +my $DESTDIR; +if ( exists $CONFIG->{DESTDIR} && -d $CONFIG->{DESTDIR} ) { + $DESTDIR = $CONFIG->{DESTDIR} +} else { + $DESTDIR = "" +} + # Write out the Makefile WriteMakefile(NAME => 'bric_bin', EXE_FILES => \@EXE, ( exists $CONFIG->{MODULE_DIR} ? - ( INSTALLSITELIB => $CONFIG->{MODULE_DIR} ) : + ( INSTALLSITELIB => "$DESTDIR/$CONFIG->{MODULE_DIR}" ) : ()), + ( exists $CONFIG->{DESTDIR} ? + ( DESTDIR => $CONFIG->{DESTDIR} ) : + ()), ( exists $CONFIG->{BIN_DIR} ? ( INSTALLSCRIPT => $CONFIG->{BIN_DIR}, - INSTALLSITEBIN => $CONFIG->{BIN_DIR} ) : + INSTALLSITEBIN => "$DESTDIR/$CONFIG->{BIN_DIR}" ) : ()), ( exists $CONFIG->{MAN_DIR} ? ( INSTALLMAN1DIR => "$CONFIG->{MAN_DIR}/man1", - INSTALLSITEMAN1DIR => "$CONFIG->{MAN_DIR}/man1") : + INSTALLSITEMAN1DIR => "$DESTDIR/$CONFIG->{MAN_DIR}/man1") : ())); diff -Naurp bricolage-1.10.2.orig/inst/config.pl bricolage-1.10.2/inst/config.pl --- bricolage-1.10.2.orig/inst/config.pl 2006-09-01 09:34:00.000000000 -0400 +++ bricolage-1.10.2/inst/config.pl 2006-09-01 09:56:25.000000000 -0400 @@ -38,9 +38,16 @@ use Cwd; # check whether questions should be asked our $QUIET; -$QUIET = 1 if $ARGV[0] and $ARGV[0] eq 'QUIET'; +our $INSTALLDIRS; +our $DESTDIR; +our $INSTALL_VERBOSITY; + +$INSTALLDIRS = $ENV{'INSTALLDIRS'}; +$DESTDIR = $ENV{'DESTDIR'}; +if ($ENV{'INSTALL_VERBOSITY'} eq "QUIET" ) { $QUIET=1} + +print "\n\n==> $QUIET $INSTALL_VERBOSITY Gathering User Configuration <==\n\n"; -print "\n\n==> Gathering User Configuration <==\n\n"; our %CONFIG; # our $REQ; @@ -52,6 +59,10 @@ do "./apache.db" or die "Failed to read choose_defaults(); confirm_settings(); +# Just to be safe, just add 'em to Config +$CONFIG{INSTALLDIRS} = "$INSTALLDIRS"; +$CONFIG{DESTDIR} = "$DESTDIR"; + # all done, dump out apache database, announce success and exit open(OUT, ">config.db") or die "Unable to open config.db : $!"; print OUT Data::Dumper->Dump([\%CONFIG],['CONFIG']); @@ -85,9 +96,9 @@ END # setup the default if ($CONFIG{set} eq 's') { # single system defaults - $CONFIG{BRICOLAGE_ROOT} = '/usr/local/bricolage'; + $CONFIG{BRICOLAGE_ROOT} = $ENV{BRICOLAGE_ROOT}||'/usr/local/bricolage'; $CONFIG{TEMP_DIR} = tmpdir(); - $CONFIG{MODULE_DIR} = $Config{sitelib}; + $CONFIG{MODULE_DIR} = $Config{vendorlib}; $CONFIG{BIN_DIR} = $Config{scriptdir}; $CONFIG{MAN_DIR} = $Config{man3dir}; $CONFIG{MASON_COMP_ROOT} = '$CONFIG{BRICOLAGE_ROOT}/comp'; @@ -115,7 +126,8 @@ END } else { # multi system defaults - $CONFIG{BRICOLAGE_ROOT} = '/usr/local/bricolage'; + $CONFIG{BRICOLAGE_ROOT} = $ENV{BRICOLAGE_ROOT}||'/usr/local/bricolage'; + # evaluated after BRICOLAGE_ROOT is set $CONFIG{TEMP_DIR} = '$CONFIG{BRICOLAGE_ROOT}/tmp'; @@ -126,6 +138,8 @@ END $CONFIG{PID_FILE} = '$CONFIG{BRICOLAGE_ROOT}/log/httpd.pid'; $CONFIG{MASON_COMP_ROOT} = '$CONFIG{BRICOLAGE_ROOT}/comp'; $CONFIG{MASON_DATA_ROOT} = '$CONFIG{BRICOLAGE_ROOT}/data'; + $CONFIG{DESTDIR} = get_default("DESTDIR"); + } } else { # use QUIET defaults @@ -165,7 +179,7 @@ sub confirm_settings { # some prefs are based on BRICOLAGE_ROOT, need to eval them now foreach (qw(TEMP_DIR MODULE_DIR BIN_DIR MAN_DIR LOG_DIR PID_FILE - MASON_COMP_ROOT MASON_DATA_ROOT)) { + MASON_COMP_ROOT MASON_DATA_ROOT DESTDIR)) { $CONFIG{$_} = eval qq{"$CONFIG{$_}"}; } diff -Naurp bricolage-1.10.2.orig/inst/files.pl bricolage-1.10.2/inst/files.pl --- bricolage-1.10.2.orig/inst/files.pl 2006-09-01 09:34:00.000000000 -0400 +++ bricolage-1.10.2/inst/files.pl 2006-09-01 09:58:53.000000000 -0400 @@ -83,11 +83,11 @@ exit 0; # create paths configured by the user sub create_paths { - mkpath([catdir($CONFIG->{MASON_COMP_ROOT}, "data"), - $CONFIG->{MASON_DATA_ROOT}, - catdir($CONFIG->{BRICOLAGE_ROOT}, "conf"), - catdir($CONFIG->{TEMP_DIR}, "bricolage"), - $CONFIG->{LOG_DIR}], + mkpath([catdir($CONFIG->{DESTDIR},$CONFIG->{MASON_COMP_ROOT}, "data"), + catdir($CONFIG->{DESTDIR},$CONFIG->{MASON_DATA_ROOT}), + catdir($CONFIG->{DESTDIR},$CONFIG->{BRICOLAGE_ROOT}, "conf"), + catdir($CONFIG->{DESTDIR},$CONFIG->{TEMP_DIR}, "bricolage"), + catdir($CONFIG->{DESTDIR},$CONFIG->{LOG_DIR})], 1, 0755); } @@ -95,6 +95,7 @@ sub create_paths { # copy files - should be called by a find() with no_chdir set sub copy_files { my $root = shift; + if ($CONFIG->{DESTDIR}) { $root = $CONFIG->{DESTDIR}."$root"} return if /\.$/; return if /.svn/; return if $UPGRADE and m!/data/!; # Don't upgrade data files. @@ -120,11 +121,11 @@ sub copy_files { # and the files beneath them. sub assign_permissions { system("chown", "-R", $AP->{user} . ':' . $AP->{group}, - catdir($CONFIG->{MASON_COMP_ROOT}, "data")); + catdir($CONFIG->{DESTDIR},$CONFIG->{MASON_COMP_ROOT}, "data")); system("chown", "-R", $AP->{user} . ':' . $AP->{group}, - $CONFIG->{MASON_DATA_ROOT}); + catdir($CONFIG->{DESTDIR},$CONFIG->{MASON_DATA_ROOT})); system("chown", "-R", $AP->{user} . ':' . $AP->{group}, - catdir($CONFIG->{TEMP_DIR}, "bricolage")); + catdir($CONFIG->{DESTDIR},$CONFIG->{TEMP_DIR}, "bricolage")); system("chown", "-R", $AP->{user} . ':' . $AP->{group}, - catdir($CONFIG->{LOG_DIR})); + catdir($CONFIG->{DESTDIR},$CONFIG->{LOG_DIR})); } diff -Naurp bricolage-1.10.2.orig/lib/Makefile.PL bricolage-1.10.2/lib/Makefile.PL --- bricolage-1.10.2.orig/lib/Makefile.PL 2006-09-01 09:34:01.000000000 -0400 +++ bricolage-1.10.2/lib/Makefile.PL 2006-09-01 09:52:49.000000000 -0400 @@ -21,6 +21,13 @@ find({no_chdir => 1, }}, File::Spec->curdir); +my $DESTDIR; +if ( exists $CONFIG->{DESTDIR} && -d $CONFIG->{DESTDIR} ) { + $DESTDIR = $CONFIG->{DESTDIR} +} else { + $DESTDIR = "" +} + # skip manifying PODs if '!' is given as MAN_DIR sub MY::manifypods { if (exists $CONFIG->{MAN_DIR} && $CONFIG->{MAN_DIR} eq '!') { @@ -38,8 +45,11 @@ manifypods: WriteMakefile(NAME => 'Bric', PM => \%PM, ( exists $CONFIG->{MODULE_DIR} ? - ( INSTALLSITELIB => $CONFIG->{MODULE_DIR} ) : + ( INSTALLSITELIB => "$CONFIG->{MODULE_DIR}" ) : ()), + ( exists $CONFIG->{DESTDIR} ? + ( DESTDIR => "$CONFIG->{DESTDIR}" ) : + ()), ( exists $CONFIG->{MAN_DIR} ? ( INSTALLMAN3DIR => "$CONFIG->{MAN_DIR}/man3", INSTALLSITEMAN3DIR => "$CONFIG->{MAN_DIR}/man3") :