[entropy.client.triggers] expose setup phase directly (and not hide it inside preinstall)
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user