[LWN Logo]
[Timeline]
			READ.ME for CML2

This is CML2, the second Configuration Menu Language.  It was
originally written to support configuration of the Linux kernel, but
no kernel-specific knowledge is built into the language and it may be
useful for other tasks.

You will need Python 1.5.2 or later to run CML2.

In the Linux kernel tree, this system replaces the following files:

scripts/Configure
scripts/Makefile
scripts/Menuconfig
scripts/README.Menuconfig
scripts/header.tk
scripts/tail.tk
scripts/tkcond.c
scripts/tkgen.c
scripts/tkparse.c
scripts/tkparse.h
scripts/lxdialog/BIG.FAT.WARNING
scripts/lxdialog/Makefile
scripts/lxdialog/checklist.c
scripts/lxdialog/colors.h
scripts/lxdialog/dialog.h
scripts/lxdialog/inputbox.c
scripts/lxdialog/lxdialog*
scripts/lxdialog/lxdialog.c
scripts/lxdialog/menubox.c
scripts/lxdialog/msgbox.c
scripts/lxdialog/textbox.c
scripts/lxdialog/util.c
scripts/lxdialog/yesno.c
Documentation/kbuild/config-language.txt

To experiment, run

	cmlcompile.py kernel-rules.cml

to make a rules.out file.  To to test the Tk mode, try:

	cmlconfigure.py

To test the line-oriented mode, try;

	cmlconfigure.py -t

To test the curses mode, try:

	cmlconfigure.py -c

Some crashes have been reported in the curses front end.  If it dies
on you, mail me a copy of the file cmlconfigure.log.  This should 
enable me to recreate the problem.  (This file is removed on a
normal exit.)

For test purposes, the configuration files are generated to config.sh
and config.h; you'll have to move them to the build locations by hand.

Credit where credit is due, to the intrepid early adopters on the linux-kernel
list who helped CML2 get past its teething stage: David Kamholz, Giacomo
Catenazzi, Robert Wittams, Randy Dunlap, Urban Widmark, and André Dahlqvist.

André Dahlqvist and Drago Goricanec contributed UI code for the Tk front end.
William Stearns contributed many bus dependencies for the rules file.
Gary Lawrence Murphy translated the CML2 spec to DocBook.

This software is released under the terms of the GNU General Public License,
version 2.  When and if CML2 is incorporated into the kernel tree, the
kernel copyright holder (Linus Torvalds now and for the forseeable future)
is specifically granted the authority to change the license on this software
to conform with the kernel's policy.

To do:

* Side-effect notification in a popup?

* Dynamic panel resizing has a bad interaction with window placement 
  under Enlightenment.  Can this be worked around?

Interface glitches reported by Randy Dunlap:

tk interface
-----------------------------------
1.  The initial/opening box (window) size cuts a menu line in half.
[Hmmm...I can't reproduce this...]

2.  If I enlarge the main/primary box size and then go to a sub-menu
and return to the main menu, it's back to its original (fixed) size, not
to the size that I changed it to.  And the main menu is (currently)
small enough to fit on one screen window, without using any scrolling/
slider bar, so I should be able/allowed to do that if I (any user) want to.

3.  From the main menu, if I slide the slider bar down so that I can
see File Systems, click on File Systems, click Back to the main menu,
the portion of the main menu that is displayed is only the top N lines
of it, and does not include File Systems.  If I'm configuring in the
area of Character Devices and File Systems, I have to move the slider
down to that part of the main menu so that I can click on them
over and over again.  Instead, when I click on Back, the same lines
of the parent menu should be displayed that were displayed when I
entered the sub-menu.

4.  I don't know what causes this, but sometimes I can click to a
sub-menu and then (a) can't adjust its size, (b) can't move its box,
and (c) it's title line (at top of the box) is no longer
highlighted, even after I click on it.  I can still successfully
click on File, Navigation, and Help.  For some reason,
selecting the USB Support menu has caused this 2 times now.



curses interface
-----------------------------------
1.  In a long menu (longer than fits into one xterm screen of any size),
after changing the value of a config option, the list is (apparently)
redrawn, beginning and ending wherever cmlconfigure wants to begin
and end.  It would be "the right thing" to leave the beginning and
ending displayed lines as they were before the option was changed
instead of them jumping around at will.