In order from most to least important: It works. It’s free. It’s easy to configure. What more could you ask? There’s even a config generator. Here’s the list of packages required to build on Fedora 12
Utilizing macros can make life easier when you’re dealing with building on, and for, multiple platforms. Why bother with hard-coding full paths to system utilities when you can simply refer to them by their macro name? These can also be useful for avoiding things like rpm check-files errors, installed (but unpackaged) file(s) found, and debuginfo related stuff.
Rpmbuild’s RPATH feature is used to search libraries outside of standard paths. They are given to the linker at buildtime. If the developers of the code you’re trying to turn into an RPM did not take any of these considerations into account when they write their programs then you may be forced to skip check-rpath.
You have a bunch of related applications, each has their own Makefile that knows only about their own application, but you have dependencies where one app needs to be built before another. Here’s a skeleton bash script for building any one thing or everything.
#!/bin/bash
function build {
echo "*** …
Find the package(s) missing using YUM. It’s as easy as asking it what provides the missing files. In this case I can see from the last line which file it’s looking for but can’t find. Cut and paste the full path to the file and use it as the argument to “sudo yum whatprovides”, and it will tell you which packages include that file.
I have a build machine that runs a build script every day, but it runs on a headless server. That’s not really a problem except that I get a lot of GTK warnings because there’s no display. To get around having these useless warnings in my build log, I start a vnc server so i’ll have a display available on this machine.