* postpone a few TODO items

* support for repository order like urpmi
* small fixes/improvements
This commit is contained in:
Eray Özkural
2005-09-14 10:22:21 +00:00
parent 00a2c5ac54
commit 2e2074b855
4 changed files with 69 additions and 32 deletions
+19 -18
View File
@@ -73,20 +73,10 @@ Legend:
3. Beta 3. Beta
- API: yeah, we even got application users (eray) / API: yeah, we even got application users (eray)
/ i18n support
+ upgrade (eray)
+ upgrade operation
+ test upgrade op
+ system-wide upgrade (upgrade-all) komutu
- overhaul installdb (try to merge its use with packagedb) (eray)
- configure-pending (eray)
- ordered configure install thing (eray)
/ multiple package repository (eray) / multiple package repository (eray)
+ decide how to implement + decide how to implement
/ make a package and sourcedb for each repo + support repo order
+ packagedb
- sourceb
- support medium types :( uhuuuu - support medium types :( uhuuuu
- internet: http/ftp - internet: http/ftp
- local repository - local repository
@@ -97,17 +87,19 @@ Legend:
- PISIMAT - PISIMAT
/ pykde GUI (cartman) / pykde GUI (cartman)
+ metaclass coolness for CLI command framework (eray) + metaclass coolness for CLI command framework (eray)
/ i18n support (those who know how to do it)
+ upgrade (eray)
+ upgrade operation
+ test upgrade op
+ system-wide upgrade (upgrade-all) komutu
- overhaul installdb (try to merge its use with packagedb) (eray)
- configure-pending (eray)
- ordered configure install thing (eray)
- partial caching and automatic resume for file download (meren) - partial caching and automatic resume for file download (meren)
- use a separate "partial/" subdir like urpmi - use a separate "partial/" subdir like urpmi
/ exception handling (baris) / exception handling (baris)
/ better/more sensible exception hierarchy (eray) / better/more sensible exception hierarchy (eray)
? recovery from exceptions where necessary ? recovery from exceptions where necessary
- incremental build/fetch for repository index (pisi-index.xml)
- diffsets (caglar)
/ component/category
+ requirements
- xml format (baris) (bunlarin class'leri yazilmali)
- usage (build process'in icine koymak baris - meren)
/ query / query
- comar OM information (Provides) - comar OM information (Provides)
+ package by name, summary/description + package by name, summary/description
@@ -135,9 +127,18 @@ Legend:
5. Post Release 5. Post Release
/ make a package and sourcedb for each repo
+ packagedb
- sourceb
- transaction stuff for database (eray) - transaction stuff for database (eray)
- multi-architecture support (baris, caglar) - multi-architecture support (baris, caglar)
/ design decisions / design decisions
/ extend XML specs to support that / extend XML specs to support that
- cross-platform building support - cross-platform building support
/ component/category
+ requirements
- xml format (baris) (bunlarin class'leri yazilmali)
- usage (build process'in icine koymak baris - meren)
- incremental build/fetch for repository index (pisi-index.xml)
- diffsets (caglar)
+2 -4
View File
@@ -30,6 +30,7 @@ import pisi.repodb
import pisi.installdb import pisi.installdb
from pisi.index import Index from pisi.index import Index
class Error(pisi.Error): class Error(pisi.Error):
pass pass
@@ -428,12 +429,9 @@ def index(repo_dir = '.'):
index.write(ctx.const.pisi_index) index.write(ctx.const.pisi_index)
ctx.ui.info('* Index file written\n') ctx.ui.info('* Index file written\n')
class Repo:
def __init__(self, indexuri):
self.indexuri = indexuri
def add_repo(name, indexuri): def add_repo(name, indexuri):
repo = Repo(URI(indexuri)) repo = pisi.repodb.Repo(URI(indexuri))
ctx.repodb.add_repo(name, repo) ctx.repodb.add_repo(name, repo)
def remove_repo(name): def remove_repo(name):
+4 -4
View File
@@ -19,7 +19,6 @@
# 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
import bsddb.dbshelve as shelve import bsddb.dbshelve as shelve
import os, fcntl import os, fcntl
from bsddb import db from bsddb import db
@@ -28,7 +27,7 @@ import pisi
import pisi.util as util import pisi.util as util
import pisi.context as ctx import pisi.context as ctx
class PackageDBError(pisi.Error): class Error(pisi.Error):
pass pass
class PackageDB(object): class PackageDB(object):
@@ -114,7 +113,8 @@ def has_package(name):
return False return False
def which_repo(name): def which_repo(name):
for repo in packagedbs.keys(): import pisi.repodb
for repo in pisi.repodb.db.list():
if get_db(repo).has_package(name): if get_db(repo).has_package(name):
return repo return repo
return None return None
@@ -127,7 +127,7 @@ def get_package(name):
return thirdparty_packagedb.get_package(name) return thirdparty_packagedb.get_package(name)
if inst_packagedb.has_package(name): if inst_packagedb.has_package(name):
return inst_packagedb.get_package(name) return inst_packagedb.get_package(name)
raise PackageDBError, 'get_package: package %s not found' % name raise Error('get_package: package %s not found' % name)
def get_rev_deps(name): def get_rev_deps(name):
repo = which_repo(name) repo = which_repo(name)
+44 -6
View File
@@ -13,46 +13,84 @@
from bsddb import db from bsddb import db
import os, fcntl import os, fcntl
import pisi
import pisi.lockeddbshelve as shelve import pisi.lockeddbshelve as shelve
import pisi.context as ctx import pisi.context as ctx
import pisi.packagedb as packagedb import pisi.packagedb as packagedb
import pisi.util as util import pisi.util as util
from pisi.uri import URI from pisi.uri import URI
class Error(pisi.Error):
pass
class Repo:
def __init__(self, indexuri):
self.indexuri = indexuri
#class HttpRepo
#class FtpRepo
#class RemovableRepo
class RepoDB(object): class RepoDB(object):
"""RepoDB maps repo ids to repository information""" """RepoDB maps repo ids to repository information"""
def __init__(self): def __init__(self):
self.d = shelve.LockedDBShelf("repo") self.d = shelve.LockedDBShelf("repo")
if not self.d.has_key("order"):
self.d["order"] = []
def init_dbs(self): def init_dbs(self):
# initialize package/source dbs # initialize package/source dbs
for x in self.d.keys(): for x in self.list():
packagedb.add_db(x) packagedb.add_db(x)
def __del__(self): def __del__(self):
self.d.close() self.d.close()
def repo_name(self, ix):
l = self.list()
return l[ix]
def swap(self, x,y):
l = d["order"]
t = l[x]
l[x] = l[y]
l[y] = t
d["order"] = l
def has_repo(self, name): def has_repo(self, name):
name = str(name) name = str(name)
return self.d.has_key(name) return self.d.has_key("repo-" + name)
def get_repo(self, name): def get_repo(self, name):
name = str(name) name = str(name)
return self.d[name] return self.d["repo-" + name]
def add_repo(self, name, repo_info): def add_repo(self, name, repo_info):
self.d[name] = repo_info if self.d.has_key("repo-" + name):
raise Error('Repository %s already exists' % name)
self.d["repo-" + name] = repo_info
order = self.d["order"]
order.append(name)
self.d["order"] = order
packagedb.add_db(name) packagedb.add_db(name)
def list(self): def list(self):
return self.d.keys() return self.d["order"]
def clear(self): def clear(self):
self.d.clear() self.d.clear()
def remove_repo(self, name): def remove_repo(self, name):
name = str(name) name = str(name)
del self.d[name] del self.d["repo-" + name]
l = self.d["order"]
l.remove(name)
self.d["order"] = l
db = None db = None