Множественные изменения calculate-update.

Изменен порядок выполнения шаблонов, добавлено выполнение шаблонов при
смене профиля, добавлена перенастройка пакетов.
master3.3
Mike Khiretskiy 10 years ago
parent 25e9e7355b
commit 40e42184ad

@ -22,7 +22,7 @@ native_reps=,$(/usr/sbin/cl-core --method core_variables_show \
if echo $native_reps | grep -q ,${repo_name}, if echo $native_reps | grep -q ,${repo_name},
then then
# отбновить репозиторий через утилиты Calculate # отбновить репозиторий через утилиты Calculate
/usr/sbin/cl-core --method update --rep $repo_name --sync-only on --skip-update-metadata --skip-eix-update --update-rev=off /usr/sbin/cl-core --method update --rep $repo_name --sync-only on --skip-update-metadata --skip-eix-update -T none
else else
# выполнить обновление через git # выполнить обновление через git
/usr/bin/git $* /usr/bin/git $*

@ -28,6 +28,7 @@ from calculate.lib.utils.tools import AddonError
from calculate.lib.utils.colortext.palette import TextState from calculate.lib.utils.colortext.palette import TextState
from calculate.lib.utils.colortext import get_color_print from calculate.lib.utils.colortext import get_color_print
from calculate.update.emerge_parser import RevdepPercentBlock from calculate.update.emerge_parser import RevdepPercentBlock
from calculate.update.datavars import DataVarsUpdate
import re import re
from collections import MutableSet from collections import MutableSet
@ -621,7 +622,7 @@ class Update:
""" """
# подробный список пакетов # подробный список пакетов
_print = self.color_print _print = self.color_print
if self.clVars.Get('cl_verbose_set') == 'on': if self.clVars.Get('cl_update_emergelist_set') == 'on':
self.printPre(str(emerge.install_packages)) self.printPre(str(emerge.install_packages))
else: else:
pkglist = emerge.install_packages.list pkglist = emerge.install_packages.list
@ -648,7 +649,7 @@ class Update:
Отобразить список удаляемых пакетов Отобразить список удаляемых пакетов
""" """
# подробный список пакетов # подробный список пакетов
if self.clVars.Get('cl_verbose_set') == 'on': if self.clVars.Get('cl_update_emergelist_set') == 'on':
self.printPre(self._emerge_translate( self.printPre(self._emerge_translate(
emerge.uninstall_packages.verbose_result)) emerge.uninstall_packages.verbose_result))
else: else:
@ -922,3 +923,47 @@ class Update:
except (OSError,IOError) as e: except (OSError,IOError) as e:
raise UpdateError(_("Failed to set the profile: %s")%str(e)) raise UpdateError(_("Failed to set the profile: %s")%str(e))
return True return True
def applyProfileTemplates(self,useClt=None,cltFilter=False,useDispatch=True):
"""
Наложить шаблоны из профиля
"""
from calculate.lib.cl_template import (Template,TemplatesError,
ProgressTemplate)
dv = DataVarsUpdate()
try:
dv.importUpdate()
dv.flIniFile()
dv.Set('cl_action','merge',force=True)
dv.Set('cl_templates_locate', self.clVars.Get('cl_update_templates_locate'))
dv.Set("cl_chroot_path",'/', True)
dv.Set("cl_root_path",'/', True)
for copyvar in ("cl_dispatch_conf", "cl_verbose_set"):
dv.Set(copyvar,self.clVars.Get(copyvar),True)
# определение каталогов содержащих шаблоны
dirs_list, files_list = ([],[])
useClt = useClt in ("on",True)
self.addProgress()
nullProgress = lambda *args,**kw:None
dispatch = self.dispatchConf if useDispatch else None
clTempl = ProgressTemplate(nullProgress,dv,
cltObj=useClt,
cltFilter=cltFilter,
printSUCCESS=self.printSUCCESS,
printWARNING=self.printWARNING,
askConfirm=self.askConfirm,
dispatchConf=dispatch,
printERROR=self.printERROR)
try:
dirsFiles = clTempl.applyTemplates()
if clTempl.hasError():
if clTempl.getError():
raise TemplatesError(clTempl.getError())
finally:
if clTempl:
if clTempl.cltObj:
clTempl.cltObj.closeFiles()
clTempl.closeFiles()
finally:
dv.close()
return True

@ -186,8 +186,7 @@ class ClUpdateAction(Action):
{'name': 'update_other:dispatch_conf_end', {'name': 'update_other:dispatch_conf_end',
'message': __("Updating configuration files"), 'message': __("Updating configuration files"),
'method':'Update.dispatchConf()', 'method':'Update.dispatchConf()',
'condition': lambda Get: ((Get('cl_update_rev_set') == 'on' or 'condition': lambda Get: (Get('cl_dispatch_conf') != 'skip' and
Get('cl_rebuild_world_set') == 'on') and
Get('cl_update_pretend_set') == 'off') Get('cl_update_pretend_set') == 'off')
}, },
] ]
@ -269,14 +268,12 @@ class ClUpdateAction(Action):
'message': __("Fixing the settings"), 'message': __("Fixing the settings"),
'method': 'Update.applyTemplates(install.cl_source,' 'method': 'Update.applyTemplates(install.cl_source,'
'cl_template_clt_set,True,None,False)', 'cl_template_clt_set,True,None,False)',
'condition': lambda Get: (Get('cl_update_rev_set') == 'on' or 'condition': lambda Get: Get('cl_templates_locate')
Get('cl_rebuild_world_set') == 'on')
}, },
{'name': 'dispatch_conf', {'name': 'dispatch_conf',
'message': __("Updating configuration files"), 'message': __("Updating configuration files"),
'method':'Update.dispatchConf()', 'method':'Update.dispatchConf()',
'condition': lambda Get: ((Get('cl_update_rev_set') == 'on' or 'condition': lambda Get: (Get('cl_dispatch_conf') != 'skip' and
Get('cl_rebuild_world_set') == 'on') and
Get('cl_update_pretend_set') == 'off') Get('cl_update_pretend_set') == 'off')
}, },
] ]

