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