.. -*- mode: rst -*-

.. _packages:

.. _CentOS: http://www.centos.org/
.. _Red Hat/RHEL: http://www.redhat.com/rhel/
.. _Scientific Linux: http://www.scientificlinux.org/
.. _EPEL: http://fedoraproject.org/wiki/EPEL
.. _RPMForge: https://rpmrepo.org/RPMforge


Building RPM packages from source
=================================

The Bcfg2 distribution contains two different spec files.

Building from Tarball
---------------------

* Copy the tarball to ``/usr/src/packages/SOURCES/``
* Extract another copy of it somewhere else (eg: ``/tmp``) and retrieve
  the ``misc/bcfg2.spec`` file
* Run ::

    rpmbuild -ba bcfg2.spec

* The resulting RPMs will be in ``/usr/src/packages/RPMS/`` and SRPMs
  in ``/usr/src/packages/SRPMS``

Building from an GIT Checkout
-----------------------------

* Change to the ``redhat/`` directory in the working copy
* Run ::

    make

* The resulting RPMs will be in ``/usr/src/redhat/RPMS/`` and SRPMs
  in ``/usr/src/redhat/SRPMS`` and will have the SVN revision appended

Building RPM packages with ``rpmbuild``
---------------------------------------

While you can go about building all these things from source, this
how to will try and meet the dependencies using packages from EPEL_.
The *el5* and the *el6* package should be compatible with CentOS 5.x.

* Installation of the EPEL_ repository package ::

    [root@centos ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-6.noarch.rpm

* Now you can install the rest of the prerequisites ::

    [root@centos ~]# yum install python-genshi python-cheetah python-lxml

* After installing git, check out the master branch ::

    [root@centos redhat]# git clone git://git.mcs.anl.gov/bcfg2.git

* Install the ``fedora-packager`` package ::

    [root@centos ~]# yum install fedora-packager

* A directory structure for the RPM build process has to be established. ::

    [you@centos ~]$ rpmdev-setuptree

* Change to the *redhat* directory of the checked out Bcfg2 source::

    [you@centos ~]$ cd bcfg2/redhat/

* In the particular directory is a ``Makefile`` which will do the job of
  building the RPM packages. You can do this as root, but it's not
  recommended::

    [you@centos redhat]$ make

* Now the new RPM package can be installed. Please adjust the path to
  your RPM package ::

    [root@centos ~]# rpm -ihv /home/YOU/rpmbuild/RPMS/noarch/bcfg2-server-1.0.0-0.2r5835.noarch.rpm
