Previous | Contents | Next


3. System Administrator Notes

3.1 Dependencies

In order to compile and run mtCellEdit you must have several packages already present on your system:

These must also include library headers, which some operating systems provide in separate packages.

mtCellEdit then requires various libraries that I have created:

Package Dependencies Description
mtKit zlib Low level C routines, including strings, UTF-8, ZIP file handling, preferences, trees.
libmtcelledit mtKit The spreadsheet engine, including all file handling and general operations.
mtPixel mtKit, Freetype (optionally libpng, libjpeg, giflib) The pixel graphics engine, e.g. font rendering.
mtCedUI mtKit, libmtcelledit, mtPixel, Cairo Toolkit agnostic UI code, e.g. graph and sheet rendering.
mtGEX mtKit, mtPixel, GTK+2 Various GTK+ version 2 function utilities including a file picker, colour picker, and preferences editor.

The other optional parts of the suite have these dependencies:

Package Dependencies Description
mtCedCLI mtKit, libmtcelledit, mtCedUI, readline Command line spreadsheet
mtCedUtils mtKit, libmtcelledit Command line text tools
mtCelledit_Desktop None Desktop integration for mtCellEdit
mtCelledit_Handbook None HTML documentation
mtEleana mtKit, libmtcelledit, mtPixel, mtGEX, GTK+2 General election analysis
mtJigsaw mtKit, libmtcelledit, mtPixel, mtGEX, GTK+2 Simple jigsaw puzzle
mtNetlog mtKit, libmtcelledit Network logging
mtOTP mtKit, libmtcelledit One time pad
mtRaft mtKit, libmtcelledit, GTK+2 Directory analysis

3.2 Compilation

As outlined above you must build and install the packages in this order:

In all cases you use these commands to compile the programs:

  ./configure
  make

Don't forget to study the makefile and configure script before doing anything. For the complete set of configure options use:

  ./configure --help

The build system I have created uses simple hand built scripts and makefiles. I find this the best way to build the various components of the project. More elaborate systems like autoconf are of no interest to me as they do not solve any problems I have. Autoconf also creates an unwanted drain on my time, and wastes computer CPU cycles.

3.3 Installation

Once compilation is completed, use this to install (you must have root user rights):

  make install

You can change the destination directory at this stage if you are creating a package by using:

  make install DESTDIR=/my/chosen/directory/

3.4 Uninstalling

You can uninstall the program and libraries by using (you must have root user rights):

  make uninstall

You will also need to remove any preferences files which are kept in the user directories such as /home/user/.mtcelledit

3.5 Package Management

I aim to get my software working on as many different GNU/Linux systems as possible. To achieve this rationally without testing on hundreds of systems, I work towards compatibility with these system types: Debian, Fedora, Arch, and Slackware. In doing so I will also achieve compatibility with derivative systems such as Lubuntu, Manjaro, Salix, and dozens of others that use the main system types as a base.

I also aim to get everything working on x86_32, x86_64, and Arm hardware.

To achieve these goals as quickly and as easily as possible I use various scripts in the /pkg/ directory to install and test the software (including how I package the software using native package management tools such as pacman, dpkg and rpm). The README.txt file in /pkg/ documents how I do these things, step by step.

The scripts for the different systems all do very different jobs but their interface at the command line is identical. For example to build and install on different platforms using the native package management system you could use:

  ./build_arch.sh --preconf "CC=clang"
  ./build_debian.sh --conf "debug -O3"
  ./build_fedora.sh --conf "--libdir=/usr/lib64"

If your system doesn't use pacman, dpkg, or rpm then you can always use the classic ./configure, make, make install based script using the same arguments:

  ./build_install.sh --preconf "CC=clang" --conf "--libdir=/usr/lib64"

And if you want to remove all of the installed packages from your system, just use one of these:

  ./build_arch.sh remove
  ./build_debian.sh remove
  ./build_fedora.sh remove
  ./build_install.sh remove

Here are the options that are available to these 4 scripts:

flush Clear out the temporary files after a compilation.
remove Remove all installed files from a previous build and install.
--preconf ARG Add environment variable settings such as CC or CFLAGS.
--conf ARG Pass arguments to the configure script such as --libdir or debug.
--bcfile ARG If you want to pass different configure lines to different packages you would use a custom built bcfile. See bcfile_slackware.txt in /pkg/ for an example of this.

Normally all of the different packages are built in sequence. However you can also pass specific package names to build and install just those items, such as:

  ./build_install.sh mtkit libmtcelledit mtnetlog

To remove these items you would use:

  ./build_install.sh mtkit libmtcelledit mtnetlog remove

Previous | Contents | Next