Store conflicts, provides and replaces in the DB

Package conflicts, provides and replaces are now stored in the new
PackageRelations table. The gendummydata script generates test entries
for these relations.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2014-04-26 10:29:17 +02:00
parent 34453d3295
commit 92812050a0
5 changed files with 122 additions and 13 deletions

View file

@ -155,7 +155,10 @@ if ($uid):
'makedepends' => array(),
'checkdepends' => array(),
'optdepends' => array(),
'source' => array()
'source' => array(),
'conflicts' => array(),
'provides' => array(),
'replaces' => array()
);
/* Fall-through case. */
case 'epoch':
@ -171,6 +174,9 @@ if ($uid):
case 'makedepends':
case 'checkdepends':
case 'optdepends':
case 'conflicts':
case 'provides':
case 'replaces':
$section_info[$key][] = $value;
break;
}
@ -190,7 +196,7 @@ if ($uid):
if (!isset($pkgbase_info['pkgbase'])) {
$pkgbase_info['pkgbase'] = $pkgbase_info['pkgname'];
}
foreach (array('source', 'depends', 'makedepends', 'checkdepends', 'optdepends') as $array_opt) {
foreach (array('source', 'depends', 'makedepends', 'checkdepends', 'optdepends', 'conflicts', 'provides', 'replaces') as $array_opt) {
if (empty($pkgbase_info[$array_opt])) {
$pkgbase_info[$array_opt] = array();
} else {
@ -359,6 +365,14 @@ if ($uid):
}
}
foreach (array('conflicts', 'provides', 'replaces') as $reltype) {
foreach ($pi[$reltype] as $rel) {
$relpkgname = preg_replace("/(<|=|>).*/", "", $rel);
$relcondition = str_replace($relpkgname, "", $rel);
pkg_add_rel($pkgid, $reltype, $relpkgname, $relcondition);
}
}
foreach ($pi['source'] as $src) {
pkg_add_src($pkgid, $src);
}