def __init__(self, working_dir, opts=None, package=None,<EOL>write_build_scripts=False, verbose=False, build_args=[],<EOL>child_build_args=[]):
self.working_dir = working_dir<EOL>if not self.is_valid_root(working_dir):<EOL><INDENT>raise BuildSystemError(<EOL>"<STR_LIT>"<EOL>% (self.name(), working_dir))<EOL><DEDENT>self.package = package or get_developer_package(working_dir)<EOL>self.write_build_scripts = write_build_scripts<EOL>self.build_args = build_args<EOL>self.child_build_args = child_build_args<EOL>self.verbose = verbose<EOL>self.opts = opts<EOL>
Create a build system instance.

        Args:
            working_dir: Directory to build source from.
            opts: argparse.Namespace object which may contain constructor
                params, as set by our bind_cli() classmethod.
            package (`DeveloperPackage`): Package to build. If None, defaults to
                the package in the working directory.
            write_build_scripts: If True, create build scripts rather than
                perform the full build. The user can then run these scripts to
                place themselves into a build environment and invoke the build
                system directly.
            build_args: Extra cli build arguments.
            child_build_args: Extra cli args for child build system, ignored if
                there is no child build system.