On 05/24/2015 03:26 PM, Mandar Joshi wrote: >> Actually, I'm also using the list of packages in failed status, to >> requeue those at the end, automatically. A best option would be to do >> that in a "clever" way, so trying to build a map of BuildRequires: and >> so which package would need to be built before another one, but my >> time is limited at the moment ( <hint> welcome ! </hint> ) >> > I do not know if there is an easy way to do this but I was just > playing with the code for yum-builddep and it seems that with better > understanding of yum internals we can use the code in it to generate > an ordered list of packages to compile. > > yum-builddep installs packages required to build a particular src.rpm > on the "current" system. We can't use yum-builddep directly because we > do not have an installed CentOS ARM to run yum-builddep on but we can > use its code on an x86_64 to find dependencies for packages we want to > compile. > > I put a simple print statement in the get_build_deps function and was > able to get a dependency list for a package. For input 'bash', I got > the list as > ------------------ > texinfo > ncurses-devel > gettext > bison > autoconf > ------------------ > We need to do this recursively until we reach a point where the only > dependencies are ones satisfied by our buildroot. eg. libtool > Then we feed this list to plague and have it compile packages in the > order we desire. My understanding of plague is limited at this point > but I do foresee a problem. If we do generate a list of packages in > the right order, how do we make sure plague doesn't mess up the order > in the process of distributing the compile jobs to plague-builders? > Could we use just one plague-builder instance and use the processing > power of remaining nodes with DistCC? > > I am new to this. So if there is any flaw in my approach please correct me. Keep in mind that, besides the builddeps, you also need the regular install deps. To follow your example, you need to build autoconf before building bash. At this point you'll need all the build requirements for autoconf AND all the install requirements for autoconf. Next to that, there will be *many* circular dependencies, which will need to be resolved by hand. Sometimes one of the items in such a circle has a 'bootstrap' option in the spec file, but more often you'll need to find a good replacement rpm from another repo (or a noarch from the regular C7) I've been down this road once and it's a lot of work to resolve all the issues. My advise would be to build all against F19, so you'll have a good starting point and then do it again. Especially, because you seem to have enough CPUpower to not mind building things more than once. (I have not tried this myself) autoconf is, by the way, a nice example. This was one of the packages I wanted to build first, because it was needed so often. It ended up being build as one of the last, because of it's many dependencies. IIRC if you follow the tree, you'll need kde, openoffice, tex and a whole lot of other packages. Good luck, Jacco