[entropy.client.triggers] expose setup phase directly (and not hide it inside preinstall)

This commit is contained in:
Fabio Erculiani
2011-08-15 16:35:13 +02:00
parent 4a3748dbfd
commit 8465cb7bc1
2 changed files with 50 additions and 17 deletions

View File

@@ -3216,6 +3216,19 @@ class Package:
del pkgdata
return 0
def _setup_step(self):
pkgdata = self.pkgmeta['triggers'].get('install')
action_data = self.pkgmeta['triggers'].get('install')
if pkgdata:
trigger = self._entropy.Triggers(self._action, 'setup',
pkgdata, action_data)
do = trigger.prepare()
if do:
trigger.run()
trigger.kill()
del pkgdata
return 0
def _pre_remove_step(self):
remdata = self.pkgmeta['triggers'].get('remove')
action_data = self.pkgmeta['triggers'].get('install')
@@ -3505,6 +3518,14 @@ class Package:
self._entropy.set_title(self._xterm_title)
return self._post_install_step()
def do_setup():
self._xterm_title += ' %s: %s' % (
_("Setup"),
self.pkgmeta['atom'],
)
self._entropy.set_title(self._xterm_title)
return self._setup_step()
def do_preinstall():
self._xterm_title += ' %s: %s' % (
_("Preinstall"),
@@ -3557,6 +3578,7 @@ class Package:
"remove": do_remove,
"cleanup": do_cleanup,
"postinstall": do_postinstall,
"setup": do_setup,
"preinstall": do_preinstall,
"postremove": do_postremove,
"postremove_install": do_postremove_install,
@@ -3948,6 +3970,7 @@ class Package:
self.pkgmeta['steps'].append("unpack")
# preinstall placed before preremove in order
# to respect Spm order
self.pkgmeta['steps'].append("setup")
self.pkgmeta['steps'].append("preinstall")
self.pkgmeta['steps'].append("install")
if self.pkgmeta['removeidpackage'] != -1:

View File

@@ -28,11 +28,12 @@ class Trigger:
"""
Entropy Client Package installation phases trigger functions.
The place where Source Package Manager (SPM) is called in order to
work out installation, removal phases (post-install, pre-install,
work out installation, removal phases (setup, pre-install, post-install,
post-remove, etc).
"""
VALID_PHASES = ("preinstall", "postinstall", "preremove", "postremove",)
VALID_PHASES = ("setup", "preinstall", "postinstall", "preremove",
"postremove",)
def __init__(self, entropy_client, action, phase, package_metadata,
action_metadata):
@@ -139,6 +140,27 @@ class Trigger:
functions.append(self._trigger_call_ext_postinstall)
return functions
def _setup(self):
"""
The setup phase generator.
"""
functions = []
if self._spm is not None:
spm_class = self._entropy.Spm_class()
phases_map = spm_class.package_phases_map()
append_setup = False
if self._pkgdata['spm_phases'] != None:
if "setup" in self._pkgdata['spm_phases']:
append_setup = True
else:
append_setup = True
if append_setup:
functions.append(self._trigger_spm_setup)
if self._pkgdata['trigger']:
functions.append(self._trigger_call_ext_setup)
return functions
def _preinstall(self):
"""
The preinstall phases generator.
@@ -147,28 +169,13 @@ class Trigger:
if self._spm is not None:
spm_class = self._entropy.Spm_class()
phases_map = spm_class.package_phases_map()
found_preinstall = False
while True:
if self._pkgdata['spm_phases'] != None:
if phases_map.get('preinstall') not \
in self._pkgdata['spm_phases']:
break
functions.append(self._trigger_spm_preinstall)
found_preinstall = True
break
# if found_preinstall is False, we have to call setup, if
# available. Otherwise, the spm package setup phase is never
# called.
append_setup = False
if not found_preinstall:
if self._pkgdata['spm_phases'] != None:
if "setup" in self._pkgdata['spm_phases']:
append_setup = True
else:
append_setup = True
if append_setup:
functions.append(self._trigger_spm_setup)
if self._pkgdata['trigger']:
functions.append(self._trigger_call_ext_preinstall)
@@ -226,6 +233,8 @@ class Trigger:
return functions
def _trigger_call_ext_setup(self):
return self._trigger_call_ext_generic()
def _trigger_call_ext_preinstall(self):
return self._trigger_call_ext_generic()
@@ -398,6 +407,7 @@ class Trigger:
def __get_sh_stage(self, stage):
mydict = {
"setup": "pkg_setup",
"preinstall": "pkg_preinst",
"postinstall": "pkg_postinst",
"preremove": "pkg_prerm",