proposal for common configuration elements for ITAPS services
Vitus Leung
vjleung at sandia.gov
Fri Aug 27 08:51:55 CDT 2010
Jason,
I have a concern about the second difference from common systems in that a single system for all libraries, ITAPS and non-ITAPS, might be easier for the user.
Vitus
On Aug 26, 2010, at 5:45 PM, Jason Kraftcheck wrote:
> We have decided on common configuration options used to specify the
> ITAPS implementations to be used by services. I think that it would be
> nice if all ITAPS codes followed a common convention for these options.
> I propose that the group adopt the system we use. I'll describe the
> system and the reasoning behind the choices below.
>
>
> The system we have decided on uses autoconf variables that point to the
> i*-Defs.inc file provided by the implementation. The names of the
> variables are all-uppercase of the form I*_DEFS. An autoconf variable
> is created in the configure.ac with a statement like the following:
> AC_ARG_VAR( [IMESH_DEFS] , [Path to iMesh-Defs.inc] )
>
> The following are examples of three slightly different syntaxes that can
> be used to configure Mesquite with iGeom and iMesh support:
>
> Example 1:
> ./configure IMESH_DEFS=/home/jason/moab/lib/iMesh-Defs.inc \
> IGEOM_DEFS=/home/jason/cgm/lib/iGeom-Defs.inc
>
> Example 2:
> IMESH_DEFS=/home/jason/moab/lib/iMesh-Defs.inc \
> IGEOM_DEFS=/home/jason/cgm/lib/iGeom-Defs.inc \
> ./configure
>
> Example 3:
> export IMESH_DEFS=/home/jason/moab/lib/iMesh-Defs.inc
> export IGEOM_DEFS=/home/jason/cgm/lib/iGeom-Defs.inc
> ./configure
>
>
> This system differs from other common ones in two significant ways.
> Firstly, it uses an autoconf variable rather than an --enable-* or
> --with-* flag. Secondly, the value is expected to be the full path to
> the *-Defs.inc file, rather than some directory containing the file.
>
> The reason for the first choice (autconf variable) is that it makes
> configuring many services that are all build against the same
> implementation(s) (e.g. all services are to be used in the same app) to
> be configured more easily. A statement like
> export IMESH_DEFS=/home/jason/moab/lib/iMesh-Defs.inc
> will store a value in the shell environment that can be used by all
> subsequent configures of different services without specifying it again.
>
> Allowing the value to be specified as an environmental variable is also
> more likely to be compatible with build systems that are implemented
> wiht cmake. Cmake has a very different syntax for command line
> arguments, but can still access environmental variables.
>
> The reason for the second choice (full path to *-Defs.inc) is that it is
> the most straightforward and least error prone way to implement the
> configure script. It is also entirely sufficient: the defs file should
> contain all the information the service needs. No other path
> information should be necessary. Many implementations currently accept
> a value that corresponds to the --prefix where the implementation was
> installed. They then expect the defs file to be at the libs/*-Defs.inc
> relative path. This will break if --libdir was specified explicitly to
> the configure script as something other than the lib/ subdir of $prefix.
> It also precludes using the i*-Defs.inc files from un-installed MOAB
> or CGM builds (which is supported).
>
> Another useful feature of this is that it is proof against non-standard
> names for the *-Defs.inc files, for example if a file must be re-named
> to avoid conflicts with another implementation. Finally, it is the
> least error-prone for the user if they are using tab-completion in the
> shell because by the time they have the whole option specified the shell
> has verified that it is correct (to have reached the file with tab
> completion, the file must exist.)
>
> - jason
>
>
>
>
More information about the tstt-interface
mailing list