* 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:
Eray Özkural
2005-06-13 13:47:18 +00:00
parent ded1813eb5
commit 1f31a3d6df
5 changed files with 55 additions and 8 deletions
+3 -5
View File
@@ -3,13 +3,11 @@
# maintainer: eray and caglar
import config
import shelve
import util
import bsddb.dbshelve as shelve
util.check_dir( config.db_dir() )
d = shelve.open( config.db_dir() + '/install.dbm')
d = shelve.open( config.db_dir() + '/install.bdb')
files_dir = config.archives_dir() + "/files"
class InstallDBError(Exception):
@@ -38,7 +36,7 @@ def remove( name, version, release):
d[key] = 'r'
def purge( name, version, release):
d.delete(key)
util.remove_file( files_name( name, version, release) )
del d[key]
+12 -1
View File
@@ -3,6 +3,17 @@
# interface for update/query to local package repository
# 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]
+18
View File
@@ -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
View File
@@ -19,6 +19,12 @@ class DepInfo:
self.package = getNodeText(node).strip()
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:
def __init__(self, node):
self.pathname = getNodeText(node)
@@ -59,10 +65,13 @@ class SpecFile(XmlFile):
buildDepElts = self.getChildElts("Source/BuildDependencies")
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
packageElts = self.getAllNodes("Package")
self.packages = [PackageInfo(p) for p in packageElts]
def verify(self):
"""Verify PSPEC structures, are they what we want of them?"""
return True
+12 -1
View File
@@ -8,7 +8,7 @@ import md5
# check if directory exists, and create if it doesn't
# works recursively
# FIXME: could hav a better name
# FIXME: could have a better name
def check_dir(dir):
dir = dir.rstrip()
dir = dir.rstrip("/")
@@ -19,6 +19,17 @@ def check_dir(dir):
check_dir(parent_dir)
os.mkdir(dir)
# TODO:
def copy_file():
pass
def remove_file():
# unlink file
pass
def copy_dir():
pass
def md5_file(filename):
m = md5.new()
f = file(filename, 'rb')