Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jean-Paul Smets
slapos
Commits
345114c0
Commit
345114c0
authored
Dec 07, 2012
by
Viktor Horvath
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Makefile separation: fix errors when an empty database "mioga2" exists (with or without tables).
parent
a0000542
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
30 deletions
+87
-30
software/mioga/mioga-patch
software/mioga/mioga-patch
+87
-30
No files found.
software/mioga/mioga-patch
View file @
345114c0
...
...
@@ -12,7 +12,7 @@ index ef0f369..b275a48 100644
This script must be run by cron in a day basis with apache user (www-data for Debian)
diff --git a/Makefile.PL b/Makefile.PL
index 3582d20..
80ea444
100644
index 3582d20..
c24e217
100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -20,8 +20,10 @@
...
...
@@ -83,16 +83,16 @@ index 3582d20..80ea444 100644
+ # copy a minimal build system into mioga/build
+ mkdir -p "$(MIOGA_BUILDINST)"
+ cp -R --parents \
+ Makefile.PL sql web/conf conf bin/search/crawl_sample.sh \
+ Makefile.PL sql web/conf
web/skel
conf bin/search/crawl_sample.sh \
+ "$(MIOGA_BUILDINST)"
+
+slapos-instantiation ::
+ rm -Rf web/conf/apache; (cd web/conf && $(MAKE) apache)
+
+ for i in web/conf conf web/skel sql ; \
+ do \
+ (cd $$i && $(MAKE) install) || exit 1;\
+ done
+
+ (cd web && $(MAKE) setperms) || exit 1;
+
doc:
for i in ' . $docsubdirs . ' ; \
...
...
@@ -320,21 +320,44 @@ index 4afa54b..ca8368c 100644
$self->{dbh} = DBI->connect($datasource, $dbiUser, $dbiPassword);
diff --git a/lib/Mioga2/Exception/DB.pm b/lib/Mioga2/Exception/DB.pm
index 7ce5020..
bee00ca
100644
index 7ce5020..
dd29d83
100644
--- a/lib/Mioga2/Exception/DB.pm
+++ b/lib/Mioga2/Exception/DB.pm
@@ -76,6 +76,17 @@
sub as_string
@@ -1,3 +1,4 @@
+
# ============================================================================
# Mioga2 Project (C) 2003-2007 The Mioga2 Project
#
@@ -53,6 +54,7 @@
sub new {
my($class, $function, $errDB, $errStr, $sql) = @_;
my $self = $class->SUPER::new(-text => "$errStr : $errDB");
$self->{errDB} = $errDB;
+ $self->{errStr} = $errStr;
$self->{sql} = $sql;
$self->{function} = $function;
return $self;
@@ -76,6 +78,27 @@
sub as_string
return $string;
}
+# ----------------------------------------------------------------------------
+=head2 getDBerror ()
+Return the error as sent by the database connector.
+=head2 getDBerr ()
+Return the error code as sent by the database connector.
+=cut
+# ----------------------------------------------------------------------------
+sub getDBerr {
+ my ($self) = @_;
+ return $self->{errDB};
+}
+
+# ----------------------------------------------------------------------------
+=head2 getDBerrstr ()
+Return the error string as sent by the database connector.
+=cut
+# ----------------------------------------------------------------------------
+sub getDBerr
o
r {
+sub getDBerr
st
r {
+ my ($self) = @_;
+ return $self->{err
DB}
+ return $self->{err
Str};
+}
+
+
...
...
@@ -514,21 +537,17 @@ index 0870174..bbcc80a 100644
foreach my $dep (@{$self->{CONFIG}->{dependencies}->[0]->{clib}}) {
my $version;
diff --git a/sql/Makefile b/sql/Makefile
index 07b26f5..
f6b6c0f
100644
index 07b26f5..
63b7d0c
100644
--- a/sql/Makefile
+++ b/sql/Makefile
@@ -1,4 +1,5 @@
include ../config.mk
+DB_STATE=`perl -w testdb.pl`
all:
@@ -15,19 +16,20 @@
install:
@@ -15,19 +15,22 @@
install:
cp upgradeMiogletDesc.pl $(DESTDIR)$(INSTALL_DIR)/conf/Config.hook.d
chmod a+x $(DESTDIR)$(INSTALL_DIR)/conf/Config.hook.d/upgradeMiogletDesc.pl
- if [ $(INIT_SQL) = 'yes' ] ; \
+ if [ $(DB_STATE) = 'nodb' ] ; \
+ DB_STATE=`perl -w testdb.pl`; \
+ echo "VHH DEBUG: Makefile got DB_STATE '$$DB_STATE'"; \
+ if [ "$$DB_STATE" = "nodb" -o "$$DB_STATE" = "empty" ] ; \
then \
echo "Initialize database"; \
- su - $(POSTGRES_USER) -c "dropdb $(DB_NAME)" ; \
...
...
@@ -540,10 +559,10 @@ index 07b26f5..f6b6c0f 100644
+ createdb --encoding UTF8 -h $(DB_HOST) -p $(DB_PORT) -U $(DBI_LOGIN) $(DB_NAME) && \
+ psql -h $(DB_HOST) -p $(DB_PORT) -U $(DBI_LOGIN) $(DB_NAME) < create_lang.sql && \
+ perl -w -I../lib initdb.pl force_init_sql=1; \
+ elif [
$(DB_STATE) = 'present'
]; then \
+ elif [
"$$DB_STATE" = "present"
]; then \
echo "Update database"; \
perl -w -I../lib updatedb.pl configxml=$(DESTDIR)$(INSTALL_DIR)/conf/Config.xml; \
+ elif [
$(DB_STATE) = 'noserver'
]; then \
+ elif [
"$$DB_STATE" = "noserver"
]; then \
+ echo "ERROR: Cannot connect to the database server!"; \
fi
...
...
@@ -579,15 +598,16 @@ index b7d8cc2..88d5e2d 100644
-- Add referencial integrity on default_profile_id in m_group_base
diff --git a/sql/testdb.pl b/sql/testdb.pl
new file mode 100755
index 0000000..
2fa3fe7
index 0000000..
cfbff33
--- /dev/null
+++ b/sql/testdb.pl
@@ -0,0 +1,
37
@@
@@ -0,0 +1,
75
@@
+#!/usr/bin/perl -w
+
+# Tests the availability of the Mioga2 database.
+# Returns on stdout one of:
+# 'present' - The Mioga2 database has been found.
+# 'present' - The Mioga2 database has been found and contains data.
+# 'empty' - The Mioga2 database exists but the table "m_mioga" is empty or nonexistent.
+# 'nodb' - There is no Mioga2 database but the database server is working fine
+# (i.e. one can try to create the database)
+# 'noserver' - Connection to the database server failed.
...
...
@@ -599,6 +619,7 @@ index 0000000..2fa3fe7
+use lib "../lib";
+
+use Data::Dumper;
+use DBI;
+use Error qw(:try);
+use Mioga2::Exception::DB;
+use Mioga2::MiogaConf;
...
...
@@ -607,19 +628,55 @@ index 0000000..2fa3fe7
+# my $configxml = "../conf/Config.xml";
+my $miogaconf = "../web/conf/Mioga.conf";
+
+print STDERR "VHH DEBUG: Starting testdb.pl\n";
+my $result = 'undefined';
+try {
+ print STDERR "VHH DEBUG: creating MiogaConf object...\n";
+ my $config = new Mioga2::MiogaConf($miogaconf);
+ print 'present';
+ print STDERR "VHH DEBUG: created MiogaConf\n";
+ my $dbh = $config->GetDBH();
+ print STDERR "VHH DEBUG: got dbh\n";
+ my $sql = 'SELECT COUNT(*) FROM m_mioga';
+ my $sth = $dbh->prepare($sql);
+ print STDERR "VHH DEBUG: prepared statement\n";
+ my $exec_result = $sth->execute();
+ print STDERR "VHH DEBUG: executed statement\n";
+ if (not defined($exec_result)) {
+ throw Mioga2::Exception::DB("testdb.pl 0", $sth->err, $sth->errstr, $sql);
+ }
+ my $res = $sth->fetchrow_arrayref();
+ if (not defined($res)) {
+ throw Mioga2::Exception::DB("testdb.pl 1", $sth->err, $sth->errstr, $sql);
+ }
+ my $count = $res->[0];
+ print STDERR "VHH DEBUG: got count\n";
+ if (not defined($count)) {
+ throw Mioga2::Exception::DB("testdb.pl 2", $sth->err, $sth->errstr, $sql);
+ } elsif ($count == 0) {
+ $result = 'empty';
+ } else {
+ $result = 'present';
+ }
+} catch Mioga2::Exception::DB with {
+ my $err = shift;
+ if ($err->getDBerror() =~ m#database "mioga2" does not exist#) {
+ print 'nodb';
+ my $errstr = $err->getDBerrstr();
+ print STDERR "VHH DEBUG: got exception...\n";
+ print STDERR "VHH DEBUG: got error string: ".$err->as_string()."\n";
+ if ($errstr =~ m#database "mioga2" does not exist#) {
+ $result = 'nodb';
+ } elsif ($errstr =~ m#relation "m_mioga" does not exist#) {
+ $result = 'empty';
+ } else {
+
print
'noserver';
+
$result =
'noserver';
+ }
+} otherwise {
+ print 'noserver';
+}
+ my $err = shift;
+ print STDERR "VHH DEBUG: got other exception: $err\n";
+ $result = 'noserver';
+};
+
+print $result;
+print STDERR "VHH DEBUG: result = ".$result."\n";
diff --git a/web/Makefile b/web/Makefile
index 66af45f..9649a02 100644
--- a/web/Makefile
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment