diff --git a/pym/builder/builder.py b/pym/builder/builder.py index 4478f9f..926d923 100644 --- a/pym/builder/builder.py +++ b/pym/builder/builder.py @@ -16,6 +16,7 @@ from itertools import chain import sys import time +import stat from calculate.lib.datavars import DataVars from calculate.lib.utils.colortext import TextState, get_color_print, \ convert_console_to_xml @@ -908,3 +909,21 @@ class Builder(Update): self.clVars.Set('os_builder_linux_files', str(all_count - exclude_sum), force=True) return True + + def create_dev_nodes(self,directory): + """Create nodes for dev http://dev.gentoo.org/~a3li/openrc.txt""" + devPath = path.join(directory, "dev") + # clean dev + for pathname, dirs, files in os.walk(devPath, topdown=False): + map(lambda x: os.unlink(path.join(pathname, x)), files) + map(lambda x: os.unlink(x) if path.islink(x) else os.rmdir(x), + map(lambda x: path.join(pathname, x), dirs)) + for node, mode, dmode, major, minor in [ + ("console", 0600, stat.S_IFCHR, 5, 1), + ("tty1", 0600, stat.S_IFCHR, 4, 1), + ("null", 0666, stat.S_IFCHR, 1, 3), + ("zero", 0666, stat.S_IFCHR, 1, 5)]: + nodePath = path.join(devPath, node) + os.mknod(nodePath, mode | dmode, os.makedev(major, minor)) + os.chmod(nodePath, mode) + return True diff --git a/pym/builder/utils/cl_builder_image.py b/pym/builder/utils/cl_builder_image.py index b43a850..319b50e 100644 --- a/pym/builder/utils/cl_builder_image.py +++ b/pym/builder/utils/cl_builder_image.py @@ -101,6 +101,9 @@ class ClBuilderImageAction(Action): 'method': 'Builder.recount_files(cl_builder_path,' 'cl_builder_squash_exclude)' }, + {'name': 'create_dev_nodes', + 'method': 'Builder.create_dev_nodes(cl_builder_path)' + }, {'name': 'apply_template', 'message': __("Configuring squash"), # наложить шаблоны в развернутый дистрибутив diff --git a/pym/builder/wsdl_builder.py b/pym/builder/wsdl_builder.py index a347250..45a342b 100644 --- a/pym/builder/wsdl_builder.py +++ b/pym/builder/wsdl_builder.py @@ -68,7 +68,7 @@ class Wsdl(WsdlBase): InstallError, BuilderError, GitError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': BuilderActions.Prepare, - 'cl_dispatch_conf': 'usenew'}, + 'cl_dispatch_conf_default': 'usenew'}, # описание груп (список лямбда функций) 'groups': [ # Подготовить новую сборку @@ -161,7 +161,7 @@ class Wsdl(WsdlBase): InstallError, BuilderError, GitError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': BuilderActions.Update, - 'cl_dispatch_conf': 'usenew'}, + 'cl_dispatch_conf_default': 'usenew'}, # описание груп (список лямбда функций) 'groups': [ lambda group: group( @@ -248,7 +248,7 @@ class Wsdl(WsdlBase): InstallError, BuilderError, GitError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': BuilderActions.Image, - 'cl_dispatch_conf': 'usenew'}, + 'cl_dispatch_conf_default': 'usenew'}, # описание груп (список лямбда функций) 'groups': [ lambda group: group(_("Create the Image"), @@ -318,7 +318,7 @@ class Wsdl(WsdlBase): InstallError, BuilderError, GitError), # значения по умолчанию для переменных этого метода 'setvars': {'cl_action!': BuilderActions.ChangeProfile, - 'update.cl_update_world': 'rebuild'}, + 'update.cl_update_world_default': 'rebuild'}, # описание груп (список лямбда функций) 'groups': [ lambda group: group(_("Repository"),