* packagedb icin composition kullan inheritance yerine

* sourcedb'i de adam et
This commit is contained in:
Eray Özkural
2005-06-29 07:54:13 +00:00
parent ae3717e37a
commit f223561f0d
5 changed files with 54 additions and 25 deletions
+1 -1
View File
@@ -38,7 +38,7 @@ Legend:
2. Alpha 2. Alpha
+ write specfile (eray) + write specfile (eray)
/ file locking for database access / file locking for database access (eray)
- verify metodlari - verify metodlari
- SpecFile - SpecFile
- MetaData - MetaData
+8 -13
View File
@@ -7,25 +7,20 @@
# we basically store everything in PackageInfo class # we basically store everything in PackageInfo class
# yes, we are cheap # yes, we are cheap
from bsddb.dbshelve import DBShelf #from bsddb.dbshelve import DBShelf
import bsddb.dbshelve as shelve
import os, fcntl import os, fcntl
import util import util
from config import config from config import config
from bsddb import db from bsddb import db
class PackageDB(DBShelf): class PackageDB(object):
def __init__(self): def __init__(self):
DBShelf.__init__(self)
util.check_dir(config.db_dir()) util.check_dir(config.db_dir())
filename = os.path.join(config.db_dir(), 'package.bdb') filename = os.path.join(config.db_dir(), 'package.bdb')
#d.open(filename, dbname, filetype, flags, mode) self.d = shelve.open(filename)
flags = db.DB_CREATE
mode = 0660
filetype=db.DB_HASH
dbname = None
self.open( filename, dbname, filetype, flags, mode )
self.fdummy = open(filename) self.fdummy = open(filename)
fcntl.flock(self.fdummy, fcntl.LOCK_EX) fcntl.flock(self.fdummy, fcntl.LOCK_EX)
@@ -35,19 +30,19 @@ class PackageDB(DBShelf):
def has_package(self, name): def has_package(self, name):
name = str(name) name = str(name)
return self.has_key(name) return self.d.has_key(name)
def get_package(self, name): def get_package(self, name):
name = str(name) name = str(name)
return self[name] return self.d[name]
def add_package(self, package_info): def add_package(self, package_info):
name = str(package_info.name) name = str(package_info.name)
self[name] = package_info self.d[name] = package_info
def remove_package(self, name): def remove_package(self, name):
name = str(name) name = str(name)
del self[name] del self.d[name]
packagedb = PackageDB() packagedb = PackageDB()
+35 -6
View File
@@ -7,12 +7,41 @@
# yes, we are cheap # yes, we are cheap
import bsddb.dbshelve as shelve import bsddb.dbshelve as shelve
import os, fcntl
util.check_dir(config.db_dir()) import util
d = shelve.open(config.db_dir() + '/source.bdb') from config import config
from bsddb import db
def add_source(name, source_info): class SourceDB(object):
d[name] = source_info
def __init__(self):
util.check_dir(config.db_dir())
filename = os.path.join(config.db_dir(), 'source.bdb')
self.d = shelve.open(filename)
self.fdummy = open(filename)
fcntl.flock(self.fdummy, fcntl.LOCK_EX)
def __del__(self):
#fcntl.flock(self.fdummy, fcntl.LOCK_UN)
self.fdummy.close()
def has_source(self, name):
name = str(name)
return self.d.has_key(name)
def get_source(self, name):
name = str(name)
return self.d[name]
def add_source(self, source_info):
assert source_info.verify()
name = str(source_info.name)
self.d[name] = source_info
def remove_source(self, name):
name = str(name)
del self.d[name]
sourcedb = SourceDB()
def remove_source(name):
del d[name]
+5
View File
@@ -128,6 +128,11 @@ class SourceInfo:
xml.addNodeUnder(node, "History", update.elt(xml)) xml.addNodeUnder(node, "History", update.elt(xml))
return node return node
def verify(self):
ret = True
ret &= len(self.history) > 0
return ret
class PackageInfo: class PackageInfo:
"""A structure to hold package information. Package information is """A structure to hold package information. Package information is
located under <Package> tag in PSPEC file. Opposite to Source each located under <Package> tag in PSPEC file. Opposite to Source each
+5 -5
View File
@@ -2,7 +2,7 @@
import unittest import unittest
import os import os
from pisi import packagedb from pisi.sourcedb import sourcedb
from pisi import util from pisi import util
from pisi import context from pisi import context
@@ -12,12 +12,12 @@ class SourceDBTestCase(unittest.TestCase):
self.ctx = context.BuildContext("samples/popt/popt.pspec") self.ctx = context.BuildContext("samples/popt/popt.pspec")
def testAdd(self): def testAdd(self):
sourcedb.add_source("testsourcedb", self.ctx.spec.source) sourcedb.add_source(self.ctx.spec.source)
self.assert_(sourcedb.has_package("testsourcedb")) self.assert_(sourcedb.has_source("popt"))
def testRemove(self): def testRemove(self):
self.testAdd() self.testAdd()
sourcedb.remove_package("testsourcedb") sourcedb.remove_source("popt")
self.assert_(not sourcedb.has_package("testsourcedb")) self.assert_(not sourcedb.has_source("popt"))
suite = unittest.makeSuite(SourceDBTestCase) suite = unittest.makeSuite(SourceDBTestCase)