[open-ils-commits] r10823 - in trunk: . Open-ILS/src Open-ILS/src/support-scripts

svn at svn.open-ils.org svn at svn.open-ils.org
Fri Oct 10 23:36:45 EDT 2008


Author: dbs
Date: 2008-10-10 23:36:43 -0400 (Fri, 10 Oct 2008)
New Revision: 10823

Modified:
   trunk/Open-ILS/src/Makefile.am
   trunk/Open-ILS/src/support-scripts/eg_db_config.pl
   trunk/configure.ac
Log:
Add the ability to generate live-db-setup.pl to eg_db_config.pl
Database configuration can now be removed from configure and Makefiles


Modified: trunk/Open-ILS/src/Makefile.am
===================================================================
--- trunk/Open-ILS/src/Makefile.am	2008-10-11 02:47:18 UTC (rev 10822)
+++ trunk/Open-ILS/src/Makefile.am	2008-10-11 03:36:43 UTC (rev 10823)
@@ -262,7 +262,6 @@
 	for i in @srcdir@/cgi-bin/*cgi; do perl -pe "s{##CONFIG##}{@sysconfdir@}" < $$i > $(TMP)/$$i; done
 	cp $(TMP)/cgi-bin/*cgi $(CGIDIR)
 	cp -r @srcdir@/cgi-bin/support $(CGIDIR)
-	cp @srcdir@/cgi-bin/setup.pl @sysconfdir@/live-db-setup.pl
 	chmod 755 $(DESTDIR)$(CGIDIR)/*cgi
 
 server-xul:

Modified: trunk/Open-ILS/src/support-scripts/eg_db_config.pl
===================================================================
--- trunk/Open-ILS/src/support-scripts/eg_db_config.pl	2008-10-11 02:47:18 UTC (rev 10822)
+++ trunk/Open-ILS/src/support-scripts/eg_db_config.pl	2008-10-11 03:36:43 UTC (rev 10823)
@@ -27,6 +27,7 @@
 my ($dbhost, $dbport, $dbname, $dbuser, $dbpw, $help);
 my $config_file = '';
 my $build_db_sh = '';
+my $bootstrap_file = '';
 my @services;
 
 # Get the directory for this script
@@ -70,8 +71,28 @@
 		die "ERROR: Failed to update the configuration file '$config_file'\n";
 }
 
-sub create_schema() {
-# Extracts the info from opensrf.xml and builds the db by calling build-db.sh
+# write out the DB bootstrapping config
+sub create_db_bootstrap {
+	my ($setup, $settings) = @_;
+
+    open(FH, '>', $setup) or die "Could not write database setup to $setup\n";
+
+	print "Writing database bootstrapping configuration to $setup...\n";
+
+	printf FH "\$main::config{dsn} = 'dbi:Pg:host=%s;dbname=%s;port=%d';\n",
+		$settings->{host}, $settings->{db}, $settings->{port};
+
+	printf FH "\$main::config{usr} = '%s';\n", $settings->{user};
+	printf FH "\$main::config{pw} = '%s';\n", $settings->{pw};
+	
+	print FH "\$main::config{index} = 'config.cgi';\n";
+    close(FH);
+}
+
+# Extracts database settings from opensrf.xml
+sub get_settings {
+	my $settings = shift;
+
 	my $host = "/opensrf/default/apps/open-ils.storage/app_settings/databases/database/host/text()";
 	my $port = "/opensrf/default/apps/open-ils.storage/app_settings/databases/database/port/text()";
 	my $dbname = "/opensrf/default/apps/open-ils.storage/app_settings/databases/database/db/text()";
@@ -81,22 +102,34 @@
 	my $parser = XML::LibXML->new();
 	my $opensrf_config = $parser->parse_file($config_file);
 
+	$settings->{host} = $opensrf_config->findnodes($host);
+	$settings->{port} = $opensrf_config->findnodes($port);
+	$settings->{db} = $opensrf_config->findnodes($dbname);
+	$settings->{user} = $opensrf_config->findnodes($user);
+	$settings->{pw} = $opensrf_config->findnodes($pw);
+}
+
+# Creates the database schema by calling build-db.sh
+sub create_schema {
+	my $settings = shift;
+
 	chdir(dirname($build_db_sh));
 	system(File::Spec->catfile('.', basename($build_db_sh)) . " " .
-		$opensrf_config->findnodes($host) ." ". 
-		$opensrf_config->findnodes($port) ." ". 
-		$opensrf_config->findnodes($dbname) ." ". 
-		$opensrf_config->findnodes($user) ." ".
-		$opensrf_config->findnodes($pw));
+		$settings->{host} ." ".  $settings->{port} ." ". 
+		$settings->{db} ." ".  $settings->{user} ." ". 
+		$settings->{pw});
 	chdir($script_dir);
 }
 
-my $cschema = '';
-my $uconfig = '';
-my %settings = ();
+my $bootstrap;
+my $cschema;
+my $uconfig;
+my %settings;
 
 GetOptions("create-schema" => \$cschema, 
+		"create-bootstrap" => \$bootstrap,
 		"update-config" => \$uconfig,
+		"bootstrap-file=s" => \$bootstrap_file,
 		"config-file=s" => \$config_file,
 		"build-db-file=s" => \$build_db_sh,
 		"service=s" => \@services,
@@ -113,20 +146,33 @@
 }
 
 my $eg_config = File::Spec->catfile($script_dir, '../extras/eg_config');
-if ($config_file eq '') { 
+
+if (!$config_file) { 
 	my @temp = `$eg_config --sysconfdir`;
 	chomp $temp[0];
 	$config_file = File::Spec->catfile($temp[0], "opensrf.xml");
 }
-if ($build_db_sh eq '') {
+
+if (!$build_db_sh) {
 	$build_db_sh = File::Spec->catfile($script_dir, '../sql/Pg/build-db.sh');
 }
+
+if (!$bootstrap_file) {
+	$bootstrap_file = ('/openils/var/cgi-bin/live-db-setup.pl');
+}
+
 unless (-e $build_db_sh) { die "Error: $build_db_sh does not exist. \n"; }
 unless (-e $config_file) { die "Error: $config_file does not exist. \n"; }
+
 if ($uconfig) { update_config(\@services, \%settings); }
+
+# Get our settings from the config file
+get_settings(\%settings);
+
 if ($cschema) { create_schema(); }
+if ($bootstrap) { create_db_bootstrap($bootstrap_file, \%settings); }
 
-if ((!$cschema && !$uconfig) || $help) {
+if ((!$cschema && !$uconfig && !$bootstrap) || $help) {
 	print <<HERE;
 
 SYNOPSIS
@@ -142,19 +188,25 @@
     --config-file
         specifies the opensrf.xml file. Defaults to /openils/conf/opensrf.xml
 
+    --bootstrap-file
+        specifies the database bootstrap file required by the CGI setup interface
+
     --build-db-file
         specifies the script that creates the database schema. Defaults to
         Open-ILS/src/sql/pg/build-db.sh
 
 COMMANDS
+    --update-config
+        Configures Evergreen database settings in the file specified by
+        --build-db-file.  
+
+    --create-bootstrap
+        Creates the database bootstrap file required by the CGI setup interface
+
     --create-schema
-        Create the Evergreen database schema according to the settings in
+        Creates the Evergreen database schema according to the settings in
         the file specified by --config-file.  
 
-    --update-config
-        Configure Evergreen database settings in the file specified by
-        --build-db-file.  
-
 SERVICE OPTIONS
     --service
         Specify "all" or one or more of the following services to update:
@@ -164,14 +216,36 @@
             * open-ils.reporter-store
     
 DATABASE CONFIGURATION OPTIONS
-     --user            username for the database 
+    --user            username for the database 
 
-     --password        password for the user 
+    --password        password for the user 
 
-     --database        name of the database 
+    --database        name of the database 
 
-     --hostname        name or address of the database host 
+    --hostname        name or address of the database host 
 
-     --port            port number for database access
+    --port            port number for database access
+
+EXAMPLES
+   This script is normally used during the initial installation and
+   configuration process.
+
+   For a single server install, or an install with one web/application
+   server and one database server, you will typically want to invoke this
+   script with a complete set of commands:
+
+   perl Open-ILS/src/support-scripts/eg_db_config.pl --update-config \
+       --service all --create-schema --create-bootstrap \
+       --user evergreen --password evergreen --hostname localhost --port 5432 \
+       --database evergreen 
+
+   To update the configuration for a single service - for example, if you
+   replicated a database for reporting purposes - just issue the
+   --update-config command with the service identified and the changed
+   database parameters specified:
+
+   perl Open-ILS/src/support-scripts/eg_db_config.pl --update-config \
+       --service reporter --hostname foobar --password newpass
+
 HERE
 }

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2008-10-11 02:47:18 UTC (rev 10822)
+++ trunk/configure.ac	2008-10-11 03:36:43 UTC (rev 10823)
@@ -47,7 +47,6 @@
 #    yes) openils_all=true;
 #	 openils_core=true;
 #	 openils_web=true;
-#	 openils_db=true;
 #	 openils_reporter=true;
 #	 openils_client_xul=true;
 #	 openils_server_xul=true ;;
@@ -81,19 +80,6 @@
 
 AM_CONDITIONAL([BUILDILSWEB], [test x$openils_web = xtrue])
 
-# build evergreendb ?
-#
-#AC_ARG_ENABLE([openils-db],
-#[  --disable-openils-db    disables the installation of the openils db modules ],
-#[case "${enableval}" in
-#    yes) openils_db=true ;;
-#    no)  openils_db=false ;;
-#  *) AC_MSG_ERROR([please choose another value for --disable-openils-db (supported values are yes or no])
-#esac],
-#[openils_db=true])
-#
-#AM_CONDITIONAL([BUILDILSDB], [test x$openils_db = xtrue])
-
 # build evergreen-reporter ?
 
 AC_ARG_ENABLE([evergreen-reporter],
@@ -224,60 +210,6 @@
 [OPENSRF_LIBS=/openils/lib/])
 AC_SUBST([OPENSRF_LIBS])
 
-#-------------------------------------------------------------
-# Set DB Info
-#-------------------------------------------------------------
-
-AC_ARG_WITH([dbdrvr],
-[ --with-dbdrvr=name		name of the database driver to be used by open-ils (default is Pg)],
-[DBDRVR=${withval}],
-[DBDRVR=Pg])
-AC_SUBST([DBDRVR])
-
-if test $DBDRVR="Pg"; then
-	AC_CHECK_PROG([PGSQL],pg,yes,no)
-	if test $PGSQL = "no"; then
-        AC_MSG_ERROR([*** postgresql not found, aborting])
-	fi
-fi
-
-AC_ARG_WITH([dbhost],
-[ --with-dbhost=address            name of the database hostname to be used by open-ils (default is 127.0.0.1)],
-[DBHOST=${withval}],
-[DBHOST=127.0.0.1])
-AC_SUBST([DBHOST])
-
-AC_ARG_WITH([dbport],
-[ --with-dbport=number            name of the database port to be used by open-ils (default is 5432)],
-[DBPORT=${withval}],
-[DBPORT=5432])
-AC_SUBST([DBPORT])
-
-AC_ARG_WITH([dbname],
-[ --with-dbname=name            name of the database to be used by open-ils (default is evergreen)],
-[DBNAME=${withval}],
-[DBNAME=evergreen])
-AC_SUBST([DBNAME])
-
-AC_ARG_WITH([dbuser],
-[ --with-dbuser=name            name of the database username to be used by open-ils (default is postgres)],
-[DBUSER=${withval}],
-[DBUSER=postgres])
-AC_SUBST([DBUSER])
-
-AC_ARG_WITH([dbver],
-[ --with-dbver=number            version of the database to be used by open-ils, leaving out the periods in the version number (default is 82)],
-[DBVER=${withval}],
-[DBVER=82])
-AC_SUBST([DBVER])
-
-
-AC_ARG_WITH([dbpw],
-[ --with-dbpw=password            password of the database to be used by open-ils (default is postgres)],
-[DBPW=${withval}],
-[DBPW=postgres])
-AC_SUBST([DBPW])
-
 #------------------------------------
 # Checks for libraries. 
 #------------------------------------
@@ -342,32 +274,6 @@
 AC_FUNC_STRTOD
 AC_CHECK_FUNCS([localtime_r memset nl_langinfo setlocale strcasecmp strchr strdup strerror strncasecmp])
 
-
-#------------------------------------
-# Generate some config files
-#------------------------------------
-# write out the DB bootstrapping config
-	CONFIG_FILE='Open-ILS/src/cgi-bin/setup.pl';
-	rm -f "$CONFIG_FILE";
-	echo "Writing bootstrapping config to $CONFIG_FILE...";
-
-	STR='$main::config{dsn} =';
-		STR="$STR 'dbi:${DBDRVR}:host=";
-		STR="${STR}${DBHOST};dbname=";
-		STR="${STR}${DBNAME};port=";
-		STR="${STR}${DBPORT}';";
-	echo "$STR" >> "$CONFIG_FILE";
-
-	STR='$main::config{usr} =';
-		STR="$STR '$DBUSER';";
-	echo "$STR" >> "$CONFIG_FILE";
-	
-	STR='$main::config{pw} =';
-		STR="$STR '$DBPW';";
-	echo "$STR" >> "$CONFIG_FILE";
-	
-	echo '$main::config{index} = "config.cgi";' >> "$CONFIG_FILE";
-
 #----------------------------
 # Create Makefiles/Output
 #----------------------------
@@ -386,7 +292,6 @@
                  build/i18n/Makefile],  [if test -e "./Open-ILS/src/extras/eg_config"; then chmod 755 Open-ILS/src/extras/eg_config; fi])
 AC_OUTPUT
 
-
 #-------------------------------------------------
 # OUTPUT STUFF 
 #-------------------------------------------------
@@ -427,15 +332,6 @@
         AC_MSG_RESULT([Evergreen Java Components:	no])
 fi
 AC_MSG_RESULT([]) 
-AC_MSG_RESULT([-------- DB Info --------])
-AC_MSG_RESULT([Driver:		${DBDRVR}])
-AC_MSG_RESULT([Host: 		${DBHOST}])
-AC_MSG_RESULT([Port: 		${DBPORT}])
-AC_MSG_RESULT([DB Name: 	${DBNAME}])
-AC_MSG_RESULT([Username: 	${DBUSER}])
-AC_MSG_RESULT([Version: 	${DBVER}])
-AC_MSG_RESULT([Password: 	${DBPW}])
-AC_MSG_RESULT([])
 AC_MSG_RESULT([-------- Installation Directories --------])
 AC_MSG_RESULT(Installation dir prefix:                  ${prefix})
 AC_MSG_RESULT(Temporary dir location:                   ${TMP})



More information about the open-ils-commits mailing list