0.11_09 commit
[bse.git] / localinst.perl
index 0c3aab5..e5c97b4 100644 (file)
@@ -2,23 +2,19 @@
 use strict;
 #use File::Tree;
 use File::Copy;
+use lib 't';
+use BSE::Test ();
 
 my $dist = shift or die "Usage: $0 distdir [leavedb]";
 my $leavedb = shift or 0;
-my $instbase = shift || "/home/httpd/bsetest";
+my $instbase = shift || BSE::Test::base_dir() || die "No base_dir";
 
-my $mysql = "/usr/local/mysql/bin/mysql";
+my $mysql = BSE::Test::mysql_name;
 
-if (-e "$instbase/cgi-bin/modules/Constants.pm"
-    && !-e "$instbase/Constants.pm") {
-  system "cp $instbase/cgi-bin/modules/Constants.pm $instbase/Constants.pm"
-}
-my $gotconf;
-eval {
-  require $instbase."/Constants.pm";
-  $Constants::BASEDIR . $Constants::URLBASE . $Constants::SECURLBASE;
-  ++$gotconf;
-};
+#  if (-e "$instbase/cgi-bin/modules/Constants.pm"
+#      && !-e "$instbase/Constants.pm") {
+#    system "cp $instbase/cgi-bin/modules/Constants.pm $instbase/Constants.pm"
+#  }
 
 system("rm -rf $instbase/cgi-bin")
   and die "Cannot remove cgi-bin";
@@ -29,7 +25,6 @@ system "rm -f $instbase/htdocs/{*.html,a/*.html,shop/*.html,images/*.jpg}"
 
 system "cp -rf $dist/site/cgi-bin $instbase"
   and die "Cannot copy cgi-bin";
-unlink "$instbase/cgi-bin/bse.cfg";
 
 system "cp -rf $dist/site/htdocs $instbase"
   and die "Cannot copy htdocs";
@@ -39,44 +34,60 @@ system "cp -rf $dist/site/data $instbase"
   and die "Cannot copy data";
 system "cp -rf $dist/site/util $instbase";
 
-if ($gotconf) {
-  print "Updating conf\n";
-  # try to update Constants.pm
-  open CON, "< $instbase/cgi-bin/modules/Constants.pm"
-    or die "Cannot open Constants.pm";
-  my $con = do { local $/; <CON> };
-  close CON;
+print "Updating conf\n";
+# try to update Constants.pm
+open CON, "< $instbase/cgi-bin/modules/Constants.pm"
+  or die "Cannot open Constants.pm";
+my $con = do { local $/; <CON> };
+close CON;
 
-  if (defined $Constants::DB && !defined $Constants::DSN) {
-    $Constants::DSN = 'dbi:mysql:'.$Constants::DB;
-    $Constants::DBCLASS = "BSE::DB::Mysql";
-    $Constants::SESSION_CLASS = "Apache::Session::MySQL";
-  }
-  $con =~ s/(^\$DSN = ')[^']*/$1$Constants::DSN/m;
-  $con =~ s/(^\$DBCLASS = ')[^']*/$1$Constants::DBCLASS/m;
-  $con =~ s/(^\$UN = ')[^']*/$1$Constants::UN/m;
-  $con =~ s/(^\$PW = ')[^']*/$1$Constants::PW/m;
-  $con =~ s/(^\$BASEDIR = ')[^']+/$1$Constants::BASEDIR/m;
-  $con =~ s/(^\$URLBASE = ["'])[^'"]+/$1$Constants::URLBASE/m;
-  $con =~ s/(^\$SECURLBASE = ["'])[^'"]+/$1$Constants::SECURLBASE/m;
-  $con =~ s/(^\$SESSION_CLASS = ["'])[^'"]+/$1$Constants::SESSION_CLASS/m;
-  open CON, "> $instbase/cgi-bin/modules/Constants.pm"
-    or die "Cannot open Constants.pm for write: $!";
-  print CON $con;
-  close CON;
+my $dbuser = BSE::Test::test_dbuser();
+my $dbpass = BSE::Test::test_dbpass();
+
+$con =~ s/(^\$DSN = ')[^']*/$1 . BSE::Test::test_dsn()/me;
+$con =~ s/(^\$DBCLASS = ')[^']*/$1 . BSE::Test::test_dbclass()/me;
+$con =~ s/(^\$UN = ')[^']*/$1$dbuser/m;
+$con =~ s/(^\$PW = ')[^']*/$1$dbpass/m;
+$con =~ s/(^\$BASEDIR = ')[^']+/$1 . BSE::Test::base_dir/me;
+#$con =~ s/(^\$URLBASE = ["'])[^'"]+/$1 . BSE::Test::base_url/me;
+#$con =~ s/(^\$SECURLBASE = ["'])[^'"]+/$1 . BSE::Test::test_securl/me;
+$con =~ s/(^\$SESSION_CLASS = ["'])[^'"]+/$1 . BSE::Test::test_sessionclass()/me;
+open CON, "> $instbase/cgi-bin/modules/Constants.pm"
+  or die "Cannot open Constants.pm for write: $!";
+print CON $con;
+close CON;
 
-  # build the database
-  unless ($leavedb) {
-    if ($Constants::DSN =~ /:mysql:(?:database=)?(\w+)/) {
-      my $db = $1;
-      system "$mysql -u$Constants::UN -p$Constants::PW $db <$dist/schema/bse.sql"
-       and die "Cannot initialize database";
-      system "cd $instbase/util ; perl initial.pl"
-       and die "Cannot load database";
-    }
-    else {
-      print "WARNING: cannot install to $Constants::DSN database\n";
-    }
+# fix bse.cfg
+open CFG, "< $instbase/cgi-bin/bse.cfg"
+  or die "Cannot open $instbase/cgi-bin/bse.cfg: $!";
+my $cfg = do { local $/; <CFG> };
+close CFG;
+$cfg =~ s/^name\s*=.*/name=Test Server/m;
+$cfg =~ s/^url\s*=.*/"url=" . BSE::Test::base_url()/me;
+$cfg =~ s/^secureurl\s*=.*/"secureurl=" . BSE::Test::base_url()/me;
+my $uploads = "$instbase/uploads";
+$cfg =~ s!^downloads\s*=.*!downloads=$uploads!m;
+-d $uploads 
+  or mkdir $uploads, 0777 
+  or die "Cannot find or create upload directory: $!";
+open CFG, "> $instbase/cgi-bin/bse.cfg"
+  or die "Cannot create $instbase/cgi-bin/bse.cfg: $!";
+print CFG $cfg;
+close CFG;
+
+# build the database
+unless ($leavedb) {
+  my $dsn = BSE::Test::test_dsn();
+  if ($dsn =~ /:mysql:(?:database=)?(\w+)/) {
+    my $db = $1;
+    system "$mysql -u$dbuser -p$dbpass $db <$dist/schema/bse.sql"
+      and die "Cannot initialize database";
+    system "cd $instbase/util ; perl initial.pl"
+      and die "Cannot load database";
+  }
+  else {
+    print "WARNING: cannot install to $dsn database\n";
   }
 }
+