[Arm-dev] CentOS 7 ARMv7 build status

Mon May 25 09:10:22 UTC 2015
Fabian Arrotin <arrfab at centos.org>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 24/05/15 15:26, 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?
> 

Well, plague is nothing more than a distributed system on top of mock.
So one thing to keep in mind is that plague will "just" submit the
SRPMs in the order you submit/upload those. But then, it doesn't
"chain" those, so if you submit srpm A,B,C, and that you have three
builders, each one will get a job .. but if package B needs A as
BuildRequires, it will fail, and also when a package will need a
package still compiling/building.
That's the reason why I just used mock directly on one of the plague
builders to init the c7-buildroot. I used yum-builddep to do what you
described too, but , as Jacco pointed out too, yum-builddep just shows
the BuildRequires, but then you also have to build the packages that
are themselves listed a Requires: for those packages in the buildroot.
I got a "self-contained" buildroot last wednesday (as explained in the
first mail in that thread) and started to submit all SRPMS then in plague.
Problem is that EL7 (same for previous versions) doesn't build on
itself cleanly, and has some circular dependencies.

Just as an example, for bash, as you said, you need bison, which then
needs perl-data-dumper .. but the issue with perl-data-dumper is that
itself it needs perl-test-simple, which itself needs perl-data-dumper
(inception ! :-) )
So in that case, I had to bootstrap from somewhere and I built
perl-data-dumper (7.1406 srpms) in a "staging" repo (against f19) to
have a starting point, then rebuild it with plague against that
buildroot including that specific package (see
http://armv7.dev.centos.org/rpmbuild/c7-pass-1/5787-perl-Data-Dumper-2.145-3.el7/armv7hl/root.log)

It would be good to see if we can have all the mandatory packages for
a minimal install, and then work on a RootFS (isn't that what you were
interested in ? ) and see if we can produce various images for some
armv7hl boards (and then the fun begins, with probably all the
variants, and different way of booting those)

- -- 

Fabian Arrotin
The CentOS Project | http://www.centos.org
gpg key: 56BEC54E | twitter: @arrfab
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iEYEARECAAYFAlVi5v4ACgkQnVkHo1a+xU7LRQCgkdY+1QOWYU3xWZVyjelvjNpO
A/wAn0b/3/brenlKfFjrCswXYXjZKsqw
=Wh94
-----END PGP SIGNATURE-----