* add third party package support (properly!)
This commit is contained in:
+3
-2
@@ -89,8 +89,9 @@ class Installer:
|
|||||||
# TODO: when repodb comes alive, this will put it into 3rd
|
# TODO: when repodb comes alive, this will put it into 3rd
|
||||||
# party packagedb
|
# party packagedb
|
||||||
if not packagedb.has_package(self.pkginfo.name):
|
if not packagedb.has_package(self.pkginfo.name):
|
||||||
packagedb.add_package(self.pkginfo) # terrible solution it seems
|
db = packagedb.thirdparty_packagedb
|
||||||
|
db.add_package(self.pkginfo)
|
||||||
|
|
||||||
# check conflicts
|
# check conflicts
|
||||||
for pkg in self.metadata.package.conflicts:
|
for pkg in self.metadata.package.conflicts:
|
||||||
if installdb.has_package(self.pkginfo):
|
if installdb.has_package(self.pkginfo):
|
||||||
|
|||||||
+17
-12
@@ -10,6 +10,7 @@
|
|||||||
#from bsddb.dbshelve import DBShelf
|
#from bsddb.dbshelve import DBShelf
|
||||||
import bsddb.dbshelve as shelve
|
import bsddb.dbshelve as shelve
|
||||||
import os, fcntl
|
import os, fcntl
|
||||||
|
import atexit
|
||||||
|
|
||||||
import util
|
import util
|
||||||
from config import config
|
from config import config
|
||||||
@@ -29,6 +30,7 @@ class PackageDB(object):
|
|||||||
self.dr = shelve.open(self.fname2)
|
self.dr = shelve.open(self.fname2)
|
||||||
|
|
||||||
self.lockfile = self.fname + '.lock'
|
self.lockfile = self.fname + '.lock'
|
||||||
|
|
||||||
self.fdummy = file(self.lockfile, 'w')
|
self.fdummy = file(self.lockfile, 'w')
|
||||||
fcntl.flock(self.fdummy, fcntl.LOCK_EX)
|
fcntl.flock(self.fdummy, fcntl.LOCK_EX)
|
||||||
|
|
||||||
@@ -78,9 +80,9 @@ def remove_db(name):
|
|||||||
#erase database file
|
#erase database file
|
||||||
|
|
||||||
def has_package(name):
|
def has_package(name):
|
||||||
for repo in packagedbs.keys():
|
repo = which_repo(name)
|
||||||
if get_db(repo).has_package(name):
|
if repo or thirdparty_packagedb.has_package(name):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def which_repo(name):
|
def which_repo(name):
|
||||||
@@ -90,16 +92,19 @@ def which_repo(name):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def get_package(name):
|
def get_package(name):
|
||||||
for repo in packagedbs.keys():
|
repo = which_repo(name)
|
||||||
if get_db(repo).has_package(name):
|
if repo:
|
||||||
return get_db(repo).get_package(name)
|
return get_db(repo).get_package(name)
|
||||||
raise PackageDBError, 'get_package: package ' + name + ' not found'
|
if thirdparty_packagedb.has_package(name):
|
||||||
|
return thirdparty_packagedb.get_package(name)
|
||||||
|
raise PackageDBError, 'get_package: package %s not found' % name
|
||||||
|
|
||||||
def get_rev_deps(name):
|
def get_rev_deps(name):
|
||||||
repo = which_repo(name)
|
repo = which_repo(name)
|
||||||
return get_db(repo).get_rev_deps(name)
|
if repo:
|
||||||
|
return get_db(repo).get_rev_deps(name)
|
||||||
|
if thirdparty_packagedb.has_package(name):
|
||||||
|
return thirdparty_packagedb.get_rev_deps(name)
|
||||||
|
|
||||||
|
inst_packagedb = PackageDB('installed')
|
||||||
#def remove_package
|
thirdparty_packagedb = PackageDB('thirdparty')
|
||||||
|
|
||||||
inst_packagedb = PackageDB('local')
|
|
||||||
|
|||||||
Reference in New Issue
Block a user