Ever built a Software which takes more than 8 hours to compile ? Well I had the opportunity to do so. I needed to build a project which was dependant on qt4.1.2 and there was no release for it being made in any Mandriva Repositories except Cooker.
So I embarked on the journey of building my own package for qt4. I managed to get hold of a spec file from the Mandriva CVS repository and then was shocked to see that it contained 27 sub-packages. There was no way I was going to sit down and do a trial and error build for this project. So I did some googling around and found this cool tool which could possibly do all the hard work for you. Its called checkinstall.
Checkinstall is a software which helps you in building an RPM from the last step of the install process of a package you have compiled. For example when you compile a software with ./configure; make; make install, you are actually compiling and installing a software onto your system. The third command “make install” is when you are actually installing the binaries into the appropriate location.
To use Checkinstall, you first run ./configure and make to build your program, then run checkinstall. Checkinstall will run then run “make install” (or whatever you tell it to run) and keep track of every file modified by this installation. In the end it will ask you for the package specific details like package name, source location, dependencies, etc. When “make install” is done, checkinstall will create a Slackware, RPM or Debian package depending on which distro you are using checkinstall. Now this package can be installed like any other package on your system.
The only downside is that it does not prepare you a source-package nor does it create sub-packages… ofcourse I am asking for too much intelligence there. The good side is you don’t have to worry about your spec file failing due to some silly mistake you made, especially when you are building a monstor package like qt. So if you are looking for the easy way out to build RPM packages for yourself, give checkinstall a go.