diff --git a/pym/builder/variables/builder.py b/pym/builder/variables/builder.py index 31f1835..d982215 100644 --- a/pym/builder/variables/builder.py +++ b/pym/builder/variables/builder.py @@ -224,27 +224,40 @@ class VariableClBuilderDiskDev(Variable): _("Destination '%s' is already in use") % value) -class VariableClBuilderDiskSize(ReadonlyVariable): +class DiskFreeHelper(ReadonlyVariable): """ - + Переменные содержащие свободное место на дисках """ type = "int" - def init(self): - self.label = _("Free disk space") - def get_free_for(self, dn): try: - for dfdn in (dn, path.dirname(dn)): + dfdn = dn + while True: dfProcess = process("/bin/df", "--output=avail", dfdn) data = dfProcess.readlines() if len(data) > 1: return int(data[1].strip()) * 1024 + if dfdn == '/': + return 0 + dfdn = path.dirname(dfdn) except ValueError: return 0 return 0 - def get_create(self): + def humanReadable(self): + return humanreadableSize(int(self.Get())) + + +class VariableClBuilderDiskSize(DiskFreeHelper): + """ + + """ + def init(self): + self.label = _("Free disk space") + + @is_action(Actions.NewAssemble) + def get(self): device = self.Get('cl_builder_disk_dev') if device: if device.startswith('/dev/'): @@ -255,16 +268,29 @@ class VariableClBuilderDiskSize(ReadonlyVariable): return str(self.get_free_for(device)) return "0" +class VariableClBuilderPrepareFreeSize(DiskFreeHelper): + """ + Свободное место используемое для подготовки образа + """ + def init(self): + self.label = _("Free disk space for iso building") + + @is_action(Actions.Image) def get(self): - action = self.Get('cl_action') - if action in Actions.NewAssemble: - return self.get_create() - elif action in (Actions.Break, Actions.Restore): - # TODO: disk size для остальных - return + dn = self.Get('cl_builder_iso_base_path') + return str(self.get_free_for(dn)) - def humanReadable(self): - return humanreadableSize(int(self.Get())) +class VariableClBuilderImageFreeSize(DiskFreeHelper): + """ + Свободное место на диске, где создается iso образ + """ + def init(self): + self.label = _("Free disk space for iso image") + + @is_action(Actions.Image) + def get(self): + dn = self.Get('cl_builder_image_filename') + return str(self.get_free_for(dn)) class VariableClBuilderLayeredSet(Variable): @@ -623,10 +649,10 @@ class VariableClBuilderImageFilename(Variable): untrusted = True def init(self): - self.label = _("Image name") - self.help = _("set image name") + self.label = _("Image path") + self.help = _("set image path") - def check(self,value): + def check(self, value): if not value: raise VariableError(_("You must specify image filename")) diff --git a/pym/builder/variables/linux.py b/pym/builder/variables/linux.py index abbabe5..439dfa9 100644 --- a/pym/builder/variables/linux.py +++ b/pym/builder/variables/linux.py @@ -166,6 +166,9 @@ class VariableOsBuilderLinuxShortname(BuilderLinux): """Shortname of system""" variable = "os_linux_shortname" + def init(self): + self.label = _("System to be build") + class VariableOsBuilderLinuxVer(BuilderLinux): """Shortname of system""" @@ -178,6 +181,9 @@ class VariableOsBuilderLinuxBuild(BuilderLinux): """Shortname of system""" variable = "os_linux_build" + def init(self): + self.label = _("Build version") + def get(self): action = self.Get('cl_action') if action == Actions.Image: @@ -232,7 +238,6 @@ class VariableOsBuilderLinuxSubname(BuilderLinux): """ variable = "os_linux_subname" - class VariableClBuilderPortdirOverlay(ReadonlyVariable): """ Пути оверлеев в собираемом образе относительно точки монтирования diff --git a/pym/builder/wsdl_builder.py b/pym/builder/wsdl_builder.py index 88829f0..0254056 100644 --- a/pym/builder/wsdl_builder.py +++ b/pym/builder/wsdl_builder.py @@ -172,8 +172,9 @@ class Wsdl(WsdlBase): 'cl_builder_branch_data', 'cl_builder_sync_rep', 'cl_templates_locate', - 'cl_verbose_set', 'cl_dispatch_conf'), - next_label=_("Perform"))] + 'cl_verbose_set', + 'cl_dispatch_conf'), + next_label=_("Perform"))], }, { # идентификатор метода @@ -207,7 +208,7 @@ class Wsdl(WsdlBase): normal=('cl_builder_broken_id',), expert=('cl_templates_locate', 'cl_verbose_set', 'cl_dispatch_conf'), - next_label=_("Perform"))] + next_label=_("Perform"))], }, { # идентификатор метода @@ -248,11 +249,24 @@ class Wsdl(WsdlBase): 'cl_builder_prelink_set' ), brief=('cl_builder_kernel_ver', - 'cl_builder_initrd_install', + #'cl_builder_initrd_install', 'os_builder_linux_shortname', 'os_builder_linux_build', - 'os_builder_linux_system', - 'cl_builder_kernel'), + 'cl_builder_kernel', + 'cl_builder_prepared_id', + 'cl_builder_image_filename', + 'cl_builder_videodrv_set', + 'cl_builder_compress', + 'cl_builder_isohybrid_set', + 'cl_builder_keep_tree_set', + 'cl_builder_prelink_set', + 'cl_builder_prepare_free_size', + 'cl_builder_image_free_size' + ), + hide=('cl_templates_locate', + 'cl_verbose_set', + 'cl_dispatch_conf' + ), expert=('cl_templates_locate', 'cl_verbose_set', 'cl_dispatch_conf'),