Откат изменений
master 3.7.3.3
root 1 year ago
parent 7ed6fc2847
commit 4aaab34ac8

@ -151,19 +151,11 @@ class Profile():
self.repository = repository self.repository = repository
self.profile = profile self.profile = profile
self.arch = arch self.arch = arch
self._path = None
@property @property
def path(self): def path(self):
if self._path:
return self._path
return path.join(self.repository.directory,"profiles", self.profile) return path.join(self.repository.directory,"profiles", self.profile)
@path.setter
def path(self, value):
self._path = value
return value
@classmethod @classmethod
def from_string(cls, repository, s): def from_string(cls, repository, s):
parts = [x for x in s.split() if x] parts = [x for x in s.split() if x]
@ -271,11 +263,6 @@ class ProfileRepository():
profiles_desc = path.join(self.directory, "profiles/profiles.desc") profiles_desc = path.join(self.directory, "profiles/profiles.desc")
return list(filter(None, (Profile.from_string(self, line) return list(filter(None, (Profile.from_string(self, line)
for line in readLinesFile(profiles_desc)))) for line in readLinesFile(profiles_desc))))
@staticmethod
def get_local_profiles(directory):
profiles_desc = path.join(directory, "profiles/profiles.desc")
return list(filter(None, (Profile.from_string(Profile, line)
for line in readLinesFile(profiles_desc))))
def __repr__(self): def __repr__(self):
return "<ProfileRepository %s url=%s>" % (self.directory, self.url) return "<ProfileRepository %s url=%s>" % (self.directory, self.url)

