Appendix B. Building

Table of Contents

Building a Binary Package
Building from Binary Package with Source RPM
Building from Source Binary package without Source RPM
Using the eSvn Makefile
Building the eSvn Documentation

Since not all computer operating systems are configured in the same standard way and their environments differ, there is a need to build packages that are specifically build to accommodate the needs of the various target systems. Many Linux distributions use the Red Hat Package Manager as the tool of choice managing packages. This quote explains what RPM is:


The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages. Each software package consists of an archive of files along with information about the package like its version, a description, and the like. There is also a related API ("Application Program Interface"), permitting advanced developers to bypass 'shelling out' to a command line, and to manage such transactions from within a native coding language.


While RPM is a standard tool for managing software packages it is not necessarily true that all software packages made with RPM can be installed on all Linux distributions. The reason being is that very often the various 'distro' have arranged their file and folder systems in ways that are different to greater or lesser degrees, depending on which two you compare. As a result it is recommended that a software is installed with a RPM that is specifically configured for the target operating system and its environment.

The tool used to build RPM packages is called rpmbuild. It is a command line tool, which is a part of the Red Hat Package Manager (RPM), that enables building of the following software package types:


Contains software to be installed


Contains the source code and recipe necessary to produce binary packages

A package consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. So a package holds together all the information required to install and uninstall a piece of software.

This appendix covers only the most basic information needed for package builders. It assumes experience with building and testing packages, especially resolving problems to configure for the target system. If you wish to build packages for a particular system using RPM and need more information about RPM a good resource to read is "Maximum RPM" by Edward C. Bailey, Paul Nasrat, Matthias Saou, Ville Skyttä.

In combination with this book we give a pretty good overview of how you can build packages for eSvn. However, before you decide to go through all this work you may first want to check at the eSvn Web Site to see if somebody has already built a package for your system.


To build eSvn the following packages and their dependencies must be installed and available on the build machine:

  • qt3-devel

  • GNU Make

  • RPM

  • A copy of the eSvn sources.