How to build RPM packages of Tupi

First at all, I want to share with you the resources I was reading before starting my adventure.

A very short version:

A long version:

Advices and good hints:

This experience was done on Fedora 14, following these steps:

- Install the set of tools required to build RPM packages, as root type:

# yum groupinstall "Development Tools"
# yum install rpmdevtools

- For security reasons, RPM installers shouldn't be built by root, so try another user. In my case, the user "tupi":

# /usr/sbin/useradd tupi

- Log in as user "tupi":

# su - tupi

- Set a local environment to build the RPM package:

% rpmdev-setuptree

A new directory called "rpmbuild" will be created following this structure:


- Get the Tupi's source code and compress the directory:

% git clone
% rm -rf tupi/.git/
% mv tupi tupi-0.1
% tar cvfz tupi-0.1-5.tar.gz tupi-0.1

- Move the compressed file into the folder "SOURCES":

% mv tupi-0.1-5.tar.gz rpmbuild/SOURCES

- To create the RPM installer, it's necessary to write a configuration file with extension ".spec", in this case "tupi.spec". After some failed tries, I finally got a functional version.
Make sure you copy this file into the directory "SPECS":

% cp tupi.spec rpmbuild/SPECS

- Get in the directory "rpmbuild" and start the packaging process:

% cd rpmbuild
% rpmbuild -v -bb --clean SPECS/tupi.spec

If everything goes well, congratulations! you will find the RPM installer into the folder "RPMS":

% ls /home/tupi/rpmbuild/RPMS/i686

If you want to test it, as root type:
# cd /home/tupi/rpmbuild/RPMS/i686
# rpm -i tupi-0.1-5.i686.rpm

A short-cut of Tupi will appear in the Graphics section of your Applications menu.

In the case of Fedora 14, I had to run this command additionally, due to SELinux restrictions:

# chcon -t execmem_exec_t '/usr/bin/tupi.bin'

Note: If you update the Tupi package from Fedora 14, it's very possible that you get the next message when you try to run Tupi:
/usr/bin/tupi.bin: error while loading shared libraries: cannot enable executable stack as shared object requires: Permission denied

To resolve this problem, run these commands as root:
# execstack -c /usr/lib/
# execstack -c /usr/lib/