diff --git a/pisi/api.py b/pisi/api.py index cf4015f9..10165129 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -377,10 +377,12 @@ def update_repo(repo, force=False): index.read_uri_of_repo(repouri, repo, force = force) else: return + try: index.check_signature(repouri, repo) except pisi.file.NoSignatureFound, e: ctx.ui.warning(e) + ctx.txn_proc(lambda txn : index.update_db(repo, txn=txn)) ctx.ui.info(_('* Package database updated.')) else: diff --git a/pisi/build.py b/pisi/build.py index 693fa828..1a8dff31 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -96,7 +96,7 @@ class Builder: #FIXME: this class and every other class must use URLs as paths! @staticmethod - def from_name(name, authinfo = None): + def from_name(name): # download package and return an installer object # find package in repository sf, reponame = ctx.sourcedb.get_spec_repo(name) @@ -114,19 +114,15 @@ class Builder: ctx.ui.debug(_("Source URI: %s") % src_path) - return Builder(src_path, authinfo) + return Builder(src_path) else: raise Error(_("Source %s not found in any active repository.") % name) - def __init__(self, specuri, authinfo = None): + def __init__(self, specuri): # process args if not isinstance(specuri, URI): specuri = URI(specuri) - if authinfo: - specuri.set_auth_info(authinfo) - - self.authinfo = authinfo # read spec file, we'll need it :) self.set_spec_file(specuri) @@ -285,8 +281,6 @@ class Builder: def download(self, uri, transferdir): # fix auth info and download uri = File.make_uri(uri) - if self.authinfo: - uri.set_auth_info(self.authinfo) File.download(uri, transferdir) def fetch_component(self): @@ -863,11 +857,11 @@ class Builder: # build functions... -def build(pspec, authinfo=None): +def build(pspec): if pspec.endswith('.xml'): - pb = Builder(pspec, authinfo) + pb = Builder(pspec) else: - pb = Builder.from_name(pspec, authinfo) + pb = Builder.from_name(pspec) return pb.build() order = {"none": 0, @@ -907,11 +901,11 @@ def __buildState_buildpackages(pb, last): __buildState_installaction(pb, last) pb.build_packages() -def build_until(pspec, state, authinfo=None): +def build_until(pspec, state): if pspec.endswith('.xml'): - pb = Builder(pspec, authinfo) + pb = Builder(pspec) else: - pb = Builder.from_name(pspec, authinfo) + pb = Builder.from_name(pspec) pb.compile_action_script() diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index 64f082dd..feeb2540 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -130,15 +130,15 @@ class Command(object): # someauthconfig.password) # return if username and password: - self.authInfo = (username, password) + self.options.authinfo = (username, password) return if username and self.options.getpass: from getpass import getpass password = getpass(_("Password: ")) - self.authInfo = (username, password) + self.options.authinfo = (username, password) else: - self.authInfo = None + self.options.authinfo = None def init(self, database = True, write = True): """initialize PiSi components""" @@ -424,9 +424,9 @@ unpack, setup, build, install, package. for x in self.args: if ctx.get_option('until'): - pisi.api.build_until(x, ctx.get_option('until'), self.authInfo) + pisi.api.build_until(x, ctx.get_option('until')) else: - pisi.api.build(x, self.authInfo) + pisi.api.build(x) self.finalize() diff --git a/pisi/fetcher.py b/pisi/fetcher.py index 9c1e2c3e..8c566f2e 100644 --- a/pisi/fetcher.py +++ b/pisi/fetcher.py @@ -63,6 +63,9 @@ class Fetcher: if not isinstance(url, URI): url = URI(url) + if ctx.config.options.authinfo: + url.set_auth_info(ctx.config.options.authinfo) + self.resume = resume self.scheme = url.scheme() self.url = url