@ -103,6 +103,22 @@ class ClUpdateProfileAction(Action):
'message': __("Switching to profile {cl_update_profile_system}"), 'message': __("Switching to profile {cl_update_profile_system}"),
'method': 'Update.setProfile()' 'method': 'Update.setProfile()'
}, },
{'name': 'revision',
'message': __("Fixing the settings"),
'method': 'Update.applyTemplates(install.cl_source,'
'cl_template_clt_set,True,None,False)',
'condition': lambda Get: Get('cl_templates_locate')
},
{'name': 'reconfigure',
'message': __("The system is being configured"),
'method': 'Update.applyProfileTemplates(cl_template_clt_set,True,False)',
'condition': lambda Get: Get('cl_update_templates_locate')
},
{'name': 'dispatch_conf',
'message': __("Updating configuration files"),
'method':'Update.dispatchConf()',
'condition': lambda Get: Get('cl_dispatch_conf') != 'skip'
},
] ]
} }
] ]

@ -32,6 +32,7 @@ from calculate.update.profile import RepositoryStorageSet, DEFAULT_BRANCH
from calculate.lib.variables.linux import VariableOsLinuxName, \ from calculate.lib.variables.linux import VariableOsLinuxName, \
VariableOsLinuxSubname, VariableOsLinuxVer, VariableOsLinuxShortname VariableOsLinuxSubname, VariableOsLinuxVer, VariableOsLinuxShortname
from calculate.lib.variables.env import VariableClTemplateLocation
setLocalTranslate('cl_update3', sys.modules[__name__]) setLocalTranslate('cl_update3', sys.modules[__name__])
@ -49,11 +50,23 @@ class VariableAcUpdateSync(ReadonlyVariable):
return "" return ""
class VariableClUpdateWorld(Variable): class VariableClUpdateWorld(Variable):
def get(self): type = "choice"
if self.Get('cl_rebuild_world_set') == "on": value = "update"
return "rebuild" opt = ["--world"]
else: syntax = "--{choice}-world"
return "" metavalue = "MODE"
def init(self):
self.help = ("'rebuild' - " + _("rebuild package list") +
",\n'merge' - " + _("append profile package list") +
",\n'update' - " + _("update package list"))
self.label = _("Package list")
def choice(self):
return [("rebuild", _("Rebuild")),
("merge", _("Merge")),
("update", _("Update"))]
class VariableClRebuildWorldSet(Variable): class VariableClRebuildWorldSet(Variable):
""" """
@ -527,6 +540,40 @@ class VariableClUpdateProfileDependData(ReadonlyTableVariable):
setValue = Variable.setValue setValue = Variable.setValue
class VariableClUpdateTemplatesLocate(Variable):
"""
Выбранные типы хранилищ шаблонов
"""
type = "choice-list"
element = "selecttable"
opt = ["-T","--templates"]
metavalue = "TEMPLATES"
untrusted = True
check_after = ['cl_update_profile_system']
descriptionMap = {'overlay': _('Overlay templates'),
'local': _('Local templates'),
'calculate': _("Calculate overlay templates"),
'distros': _('Distribution templates'),
'distro': _('Distribution templates'),
'remote': _('Remote templates'),
'clt': _('clt templates')}
def init(self):
self.label = _("Templates location")
self.help = _("select location for templates %s") \
%",".join(self.get())
def get(self):
dv = self.Get('update.cl_update_profile_datavars')
if dv:
return self.Get('cl_templates_locate')
return dv.Get('cl_template_location') + ['clt']
def choice(self):
return map(lambda x:(x,self.descriptionMap.get(x,_("%s overlay templates")%x)),
self.get())
class VariableClUpdateProfileDependName(FieldValue, ReadonlyVariable): class VariableClUpdateProfileDependName(FieldValue, ReadonlyVariable):
type = "list" type = "list"
source_variable = "cl_update_profile_depend_data" source_variable = "cl_update_profile_depend_data"
@ -596,7 +643,7 @@ class VariableClUpdateProfileRep(Variable):
Текущий репозиторий Текущий репозиторий
""" """
untrusted = True untrusted = True
check_after = "cl_update_profile_branch" check_after = ["cl_update_profile_branch"]
opt = ["--url"] opt = ["--url"]
@ -871,6 +918,7 @@ class DataVarsUpdateProfile(SimpleDataVars):
VariableOsLinuxShortname(), VariableOsLinuxShortname(),
VariableOsLinuxSubname(), VariableOsLinuxSubname(),
VariableOsLinuxVer(), VariableOsLinuxVer(),
VariableClTemplateLocation(),
VariableClUpdateRepData(section="update"), VariableClUpdateRepData(section="update"),
VariableClUpdateRepPath(section="update"), VariableClUpdateRepPath(section="update"),
VariableClUpdateRepRev(section="update"), VariableClUpdateRepRev(section="update"),
@ -888,15 +936,15 @@ class DataVarsUpdateProfile(SimpleDataVars):
class VariableClUpdateProfileSyncSet(Variable): class VariableClUpdateProfileSyncSet(Variable):
""" """
Не выполнять установку/обновление пакетов при обновлении Синхронизировать репозиторий перед сменой профиля
""" """
type = "bool" type = "bool"
value = "off" value = "off"
opt = ["-s", "--sync"] opt = ["-s", "--sync"]
def init(self): def init(self):
self.label = _("Repositories to be synchronized") self.label = _("Synchronize the repository")
self.help = _("repositories to be synchronized") self.help = _("Synchronize the repository")
class VariableClUpdateAutocheckSet(Variable): class VariableClUpdateAutocheckSet(Variable):
@ -943,6 +991,18 @@ class VariableClUpdateAutocheckScheduleSet(Variable):
self.label = _("Consider the autocheck schedule") self.label = _("Consider the autocheck schedule")
self.help = _("consider the autocheck schedule") self.help = _("consider the autocheck schedule")
class VariableClUpdateEmergelistSet(Variable):
"""
Вывести список пакетов в формате emerge
"""
type = "bool"
value = "off"
opt = ["-e","--emergelist"]
def init(self):
self.label = _("Emerge like package list")
self.help = _("display package list in emerge format")
class VariableClUpdateKernelVersion(ReadonlyVariable): class VariableClUpdateKernelVersion(ReadonlyVariable):
""" """
Текущая версия ядра Текущая версия ядра
@ -972,3 +1032,4 @@ class VariableClUpdateKernelPkg(ReadonlyVariable):
else: else:
return "" return ""

