* specfile: parse history, too
* first implementation of packagedb and sourcedb
- we are now using the more modern bsddb.dbshelve implementation
which uses cPickle and berkeley db
* util: TODO: file ops
This commit is contained in:
@@ -3,13 +3,11 @@
|
|||||||
# maintainer: eray and caglar
|
# maintainer: eray and caglar
|
||||||
|
|
||||||
import config
|
import config
|
||||||
import shelve
|
|
||||||
import util
|
import util
|
||||||
|
import bsddb.dbshelve as shelve
|
||||||
|
|
||||||
util.check_dir( config.db_dir() )
|
util.check_dir( config.db_dir() )
|
||||||
|
d = shelve.open( config.db_dir() + '/install.bdb')
|
||||||
d = shelve.open( config.db_dir() + '/install.dbm')
|
|
||||||
|
|
||||||
files_dir = config.archives_dir() + "/files"
|
files_dir = config.archives_dir() + "/files"
|
||||||
|
|
||||||
class InstallDBError(Exception):
|
class InstallDBError(Exception):
|
||||||
@@ -38,7 +36,7 @@ def remove( name, version, release):
|
|||||||
d[key] = 'r'
|
d[key] = 'r'
|
||||||
|
|
||||||
def purge( name, version, release):
|
def purge( name, version, release):
|
||||||
d.delete(key)
|
|
||||||
util.remove_file( files_name( name, version, release) )
|
util.remove_file( files_name( name, version, release) )
|
||||||
|
del d[key]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+12
-1
@@ -3,6 +3,17 @@
|
|||||||
# interface for update/query to local package repository
|
# interface for update/query to local package repository
|
||||||
# maintainer: eray and caglar
|
# maintainer: eray and caglar
|
||||||
|
|
||||||
import shelve
|
# we basically store everything in PackageInfo class
|
||||||
|
# yes, we are cheap
|
||||||
|
|
||||||
|
import bsddb.dbshelve as shelve
|
||||||
|
|
||||||
|
util.check_dir( config.db_dir() )
|
||||||
|
d = shelve.open( config.db_dir() + '/package.bdb')
|
||||||
|
|
||||||
|
def add_package( name, package_info ):
|
||||||
|
d[name] = package_info
|
||||||
|
|
||||||
|
def remove_package(name):
|
||||||
|
del d[name]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# package source database
|
||||||
|
# interface for update/query to local package repository
|
||||||
|
# maintainer: eray and caglar
|
||||||
|
|
||||||
|
# we basically store everything in sourceinfo class (?)
|
||||||
|
# yes, we are cheap
|
||||||
|
|
||||||
|
import bsddb.dbshelve as shelve
|
||||||
|
|
||||||
|
util.check_dir( config.db_dir() )
|
||||||
|
d = shelve.open( config.db_dir() + '/source.bdb')
|
||||||
|
|
||||||
|
def add_source( name, source_info ):
|
||||||
|
d[name] = package_info
|
||||||
|
|
||||||
|
def remove_source(name):
|
||||||
|
del d[name]
|
||||||
+10
-1
@@ -19,6 +19,12 @@ class DepInfo:
|
|||||||
self.package = getNodeText(node).strip()
|
self.package = getNodeText(node).strip()
|
||||||
self.versionFrom = getNodeAttribute(node, "versionFrom")
|
self.versionFrom = getNodeAttribute(node, "versionFrom")
|
||||||
|
|
||||||
|
class HistoryInfo:
|
||||||
|
def __init__(self, node):
|
||||||
|
self.date = getNodeText(getNode(node, "Date"))
|
||||||
|
self.version = getNodeText(getNode(node, "Version"))
|
||||||
|
self.release = getNodeText(getNode(node, "Release"))
|
||||||
|
|
||||||
class PathInfo:
|
class PathInfo:
|
||||||
def __init__(self, node):
|
def __init__(self, node):
|
||||||
self.pathname = getNodeText(node)
|
self.pathname = getNodeText(node)
|
||||||
@@ -59,10 +65,13 @@ class SpecFile(XmlFile):
|
|||||||
buildDepElts = self.getChildElts("Source/BuildDependencies")
|
buildDepElts = self.getChildElts("Source/BuildDependencies")
|
||||||
self.buildDeps = [DepInfo(d) for d in buildDepElts]
|
self.buildDeps = [DepInfo(d) for d in buildDepElts]
|
||||||
|
|
||||||
|
historyElts = self.getAllNodes("History/Update")
|
||||||
|
self.history = [HistoryInfo(x) for x in historyElts]
|
||||||
|
|
||||||
# find all binary packages
|
# find all binary packages
|
||||||
packageElts = self.getAllNodes("Package")
|
packageElts = self.getAllNodes("Package")
|
||||||
self.packages = [PackageInfo(p) for p in packageElts]
|
self.packages = [PackageInfo(p) for p in packageElts]
|
||||||
|
|
||||||
def verify(self):
|
def verify(self):
|
||||||
"""Verify PSPEC structures, are they what we want of them?"""
|
"""Verify PSPEC structures, are they what we want of them?"""
|
||||||
return True
|
return True
|
||||||
|
|||||||
+12
-1
@@ -8,7 +8,7 @@ import md5
|
|||||||
|
|
||||||
# check if directory exists, and create if it doesn't
|
# check if directory exists, and create if it doesn't
|
||||||
# works recursively
|
# works recursively
|
||||||
# FIXME: could hav a better name
|
# FIXME: could have a better name
|
||||||
def check_dir(dir):
|
def check_dir(dir):
|
||||||
dir = dir.rstrip()
|
dir = dir.rstrip()
|
||||||
dir = dir.rstrip("/")
|
dir = dir.rstrip("/")
|
||||||
@@ -19,6 +19,17 @@ def check_dir(dir):
|
|||||||
check_dir(parent_dir)
|
check_dir(parent_dir)
|
||||||
os.mkdir(dir)
|
os.mkdir(dir)
|
||||||
|
|
||||||
|
# TODO:
|
||||||
|
def copy_file():
|
||||||
|
pass
|
||||||
|
|
||||||
|
def remove_file():
|
||||||
|
# unlink file
|
||||||
|
pass
|
||||||
|
|
||||||
|
def copy_dir():
|
||||||
|
pass
|
||||||
|
|
||||||
def md5_file(filename):
|
def md5_file(filename):
|
||||||
m = md5.new()
|
m = md5.new()
|
||||||
f = file(filename, 'rb')
|
f = file(filename, 'rb')
|
||||||
|
|||||||
Reference in New Issue
Block a user