From c448264e12840998c0f8c74b8e93b4edf7217a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=2E=C3=87a=C4=9Flar=20Onur?= Date: Mon, 14 May 2007 00:19:20 +0000 Subject: [PATCH] =?UTF-8?q?yanl=C4=B1=C5=9F=20yere=20commit=20etmi=C5=9Fim?= =?UTF-8?q?=20catbox=20alt=C4=B1nda=20deneyip=20daha=20sonra=20merge=20etm?= =?UTF-8?q?ek=20istiyordum,=20komple=20geri=20al=C4=B1yorum=20:(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pisi/api.py | 25 +++++++++++--------- pisi/atomicoperations.py | 31 ++++++++++++++----------- pisi/build.py | 15 ++++++------ pisi/cli/commands.py | 50 +++++++++++++++++++++------------------- pisi/config.py | 6 ++--- pisi/constants.py | 2 ++ pisi/dbshelve.py | 2 ++ pisi/delta.py | 30 ++++++++++++------------ pisi/fetcher.py | 11 ++++----- pisi/graph.py | 6 ++--- pisi/index.py | 3 +++ pisi/installdb.py | 16 ++++++++----- pisi/itembyrepodb.py | 6 +++++ pisi/operations.py | 18 ++++++++------- pisi/packagedb.py | 8 ++++++- pisi/pgraph.py | 1 - pisi/repodb.py | 10 +++++--- pisi/sourcedb.py | 9 ++++++-- pisi/ui.py | 5 ++++ pisi/util.py | 19 +++++++-------- 20 files changed, 160 insertions(+), 113 deletions(-) diff --git a/pisi/api.py b/pisi/api.py index 65b5f1a6..2a1b2972 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -90,6 +90,7 @@ def init(database = True, write = True, ctx.stderr = stderr # FIXME: something is wrong here... see __init__.py also. Why do we import pisi.api in __init__.py + import pisi.config ctx.config = pisi.config.Config(options) if signal_handling: @@ -162,6 +163,8 @@ def list_available(repo = None): return set(ctx.packagedb.list_packages(repo = repo)) def list_upgradable(): + ignore_build = ctx.get_option('ignore_build_no') + return filter(pisi.operations.is_upgradable, ctx.installdb.list_installed()) def package_graph(A, repo = pisi.itembyrepodb.installed, ignore_installed = False): @@ -355,14 +358,14 @@ def search_in_packages(terms, packages, repo = pisi.itembyrepodb.all): def check(package): md, files = info(package, True) corrupt = [] - for f in files.list: - if f.hash and f.type != "config" \ - and not os.path.islink('/' + f.path): - ctx.ui.info(_("Checking /%s ") % f.path, noln=True, verbose=True) + for file in files.list: + if file.hash and file.type != "config" \ + and not os.path.islink('/' + file.path): + ctx.ui.info(_("Checking /%s ") % file.path, noln=True, verbose=True) try: - if f.hash != pisi.util.sha1_file('/' + f.path): - corrupt.append(f) - ctx.ui.error(_("\nCorrupt file: %s") % f) + if file.hash != pisi.util.sha1_file('/' + file.path): + corrupt.append(file) + ctx.ui.error(_("\nCorrupt file: %s") % file) else: ctx.ui.info(_("OK"), verbose=True) except pisi.util.FileError,e: @@ -459,7 +462,7 @@ def rebuild_repo(repo): def rebuild_db(files=False): - assert not ctx.database + assert ctx.database == False # Bug 2596 # finds and cleans duplicate package directories under '/var/lib/pisi/package' @@ -510,7 +513,7 @@ def rebuild_db(files=False): percent = progress.update(processed), info = _("Rebuilding package database")) - def reload_indices(): + def reload_indices(txn): index_dir = ctx.config.index_dir() if os.path.exists(index_dir): # it may have been erased, or we may be upgrading from a previous version -- exa for repo in os.listdir(index_dir): @@ -524,7 +527,7 @@ def rebuild_db(files=False): shelve.check_dbversion('filesdbversion', pisi.__filesdbversion__, write=False) except KeyboardInterrupt: raise - except Exception: #FIXME: what exception could we catch here, replace with that. + except Exception, e: #FIXME: what exception could we catch here, replace with that. files = True # exception means the files db version was wrong shelve.init_dbenv(write=True, writeversion=True) destroy(files) # bye bye @@ -540,7 +543,7 @@ def rebuild_db(files=False): clean_duplicates() txn = ctx.dbenv.txn_begin() reload_packages(files, txn) - reload_indices() + reload_indices(txn) txn.commit() ############# FIXME: this was a quick fix. ############################## diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index 6a41e7c7..e8b16f85 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -15,12 +15,15 @@ import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext +import sys import os import bsddb3.db as db import shutil import pisi import pisi.context as ctx +import pisi.packagedb as packagedb +import pisi.dependency as dependency import pisi.conflict import pisi.util as util import pisi.metadata @@ -146,7 +149,7 @@ class Install(AtomicOperation): # check comar if self.metadata.package.providesComar and ctx.comar: import pisi.comariface as comariface - comariface.get_comar() + com = comariface.get_comar() def check_relations(self): # check dependencies @@ -162,10 +165,10 @@ class Install(AtomicOperation): # check file conflicts file_conflicts = [] - for f in self.files.list: - if ctx.filesdb.has_file(f.path): - pkg, existing_file = ctx.filesdb.get_file(f.path) - dst = pisi.util.join_path(ctx.config.dest_dir(), f.path) + for file in self.files.list: + if ctx.filesdb.has_file(file.path): + pkg, existing_file = ctx.filesdb.get_file(file.path) + dst = pisi.util.join_path(ctx.config.dest_dir(), file.path) if pkg != self.pkginfo.name and not os.path.isdir(dst): file_conflicts.append( (pkg, existing_file) ) if file_conflicts: @@ -275,8 +278,8 @@ class Install(AtomicOperation): fpath = pisi.util.join_path(ctx.config.dest_dir(), config.path) if os.path.exists(fpath) and not os.path.isdir(fpath): if os.path.islink(fpath): - f = os.readlink(fpath) - if os.path.exists(f) and pisi.util.sha1_data(f) != config.hash: + file = os.readlink(fpath) + if os.path.exists(file) and pisi.util.sha1_data(file) != config.hash: changed = True else: if pisi.util.sha1_file(fpath) != config.hash: @@ -355,13 +358,13 @@ class Install(AtomicOperation): config_overlaps = newconfig & oldconfig if config_overlaps: files = filter(lambda x: x.path in config_overlaps, old) - for f in files: - check_config_changed(f) + for file in files: + check_config_changed(file) else: - for f in self.files.list: - if f.type == 'config': + for file in self.files.list: + if file.type == 'config': # there may be left over config files - check_config_changed(f) + check_config_changed(file) if self.package_fname.endswith(ctx.const.delta_package_suffix): relocate_files() @@ -508,7 +511,7 @@ class Remove(AtomicOperation): try: if pisi.util.sha1_file(fpath) == fileinfo.hash: os.unlink(fpath) - except pisi.util.FileError: + except pisi.util.FileError, e: pass else: if os.path.isfile(fpath) or os.path.islink(fpath): @@ -540,7 +543,7 @@ class Remove(AtomicOperation): def remove_db(self, txn): ctx.installdb.remove(self.package_name, txn) ctx.filesdb.remove_files(self.files, txn) - ctx.packagedb.remove_tracking_package(self.package_name, txn) + pisi.packagedb.remove_tracking_package(self.package_name, txn) def remove_single(package_name): diff --git a/pisi/build.py b/pisi/build.py index df9cb03b..661a3220 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -13,6 +13,7 @@ # python standard library import os +import sys import glob import copy import stat @@ -416,7 +417,7 @@ class Builder: self.actionLocals[func]() else: if mandatory: - raise Error(_("unable to call function from actions: %s") % func) + Error, _("unable to call function from actions: %s") %func os.chdir(curDir) return True @@ -559,7 +560,7 @@ class Builder: except KeyError: pisi.util.strip_directory(install_dir) - def gen_metadata_xml(self, package): + def gen_metadata_xml(self, package, build_no=None): """Generate the metadata.xml file for build source. metadata.xml is composed of the information from specfile plus @@ -662,15 +663,15 @@ class Builder: ctx.ui.warning('Package file %s may be corrupt. Skipping.' % old_package_fn) for root, dirs, files in os.walk(ctx.config.compiled_packages_dir()): - for f in files: - locate_old_package(pisi.util.join_path(root,f)) + for file in files: + locate_old_package(pisi.util.join_path(root,file)) outdir=ctx.get_option('output_dir') if not outdir: outdir = '.' - for f in [pisi.util.join_path(outdir,entry) for entry in os.listdir(outdir)]: - if os.path.isfile(f): - locate_old_package(f) + for file in [pisi.util.join_path(outdir,entry) for entry in os.listdir(outdir)]: + if os.path.isfile(file): + locate_old_package(file) if not found: return (1, None) diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index ace7d6ad..2048a6f3 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -99,9 +99,9 @@ class Command(object): @staticmethod def commands_string(): s = '' - l = [x.name[0] for x in Command.cmd] - l.sort() - for name in l: + list = [x.name[0] for x in Command.cmd] + list.sort() + for name in list: commandcls = Command.cmd_dict[name] trans = gettext.translation('pisi', fallback=True) summary = trans.ugettext(commandcls.__doc__).split('\n')[0] @@ -173,12 +173,12 @@ class Command(object): # make destdir absolute if self.options.destdir: - d = str(self.options.destdir) + dir = str(self.options.destdir) import os.path - if not os.path.exists(d): - pisi.cli.printu(_('Destination directory %s does not exist. Creating directory.\n') % d) - os.makedirs(d) - self.options.destdir = os.path.realpath(d) + if not os.path.exists(dir): + pisi.cli.printu(_('Destination directory %s does not exist. Creating directory.\n') % dir) + os.makedirs(dir) + self.options.destdir = os.path.realpath(dir) def check_auth_info(self): username = self.options.username @@ -528,7 +528,7 @@ and creates a delta pisi package with the changed files between two releases. self.init(database=False, write=False) - if len(self.args) != 2: + if len(self.args) is not 2: self.help() return @@ -728,9 +728,9 @@ expanded to package names. import os patterns = [] - f = ctx.get_option('exclude_from') - if os.path.exists(f): - for line in open(f, "r").readlines(): + file = ctx.get_option('exclude_from') + if os.path.exists(file): + for line in open(file, "r").readlines(): if not line.startswith('#') and not line == '\n': patterns.append(line.strip()) if patterns: @@ -750,8 +750,8 @@ expanded to package names. if not match: # match pattern in component names - for compare in fnmatch.filter(ctx.componentdb.list_components(), pattern): - packages = packages - set(ctx.componentdb.get_union_packages(compare, walk=True)) + for cmp in fnmatch.filter(ctx.componentdb.list_components(), pattern): + packages = packages - set(ctx.componentdb.get_union_packages(cmp, walk=True)) return list(packages) @@ -966,6 +966,8 @@ Usage: info ... ctx.ui.info(_("%s is not installed") % arg) def print_pkginfo(self, metadata, files, repo = None): + import os.path + if ctx.get_option('short'): pkg = metadata.package ctx.ui.info('%15s - %s' % (pkg.name, unicode(pkg.summary))) @@ -1379,12 +1381,12 @@ all repositories. component = ctx.get_option('component') if component: - l = ctx.componentdb.get_packages(component, walk=True, repo=repo) + list = ctx.componentdb.get_packages(component, walk=True, repo=repo) else: - l = ctx.packagedb.list_packages(repo) + list = ctx.packagedb.list_packages(repo) installed_list = ctx.installdb.list_installed() - l.sort() - for p in l: + list.sort() + for p in list: package = ctx.packagedb.get_package(p) if self.options.long: ctx.ui.info(unicode(package)) @@ -1422,9 +1424,9 @@ repositories. self.init(database = True, write = False) - l = ctx.componentdb.list_components() - l.sort() - for p in l: + list = ctx.componentdb.list_components() + list.sort() + for p in list: component = ctx.componentdb.get_component(p) if self.options.long: ctx.ui.info(unicode(component)) @@ -1461,9 +1463,9 @@ Gives a brief list of sources published in the repositories. self.init(database = True, write = False) - l = ctx.sourcedb.list() - l.sort() - for p in l: + list = ctx.sourcedb.list() + list.sort() + for p in list: sf, repo = ctx.sourcedb.get_spec_repo(p) if self.options.long: ctx.ui.info('[Repository: ' + repo + ']') diff --git a/pisi/config.py b/pisi/config.py index 93f9f061..373b2dce 100644 --- a/pisi/config.py +++ b/pisi/config.py @@ -82,9 +82,9 @@ class Config(object): return self.destdir def subdir(self, path): - subdir = pisi.util.join_path(self.dest_dir(), path) - pisi.util.check_dir(subdir) - return subdir + dir = pisi.util.join_path(self.dest_dir(), path) + pisi.util.check_dir(dir) + return dir def lib_dir(self): return self.subdir(self.values.dirs.lib_dir) diff --git a/pisi/constants.py b/pisi/constants.py index a6281a9f..99a2aa25 100644 --- a/pisi/constants.py +++ b/pisi/constants.py @@ -18,6 +18,8 @@ import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext +import pisi + class _constant: "Constant members implementation" class ConstError(TypeError): diff --git a/pisi/dbshelve.py b/pisi/dbshelve.py index 13ffbde7..78668ef0 100644 --- a/pisi/dbshelve.py +++ b/pisi/dbshelve.py @@ -38,6 +38,8 @@ import cPickle import bsddb3.db as db import bsddb3.dbobj as dbobj import string +import sys +import traceback import pisi class CodingError(pisi.Error): diff --git a/pisi/delta.py b/pisi/delta.py index d5c1d236..d0e81ba9 100644 --- a/pisi/delta.py +++ b/pisi/delta.py @@ -74,8 +74,8 @@ def create_delta_package(old_package, new_package): ctx.build_leftover = util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar_lzma) tar = archive.ArchiveTar(util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar_lzma), "tarlzma") - for f in files_delta: - tar.add_to_archive(f.path) + for file in files_delta: + tar.add_to_archive(file.path) tar.close() os.chdir(ctx.config.tmp_dir()) @@ -99,34 +99,34 @@ def create_delta_package(old_package, new_package): def find_delta(oldfiles, newfiles): hashto_files = {} - for f in newfiles.list: - hashto_files.setdefault(f.hash, []).append(f) + for file in newfiles.list: + hashto_files.setdefault(file.hash, []).append(file) files_new = sets.Set(map(lambda x:x.hash, newfiles.list)) files_old = sets.Set(map(lambda x:x.hash, oldfiles.list)) files_delta = files_new - files_old deltas = [] - for h in files_delta: - deltas.extend(hashto_files[h]) + for hash in files_delta: + deltas.extend(hashto_files[hash]) return deltas def find_relocations(oldfiles, newfiles): files_new = {} - for f in newfiles.list: - files_new.setdefault(f.hash, []).append(f) + for file in newfiles.list: + files_new.setdefault(file.hash, []).append(file) files_old = {} - for f in oldfiles.list: - files_old.setdefault(f.hash, []).append(f) + for file in oldfiles.list: + files_old.setdefault(file.hash, []).append(file) relocations = [] - for h in files_new.keys(): - if h and h in files_old: - for i in range(len(files_new[h])): - if files_old[h][0].path != files_new[h][i].path: - relocations.append((files_old[h][0], files_new[h][i])) + for hash in files_new.keys(): + if hash and hash in files_old: + for i in range(len(files_new[hash])): + if files_old[hash][0].path != files_new[hash][i].path: + relocations.append((files_old[hash][0], files_new[hash][i])) return relocations diff --git a/pisi/fetcher.py b/pisi/fetcher.py index 1b3422e6..a52fa61f 100644 --- a/pisi/fetcher.py +++ b/pisi/fetcher.py @@ -282,17 +282,17 @@ class FTPRangeHandler(urllib2.FTPHandler): path, attrs = urllib.splitattr(req.get_selector()) dirs = path.split('/') dirs = map(urllib.unquote, dirs) - dirs, f = dirs[:-1], dirs[-1] + dirs, file = dirs[:-1], dirs[-1] if dirs and not dirs[0]: dirs = dirs[1:] try: fw = self.connect_ftp('', '', host, port, dirs) - t = f and 'I' or 'D' + type = file and 'I' or 'D' for attr in attrs: attr, value = urllib.splitattr(attr) if attr.lower() == 'type' and \ value in ('a', 'A', 'i', 'I', 'd', 'D'): - t = value.upper() + type = value.upper() rawr = req.headers.get('Range', None) if rawr: @@ -300,7 +300,7 @@ class FTPRangeHandler(urllib2.FTPHandler): else: rest = 0 - fp, retrlen = fw.retrfile(f, t, rest) + fp, retrlen = fw.retrfile(file, type, rest) fb, lb = rest, retrlen if retrlen is None or retrlen == 0: @@ -327,7 +327,7 @@ class FTPRangeHandler(urllib2.FTPHandler): raise IOError, (_('ftp error'), msg), sys.exc_info()[2] def connect_ftp(self, user, passwd, host, port, dirs): - fw = ftpwrapper(user, passwd, host, port, dirs) + fw = ftpwrapper('', '', host, port, dirs) return fw class ftpwrapper(urllib.ftpwrapper): @@ -355,7 +355,6 @@ class ftpwrapper(urllib.ftpwrapper): if str(reason)[:3] == '501': # workaround for REST not suported error fp, retrlen = self.retrfile(file, type) - # WTF? No global (RangeableFileObject) found. RangeableFileObject only defined in urlgrabber / caglar fp = RangeableFileObject(fp, (rest,'')) return (fp, retrlen) elif str(reason)[:3] != '550': diff --git a/pisi/graph.py b/pisi/graph.py index e55dd671..1bffe0f1 100644 --- a/pisi/graph.py +++ b/pisi/graph.py @@ -44,11 +44,11 @@ class Digraph(object): def edges(self): "return a list of edge descriptors" - l = [] + list = [] for u in self.__v: for v in self.__adj[u]: - l.append( (u,v) ) - return l + list.append( (u,v) ) + return list def from_list(self, el): "convert a list of edges (u,v) to graph" diff --git a/pisi/index.py b/pisi/index.py index 534089a2..279a9394 100644 --- a/pisi/index.py +++ b/pisi/index.py @@ -23,12 +23,15 @@ import pisi import pisi.context as ctx import pisi.specfile as specfile import pisi.metadata as metadata +import pisi.packagedb as packagedb +import pisi.sourcedb as sourcedb import pisi.util as util import pisi.package import pisi.pxml.xmlfile as xmlfile import pisi.file import pisi.pxml.autoxml as autoxml import pisi.component as component +import pisi.specfile as specfile class Error(pisi.Error): pass diff --git a/pisi/installdb.py b/pisi/installdb.py index 6ef21efa..6c826085 100644 --- a/pisi/installdb.py +++ b/pisi/installdb.py @@ -13,6 +13,10 @@ # installation database # +# System +import os +import fcntl + import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext @@ -106,20 +110,20 @@ class InstallDB: def list_installed(self, txn = None): def proc(txn): - l = [] + list = [] for (pkg, info) in self.d.items(txn): if info.state=='i' or info.state=='ip': - l.append(pkg) - return l + list.append(pkg) + return list return self.d.txn_proc(proc, txn) def list_pending(self): # warning: reads the entire db - d = {} + dict = {} for (pkg, x) in self.dp.items(): pkginfo = self.d[pkg] - d[pkg] = pkginfo - return d + dict[pkg] = pkginfo + return dict def get_info(self, pkg): pkg = str(pkg) diff --git a/pisi/itembyrepodb.py b/pisi/itembyrepodb.py index ed59b29b..f010a15b 100644 --- a/pisi/itembyrepodb.py +++ b/pisi/itembyrepodb.py @@ -10,11 +10,16 @@ # Please read the COPYING file. # +import os +import fcntl +import types + import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext import pisi +import pisi.util as util import pisi.context as ctx import pisi.lockeddbshelve as shelve @@ -85,6 +90,7 @@ class ItemByRepoDB(object): if repo == None: repo = repos assert repo in [all, repos] + import pisi.repodb order = [ 'repo-' + x for x in ctx.repodb.list() ] if repo == all: order += ['trdparty', 'inst'] diff --git a/pisi/operations.py b/pisi/operations.py index 2f1d87bf..6829a945 100644 --- a/pisi/operations.py +++ b/pisi/operations.py @@ -24,6 +24,7 @@ import pisi.util as util import pisi.dependency as dependency import pisi.conflict import pisi.pgraph as pgraph +import pisi.packagedb as packagedb import pisi.repodb import pisi.installdb import pisi.cli @@ -245,7 +246,7 @@ def calculate_conflicts(order, packagedb): return (C, D, pkg_conflicts) def remove_conflicting_packages(conflicts): - if not remove(conflicts, ignore_dep=True, ignore_safety=True): + if remove(conflicts, ignore_dep=True, ignore_safety=True) == False: raise Error(_("Conflicts remain")) def check_conflicts(order, packagedb): @@ -280,7 +281,7 @@ def is_upgradable(name, ignore_build = False): pkg = ctx.packagedb.get_package(name) except KeyboardInterrupt: raise - except Exception: #FIXME: what exception could we catch here, replace with that. + except Exception, e: #FIXME: what exception could we catch here, replace with that. return False if ignore_build or (not build) or (not pkg.build): return pisi.version.Version(release) < pisi.version.Version(pkg.release) @@ -302,7 +303,7 @@ def upgrade_base(A = set(), ignore_package_conflicts = False): if extra_upgrades: ctx.ui.warning(_('Safety switch: Following packages in system.base will be upgraded: ') + util.strlist(extra_upgrades)) - G_f, upgrade_order = plan_upgrade(extra_upgrades) + G_f, upgrade_order = plan_upgrade(extra_upgrades, ignore_build) # return packages that must be added to any installation return set(install_order + upgrade_order) else: @@ -464,7 +465,7 @@ def upgrade_pkg_names(A = []): ctx.ui.debug('A = %s' % str(A)) if not ctx.config.get_option('ignore_dependency'): - G_f, order = plan_upgrade(A) + G_f, order = plan_upgrade(A, ignore_build) else: G_f = None order = list(A) @@ -512,7 +513,7 @@ def upgrade_pkg_names(A = []): if 'pisi' in order: upgrade_pisi() -def plan_upgrade(A): +def plan_upgrade(A, ignore_build = False): # try to construct a pisi graph of packages to # install / reinstall @@ -640,6 +641,7 @@ def plan_remove(A): while len(B) > 0: Bp = set() for x in B: + pkg = ctx.packagedb.get_package(x, pisi.itembyrepodb.installed) rev_deps = ctx.packagedb.get_rev_deps(x, pisi.itembyrepodb.installed) for (rev_dep, depinfo) in rev_deps: # we don't deal with uninstalled rev deps @@ -664,7 +666,7 @@ def expand_src_components(A): Ap.add(x) return Ap -def emerge(A): +def emerge(A, rebuild_all = False): # A was a list, remove duplicates and expand components A = [str(x) for x in A] @@ -680,7 +682,7 @@ def emerge(A): # FIXME: Errr... order_build changes type conditionally and this # is not good. - baris if not ctx.config.get_option('ignore_dependency'): - G_f, order_inst, order_build = plan_emerge(A) + G_f, order_inst, order_build = plan_emerge(A, rebuild_all) else: G_f = None order_inst = [] @@ -721,7 +723,7 @@ installed in the respective order to satisfy dependencies: if 'pisi' in order_build or (('pisi' in U) and pisi_installed): upgrade_pisi() -def plan_emerge(A): +def plan_emerge(A, rebuild_all): # try to construct a pisi graph of packages to # install / reinstall diff --git a/pisi/packagedb.py b/pisi/packagedb.py index 5e9d7686..8f557bd4 100644 --- a/pisi/packagedb.py +++ b/pisi/packagedb.py @@ -17,12 +17,18 @@ we basically store everything in PackageInfo class yes, we are cheap """ +import os +import fcntl +import types + import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext import pisi +import pisi.util as util import pisi.context as ctx +import pisi.lockeddbshelve as shelve import pisi.itembyrepodb class Error(pisi.Error): @@ -55,7 +61,7 @@ class PackageDB(object): def get_package(self, name, repo=None, txn = None): try: return self.d.get_item(name, repo, txn=txn) - except pisi.itembyrepodb.NotfoundError: + except pisi.itembyrepodb.NotfoundError, e: raise Error(_('Package %s not found') % name) def get_package_repo(self, name, repo=None, txn = None): diff --git a/pisi/pgraph.py b/pisi/pgraph.py index 05181e46..52894096 100644 --- a/pisi/pgraph.py +++ b/pisi/pgraph.py @@ -76,7 +76,6 @@ class PGraph(graph.Digraph): pkg2 = self.packagedb.get_package(conflinfo.package, self.repo) pkg2data = (pkg2.version, pkg2.release) - # FIXME: WTF? /usr/lib/pardus/pisi/pgraph.py:80: Invalid arguments to (add_biedge), got 5, expected between 2 and 3 / caglar self.add_biedge(str(pkg), str(conflinfo.package), ('c', conflinfo) , pkg1data, pkg2data ) diff --git a/pisi/repodb.py b/pisi/repodb.py index f6676115..c5276aa7 100644 --- a/pisi/repodb.py +++ b/pisi/repodb.py @@ -10,6 +10,8 @@ # Please read the COPYING file. # +import os, fcntl + import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext @@ -17,6 +19,8 @@ _ = __trans.ugettext import pisi import pisi.lockeddbshelve as shelve import pisi.context as ctx +import pisi.packagedb as packagedb +import pisi.util as util class Error(pisi.Error): pass @@ -97,9 +101,9 @@ class RepoDB(object): name = str(name) def proc(txn): self.d.delete("repo-" + name, txn) - l = self.d.get("order", txn) - l.remove(name) - self.d.put("order", l, txn) + list = self.d.get("order", txn) + list.remove(name) + self.d.put("order", list, txn) ctx.packagedb.remove_repo(name, txn=txn) ctx.sourcedb.remove_repo(name, txn=txn) ctx.componentdb.remove_repo(name, txn=txn) diff --git a/pisi/sourcedb.py b/pisi/sourcedb.py index 3c6e1fcf..593fb5ae 100644 --- a/pisi/sourcedb.py +++ b/pisi/sourcedb.py @@ -20,11 +20,16 @@ store a set of repositories in which the source appears. the actual guy to take is determined from the repo order. """ +import os +import fcntl + import gettext __trans = gettext.translation('pisi', fallback=True) _ = __trans.ugettext +import pisi.util as util import pisi.context as ctx +import pisi.lockeddbshelve as shelve import pisi.repodb import pisi.itembyrepodb @@ -50,13 +55,13 @@ class SourceDB(object): def get_spec(self, name, repo=None, txn = None): try: return self.d.get_item(name, repo, txn) - except pisi.itembyrepodb.NotfoundError: + except pisi.itembyrepodb.NotfoundError, e: raise NotfoundError(_("Source package %s not found") % name) def get_spec_repo(self, name, repo=None, txn = None): try: return self.d.get_item_repo(name, repo, txn) - except pisi.itembyrepodb.NotfoundError: + except pisi.itembyrepodb.NotfoundError, e: raise NotfoundError(_("Source package %s not found") % name) def pkgtosrc(self, name, txn = None): diff --git a/pisi/ui.py b/pisi/ui.py index 93750bf2..9973a3df 100644 --- a/pisi/ui.py +++ b/pisi/ui.py @@ -12,6 +12,11 @@ # generic user interface # +import sys + +import pisi +import pisi.context as ctx + (installed, upgraded, removed, installing, removing, configuring, configured, extracting, downloading, packagestogo, updatingrepo, cached) = range(12) diff --git a/pisi/util.py b/pisi/util.py index b1cc27d3..1b1e17b0 100644 --- a/pisi/util.py +++ b/pisi/util.py @@ -72,7 +72,7 @@ def multisplit(str, chars): """Split str with any of the chars.""" l = [str] for c in chars: - l = concat(map(lambda x:x.split(c)), l) + l = concat(map(lambda x:x.split(c), l)) return l def same(l): @@ -265,12 +265,12 @@ def check_file(file, mode = os.F_OK): return True # FIXME: check_dir is not a good name considering it can also create the dir -def check_dir(d): +def check_dir(dir): """Make sure given directory path exists.""" # FIXME: What is first strip doing there? - d = d.strip().rstrip("/") - if not os.access(d, os.F_OK): - os.makedirs(d) + dir = dir.strip().rstrip("/") + if not os.access(dir, os.F_OK): + os.makedirs(dir) def clean_dir(path): """Remove all content of a directory.""" @@ -393,8 +393,8 @@ def get_file_hashes(top, excludePrefix=None, removePrefix=None): continue #bug 397 - for directory in dirs: - d = join_path(root, directory) + for dir in dirs: + d = join_path(root, dir) if os.path.islink(d) and not has_excluded_prefix(d): yield (d, sha1_sum(os.readlink(d), True)) excludePrefix.append(remove_prefix(removePrefix, d) + "/") @@ -455,7 +455,7 @@ def sha1_data(data): return m.hexdigest() except KeyboardInterrupt: raise - except Exception: #FIXME: what exception could we catch here, replace with that. + except Exception, e: #FIXME: what exception could we catch here, replace with that. raise Error(_("Cannot calculate SHA1 hash of given data")) def uncompress(patchFile, compressType="gz", targetDir=None): @@ -607,9 +607,10 @@ def is_package_name(fn, package_name = None): # get version string, skip separator '-' verstr = fn[len(package_name) + 1: len(fn)-len(ctx.const.package_suffix)] + import string for x in verstr.split('-'): # weak rule: version components after '-' start with a digit - if x == '' or (not x[0] in string.digits): + if x is '' or (not x[0] in string.digits): return False return True return False