diff --git a/pisi/component.py b/pisi/component.py index 22778a5c..9b1ea73f 100644 --- a/pisi/component.py +++ b/pisi/component.py @@ -21,6 +21,7 @@ import pisi.pxml.autoxml as autoxml import pisi.lockeddbshelve as shelve from pisi.itembyrepodb import ItemByRepoDB import pisi.itembyrepodb as itembyrepodb +from pisi.conflict import Conflict class Error(pisi.Error): pass @@ -43,6 +44,7 @@ class Distribution(xmlfile.XmlFile): t_BinaryName = [autoxml.Text, autoxml.optional] # name of repository (binary distro) t_Architecture = [autoxml.Text, autoxml.optional] # architecture identifier + t_Conflicts = [ [Conflict], autoxml.optional, "Conflicts/Package"] class Component(xmlfile.XmlFile): "representation for component declarations" diff --git a/pisi/index.py b/pisi/index.py index 71872588..51a37fec 100644 --- a/pisi/index.py +++ b/pisi/index.py @@ -100,9 +100,13 @@ class Index(XmlFile): if fn == 'distribution.xml': self.add_distro(os.path.join(root, fn)) + conflict_list = map(str, self.distribution.conflicts) + for pkg in util.filter_latest_packages(packages): - ctx.ui.info(_('Adding %s to package index') % pkg) - self.add_package(pkg, repo_uri) + pkg_name = util.parse_package_name(os.path.basename(pkg))[0] + if pkg_name not in conflicts_list: + ctx.ui.info(_('Adding %s to package index') % pkg) + self.add_package(pkg, repo_uri) def update_db(self, repo, txn = None): # FIXME: updating db takes too much time. So a notify mechanism is used to inform the status