@ -47,33 +47,73 @@ class ClUpdateProfileAction(Action):
'method': 'Update.migrateCacheRepository(' 'method': 'Update.migrateCacheRepository('
'cl_update_profile_url,cl_update_profile_branch,' 'cl_update_profile_url,cl_update_profile_branch,'
'cl_update_profile_storage)', 'cl_update_profile_storage)',
'condition': lambda Get: Get('cl_update_profile_url')}, 'message': __("Repository transfer"),
{'name': 'profile_from_url', 'condition': lambda Get: not (
'group': __('setting up from url'), Get('cl_update_profile_storage').is_local(
'tasks': [ Get('cl_update_profile_url'),
{'message': __("Repository transfer"), Get('cl_update_profile_branch'))) and Get('cl_update_profile_check_sync_allowed')
'condition': lambda Get: not ( },
Get('cl_update_profile_storage').is_local( {'name': 'reconfigure_vars1',
Get('cl_update_profile_url'), 'method': 'Update.invalidateVariables("cl_update_profile_storage")',
Get('cl_update_profile_branch'))) and Get('cl_update_profile_check_sync_allowed'),
},
{'name': 'reconfigure_vars1',
'method': 'Update.invalidateVariables("cl_update_profile_storage")',
},
{'name': 'check_datavars',
'error': _("Profile not found in master"),
'condition': lambda Get: not Get('update.cl_update_profile_datavars'),
},
{'name': 'drop_binhosts',
'method': 'Update.drop_binhosts(update.cl_update_profile_datavars)',
},
{'name': 'reconfigure_vars',
'method': 'Update.reconfigureProfileVars(cl_update_profile_datavars,'
'cl_chroot_path)',
},
],
'depend': Tasks.has('migrate_repository') 'depend': Tasks.has('migrate_repository')
}, },
{'name': 'check_datavars',
'error': _("Profile not found in master"),
'condition': lambda Get: not Get('update.cl_update_profile_datavars')
},
{'name': 'drop_binhosts',
'method': 'Update.drop_binhosts(update.cl_update_profile_datavars)'
},
{'name': 'reconfigure_vars',
'method': 'Update.reconfigureProfileVars(cl_update_profile_datavars,'
'cl_chroot_path)'
},
{'name': 'reps_synchronization',
'group': __("Repositories synchronization"),
'tasks': [
{'name': 'sync_reps',
'foreach': 'cl_update_profile_sync_rep',
'message': __("Checking {eachvar:capitalize} updates"),
'method': 'Update.syncRepositories(eachvar)',
'condition': lambda Get: Get('cl_update_profile_check_sync_allowed')
},
{'name': 'sync_reps:regen_cache',
'foreach': 'cl_update_sync_overlay_rep',
'message': __("Updating the {eachvar:capitalize} repository cache"),
'essential': False,
'method': 'Update.regenCache(eachvar)',
'condition': (
lambda Get: (Get('cl_update_outdate_set') == 'on' and
Get('cl_update_metadata_force') != 'skip' or
Get('cl_update_metadata_force') == 'force'))
},
{'name': 'emerge_metadata',
'message': __("Metadata transfer"),
'method': 'Update.emergeMetadata()',
'condition': (
lambda Get: (Get('cl_update_outdate_set') == 'on' and
Get('cl_update_metadata_force') != 'skip' or
Get('cl_update_metadata_force') == 'force'))
},
{'name': 'eix_update',
'message': __("Updating the eix cache for "
"{cl_update_eix_repositories}"),
'method': 'Update.eixUpdate(cl_repository_name)',
'condition': (
lambda Get: (Get('cl_update_outdate_set') == 'on' and
Get('cl_update_eixupdate_force') != 'skip' or
Get('cl_update_eixupdate_force') == 'force'))
},
# сообщение удачного завершения при обновлении репозиториев
{'name': 'success_syncrep',
'message': __("Synchronization finished"),
'depend': (Tasks.success() & Tasks.has_any("sync_reps",
"sync_other_reps",
"emerge_metadata",
"eix_update")),
}
]
},
{'name': 'reps_synchronization', {'name': 'reps_synchronization',
'group': __("Setting up the profile"), 'group': __("Setting up the profile"),
'tasks': [ 'tasks': [

@ -28,7 +28,7 @@ from calculate.lib.datavars import (Variable, VariableError,
SimpleDataVars, DataVarsError) SimpleDataVars, DataVarsError)
from calculate.lib.utils.binhosts import (Binhosts, PackagesIndex, HOURS, from calculate.lib.utils.binhosts import (Binhosts, PackagesIndex, HOURS,
BinhostSignError) BinhostSignError)
from calculate.lib.utils.files import readFile, listDirectory, process, pathJoin, readLinesFile from calculate.lib.utils.files import readFile, listDirectory, process, pathJoin
from calculate.lib.configparser import ConfigParser from calculate.lib.configparser import ConfigParser
from calculate.lib.cl_lang import setLocalTranslate from calculate.lib.cl_lang import setLocalTranslate
@ -36,7 +36,7 @@ from calculate.lib.utils.text import simplify_profiles, _u8
from calculate.lib.utils.git import Git, GitError from calculate.lib.utils.git import Git, GitError
from calculate.lib.utils.portage import ReposConf, PortageState from calculate.lib.utils.portage import ReposConf, PortageState
from ..profile import (RepositoryStorageSet, DEFAULT_BRANCH, from ..profile import (RepositoryStorageSet, DEFAULT_BRANCH,
LocalStorage, ProfileRepository, CacheStorage, Profile) LocalStorage, ProfileRepository, CacheStorage)
from calculate.lib.variables import linux as lib_linux from calculate.lib.variables import linux as lib_linux
from calculate.lib.variables import env from calculate.lib.variables import env
@ -1094,7 +1094,7 @@ class VariableClUpdateProfileUrl(Variable):
def check(self, value): def check(self, value):
if not value: if not value:
return True raise VariableError(_("Need to specify profile repository"))
try: try:
branch = self.Get(self.branch) branch = self.Get(self.branch)
self.Get(self.storage).get_profiles(value, branch) self.Get(self.storage).get_profiles(value, branch)
@ -1104,33 +1104,31 @@ class VariableClUpdateProfileUrl(Variable):
raise VariableError(_("Repository %s has no profiles") % raise VariableError(_("Repository %s has no profiles") %
value) value)
# def get(self): def get(self):
# try: try:
# if not self.value: profile = self.Get(self.profile)
# return self.value if profile:
# profile = self.Get(self.profile) while (profile != self.current_root and
# if profile: ".git" not in listDirectory(profile) and
# while (profile != self.current_root and "repo_name" not in listDirectory(
# ".git" not in listDirectory(profile) and path.join(profile,"profiles"))):
# "repo_name" not in listDirectory( profile = path.dirname(profile)
# path.join(profile,"profiles"))): if profile == self.current_root:
# profile = path.dirname(profile) return self.value
# if profile == self.current_root: if ".git" not in listDirectory(profile):
# return self.value repo_name = readFile(path.join(
# if ".git" not in listDirectory(profile): profile,"profiles/repo_name")).strip()
# repo_name = readFile(path.join( if (repo_name in self.rep_names and
# profile,"profiles/repo_name")).strip() self.Get('cl_action') == self.check_action):
# if (repo_name in self.rep_names and raise CriticalError(
# self.Get('cl_action') == self.check_action): _("You need to update the repositories before "
# raise CriticalError( "you change the profile"))
# _("You need to update the repositories before " return Git.get_url(profile, "origin")
# "you change the profile")) except CriticalError as e:
# return Git.get_url(profile, "origin") raise VariableError(str(e))
# except CriticalError as e: except Exception as e:
# raise VariableError(str(e)) pass
# except Exception as e: return self.value
# pass
# return self.value
class VariableClUpdateProfileRepoName(ReadonlyVariable): class VariableClUpdateProfileRepoName(ReadonlyVariable):
@ -1207,30 +1205,19 @@ class VariableClProfileData(ReadonlyTableVariable):
return [x for x in profiles if x.arch == arch] return [x for x in profiles if x.arch == arch]
def get(self, hr=HumanReadable.No): def get(self, hr=HumanReadable.No):
if self.Get('cl_update_profile_url'): rep = self.Get(self.repository)
rep = self.Get(self.repository) if not rep:
if not rep: return [[]]
return [[]] profiles = rep.get_profiles()
profiles = rep.get_profiles() if not profiles:
if not profiles: return [[]]
return [[]] repo_name = profiles[0].repository.repo_name
repo_name = profiles[0].repository.repo_name
else:
full_path = self.Get('cl_profile_system')
storage_path = self.Get('cl_update_repos_storage')
if storage_path in full_path:
repo_name = full_path.split(storage_path)[1].replace('/', ' ').split()[0]
profiles_desc = path.join(storage_path, repo_name, "profiles/profiles.desc")
profiles = ProfileRepository.get_local_profiles(path.join(storage_path, repo_name))
for profile in profiles:
profile.path = path.join(storage_path, repo_name, 'profiles', profile.profile)
filtered_profiles = self.profile_filter(profiles) filtered_profiles = self.profile_filter(profiles)
full_name = [x.profile for x in filtered_profiles] full_name = [x.profile for x in filtered_profiles]
profile_path = [x.path for x in filtered_profiles] profile_path = [x.path for x in filtered_profiles]
profile_arch = [x.arch for x in filtered_profiles] profile_arch = [x.arch for x in filtered_profiles]
short_name = simplify_profiles(full_name) short_name = simplify_profiles(full_name)
full_name = ["%s:%s" % (repo_name, x) for x in full_name]
return list(zip(full_name, return list(zip(full_name,
short_name, short_name,
profile_path, profile_path,
@ -1363,6 +1350,10 @@ class VariableClUpdateProfileSystem(Variable):
return True return True
if not dv.Get('os_linux_name'): if not dv.Get('os_linux_name'):
raise VariableError("") raise VariableError("")
if repo_name not in list(dv.Get('cl_update_rep_name')):
raise VariableError(
_("Overlay %s is not specified "
"in cl_update_rep_name") % repo_name)
except (DataVarsError, VariableError) as e: except (DataVarsError, VariableError) as e:
if str(e): if str(e):
message = ". " + str(e) message = ". " + str(e)
@ -1389,6 +1380,9 @@ class VariableClUpdateProfileSystem(Variable):
return "" return ""
def choice(self): def choice(self):
url = self.Get(self.url)
if not url:
return []
arch = self.Get(self.gentoo_arch) arch = self.Get(self.gentoo_arch)
profiles = list(zip(*self.Select([self.profiles_shortname, profiles = list(zip(*self.Select([self.profiles_shortname,
self.profiles_fullname], self.profiles_fullname],

@ -129,8 +129,8 @@ class Wsdl(WsdlBase):
'groups': [ 'groups': [
lambda group: group(_("Repository"), lambda group: group(_("Repository"),
brief=('cl_update_profile_repo_name',), brief=('cl_update_profile_repo_name',),
# hide=('cl_update_profile_url', hide=('cl_update_profile_url',
# 'cl_update_profile_sync_set'), 'cl_update_profile_sync_set'),
normal=('cl_update_profile_url',), normal=('cl_update_profile_url',),
expert=('cl_update_profile_sync_set',)), expert=('cl_update_profile_sync_set',)),
lambda group: group(_("Profile"), lambda group: group(_("Profile"),

Loading…
Cancel
Save