* packagedb icin composition kullan inheritance yerine
* sourcedb'i de adam et
This commit is contained in:
@@ -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
@@ -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
@@ -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]
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user