From-Import-Removal

This commit is contained in:
Faik Uygur
2007-04-27 12:20:18 +00:00
parent 8ff82c1ec9
commit 060b16cc03
+97 -53
View File
@@ -23,39 +23,33 @@ _ = __trans.ugettext
import pisi
import pisi.db
import pisi.context as ctx
from pisi.uri import URI
import pisi.util as util
import pisi.uri
import pisi.util
import pisi.dependency as dependency
import pisi.pgraph as pgraph
import pisi.operations as operations
import pisi.db.packagedb as packagedb
import pisi.db.packagedb
import pisi.db.repodb
import pisi.db.installdb
import pisi.db.filesdb
import pisi.db.componentdb
import pisi.db.sourcedb
import pisi.db.lockeddbshelve as lockeddbshelve
import pisi.component as component
from pisi.index import Index
import pisi.cli
from pisi.config import Options
from pisi.operations import install, remove, upgrade, emerge
from pisi.operations import plan_install_pkg_names as plan_install
from pisi.operations import plan_remove, plan_upgrade, upgrade_base, calculate_conflicts, reorder_base_packages
from pisi.build import build_until
from pisi.atomicoperations import resurrect_package, build
from pisi.metadata import MetaData
from pisi.files import Files
from pisi.file import File
import pisi.db.lockeddbshelve as shelve
from pisi.version import Version
import delta
import pisi.db.lockeddbshelve
import pisi.index
import pisi.config
import pisi.metadata
import pisi.file
import pisi.version
import pisi.operations
import pisi.build
import pisi.atomicoperations
import pisi.delta
import pisi.comariface
class Error(pisi.Error):
pass
def init(database = True, write = True,
options = Options(), ui = None, comar = True,
options = pisi.config.Options(), ui = None, comar = True,
stdout = None, stderr = None,
comar_sockname = None,
signal_handling = True):
@@ -69,11 +63,12 @@ def init(database = True, write = True,
# UI comes first
if ui is None:
from pisi.cli import CLI
# FIXME: api importing and using pisi.cli ????
import pisi.cli
if options:
ctx.ui = CLI(options.debug, options.verbose)
ctx.ui = pisi.cli.CLI(options.debug, options.verbose)
else:
ctx.ui = CLI()
ctx.ui = pisi.cli.CLI()
else:
ctx.ui = ui
@@ -96,7 +91,6 @@ def init(database = True, write = True,
if stderr:
ctx.stderr = stderr
import pisi.config
ctx.config = pisi.config.Config(options)
if signal_handling:
@@ -110,7 +104,7 @@ def init(database = True, write = True,
# initialize repository databases
ctx.database = database
if database:
shelve.init_dbenv(write=write)
pisi.db.lockeddbshelve.init_dbenv(write=write)
ctx.repodb = pisi.db.repodb.RepoDB()
ctx.installdb = pisi.db.installdb.InstallDB()
ctx.filesdb = pisi.db.filesdb.FilesDB()
@@ -278,18 +272,17 @@ def configure_pending():
A = ctx.installdb.list_pending()
order = generate_pending_order(A)
try:
import pisi.comariface as comariface
for x in order:
if ctx.installdb.is_installed(x):
pkginfo = A[x]
pkgname = util.package_name(x, pkginfo.version,
pkgname = pisi.util.package_name(x, pkginfo.version,
pkginfo.release,
False,
False)
pkg_path = util.join_path(ctx.config.lib_dir(),
pkg_path = pisi.util.join_path(ctx.config.lib_dir(),
'package', pkgname)
m = MetaData()
metadata_path = util.join_path(pkg_path, ctx.const.metadata_xml)
m = pisi.metadata.MetaData()
metadata_path = pisi.util.join_path(pkg_path, ctx.const.metadata_xml)
m.read(metadata_path)
# FIXME: we need a full package info here!
pkginfo.name = x
@@ -297,9 +290,9 @@ def configure_pending():
pisi.comariface.post_install(
pkginfo.name,
m.package.providesComar,
util.join_path(pkg_path, ctx.const.comar_dir),
util.join_path(pkg_path, ctx.const.metadata_xml),
util.join_path(pkg_path, ctx.const.files_xml),
pisi.util.join_path(pkg_path, ctx.const.comar_dir),
pisi.util.join_path(pkg_path, ctx.const.metadata_xml),
pisi.util.join_path(pkg_path, ctx.const.files_xml),
)
ctx.ui.notify(pisi.ui.configured, package = pkginfo, files = None)
ctx.installdb.clear_pending(x)
@@ -313,12 +306,11 @@ def info(package, installed = False):
return info_name(package, installed)
def info_file(package_fn):
from package import Package
if not os.path.exists(package_fn):
raise Error (_('File %s not found') % package_fn)
package = Package(package_fn)
package = pisi.package.Package(package_fn)
package.read()
return package.metadata, package.files
@@ -330,8 +322,7 @@ def info_name(package_name, installed=False):
else:
package, repo = ctx.packagedb.get_package_repo(package_name, pisi.db.itembyrepodb.repos)
from pisi.metadata import MetaData
metadata = MetaData()
metadata = pisi.metadata.MetaData()
metadata.package = package
#FIXME: get it from sourcedb if available
metadata.source = None
@@ -374,7 +365,7 @@ def check(package):
and not os.path.islink('/' + file.path):
ctx.ui.info(_("Checking /%s ") % file.path, noln=True, verbose=True)
try:
if file.hash != util.sha1_file('/' + file.path):
if file.hash != pisi.util.sha1_file('/' + file.path):
corrupt.append(file)
ctx.ui.error(_("\nCorrupt file: %s") % file)
else:
@@ -385,7 +376,7 @@ def check(package):
def index(dirs=None, output='pisi-index.xml', skip_sources=False, skip_signing=False):
"""Accumulate PiSi XML files in a directory, and write an index."""
index = Index()
index = pisi.index.Index()
index.distribution = None
if not dirs:
dirs = ['.']
@@ -395,9 +386,9 @@ def index(dirs=None, output='pisi-index.xml', skip_sources=False, skip_signing=F
index.index(repo_dir, skip_sources)
if skip_signing:
index.write(output, sha1sum=True, compress=File.bz2, sign=None)
index.write(output, sha1sum=True, compress=pisi.file.File.bz2, sign=None)
else:
index.write(output, sha1sum=True, compress=File.bz2, sign=File.detached)
index.write(output, sha1sum=True, compress=pisi.file.File.bz2, sign=pisi.file.File.detached)
ctx.ui.info(_('* Index file written'))
def list_repos():
@@ -406,7 +397,7 @@ def list_repos():
def update_repo(repo, force=False):
ctx.ui.info(_('* Updating repository: %s') % repo)
ctx.ui.notify(pisi.ui.updatingrepo, name = repo)
index = Index()
index = pisi.index.Index()
if ctx.repodb.has_repo(repo):
repouri = ctx.repodb.get_repo(repo).indexuri.get_uri()
try:
@@ -430,17 +421,17 @@ def update_repo(repo, force=False):
raise Error(_('No repository named %s found.') % repo)
def delete_cache():
util.clean_dir(ctx.config.packages_dir())
util.clean_dir(ctx.config.archives_dir())
util.clean_dir(ctx.config.tmp_dir())
pisi.util.clean_dir(ctx.config.packages_dir())
pisi.util.clean_dir(ctx.config.archives_dir())
pisi.util.clean_dir(ctx.config.tmp_dir())
def rebuild_repo(repo):
ctx.ui.info(_('* Rebuilding \'%s\' named repo... ') % repo)
if ctx.repodb.has_repo(repo):
repouri = URI(ctx.repodb.get_repo(repo).indexuri.get_uri())
repouri = pisi.uri.URI(ctx.repodb.get_repo(repo).indexuri.get_uri())
indexname = repouri.filename()
index = Index()
index = pisi.index.Index()
indexpath = pisi.util.join_path(ctx.config.index_dir(), repo, indexname)
tmpdir = os.path.join(ctx.config.tmp_dir(), 'index')
pisi.util.clean_dir(tmpdir)
@@ -465,9 +456,9 @@ def rebuild_db(files=False):
i_version = {} # installed versions
replica = []
for pkg in os.listdir(pisi.util.join_path(pisi.api.ctx.config.lib_dir(), 'package')):
(name, ver) = util.parse_package_name(pkg)
(name, ver) = pisi.util.parse_package_name(pkg)
if i_version.has_key(name):
if Version(ver) > Version(i_version[name]):
if pisi.version.Version(ver) > pisi.version.Version(i_version[name]):
# found a greater version, older one is a replica
replica.append(name + '-' + i_version[name])
i_version[name] = ver
@@ -523,7 +514,7 @@ def rebuild_db(files=False):
raise
except Exception, e: #FIXME: what exception could we catch here, replace with that.
files = True # exception means the files db version was wrong
lockeddbshelve.init_dbenv(write=True, writeversion=True)
pisi.lockeddbshelve.init_dbenv(write=True, writeversion=True)
destroy(files) # bye bye
# save parameters and shutdown pisi
@@ -540,6 +531,7 @@ def rebuild_db(files=False):
reload_indices(txn)
txn.commit()
############################ Under Construction ##############################
### Package Database Operations ###
@@ -569,7 +561,7 @@ def add_repository(name, uri):
if ctx.repodb.has_repo(name):
raise Error(_('Repo %s already present.') % name)
else:
repo = pisi.db.repodb.Repo(URI(uri))
repo = pisi.db.repodb.Repo(pisi.uri.URI(uri))
ctx.repodb.add_repo(name, repo)
ctx.ui.info(_('Repo %s added to system.') % name)
@@ -596,4 +588,56 @@ def remove_repository(name):
# @param old_package Path of the older package
# @param new_package Path of the newer package
def create_delta_package(old_package, new_package):
delta.create_delta_package(old_package, new_package)
pisi.delta.create_delta_package(old_package, new_package)
############# FIXME: this was a quick fix. ##############################
# api was importing other module's functions and providing them as api functions. This is wrong.
# these are quick fixes for this problem. The api functions should be in this module.
# from pisi.operations import install, remove, upgrade, emerge
# from pisi.operations import plan_install_pkg_names as plan_install
# from pisi.operations import plan_remove, plan_upgrade, upgrade_base, calculate_conflicts, reorder_base_packages
# from pisi.build import build_until
# from pisi.atomicoperations import resurrect_package, build
def install(*args, **kw):
pisi.operations.install(*args, **kw)
def remove(*args, **kw):
pisi.operations.remove(*args, **kw)
def upgrade(*args, **kw):
pisi.operations.upgrade(*args, **kw)
def emerge(*args, **kw):
pisi.operations.emerge(*args, **kw)
def plan_install(*args, **kw):
pisi.operations.plan_install_pkg_names(*args, **kw)
def plan_remove(*args, **kw):
pisi.operations.plan_remove(*args, **kw)
def plan_upgrade(*args, **kw):
pisi.operations.plan_upgrade(*args, **kw)
def upgrade_base(*args, **kw):
pisi.operations.upgrade_base(*args, **kw)
def calculate_conflicts(*args, **kw):
pisi.operations.calculate_conflicts(*args, **kw)
def reorder_base_packages(*args, **kw):
pisi.operations.reorder_base_packages(*args, **kw)
def build_until(*args, **kw):
pisi.build.build_until(*args, **kw)
def build(*args, **kw):
pisi.atomicoperations.build(*args, **kw)
def resurrect_package(*args, **kw):
pisi.atomicoperations.resurrect_package(*args, **kw)
########################################################################