[Arm-dev] CentOS 7 ARMv7 build status

Sun May 24 14:33:08 UTC 2015
Jacco Ligthart <jacco at redsleeve.org>

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