* 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
|
||||
|
||||
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
@@ -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]
|
||||
|
||||
|
||||
@@ -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.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
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user