Back to Eric\'s Home Page Up to Site Map Fri Feb 15 08:54:35 EST 2002

The CML2 Resources Page

CML2 is a configuration system, centered around a domain-specific minilanguage, that I originally wrote to replace the code that currently handles build-option selection for Linux kernels (that is, when you type `make config', `make menuconfig' or `make xconfig'). However, it is designed to be more generally useful for addressing complex configuration problems.

My 1.0.0 release announcement to the linux-kernel list is here. You can also look at project news.

To understand the design, you should read the white paper The CML2 Language and (depending on how far you want to get into the language) also The CML2 Reference Manual.

Scott Bronson has supplied a small example to help get you started on composing your own rulesets.

You can download a copy of the CML2 sources and documentation. Note: you will need Python 2.0 to run this software.

CML2 and the Linux kernel

Resources for helping Linux configuration maintainers make the transition from CML1 to CML2 are collected here.

The distribution includes a transition guide intended to help maintainers of existing Linux configuration code move to the new system.

Projects using CML2

CML2 is scheduled to be integrated into the Linux kernel source tree between 2.5.1 and 2.5.2.

CML2 is already being used in another public development effort; the Embedded Debian Project.

CML2 is also being used at Webmachines to build the embedded Linux that they blow into flash memory on their hardware. Here's an adaptation of the rulefile they use, with an explanatory header comment.

CML2 is being used to write a suite called `compache' that downloads, configures, and builds Apache.

Related resources

Niels van den Broek has written a CML2 autotester.

There is an attempt under way to produce a CML2-to-C compiler

Back to Eric's Home Page Up to Site Map Fri Feb 15 08:54:35 EST 2002

Eric S. Raymond <>