Obeah Version 1.2 Obeah provides a simple interface to the configuration of Makefiles (or other systems). When run as a configuration script it sources a file called configure.in which contains tcl code that defines what is to be done. When the user has set up the required values and clicks on the install button, make is executed, parameterised by the values provided, using the file "program".mk as its input file. Setting the "Help" check button will give help information for buttons and fields when the mouse enters them. The buttons on the configuration window act as follows : Quit - exit the program. If there are unsaved changes you will be prompted. Reset - reset *all* the fields to their default values. Typing in a field will reset it individually. Clear - empty *all* the fields. Individual fields can be cleared by typing when the focus is in the field. Verify - runs tests on the values on the fields to make sure they are OK. Save - saves the values you have entered in the configuration input file. Install - Executes make install. Help - enables or disables help information display. If obeah is started with the -c option it allows you to create the configuration input file. It permits the creation of new fields that can be modified by the user and allows various verification procedures to be called to ensure that the values are correct. Invisible fields can also be added - that is values that can be passed to make but which are not configurable by the user. In -c mode it is possible to add references to other fields into the values of other fields. Simply single click on the field whose value you want substituted and a reference to it will appear in the field holding the focus. Nested and repeated references are allowed, but not recursive ones!! A reference looks like ${Label} where Label is the label of the field to be substituted. Button 2 held done over the label of a configurable field will allow you to re-position it by dragging. It is also possible to add new buttons to the configuration window to reflect any special features you would like to have. Because the configuration file is sourced it can be used to contain definitions of any of extra procs that are needed. You can also remove the default buttons provided if they do not reflect what you wish to happen. At the moment obeah supports only a small number of verification procedures for values : specifying "ob_dirCheck" will check that the value given is a directory, that it exists and if it doesnt that you have write permission to its parent. specifying "ob_interpCheck" will check that the value refers to a valid tcl interpreter. interpCheck must have a parameter specified (which can be {}) containing pairs of values giving a command to execute in the interpreter and a pattern describing the expected result. This allows you to test for various features being present or absent in the interpreter specified. In create mode, clicking the program button will create shell script that executes wish with a cut down obeah as its input. This allows you to create tailored configure programs for particular applications. The name of the configuration file is built in to this script so does not have to be configure.in (which is the default). The cut down program does not contain any of the creation features. Obeah provides a few procs that you can call as the action associated with a button : ob_runMake : Takes the make option you wish to execute as a parameter and executes make using the make input file associated with this script (default .mk). The execution is passed all the values that have been set up (both invisible and configurable). Example : ob_runMake install ob_mkdirs : Takes as it parameter the names of directorie sthat you wish to be created. Example: ob_mkDirs /usr/local/progam /usr/local/progam/bin ob_run: Takes as its parameters the command you wish to execute. Before executing command it sets up environment variables using the make variable names associated with the configurable and invisible values and initialises them to those values. Example : ob_run ls -l Make sure you get your quoting right here when calling these functions!! Your help messages may contain the sequence %p which will be substituted with the name of the program being configured. Please send me any bugs or feature requests. Lindsay.Marshall@newcastle.ac.uk