home | help
bpkg-cfg-create(1)	     General Commands Manual	      bpkg-cfg-create(1)

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  re-
     quired,  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 spec-
     ify so that only their configurations are loaded. You can override this be-
     havior by specifying the period (.) after the module name. You can also in-
     struct bpkg to use the optional module load by prefixing  the  module  name
     with the question mark (?). For example:

     bpkg create cxx. "?cli"

     Configurations can be linked with each other to allow a package to be built
     in  one configuration while its dependencies in one or more linked configu-
     rations. This can be used to create a "base" configuration with common  de-
     pendencies  that are shared between multiple configurations. This mechanism
     is also used to provide a host configuration that is used to  build  build-
     time dependencies.

     Each  configuration  is assigned an automatically-generated UUID unless one
     is specified with the --uuid option. This UUID is used  to  check	the  in-
     tegrity of configuration links. For convenience of referring to linked con-
     figurations,  a  configuration  can also be assigned a name with the --name
     option.

     A configuration also has a type specified with  the  --type  option.  Three
     predefined types are target, host, and build2. If the type is not specified
     explicitly,  then	target	is  assumed. When satisfying a dependency of one
     package on another, a linked configuration will only be considered  if  (1)
     it  has the same type as the other configuration for run-time dependencies,
     (2) it has the host type for regular build-time dependencies,  and  (3)  it
     has  the  build2 type for build system module build-time dependencies. Note
     that a host configuration is a target configuration for the  host	machine.
     So to create a self-hosted configuration, use type host.

     To link a configuration we use the bpkg-cfg-link(1) command. As a shortcut,
     host  and	build system module configurations can also be linked during the
     configuration creation with the --host-config and --build2-config	options,
     respectively.  If a build-time dependency is encountered in a configuration
     that has no linked configuration of a suitable type (host or build2, nor is
     itself of a suitable type), then a private host or build system module con-
     figuration named host or build2, respectively, is created automatically in-
     side the configuration's .bpkg/ subdirectory.

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  con-
	    figuration.   For  safety, this option requires that you specify the
	    configuration directory explicitly with --directory|-d.

     --host-config dir
	    Link the specified host configuration with the  configuration  being
	    created as if by running the bpkg-cfg-link(1) command.

     --no-host-config
	    Ignore any specified --host-config options.

     --build2-config dir
	    Link  the  specified build system module configuration with the con-
	    figuration being created as if by running the bpkg-cfg-link(1)  com-
	    mand.

     --no-build2-config
	    Ignore any specified --build2-config options.

     --name name
	    The  name  of the configuration being created. If this configuration
	    is linked with another configuration  using  bpkg-cfg-link(1),  this
	    name will be used as the link name unless overridden. By default the
	    configuration is created unnamed.

     --type type
	    The  type of the configuration being created. By default, configura-
	    tion of type target is created.

     --uuid uuid
	    Use the specified UUID as the configuration id instead of generating
	    one automatically.

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.

     --stdout-format format
	    Representation format to use for printing to stdout.

     --jobs|-j num
	    Number of jobs to perform in parallel.

     --no-result
	    Don't print informational messages about the outcome of performing a
	    command or some of its parts.

     --structured-result fmt
	    Write the result of performing a command in a structured form.

     --progress
	    Display  progress  indicators  for	long-lasting operations, such as
	    network transfers, building, etc.

     --no-progress
	    Suppress progress indicators for long-lasting  operations,	such  as
	    network transfers, building, etc.

     --diag-color
	    Use color in diagnostics.

     --no-diag-color
	    Don't use color in diagnostics.

     --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 (packages, repos-
	    itory metadata, etc).

     --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.

     --offline
	    Do not attempt to download resources (packages, repository metadata,
	    etc),  instead  taking  them from the local fetch cache if available
	    and failing otherwise.

     --no-fetch-cache
	    Disable local caching of downloaded resources (packages,  repository
	    metadata, etc).

     --fetch-cache mode
	    Comma-separated list of local fetch cache modes.

     --fetch-cache-path dir
	    The directory of the local fetch cache.

     --fetch-cache-session id
	    The local fetch cache session.

     --sqlite-synchronous mode
	    Filesystem	synchronization  mode for the fetch cache and configura-
	    tion SQLite databases.

     --pkg-proxy url
	    HTTP proxy	server	to  use  when  fetching  package  manifests  and
	    archives from remote pkg repositories.

     --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.

     --git-capabilities up=pc
	    Protocol capabilities (pc) for a git repository URL prefix (up).

     --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.

     --default-options dir
	    The directory to load additional default options files from.

     --no-default-options
	    Don't load default options files.

     --keep-tmp
	    Don't  remove  the bpkg's temporary directory at the end of the com-
	    mand execution and print its  path	at  the  verbosity  level  2  or
	    higher.

DEFAULT OPTIONS FILES
     See  bpkg-default-options-files(1)  for  an overview of the default options
     files. For the cfg-create command the search start directory is the  parent
     directory	of  the  new  configuration.  The  following  options  files are
     searched for in each directory and, if found, loaded in the order listed:

     bpkg.options
     bpkg-cfg-create.options

     The following cfg-create command options cannot be specified in the default
     options files:

     --directory|-d
     --wipe

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

COPYRIGHT
     Copyright (c) 2014-2026 the build2 authors.

     Permission is granted to copy, distribute and/or modify this document under
     the terms of the MIT License.

bpkg 0.18.0			   April 2026		      bpkg-cfg-create(1)

home | help