-----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-----