diff --git a/bootstrapvz/common/task_groups.py b/bootstrapvz/common/task_groups.py index 6b134eb..ee83c95 100644 --- a/bootstrapvz/common/task_groups.py +++ b/bootstrapvz/common/task_groups.py @@ -33,7 +33,7 @@ def get_standard_groups(manifest): group.extend(get_network_group(manifest)) group.extend(get_apt_group(manifest)) group.extend(security_group) - group.extend(locale_group) + group.extend(get_locale_group(manifest)) group.extend(get_bootloader_group(manifest)) group.extend(cleanup_group) return group @@ -133,10 +133,19 @@ def get_apt_group(manifest): security_group = [security.EnableShadowConfig] -locale_group = [locale.LocaleBootstrapPackage, - locale.GenerateLocale, - locale.SetTimezone, - ] + +def get_locale_group(manifest): + from bootstrapvz.common.releases import jessie + group = [ + locale.LocaleBootstrapPackage, + locale.GenerateLocale, + locale.SetTimezone, + ] + if manifest.release > jessie: + group.append(locale.SetLocalTimeLink) + else: + group.append(locale.SetLocalTimeCopy) + return group def get_bootloader_group(manifest): diff --git a/bootstrapvz/common/tasks/locale.py b/bootstrapvz/common/tasks/locale.py index 06dbeb3..e414244 100644 --- a/bootstrapvz/common/tasks/locale.py +++ b/bootstrapvz/common/tasks/locale.py @@ -43,11 +43,32 @@ class SetTimezone(Task): @classmethod def run(cls, info): - from shutil import copy tz_path = os.path.join(info.root, 'etc/timezone') timezone = info.manifest.system['timezone'] with open(tz_path, 'w') as tz_file: tz_file.write(timezone) + + +class SetLocalTimeLink(Task): + description = 'Setting the selected local timezone (link)' + phase = phases.system_modification + + @classmethod + def run(cls, info): + timezone = info.manifest.system['timezone'] + localtime_path = os.path.join(info.root, 'etc/localtime') + os.unlink(localtime_path) + os.symlink(os.path.join('/usr/share/zoneinfo', timezone), localtime_path) + + +class SetLocalTimeCopy(Task): + description = 'Setting the selected local timezone (copy)' + phase = phases.system_modification + + @classmethod + def run(cls, info): + from shutil import copy + timezone = info.manifest.system['timezone'] zoneinfo_path = os.path.join(info.root, '/usr/share/zoneinfo', timezone) localtime_path = os.path.join(info.root, 'etc/localtime') copy(zoneinfo_path, localtime_path)