* patch for rebuilddb command from Faik Uygur
This commit is contained in:
+44
-1
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
from os.path import join, exists
|
||||||
|
|
||||||
ver = sys.version_info
|
ver = sys.version_info
|
||||||
if ver[0] <= 2 and ver[1] < 4:
|
if ver[0] <= 2 and ver[1] < 4:
|
||||||
from sets import Set as set
|
from sets import Set as set
|
||||||
@@ -39,6 +41,8 @@ import pisi.sourcedb
|
|||||||
from pisi.index import Index
|
from pisi.index import Index
|
||||||
import pisi.cli
|
import pisi.cli
|
||||||
from pisi.operations import install, remove, upgrade
|
from pisi.operations import install, remove, upgrade
|
||||||
|
from pisi.metadata import MetaData
|
||||||
|
from pisi.files import Files
|
||||||
|
|
||||||
class Error(pisi.Error):
|
class Error(pisi.Error):
|
||||||
pass
|
pass
|
||||||
@@ -178,7 +182,6 @@ def configure_pending():
|
|||||||
ctx.installdb.clear_pending(x)
|
ctx.installdb.clear_pending(x)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise Error(_("COMAR: comard not fully installed"))
|
raise Error(_("COMAR: comard not fully installed"))
|
||||||
|
|
||||||
|
|
||||||
def info(package):
|
def info(package):
|
||||||
if package.endswith(ctx.const.package_suffix):
|
if package.endswith(ctx.const.package_suffix):
|
||||||
@@ -331,3 +334,43 @@ def delete_cache():
|
|||||||
util.clean_dir(ctx.config.packages_dir())
|
util.clean_dir(ctx.config.packages_dir())
|
||||||
util.clean_dir(ctx.config.archives_dir())
|
util.clean_dir(ctx.config.archives_dir())
|
||||||
util.clean_dir(ctx.config.tmp_dir())
|
util.clean_dir(ctx.config.tmp_dir())
|
||||||
|
|
||||||
|
def resurrect_package(package_fn):
|
||||||
|
"""Resurrect the package in the PiSi databases"""
|
||||||
|
|
||||||
|
metadata_xml = join(ctx.config.lib_dir(), package_fn, ctx.const.metadata_xml)
|
||||||
|
if not exists(metadata_xml):
|
||||||
|
return
|
||||||
|
|
||||||
|
metadata = MetaData()
|
||||||
|
metadata.read(metadata_xml)
|
||||||
|
|
||||||
|
errs = metadata.has_errors()
|
||||||
|
if errs:
|
||||||
|
util.Checks.print_errors(errs)
|
||||||
|
raise Error, _("MetaData format wrong")
|
||||||
|
|
||||||
|
files_xml = join(ctx.config.lib_dir(), package_fn, ctx.const.files_xml)
|
||||||
|
if not exists(files_xml):
|
||||||
|
return
|
||||||
|
|
||||||
|
files = Files()
|
||||||
|
files.read(files_xml)
|
||||||
|
|
||||||
|
if files.has_errors():
|
||||||
|
raise Error, _("Invalid %s") % ctx.const.files_xml
|
||||||
|
|
||||||
|
pkginfo = metadata.package
|
||||||
|
|
||||||
|
# installdb
|
||||||
|
ctx.installdb.install(metadata.package.name,
|
||||||
|
metadata.package.version,
|
||||||
|
metadata.package.release,
|
||||||
|
metadata.package.build,
|
||||||
|
metadata.package.distribution)
|
||||||
|
|
||||||
|
# filesdb
|
||||||
|
ctx.filesdb.add_files(metadata.package.name, files)
|
||||||
|
|
||||||
|
# installed packages
|
||||||
|
packagedb.inst_packagedb.add_package(pkginfo)
|
||||||
|
|||||||
@@ -581,6 +581,41 @@ Usage: list-installed
|
|||||||
ctx.ui.info('%15s - %s ' % (package.name, package.summary))
|
ctx.ui.info('%15s - %s ' % (package.name, package.summary))
|
||||||
self.finalize()
|
self.finalize()
|
||||||
|
|
||||||
|
class RebuildDb(Command):
|
||||||
|
"""Rebuild Databases
|
||||||
|
|
||||||
|
Usage: rebuilddb
|
||||||
|
|
||||||
|
Rebuilds the PiSi databases
|
||||||
|
"""
|
||||||
|
__metaclass__ = autocommand
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(RebuildDb, self).__init__()
|
||||||
|
|
||||||
|
name = ("rebuilddb", "rd")
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.init()
|
||||||
|
|
||||||
|
#FIXME: Confirm icin init, unlink icin finalize, rebuild_db icin init lazim :)
|
||||||
|
if ctx.ui.confirm(_('Rebuild PISI databases? ')):
|
||||||
|
self.finalize()
|
||||||
|
import os
|
||||||
|
for db in os.listdir(ctx.config.db_dir()):
|
||||||
|
os.unlink(os.path.join(ctx.config.db_dir(), db))
|
||||||
|
|
||||||
|
self.init()
|
||||||
|
self.rebuild_db()
|
||||||
|
|
||||||
|
self.finalize()
|
||||||
|
|
||||||
|
def rebuild_db(self):
|
||||||
|
import os
|
||||||
|
for root, dirs, files in os.walk(ctx.config.lib_dir()):
|
||||||
|
for package_fn in dirs:
|
||||||
|
ctx.ui.debug(package_fn)
|
||||||
|
pisi.api.resurrect_package(package_fn)
|
||||||
|
|
||||||
class UpdateRepo(Command):
|
class UpdateRepo(Command):
|
||||||
"""Update repository databases
|
"""Update repository databases
|
||||||
|
|||||||
Reference in New Issue
Block a user