# NAME

`bpkg-cfg-create` – create configuration

# SYNOPSIS

`bpkg cfg-create|create [options] [cfg-args]
bpkg cfg-create|create [options] --existing|-e`

`cfg-args = (module | cfg-var)...`

# DESCRIPTION

The `cfg-create` command creates a new `bpkg` configuration with the specified `build2` modules and configuration variables (the first form) or initializes one based on an existing build system configuration (the second form). The `bpkg` configuration itself is a build system configuration; see build system driver (`b(1)`) `create` meta-operation for details.

Unless the `--existing|-e` or `--wipe` option is specified, `cfg-create` expects the configuration directory to be empty or to not exist (in which case it will be created).

By default, the configuration created with the first form loads the `config`, `test`, `dist`, and `install` modules. However, additional modules and, if required, their configuration variables can be specified as the `cfg-create` arguments. For example:

    bpkg create cxx config.cxx=clang++ config.install.root=/usr/local

By default, `bpkg` appends `.config` to the names of the modules that you specify so that only their configurations are loaded. You can override this behavior by specifying the period (`.`) after the module name. You can also instruct `bpkg` to use the optional module load by prefixing the module name with the question mark (`?`). For example:

    bpkg create cxx. "?cli"

# CFG-CREATE OPTIONS

`--directory`|`-d` `dir`
  Create the configuration in `dir` rather than in the current working directory.
`--existing`|`-e`
  Initialize a `bpkg` configuration based on an existing build system configuration.
`--wipe`
  Wipe the configuration directory clean before creating the new configuration. For safety, this option requires that you specify the configuration directory explicitly with `--directory|-d`.

# COMMON OPTIONS

The common options are summarized below with a more detailed description available in `bpkg-common-options(1)`.

`-v`
  Print essential underlying commands being executed.
`-V`
  Print all underlying commands being executed.
`--quiet`|`-q`
  Run quietly, only printing error messages.
`--verbose` `level`
  Set the diagnostics verbosity to `level` between 0 and 6.
`--jobs`|`-j` `num`
  Number of jobs to perform in parallel.
`--no-result`
  Don't print informational messages about the outcome of performing a command.
`--no-progress`
  Suppress progress indicators for long-lasting operations, such as network transfers, building, etc.
`--build` `path`
  The build program to be used to build packages.
`--build-option` `opt`
  Additional option to be passed to the build program.
`--fetch` `path`
  The fetch program to be used to download resources.
`--fetch-option` `opt`
  Additional option to be passed to the fetch program.
`--fetch-timeout` `sec`
  The fetch and fetch-like (for example, `git`) program timeout.
`--git` `path`
  The git program to be used to fetch git repositories.
`--git-option` `opt`
  Additional common option to be passed to the git program.
`--sha256` `path`
  The sha256 program to be used to calculate SHA256 sums.
`--sha256-option` `opt`
  Additional option to be passed to the sha256 program.
`--tar` `path`
  The tar program to be used to extract package archives.
`--tar-option` `opt`
  Additional option to be passed to the tar program.
`--openssl` `path`
  The openssl program to be used for crypto operations.
`--openssl-option` `opt`
  Additional option to be passed to the openssl program.
`--auth` `type`
  Types of repositories to authenticate.
`--trust` `fingerprint`
  Trust repository certificate with a SHA256 `fingerprint`.
`--trust-yes`
  Assume the answer to all authentication prompts is `yes`.
`--trust-no`
  Assume the answer to all authentication prompts is `no`.
`--pager` `path`
  The pager program to be used to show long text.
`--pager-option` `opt`
  Additional option to be passed to the pager program.
`--options-file` `file`
  Read additional options from `file`.

# BUGS

Send bug reports to the users@build2.org mailing list.