* postpone a few TODO items
* support for repository order like urpmi * small fixes/improvements
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user