Skip to content

Unknown build configuration

make publish using=<name> selects a configuration: a set of symbols declared in project.conf as KEYSTONE_DEFINE_<name>. The name has to match a declaration, and the symbols the build defines itself are not a configuration's to set.

What it looks like

ERROR: unknown build configuration 'private'
  Declare KEYSTONE_DEFINE_private in project.conf, or select a configuration it
  declares.
  See https://keystone.knight-owl.dev/errors/unknown-configuration/#the-name-isnt-declared
ERROR: invalid configuration name 'print-edition'
  A name is letters, digits and underscores.
  See https://keystone.knight-owl.dev/errors/unknown-configuration/#the-name-isnt-valid
WARN: ignoring reserved symbol 'epub' in configuration 'private'
  The build sets the format symbols (docx epub latex odt) itself.
  See https://keystone.knight-owl.dev/errors/unknown-configuration/#a-reserved-symbol-in-a-configuration

What it means

The name isn't declared

No KEYSTONE_DEFINE_<name> in project.conf matches the name, case included. KEYSTONE_USING in project.conf selects one the same way using= does.

Declare the configuration, or select one that is

Add KEYSTONE_DEFINE_private="…" to project.conf, listing its symbols, or name a declared one in using= or KEYSTONE_USING. With both empty, the build makes the plain edition. See Symbols are build configuration.

The name isn't valid

The name becomes part of a variable name and of the artifact's file name, so it is letters, digits and underscores.

Write the name with underscores

print_edition in place of print-edition, in both the declaration and using=.

A reserved symbol in a configuration

Every build defines its format's symbol — latex, epub, docx or odt — so a configuration listing one would put that format's content in every build. The build drops it and keeps the rest of the configuration.

Remove the symbol from the configuration

To include content in one format only, see Targeting a format.