# NAME

`bpkg-default-options-files` – specifying default options

# SYNOPSIS

`bpkg command [mode-options] ...`

# DESCRIPTION

Instead of having a separate config file format for tool configuration, the `build2` toolchain uses default options files which contain the same options as what can be specified on the command line. The default options files are like options files that one can specify with `--options-file` (`bpkg-common-options(1)`) except that they are loaded by default.

The default options files are searched for in the `.build2/` and `.build2/local/` subdirectories of each outer directory beginning from the start directory and until reaching either the home directory or the filesystem root directory (both excluding). Then in the `.build2/` subdirectory of the home directory and finally in the system directory (for example, `/etc/build2/`) if configured.

Once the search is complete, the files are loaded in the reverse order, that is, beginning from the system directory (if any), followed by the home directory, ending with the start directory, and finishing off with the options specified on the command line. In other words, the files are loaded from the more generic to the more specific with the command line options having the ability to override any values specified in the default options files.

The start directory, the names of the default options files, and in which order they are loaded within each directory are determined by the `command` and potentially its `mode-options`. See each command's DEFAULT OPTIONS FILES section for details.

If a default options file contains `--no-default-options`, then the search is stopped at the directory containing this file and no outer files are loaded. If this option is specified on the command line, then none of the default options files are searched for or loaded.

An additional directory containing default options files can be specified with `--default-options`. If such a directory is a subdirectory of the start directory or is between the start directory and the end of the outer search, then its configuration files are loaded at the corresponding point in the directory hierarchy. Otherwise, they are loaded after the home directory.

The presence of the `.git` filesystem entry causes the default options files in this directory and any of its subdirectories to be considered remote. Depending on the command, some security-sensitive options may be disallowed or trigger a prompt when specified in remote options files (in the current implementation this is the case even for files from the `.build2/local/` subdirectory since the mere location is not a sufficient ground to definitively conclude that the file is not remote; to be sure we would need to query the version control system). Note that additional default options files specified with `--default-options` are never considered remote.

The order in which default options files are loaded is traced at the verbosity level 3 (`-V` option) or higher.

# BUGS

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