* 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
- 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)
/ API: yeah, we even got application users (eray)
/ multiple package repository (eray)
+ decide how to implement
/ make a package and sourcedb for each repo
+ packagedb
- sourceb
+ support repo order
- support medium types :( uhuuuu
- internet: http/ftp
- local repository
@@ -97,17 +87,19 @@ Legend:
- PISIMAT
/ pykde GUI (cartman)
+ 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)
- use a separate "partial/" subdir like urpmi
/ exception handling (baris)
/ better/more sensible exception hierarchy (eray)
? 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
- comar OM information (Provides)
+ package by name, summary/description
@@ -135,9 +127,18 @@ Legend:
5. Post Release
/ make a package and sourcedb for each repo
+ packagedb
- sourceb
- transaction stuff for database (eray)
- multi-architecture support (baris, caglar)
/ design decisions
/ extend XML specs to support that
- 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
from pisi.index import Index
class Error(pisi.Error):
pass
@@ -428,12 +429,9 @@ def index(repo_dir = '.'):
index.write(ctx.const.pisi_index)
ctx.ui.info('* Index file written\n')
class Repo:
def __init__(self, indexuri):
self.indexuri = indexuri
def add_repo(name, indexuri):
repo = Repo(URI(indexuri))
repo = pisi.repodb.Repo(URI(indexuri))
ctx.repodb.add_repo(name, repo)
def remove_repo(name):
+4 -4
View File
@@ -19,7 +19,6 @@
# we basically store everything in PackageInfo class
# yes, we are cheap
#from bsddb.dbshelve import DBShelf
import bsddb.dbshelve as shelve
import os, fcntl
from bsddb import db
@@ -28,7 +27,7 @@ import pisi
import pisi.util as util
import pisi.context as ctx
class PackageDBError(pisi.Error):
class Error(pisi.Error):
pass
class PackageDB(object):
@@ -114,7 +113,8 @@ def has_package(name):
return False
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):
return repo
return None
@@ -127,7 +127,7 @@ def get_package(name):
return thirdparty_packagedb.get_package(name)
if inst_packagedb.has_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):
repo = which_repo(name)
+44 -6
View File
@@ -13,46 +13,84 @@
from bsddb import db
import os, fcntl
import pisi
import pisi.lockeddbshelve as shelve
import pisi.context as ctx
import pisi.packagedb as packagedb
import pisi.util as util
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):
"""RepoDB maps repo ids to repository information"""
def __init__(self):
self.d = shelve.LockedDBShelf("repo")
if not self.d.has_key("order"):
self.d["order"] = []
def init_dbs(self):
# initialize package/source dbs
for x in self.d.keys():
for x in self.list():
packagedb.add_db(x)
def __del__(self):
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):
name = str(name)
return self.d.has_key(name)
return self.d.has_key("repo-" + name)
def get_repo(self, name):
name = str(name)
return self.d[name]
return self.d["repo-" + name]
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)
def list(self):
return self.d.keys()
return self.d["order"]
def clear(self):
self.d.clear()
def remove_repo(self, 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