* 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)
|
ctx.ui.info(_('* Updating repository: %s') % repo)
|
||||||
index = Index()
|
index = Index()
|
||||||
if ctx.repodb.has_repo(repo):
|
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:
|
else:
|
||||||
raise Error(_('No repository named %s found.') % repo)
|
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():
|
def delete_cache():
|
||||||
util.clean_dir(ctx.config.packages_dir())
|
util.clean_dir(ctx.config.packages_dir())
|
||||||
|
|||||||
+4
-1
@@ -80,6 +80,9 @@ class Fetcher:
|
|||||||
|
|
||||||
archive_file = os.path.join(self.filedest, self.url.filename())
|
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():
|
if self.url.is_local_file():
|
||||||
self.fetchLocalFile(archive_file + '.part')
|
self.fetchLocalFile(archive_file + '.part')
|
||||||
else:
|
else:
|
||||||
@@ -162,7 +165,7 @@ class Fetcher:
|
|||||||
else:
|
else:
|
||||||
dest = open(archive_file, 'wb')
|
dest = open(archive_file, 'wb')
|
||||||
|
|
||||||
uri = self.url.uri
|
uri = self.url.get_uri()
|
||||||
|
|
||||||
flag = 1
|
flag = 1
|
||||||
try:
|
try:
|
||||||
|
|||||||
+2
-14
@@ -51,20 +51,8 @@ class Index(XmlFile):
|
|||||||
|
|
||||||
def read_uri(self, filename, repo = None):
|
def read_uri(self, filename, repo = None):
|
||||||
"""Read PSPEC file"""
|
"""Read PSPEC file"""
|
||||||
|
tmpdir = os.path.join(ctx.config.index_dir(), repo)
|
||||||
self.filepath = filename
|
self.read(filename, tmpdir, sha1sum=True)
|
||||||
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)
|
|
||||||
|
|
||||||
def index(self, repo_uri, skip_sources=False):
|
def index(self, repo_uri, skip_sources=False):
|
||||||
self.repo_dir = repo_uri
|
self.repo_dir = repo_uri
|
||||||
|
|||||||
+4
-4
@@ -63,15 +63,15 @@ class PackageDB(object):
|
|||||||
|
|
||||||
def get_package(self, name, repo=None, txn = None):
|
def get_package(self, name, repo=None, txn = None):
|
||||||
try:
|
try:
|
||||||
return self.d.get_item(name, repo, txn)
|
return self.d.get_item(name, repo, txn=txn)
|
||||||
except pisi.itembyrepodb.NotfoundError, e:
|
except pisi.itembyrepodb.NotfoundError, e:
|
||||||
raise Error(_('Package %s not found') % name)
|
raise Error(_('Package %s not found') % name)
|
||||||
|
|
||||||
def get_package_repo(self, name, repo=None, txn = None):
|
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):
|
def which_repo(self, name, txn = None):
|
||||||
return self.d.which_repo(name, repo, txn)
|
return self.d.which_repo(name, txn=txn)
|
||||||
|
|
||||||
def get_rev_deps(self, name):
|
def get_rev_deps(self, name):
|
||||||
if self.dr.has_key(name):
|
if self.dr.has_key(name):
|
||||||
|
|||||||
+2
-1
@@ -27,7 +27,7 @@ class URI(object):
|
|||||||
|
|
||||||
def __init__(self, uri=None):
|
def __init__(self, uri=None):
|
||||||
if uri:
|
if uri:
|
||||||
self.set_uri(uri)
|
self.set_uri(str(uri))
|
||||||
else:
|
else:
|
||||||
self.__scheme = None
|
self.__scheme = None
|
||||||
self.__location = None
|
self.__location = None
|
||||||
@@ -47,6 +47,7 @@ class URI(object):
|
|||||||
|
|
||||||
def set_uri(self, uri):
|
def set_uri(self, uri):
|
||||||
# (scheme, location, path, params, query, fragment)
|
# (scheme, location, path, params, query, fragment)
|
||||||
|
uri = str(uri)
|
||||||
u = urlparse(uri, "file")
|
u = urlparse(uri, "file")
|
||||||
self.__scheme = u[0]
|
self.__scheme = u[0]
|
||||||
self.__location = u[1]
|
self.__location = u[1]
|
||||||
|
|||||||
Reference in New Issue
Block a user