Tracy R Reed wrote:
I have a consulting client who has a Linux based storage appliance which is based on Fedora Core 2. I'll pause here while you laugh...
They need to upgrade to something more easily supported and CentOS is the chosen distro. They have the source RPM's for their old system stored in CVS and have a very weird/complicated build system to turn it all into an iso which I am still figuring out. They version control their source rpm's but don't really use CVS version numbers to number their distros. Instead they build an iso and name/number that and then have to keep the iso around forever.
I want to go through their CVS, pick out the stuff we want to port to CentOS and trash the rest. And keep it all version controlled at the same time. The current thinking is that we want to get off of CVS and move to Mercurial.
Given the above and that we want to customize our CentOS build what is the best way to do that? I am thinking we would like to work with the source rpm's. Putting binaries under version control which can just be built from the source seems silly. If we put the source rpm's and any associated build scripts in version control then given any particular repository version number we should be able to reproduce any installable ISO we created in the past.
I am imagining that we will have a huge source tree of exploded SRPMS and we will go through the old CVS and evaluate all of the customizations they made and whichever are worthy can be hacked into the SRPMS, RPM's get built out of these, and an ISO gets built out of the RPM's.
We install the SRPMS and move all the tar files out of SVN and into a directory, keeping all the patches and text files in SVN. We put the tarballs in a webdav directory (in a subdirectory under SRPM name)
Does all of this sound feasible?
yes
Does CentOS already have tools for automating a complete iso build from an SRPM repository?
No ... we maintain a package tree, and build the ISO from that.
For CentOS-5, building an ISO uses the anaconda runtime and the buildinstall command. Here is documentation on the buildinstall command: