Modify

Opened 6 years ago

Last modified 6 years ago

#1042 new enhancement

Cactus should know more about allowed configuration options

Reported by: Ian Hinder Owned by:
Priority: minor Milestone:
Component: Cactus Version:
Keywords: Cc:

Description

Currently, thorns can specify which configuration options their configuration scripts use in their configuration.ccl file. Cactus itself also reads a certain set of options. There should be a list of such options, and Cactus could warn or abort if unrecognised options are included in an optionlist. This would help to avoid user error where options are misspelled or omitted.

Maintaining such a list would also help with documentation: we could ensure that each such option was documented.

Attachments (0)

Change History (3)

comment:1 Changed 6 years ago by Ian Hinder

Additionally, the default value of each option should be defined, to avoid inconsistent and buggy implementations of these defaults by thorn configuration scripts and/or Cactus.

For thorns, the possible options are currently listed under the capability definition. For example, for ExternalLibraries/HDF5, we have:

PROVIDES HDF5
{
  SCRIPT configure.sh
  LANG bash
  OPTIONS HDF5 HDF5_DIR HDF5_INSTALL_DIR HDF5_ENABLE_CXX HDF5_ENABLE_FORTRAN ZLIB_DIR LIBSZ_DIR LIBZ_DIR
}

Assuming that we want to keep this syntax, an obvious way to include the default value would be to suffix each option with "=<defaultvalue>". For example,

PROVIDES HDF5
{
  SCRIPT configure.sh
  LANG bash
  OPTIONS HDF5=BUILD HDF5_DIR HDF5_INSTALL_DIR HDF5_ENABLE_CXX=yes HDF5_ENABLE_FORTRAN=yes ZLIB_DIR LIBSZ_DIR LIBZ_DIR
}

The absence of a default means that the default value is the empty string. Note that this is different from the option being unset. I think there should be no distinction between the option being unset and it being set to the empty string, as maintaining such a distinction will likely cause confusion.

In order to maintain a list of valid options, as per the original ticket description, we could add them to the Cactus/src/configuration.ccl file. This could either be within a capability called "CACTUS" which all thorns automatically require, or we could introduce an additional syntax for this.

Once we have included all the options used by Cactus, we could eventually make it an error to include an unrecognised option in an option list file.

As a side benefit, we might also address #332 by removing all recognised options from the environment within the top-level Makefile to avoid conflicts with environment variables. Alternatively we could warn about them, so that the user can fix the problem.

comment:2 Changed 6 years ago by Ian Hinder

We could also define the convention that options with default values of "yes" or "no" are treated specially, and always converted to a canonical boolean form.

comment:3 Changed 6 years ago by Erik Schnetter

It is customary to set options on the command line when configuring, or to set them in the environment before calling configure. We may want to continue to allow this for Cactus to remain compatible with other users of autoconf. This would mean that we cannot clean the environment as suggested above.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The ticket will remain with no owner.
Next status will be 'review'.
as The resolution will be set.
to The owner will be changed from (none) to the specified user.
Next status will be 'confirmed'.
The owner will be changed from (none) to anonymous.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.