* packagedb icin composition kullan inheritance yerine
* sourcedb'i de adam et
This commit is contained in:
@@ -38,7 +38,7 @@ Legend:
|
||||
|
||||
2. Alpha
|
||||
+ write specfile (eray)
|
||||
/ file locking for database access
|
||||
/ file locking for database access (eray)
|
||||
- verify metodlari
|
||||
- SpecFile
|
||||
- MetaData
|
||||
|
||||
+8
-13
@@ -7,25 +7,20 @@
|
||||
# we basically store everything in PackageInfo class
|
||||
# yes, we are cheap
|
||||
|
||||
from bsddb.dbshelve import DBShelf
|
||||
#from bsddb.dbshelve import DBShelf
|
||||
import bsddb.dbshelve as shelve
|
||||
import os, fcntl
|
||||
|
||||
import util
|
||||
from config import config
|
||||
from bsddb import db
|
||||
|
||||
class PackageDB(DBShelf):
|
||||
class PackageDB(object):
|
||||
|
||||
def __init__(self):
|
||||
DBShelf.__init__(self)
|
||||
util.check_dir(config.db_dir())
|
||||
filename = os.path.join(config.db_dir(), 'package.bdb')
|
||||
#d.open(filename, dbname, filetype, flags, mode)
|
||||
flags = db.DB_CREATE
|
||||
mode = 0660
|
||||
filetype=db.DB_HASH
|
||||
dbname = None
|
||||
self.open( filename, dbname, filetype, flags, mode )
|
||||
self.d = shelve.open(filename)
|
||||
self.fdummy = open(filename)
|
||||
fcntl.flock(self.fdummy, fcntl.LOCK_EX)
|
||||
|
||||
@@ -35,19 +30,19 @@ class PackageDB(DBShelf):
|
||||
|
||||
def has_package(self, name):
|
||||
name = str(name)
|
||||
return self.has_key(name)
|
||||
return self.d.has_key(name)
|
||||
|
||||
def get_package(self, name):
|
||||
name = str(name)
|
||||
return self[name]
|
||||
return self.d[name]
|
||||
|
||||
def add_package(self, package_info):
|
||||
name = str(package_info.name)
|
||||
self[name] = package_info
|
||||
self.d[name] = package_info
|
||||
|
||||
def remove_package(self, name):
|
||||
name = str(name)
|
||||
del self[name]
|
||||
del self.d[name]
|
||||
|
||||
packagedb = PackageDB()
|
||||
|
||||
|
||||
+35
-6
@@ -7,12 +7,41 @@
|
||||
# yes, we are cheap
|
||||
|
||||
import bsddb.dbshelve as shelve
|
||||
import os, fcntl
|
||||
|
||||
util.check_dir(config.db_dir())
|
||||
d = shelve.open(config.db_dir() + '/source.bdb')
|
||||
import util
|
||||
from config import config
|
||||
from bsddb import db
|
||||
|
||||
def add_source(name, source_info):
|
||||
d[name] = source_info
|
||||
class SourceDB(object):
|
||||
|
||||
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]
|
||||
|
||||
@@ -128,6 +128,11 @@ class SourceInfo:
|
||||
xml.addNodeUnder(node, "History", update.elt(xml))
|
||||
return node
|
||||
|
||||
def verify(self):
|
||||
ret = True
|
||||
ret &= len(self.history) > 0
|
||||
return ret
|
||||
|
||||
class PackageInfo:
|
||||
"""A structure to hold package information. Package information is
|
||||
located under <Package> tag in PSPEC file. Opposite to Source each
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import unittest
|
||||
import os
|
||||
|
||||
from pisi import packagedb
|
||||
from pisi.sourcedb import sourcedb
|
||||
from pisi import util
|
||||
from pisi import context
|
||||
|
||||
@@ -12,12 +12,12 @@ class SourceDBTestCase(unittest.TestCase):
|
||||
self.ctx = context.BuildContext("samples/popt/popt.pspec")
|
||||
|
||||
def testAdd(self):
|
||||
sourcedb.add_source("testsourcedb", self.ctx.spec.source)
|
||||
self.assert_(sourcedb.has_package("testsourcedb"))
|
||||
sourcedb.add_source(self.ctx.spec.source)
|
||||
self.assert_(sourcedb.has_source("popt"))
|
||||
|
||||
def testRemove(self):
|
||||
self.testAdd()
|
||||
sourcedb.remove_package("testsourcedb")
|
||||
self.assert_(not sourcedb.has_package("testsourcedb"))
|
||||
sourcedb.remove_source("popt")
|
||||
self.assert_(not sourcedb.has_source("popt"))
|
||||
|
||||
suite = unittest.makeSuite(SourceDBTestCase)
|
||||
|
||||
Reference in New Issue
Block a user