* implement index integrity, skip if not up to date
* small fixes for fetcher (explicitly check perms for dest file) * packagedb: method call fix
This commit is contained in:
+6
-3
@@ -319,11 +319,14 @@ def update_repo(repo):
|
||||
ctx.ui.info(_('* Updating repository: %s') % repo)
|
||||
index = Index()
|
||||
if ctx.repodb.has_repo(repo):
|
||||
index.read_uri(ctx.repodb.get_repo(repo).indexuri.get_uri(), repo)
|
||||
try:
|
||||
index.read_uri(ctx.repodb.get_repo(repo).indexuri.get_uri(), repo)
|
||||
ctx.txn_proc(lambda txn : index.update_db(repo, txn=txn))
|
||||
ctx.ui.info(_('* Package database updated.'))
|
||||
except pisi.file.AlreadyHaveException, e:
|
||||
ctx.ui.info(_('No updates available for repository %s.' % repo))
|
||||
else:
|
||||
raise Error(_('No repository named %s found.') % repo)
|
||||
ctx.txn_proc(lambda txn : index.update_db(repo, txn=txn))
|
||||
ctx.ui.info(_('\n* Package database updated.'))
|
||||
|
||||
def delete_cache():
|
||||
util.clean_dir(ctx.config.packages_dir())
|
||||
|
||||
+4
-1
@@ -79,6 +79,9 @@ class Fetcher:
|
||||
self.err(_('Access denied to write to destination directory'))
|
||||
|
||||
archive_file = os.path.join(self.filedest, self.url.filename())
|
||||
|
||||
if os.path.exists(self.filedest) and not os.access(self.filedest, os.W_OK):
|
||||
self.err(_('Access denied to destination file'))
|
||||
|
||||
if self.url.is_local_file():
|
||||
self.fetchLocalFile(archive_file + '.part')
|
||||
@@ -162,7 +165,7 @@ class Fetcher:
|
||||
else:
|
||||
dest = open(archive_file, 'wb')
|
||||
|
||||
uri = self.url.uri
|
||||
uri = self.url.get_uri()
|
||||
|
||||
flag = 1
|
||||
try:
|
||||
|
||||
+2
-14
@@ -51,20 +51,8 @@ class Index(XmlFile):
|
||||
|
||||
def read_uri(self, filename, repo = None):
|
||||
"""Read PSPEC file"""
|
||||
|
||||
self.filepath = filename
|
||||
url = URI(filename)
|
||||
if url.is_remote_file():
|
||||
from fetcher import fetch_url
|
||||
assert repo
|
||||
dest = os.path.join(ctx.config.index_dir(), repo)
|
||||
if not os.path.exists(dest):
|
||||
os.makedirs(dest)
|
||||
fetch_url(url, dest, ctx.ui.Progress)
|
||||
|
||||
self.filepath = os.path.join(dest, url.filename())
|
||||
|
||||
self.read(self.filepath)
|
||||
tmpdir = os.path.join(ctx.config.index_dir(), repo)
|
||||
self.read(filename, tmpdir, sha1sum=True)
|
||||
|
||||
def index(self, repo_uri, skip_sources=False):
|
||||
self.repo_dir = repo_uri
|
||||
|
||||
+4
-4
@@ -63,15 +63,15 @@ class PackageDB(object):
|
||||
|
||||
def get_package(self, name, repo=None, txn = None):
|
||||
try:
|
||||
return self.d.get_item(name, repo, txn)
|
||||
return self.d.get_item(name, repo, txn=txn)
|
||||
except pisi.itembyrepodb.NotfoundError, e:
|
||||
raise Error(_('Package %s not found') % name)
|
||||
|
||||
def get_package_repo(self, name, repo=None, txn = None):
|
||||
return self.d.get_item_repo(name, repo, txn)
|
||||
return self.d.get_item_repo(name, repo, txn=txn)
|
||||
|
||||
def which_repo(self, name, repo=None, txn = None):
|
||||
return self.d.which_repo(name, repo, txn)
|
||||
def which_repo(self, name, txn = None):
|
||||
return self.d.which_repo(name, txn=txn)
|
||||
|
||||
def get_rev_deps(self, name):
|
||||
if self.dr.has_key(name):
|
||||
|
||||
+2
-1
@@ -27,7 +27,7 @@ class URI(object):
|
||||
|
||||
def __init__(self, uri=None):
|
||||
if uri:
|
||||
self.set_uri(uri)
|
||||
self.set_uri(str(uri))
|
||||
else:
|
||||
self.__scheme = None
|
||||
self.__location = None
|
||||
@@ -47,6 +47,7 @@ class URI(object):
|
||||
|
||||
def set_uri(self, uri):
|
||||
# (scheme, location, path, params, query, fragment)
|
||||
uri = str(uri)
|
||||
u = urlparse(uri, "file")
|
||||
self.__scheme = u[0]
|
||||
self.__location = u[1]
|
||||
|
||||
Reference in New Issue
Block a user