CM3 5.5.1 Installation on Ubuntu 7.10 and Similar GNU/Linux Distributions

(c) 2008-2009 by Elego Software Solutions GmbH

This document is published under the same license as cm3 (Critical Mass Modula3), which basically means that it is free to change and/or distribute under certain conditions, and that there is NO WARRANTY OR RELIABILITY of any kind. Refer to CM3's license information for further details.

Last full review: 2008-February-16

Last minor update: 2009-April-11

Author: Neels Janosch Hofmeyr (

This document is based on these installation notes:

However, this document gives more specific information that applies to Ubuntu 7.10 and possibly other Ubuntus and GNU/Linux distributions.

(It has been reported to work for Ubuntu 8.04)

Here we go...



To follow these instructions as they are, you need write access to /usr/local. You may choose to do the installation as root entirely, but you would have to make sure root's environment variables are set correctly. It is easier (and safer) to give a standard user access to /usr/local like this, where `fred' stands for your username:

  sudo -s
  addgroup local
  usermod -a -G local fred
  chgrp -R local /usr/local
  chmod -R g+rw  /usr/local
  exit  # exits root shell to become fred

In order for the group changes to take effect, you might have to relogin your user (end X session and login again).

Now, you are user fred and can run the commands given here as they are.

Before you start, be sure to have these packages installed:

  gcc (the GNU compiler collection)
  binutils (for ar and as)
  flex (for libfl.a)
  libncurses5-dev (for libtermcap)

Furthermore, cminstall will look for the following packages/libraries, which are only necessary if you want to develop applications that use these libraries; you can choose to not install these and ignore errors from cminstall as described below. Otherwise, install these packages:

  libpq-dev (for
  freeglut3-dev (for,
  unixodbc-dev (for
  libmotif-dev (for
  libx11-dev (for a series of libX*.so files)

Also, in order for cminstall (below) to find some of the X11 libraries, you have to create symbolic links:

  cd /usr/lib
  sudo ln -s
  sudo ln -s

(If any other library file is not found, try to locate it using and install the appropriate package or add symbolic links to account for slight name differences as above)


First, let's do the minimal binary installation.

Download a cm3-min-POSIX-LINUXLIBC6* (or cm3-min-LINUXLIBC6*) package to your Desktop, from

(i.e. one of


Note that most earlier minimal binaries do not work, so stick with d5.5.1 or later. The following versions are known to succeed:


You will find an appropriate checksum on

or just use the commands from this screenshot:


  $ md5sum cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz 
  ba70f9511a2bd3da912935dbcf3df423  cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz

  $ wget -q -O - | grep cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz
  -rw-r--r-- 1 neels   m3  8215951 2009-04-11 22:51 uploaded-archives/cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz
  596342621 8215951 uploaded-archives/cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz
  ba70f9511a2bd3da912935dbcf3df423  uploaded-archives/cm3-min-POSIX-LINUXLIBC6-d5.7.0-2008-04-24-14-00-04.tgz


Note that the tarballs do not unpack to a subdirectory but to the current directory, so run these commands:

  mkdir ~/cm3-min
  cd ~/cm3-min
  tar xzf ~/Desktop/cm3-min-POSIX-LINUXLIBC6-d5.6.0-2008-02-13-03-35-02.tgz

Ideally, cminstall will just succeed. If it asks any questions, that's because it could not find some library. Below are the would-be correct answers.

Note that, if one of the libraries is not installed and if you furthermore choose to skip that library, you can answer the questions like shown for OpenGL and X11 below: first choose the default by hitting enter, then answer no, finally answer yes.

(Again, note that none of these questions have to be answered if the libraries are all being found)

  Where would you like the system installed? /usr/local/cm3 
  What should be the default text editor for new Reactor users? /usr/bin/vi
  Where are the flex/bison libraries? /usr/lib
  Where are the Postgres95 libraries? /usr/lib
  Where are the OpenGL libraries? /usr/lib
  The libraries are not present in the chosen directory.
  Would you like to change the library names? no
  Would you like to continue nonetheless? yes
  Where are the ODBC libraries? /usr/lib
  Where are the Motif libraries? /usr/lib
  Where are the X11 libraries? /usr/lib
  The libraries are not present in the chosen directory.
  Would you like to change the library names? no
  Would you like to continue nonetheless? yes
  Where is your C compiler? /usr/bin/gcc
  Where is your library archiver? /usr/bin/ar
  Where is your assembler? /usr/bin/as

That's all for cminstall. You have installed the minimal cm3 compiler to /usr/local/cm3.

Now, we need to register cm3's path locations (not entirely unlike the instructions given by cminstall's output).

(The following two sudos are needed regardless of write permission to /usr/local)

To adjust PATH, as root, edit the file



  sudo gedit /etc/environment

) and add the PATH element /usr/local/cm3/bin, to yield a line like this:


To adjust your library path, run

  sudo -s
  echo /usr/local/cm3/lib > /etc/

, which creates a new single-line file in /etc/ (Note that `sudo echo ...' does not work because of the `>' pipe.)

To check whether this worked, make sure that the cm3 path elements are added to the environment variables. First, you have to open a new shell to update the environment (just run `bash' or open a new terminal window). Then run

  echo $PATH

which should print a line including /usr/local/cm3/bin -- something like


. Then, try running

  cm3 -version

, which should print something like

Critical Mass Modula-3 version d5.6.0-2008-02-13-03-35-02
  last updated: 2008-01-31
  compiled: 2008-02-13 04:01:27
  configuration: /usr/local/cm3/bin/cm3.cfg

. Great, the minimal binary installation is now complete! However, there is not much you can do with this cm3, yet.


Let's continue with downloading and compiling the full cm3 sources.

Upon writing this file, the newest available stable tarballs (version 5.4.0) are too old. So, you have to go about downloading the cm3 sources from CVS like this:

(CVS instructions adapted from )

  cd   # (go to your home directory)
  cvs -d login

When prompted for a password, just hit Enter.

Now you can choose to take the exact state that worked when writing this file, or to use the newest available sources.

The sources that worked for me are obtained via:

  cvs -z 3 -d checkout -D "2008-02-15 23:50" cm3


  cvs -z 3 -d checkout -D "2008-01-24 23:52" cm3

The most recent sources, as of the time that you are running the command, are obtained via:

  cvs -z 3 -d checkout cm3

This will download the complete cm3 sources and may take a while.

(I added a `-z 3' argument to use level 3 compression for transferring the data, to speed up the download.)


Now we're ready to start compiling the full-featured cm3 compiler, using the minimal cm3 compiler from above:

  cd ~/cm3/scripts
  ./ buildship
  ./ upgrade
  ./ buildship

These lines will compile for a long time, producing lots of output. Make sure that each of them exited without errors. If some of the libraries were missing upon cminstall (above), some packages may not compile successfully. It may help to run

  ./ buildship

a few more times.

[TODO: how to exclude certain packages from compilation and shipping]

If these commands complete without issuing error messages in the last few lines, your cm3 installation was probably successful. Again, verify that your full-featured cm3 is working. Run:

  cm3 -version

and expect similar output as above, but showing data matching the compiled version:

Critical Mass Modula-3 version d5.6.0
  last updated: 2008-01-31
  compiled: 2009-04-11 23:05:21
  configuration: /usr/local/cm3/bin/cm3.cfg


You can now free some disc space.

You will definitely want to remove the minimal binary files. You won't need them anymore:

  rm -rf ~/cm3-min

If you want to make changes to the cm3 compiler itself, you can keep the sources at ~/cm3 for rebuilding at a later stage. Otherwise, just remove these as well:

  rm -rf ~/cm3

If you also remove the downloaded files from your Desktop, this leaves your home directory as it was before you started the installation.


Congratulations, you have just installed Critical Mass Modula3!

Thank you for using Critical Mass Modula3 - for further questions, feel free to contact