OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-registry Date: 14-Jul-2006 16:48:28
Branch: HEAD Handle: 2006071415482701
Modified files:
openpkg-registry register.sh registry-db.pl registry-ui.pl
Log:
support capturing and storing data about every instances package and
it's provides into the registry
Summary:
Revision Changes Path
1.41 +67 -19 openpkg-registry/register.sh
1.32 +96 -3 openpkg-registry/registry-db.pl
1.77 +174 -8 openpkg-registry/registry-ui.pl
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-registry/register.sh
============================================================================
$ cvs diff -u -r1.40 -r1.41 register.sh
--- openpkg-registry/register.sh 14 Jul 2006 14:27:40 -0000 1.40
+++ openpkg-registry/register.sh 14 Jul 2006 14:48:27 -0000 1.41
@@ -118,6 +118,9 @@
REGISTRY_TRAN="$PREFIX/etc/openpkg/register.tran"
REGISTRY_UTIL="$PREFIX/etc/openpkg/register.util"
+# amount of data being posted
+REGISTRY_DATA="request,package,provides"
+
# read baseline config early and allow options to override contents
readconf
@@ -206,6 +209,11 @@
if [ ".$arg" = . ]; then help="Missing argument to \"$opt\"";
break; fi
REGISTRY_UTIL="$arg"
;;
+ --data )
+ if [ ".$arg" = . ]; then shift; arg="$1"; fi
+ if [ ".$arg" = . ]; then help="Missing argument to \"$opt\"";
break; fi
+ REGISTRY_DATA="$arg"
+ ;;
# debug options
-v|--verbose ) verbose="yes" ;;
@@ -237,7 +245,7 @@
echo "Usage: $progname -m|--mode=fake|post|wipe [-a|--args=<args>]"
echo " -u|--user=<user> [-d|--desc=<text>]"
echo " [--plat=<text>] [--orel=<text>] [--uuid=<file>]"
- echo " [--conf=<file>] [--prep=<file>] [--tran=<file>]
[--util=<file>]"
+ echo " [--conf=<file>] [--prep=<file>] [--tran=<file>]
[--util=<file>] [--data=<tag>[,<tag>...]]"
echo " [-P|--preparation] [-T|--transaction] [-U|--utilization]"
echo " [-C|--convenience] [-I|--interaction]"
echo " [-v|--verbose] [-h|--help]"
@@ -274,23 +282,46 @@
[ ".$UUID_INSTANCE" = . ] && error "missing information UUID_INSTANCE"
[ ".$UUID_PLATFORM" = . ] && error "missing information UUID_PLATFORM"
- (
- echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"
standalone=\"no\"?>"
- echo "<!DOCTYPE registry"
- echo " PUBLIC \"-//OpenPKG//DTD OpenPKG Registry 0.0.1//EN\""
- echo " \"http://registry.openpkg.org/registry.dtd\" []>"
- echo "<registry>"
- echo " <request id=\"$UUID_REGISTRY\""
- echo " registry_user=\"$REGISTRY_USER\""
- echo " registry_desc=\"$REGISTRY_DESC\""
- echo " registry_plat=\"$REGISTRY_PLAT\""
- echo " registry_orel=\"$REGISTRY_OREL\""
- echo " uuid_registry=\"$UUID_REGISTRY\""
- echo " uuid_instance=\"$UUID_INSTANCE\""
- echo " uuid_platform=\"$UUID_PLATFORM\""
- echo " />"
- echo "</registry>"
- ) | tee $REGISTRY_PREP
+ # amount of data being posted
+ Q='"'; I=" "; N=$'\n'; D=""
+
+ echo "$REGISTRY_DATA" | grep request >/dev/null
+ if [ $? = 0 ]; then
+ D="${D}<?xml version=${Q}1.0${Q} encoding=${Q}iso-8859-1${Q}
standalone=${Q}no${Q}?>${N}"
+ D="${D}<!DOCTYPE registry${N}"
+ D="${D} PUBLIC ${Q}-//OpenPKG//DTD OpenPKG Registry
0.0.1//EN${Q}${N}"
+ D="${D} ${Q}http://registry.openpkg.org/registry.dtd${Q} []>${N}"
+ D="${D}<registry>${N}"
+ D="${D}${I}<request id=${Q}$UUID_REGISTRY${Q}${N}"
+ D="${D}${I}${I}registry_user=${Q}$REGISTRY_USER${Q}${N}"
+ D="${D}${I}${I}registry_desc=${Q}$REGISTRY_DESC${Q}${N}"
+ D="${D}${I}${I}registry_plat=${Q}$REGISTRY_PLAT${Q}${N}"
+ D="${D}${I}${I}registry_orel=${Q}$REGISTRY_OREL${Q}${N}"
+ D="${D}${I}${I}uuid_registry=${Q}$UUID_REGISTRY${Q}${N}"
+ D="${D}${I}${I}uuid_instance=${Q}$UUID_INSTANCE${Q}${N}"
+ D="${D}${I}${I}uuid_platform=${Q}$UUID_PLATFORM${Q}${N}"
+
+ echo "$REGISTRY_DATA" | grep package >/dev/null
+ if [ $? = 0 ]; then
+ D="${D}${I}>${N}"
+ F=""
+ F="${F}${I}${I}<package id=${Q}%{PKGID}${Q} name=${Q}%{NAME}${Q}
version=${Q}%{VERSION}${Q} release=${Q}%{RELEASE}${Q}"
+ echo "$REGISTRY_DATA" | grep provides >/dev/null
+ if [ $? = 0 ]; then
+ F="${F}>\n"
+ F="${F}[${I}${I}${I}<provides name=${Q}%{PROVIDENAME}${Q}
flag=${Q}%{PROVIDEFLAGS:depflags}${Q} version=${Q}%{PROVIDEVERSION}${Q}/>\n]"
+ F="${F}${I}${I}</package>\n"
+ else
+ F="${F}/>\n"
+ fi
+ D="${D}`$rpm --qf \"${F}\" -qa`${N}"
+ D="${D} </request>${N}"
+ else
+ D="${D}${I}/>${N}"
+ fi
+ D="${D}</registry>${N}"
+ fi
+ echo "$D" | tee $REGISTRY_PREP
}
##
@@ -424,6 +455,7 @@
read -p "[REGISTRY_PLAT=\"$REGISTRY_PLAT\"] platform (*)? "; [
".$REPLY" != . ] && REGISTRY_DESC="$REPLY"
read -p "[REGISTRY_OREL=\"$REGISTRY_OREL\"] release (*)? "; [
".$REPLY" != . ] && REGISTRY_DESC="$REPLY"
read -p "[REGISTRY_UUID=\"$REGISTRY_UUID\"] uuid file to read? "; [
".$REPLY" != . ] && REGISTRY_UUID="$REPLY"
+ read -p "[REGISTRY_DATA=\"$REGISTRY_DATA\"] data to prepare? "; [
".$REPLY" != . ] && REGISTRY_DATA="$REPLY"
read -p "[REGISTRY_PREP=\"$REGISTRY_PREP\"] prep dump file? "; [
".$REPLY" != . ] && REGISTRY_PREP="$REPLY"
[ ".$REGISTRY_USER" = . ] && error "missing information REGISTRY_USER"
@@ -431,6 +463,7 @@
[ ".$REGISTRY_PLAT" = . ] && error "missing information REGISTRY_PLAT"
[ ".$REGISTRY_OREL" = . ] && error "missing information REGISTRY_PREP"
[ ".$REGISTRY_UUID" = . ] && error "missing information REGISTRY_UUID"
+ [ ".$REGISTRY_DATA" = . ] && error "missing information REGISTRY_DATA"
[ ".$REGISTRY_PREP" = . ] && error "missing information REGISTRY_PREP"
if [ -r "$REGISTRY_UUID" ]; then
@@ -576,7 +609,7 @@
-u|--user=<user> [I<-d|--desc=<text>>]
[I<--plat=<text>>] [I<--orel=<text>>] [I<--uuid=<file>>]
[I<--conf=<file>>] [I<--prep=<file>>] [I<--tran=<file>>]
- [I<--util=<file>>]
+ [I<--util=<file>>] [--data=<tag>[,<tag>...]]
[I<-P|--preparation>] [I<-T|--transaction>]
[I<-U|--utilization>] [I<-C|--convenience>]
[I<-I|--interaction>]
@@ -794,6 +827,16 @@
File to save a copy of the output from the "utilization" step.
Defaults to F<${PREFIX}/etc/openpkg/register.util>
+=item B<--data>
+
+Overrides C<${REGISTRY_DATA}> variable in C<${REGISTRY_CONF}> file.
+Comma separated list of tags to prepare. Available tags are "request",
+"package" and "provides". The "request" refers to the whole thing and
+is mandatory. The "package" includes name-version-release information
+for all installed packages and "provides" adds more details required to
+capture package options. For details see OPENPKG_PREP below.
+Defaults to "request,package,provides"
+
=back
=head1 FILES
@@ -830,6 +873,11 @@
uuid_instance="..."
uuid_platform="..."
/>
+ <package id="..." name="ssmtp" version="2.61" release="20050608">
+ <provides name="ssmtp::with_ssl" flag="=" version="no"/>
+ <provides name="MTA" flag="" version=""/>
+ <provides name="ssmtp" flag="=" version="2.61-20050608"/>
+ </package>
</registry>
The XML request starts with <?xml version ...> and <!DOCTYPE registry ...>
@@ .
patch -p0 <<'@@ .'
Index: openpkg-registry/registry-db.pl
============================================================================
$ cvs diff -u -r1.31 -r1.32 registry-db.pl
--- openpkg-registry/registry-db.pl 14 Jul 2006 14:40:11 -0000 1.31
+++ openpkg-registry/registry-db.pl 14 Jul 2006 14:48:27 -0000 1.32
@@ -242,11 +242,11 @@
return 1;
}
- # >0.0.24 upgrade to 0.5.0 is a nop
+ # >0.0.24 upgrade to 0.6.0 is a nop
#
elsif ( $dbv->{version}->{major} == 0
- and $dbv->{version}->{minor} < 5 ) {
- $sql = sprintf("UPDATE config SET value = '0.5.0';");
+ and $dbv->{version}->{minor} < 6 ) {
+ $sql = sprintf("UPDATE config SET value = '0.6.0';");
$rv = $dbh->do($sql);
print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not
defined $rv);
return 1;
@@ -340,6 +340,7 @@
$dbh->begin_work;
$sql = "";
$sql .= &schemaregistry();
+ $sql .= &schemaregistry2();
$sql .= &funcregistry();
$sql .= "INSERT INTO reg_config VALUES ( 'version', '".$progvers."'
);";
$sql .= &sample() if ($progvers =~ m/^0\.0\./);
@@ -417,6 +418,18 @@
return 1;
}
+ # 0.5.x upgrade to 0.6.0
+ #
+ elsif ( $dbv->{version}->{major} == 0
+ and $dbv->{version}->{minor} == 5) {
+ $sql = "";
+ $sql .= &schemaregistry2();
+ $sql .= sprintf("UPDATE reg_config SET value = '0.6.0';\n");
+ $rv = $dbh->do($sql);
+ print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if
($dbh->errstr =~ m|ERROR|);
+ return 1;
+ }
+
# program data version and database version only differ in patchlevel
- just uprev the number
#
elsif ( $dbv->{version}->{major} == $datavers->{major}
@@ -630,6 +643,86 @@
EOT
}
+sub schemaregistry2()
+{
+ return <<'EOT'
+ -- package identifiers
+ CREATE TABLE pkg_ids (
+ id TEXT
+ CHECK (id ~ '^[0-9a-f]{32}$'),
+ -- [d8f831be5def1d1dfb452c0a711e5903]
+ type TEXT
+ NOT NULL,
+ CHECK (type = 'db' OR type = 'rpm' OR type = 'srpm'),
+ -- [db]
+ PRIMARY KEY (id)
+ );
+
+ -- package name-version-release
+ CREATE TABLE nvr_names (
+ name TEXT,
+ -- [ssmtp]
+ PRIMARY KEY (name)
+ );
+ CREATE TABLE nvr_versions (
+ version TEXT
+ CHECK (version ~ '^[^-]+$'),
+ -- [2.61]
+ PRIMARY KEY (version)
+ );
+ CREATE TABLE nvr_releases (
+ release TEXT
+ CHECK (release ~ '^[^-]+$'),
+ -- [20050608]
+ PRIMARY KEY (release)
+ );
+ CREATE TABLE nvr (
+ name TEXT REFERENCES nvr_names(name) ON DELETE CASCADE,
+ version TEXT REFERENCES nvr_versions(version) ON DELETE
CASCADE,
+ release TEXT REFERENCES nvr_releases(release) ON DELETE
CASCADE,
+ UNIQUE (name, version, release)
+ );
+ -- provide name-flag-version
+ CREATE TABLE nfv_names (
+ name TEXT,
+ -- [ssmtp]
+ PRIMARY KEY (name)
+ );
+ CREATE TABLE nfv_flags (
+ flag TEXT,
+ -- [=]
+ PRIMARY KEY (flag)
+ );
+ CREATE TABLE nfv_versions (
+ version TEXT,
+ -- [2.61-20050608]
+ PRIMARY KEY (version)
+ );
+ CREATE TABLE nfv (
+ name TEXT REFERENCES nfv_names(name) ON DELETE CASCADE,
+ flag TEXT REFERENCES nfv_flags(flag) ON DELETE CASCADE,
+ version TEXT REFERENCES nfv_versions(version) ON DELETE
CASCADE,
+ UNIQUE (name, flag, version)
+ );
+ -- instance package list
+ CREATE TABLE inst_pkg_list (
+ ipl_inst TEXT REFERENCES reg_instance(uuid_registry) ON
DELETE CASCADE,
+ ipl_pkg_id TEXT REFERENCES pkg_ids(id) ON DELETE CASCADE,
+ ipl_nvr_name TEXT,
+ ipl_nvr_version TEXT,
+ ipl_nvr_release TEXT,
+ FOREIGN KEY (ipl_nvr_name, ipl_nvr_version,
ipl_nvr_release)
+ REFERENCES nvr(name, version, release) ON DELETE
CASCADE,
+ ipl_nfv_name TEXT,
+ ipl_nfv_flag TEXT,
+ ipl_nfv_version TEXT,
+ FOREIGN KEY (ipl_nfv_name, ipl_nfv_flag,
ipl_nfv_version)
+ REFERENCES nfv(name, flag, version) ON DELETE
CASCADE,
+ UNIQUE (ipl_inst, ipl_pkg_id, ipl_nvr_name,
ipl_nvr_version, ipl_nvr_release, ipl_nfv_name, ipl_nfv_flag, ipl_nfv_version)
+ );
+EOT
+}
+
sub funcregistry()
{
return <<'EOT'
@@ .
patch -p0 <<'@@ .'
Index: openpkg-registry/registry-ui.pl
============================================================================
$ cvs diff -u -r1.76 -r1.77 registry-ui.pl
--- openpkg-registry/registry-ui.pl 13 Jul 2006 08:11:33 -0000 1.76
+++ openpkg-registry/registry-ui.pl 14 Jul 2006 14:48:28 -0000 1.77
@@ -89,6 +89,11 @@
dbfile "$PREFIX/var/openpkg-registry/ui/session.db";
};
};
+
+ # processing more than minimum request
+ request {
+ package 1;
+ };
# canvas integration
#
@@ -1605,6 +1610,7 @@
my $commit = 1;
my @keys = keys %{$ref->{request}};
foreach my $k (@keys) {
+ $res->{$k} = "";
my $username;
$username = $ref->{request}->{$k}->{registry_user};
@@ -1615,12 +1621,12 @@
if (not defined $rv) {
$msg = $dbh->errstr;
$msg =~ s/[ ]*ERROR:?[ ]*//;
- $res->{$k} = sprintf("ERROR: DataBase reports %s", $msg);
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;", $msg);
$commit = 0;
next;
}
elsif ($rv < 1) {
- $res->{$k} = sprintf("ERROR: username \"%s\" not found",
CGI::escapeHTML($username));
+ $res->{$k} .= sprintf("ERROR: username \"%s\" not found;",
CGI::escapeHTML($username));
$commit = 0;
next;
}
@@ -1642,7 +1648,7 @@
}
}
else {
- ; # reserved for nested structures
+ ; # reserved - ignore unknown data structures
}
}
$sql = sprintf("UPDATE reg_instance SET registry_date = now(), %s
WHERE ( uuid_registry = '%s' );", $fieldlist, $rowkey);
@@ -1651,7 +1657,7 @@
if (not defined $rv) {
$msg = $dbh->errstr;
$msg =~ s/[ ]*ERROR:?[ ]*//;
- $res->{$k} = sprintf("ERROR: DataBase reports %s", $msg);
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;", $msg);
$commit = 0;
next;
}
@@ -1667,7 +1673,7 @@
#FIXME here we could check the validity of all fields
with string 'uuid' in their names
}
else {
- ; # reserved for nested structures
+ ; # reserved - ignore unknown data structures
}
}
$sql = sprintf("INSERT INTO reg_instance (%s) VALUES (%s);",
$fieldlist, $fieldbind);
@@ -1676,17 +1682,177 @@
if (not defined $rv) {
$msg = $dbh->errstr;
$msg =~ s/[ ]*ERROR:?[ ]*//;
- $res->{$k} = sprintf("ERROR: DataBase reports %s", $msg);
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;", $msg);
$commit = 0;
next;
}
}
if ($rv < 1) {
- $res->{$k} = sprintf("ERROR: update and insert failed");
+ $res->{$k} .= sprintf("ERROR: update and insert failed;");
$commit = 0;
next;
}
- $res->{$k} = "DONE";
+
+ # maintain package and provides
+ #
+ my $package = $ref->{request}->{$k}->{package};
+ if ($cfg->{request}->{package} and defined $package) {
+
+ # prepare maintain package statement handles once and in
advance
+ my $mpsth = {};
+ $mpsth->{wipe} = $dbh->prepare(sprintf("DELETE
FROM inst_pkg_list WHERE (ipl_inst = ?);"));
+ $mpsth->{pkg_ids} = $dbh->prepare(sprintf("INSERT
INTO pkg_ids SELECT ?, 'db' WHERE NOT EXISTS (SELECT 1 FROM pkg_ids WHERE (id =
?));"));
+ $mpsth->{nvr_names} = $dbh->prepare(sprintf("INSERT
INTO nvr_names SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nvr_names WHERE (name =
?));"));
+ $mpsth->{nvr_versions} = $dbh->prepare(sprintf("INSERT
INTO nvr_versions SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nvr_versions WHERE
(version = ?));"));
+ $mpsth->{nvr_releases} = $dbh->prepare(sprintf("INSERT
INTO nvr_releases SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nvr_releases WHERE
(release = ?));"));
+ $mpsth->{nvr} = $dbh->prepare(sprintf("INSERT
INTO nvr SELECT ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM nvr WHERE (name = ? AND
version = ? AND release = ?));"));
+ $mpsth->{nfv_names} = $dbh->prepare(sprintf("INSERT
INTO nfv_names SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nfv_names WHERE (name =
?));"));
+ $mpsth->{nfv_flags} = $dbh->prepare(sprintf("INSERT
INTO nfv_flags SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nfv_flags WHERE (flag =
?));"));
+ $mpsth->{nfv_versions} = $dbh->prepare(sprintf("INSERT
INTO nfv_versions SELECT ? WHERE NOT EXISTS (SELECT 1 FROM nfv_versions WHERE
(version = ?));"));
+ $mpsth->{nfv} = $dbh->prepare(sprintf("INSERT
INTO nfv SELECT ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM nfv WHERE (name = ? AND
flag = ? AND version = ?));"));
+ $mpsth->{nfvshort} = $dbh->prepare(sprintf("INSERT
INTO nfv SELECT ?, NULL, NULL WHERE NOT EXISTS (SELECT 1 FROM nfv WHERE (name =
? AND flag IS NULL AND version IS NULL));"));
+ $mpsth->{inst_pkg_list} = $dbh->prepare(sprintf("INSERT
INTO inst_pkg_list VALUES (?, ?, ?, ?, ?, ?, ?, ?);"));
+ $mpsth->{inst_pkg_list_short} = $dbh->prepare(sprintf("INSERT
INTO inst_pkg_list VALUES (?, ?, ?, ?, ?, ?, NULL, NULL);"));
+
+ # wipe existing data for this instance, if any
+ $rv = $mpsth->{wipe}->execute($rowkey);
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ PKG: for my $pkg (keys %{$package}) {
+
+ # maintain package identifiers
+ $rv = $mpsth->{pkg_ids}->execute($pkg, $pkg);
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+
+ # maintain name, version, release and name-version-release
+ $rv = $mpsth->{nvr_names}->execute($package->{$pkg}->{name},
$package->{$pkg}->{name});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+ $rv =
$mpsth->{nvr_versions}->execute($package->{$pkg}->{version},
$package->{$pkg}->{version});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+ $rv =
$mpsth->{nvr_releases}->execute($package->{$pkg}->{release},
$package->{$pkg}->{release});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+ $rv = $mpsth->{nvr}->execute($package->{$pkg}->{name},
$package->{$pkg}->{version}, $package->{$pkg}->{release},
$package->{$pkg}->{name}, $package->{$pkg}->{version},
$package->{$pkg}->{release});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+
+ # assume at least a single provide for name =
version-release, fake it if it is missing
+ if (not exists $package->{$pkg}->{provides}) {
+ $package->{$pkg}->{provides} = [
+ {
+ 'version' => $package->{$pkg}->{name},
+ 'flag' => '=',
+ 'name' => $package->{$pkg}->{version} . "-" .
$package->{$pkg}->{release}
+ }
+ ];
+ }
+ foreach my $prv (@{$package->{$pkg}->{provides}}) {
+ # maintain name, flag, version, name-flag-version
+ $rv = $mpsth->{nfv_names}->execute($prv->{name},
$prv->{name});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports %s;",
$msg);
+ $commit = 0;
+ next PKG;
+ }
+ if ($prv->{flag} ne '' and $prv->{version} ne '') {
+ $rv = $mpsth->{nfv_flags}->execute($prv->{flag},
$prv->{flag});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ $rv =
$mpsth->{nfv_versions}->execute($prv->{version}, $prv->{version});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ $rv = $mpsth->{nfv}->execute($prv->{name},
$prv->{flag}, $prv->{version}, $prv->{name}, $prv->{flag}, $prv->{version});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ }
+ else {
+ $rv = $mpsth->{nfvshort}->execute($prv->{name},
$prv->{name});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ }
+
+ # maintain inst_pkg_list
+ if ($prv->{flag} ne '' and $prv->{version} ne '') {
+ $rv = $mpsth->{inst_pkg_list}->execute($rowkey,
$pkg, $package->{$pkg}->{name}, $package->{$pkg}->{version},
$package->{$pkg}->{release}, $prv->{name}, $prv->{flag}, $prv->{version});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ }
+ else {
+ $rv =
$mpsth->{inst_pkg_list_short}->execute($rowkey, $pkg, $package->{$pkg}->{name},
$package->{$pkg}->{version}, $package->{$pkg}->{release}, $prv->{name});
+ if (not defined $rv) {
+ $msg = $dbh->errstr;
+ $msg =~ s/[ ]*ERROR:?[ ]*//; $msg =~ s/\n+/ /gs;
+ $res->{$k} .= sprintf("ERROR: DataBase reports
%s;", $msg);
+ $commit = 0;
+ next PKG;
+ }
+ }
+ }
+ }
+ }
+
+ # success with instance
+ $res->{$k} = "DONE" if ($res->{$k} eq "");
}
if ($commit == 1) {
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]