@ -65,13 +65,15 @@ class Wsdl(WsdlBase):
lambda group: group(_("Update the system"), lambda group: group(_("Update the system"),
normal=(), normal=(),
expert=( expert=(
'cl_rebuild_world_set', 'cl_update_rev_set', 'cl_update_sync_only_set',
'cl_update_sync_rep', 'cl_update_branch',
'cl_update_egencache_force',
'cl_update_other_set', 'cl_update_other_set',
'cl_update_pretend_set', 'cl_update_pretend_set',
'cl_update_sync_rep',
'cl_update_emergelist_set',
'cl_update_world',
'cl_update_branch',
'cl_update_egencache_force',
'cl_update_eixupdate_force', 'cl_update_eixupdate_force',
'cl_update_sync_only_set',
'cl_update_wait_another_set', 'cl_update_wait_another_set',
'cl_update_autocheck_schedule_set', 'cl_update_autocheck_schedule_set',
'cl_templates_locate', 'cl_templates_locate',
@ -112,10 +114,17 @@ class Wsdl(WsdlBase):
hide=('cl_update_profile_rep', hide=('cl_update_profile_rep',
'cl_update_profile_sync_set'), 'cl_update_profile_sync_set'),
normal=('cl_update_profile_rep',), normal=('cl_update_profile_rep',),
expert=('cl_update_profile_branch', expert=('cl_update_profile_sync_set',
'cl_update_profile_sync_set')), 'cl_update_profile_branch')),
lambda group: group(_("Profile"), lambda group: group(_("Profile"),
normal=('cl_update_profile_system',), normal=('cl_update_profile_system',
'cl_update_world'),
expert=('cl_update_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
hide=('cl_update_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
brief=('cl_update_profile_system', brief=('cl_update_profile_system',
'cl_update_profile_linux_fullname', 'cl_update_profile_linux_fullname',
'cl_update_profile_depend_data') 'cl_update_profile_depend_data')

Loading…
Cancel
Save