On Tue, 27 Sep 2011, Ljubomir Ljubojevic wrote:
Can someone point me in the right direction? How do you compile multiple packages continuously with mock?
I have some 50 srpms waiting to be recompiled via mock for both i386 and x86_64 (again).
Is there a command I can give so all the packages are compiled in one go?
Do I have to sort them in proper order (dependencies) or can I just
command to mock to check and sort them?
A naiive build algorithm simply submits and checks the return
Build Requirements are readily queriable, and testable as to whether they are met; as such one need not pay the time cost of enqueuing a build that is pre-ordained to fail by doing minimal checking first
Driving such a system off of versioned BR's require a bit more logic than that of the last paragraph, and may not always be 'correct'
Mutual cross-dependant BR's require manual solution 'out of band' of a submission engine, usually by 'short circuiting' around one missing 'leg' of such a cross-dependency; this kind of issue can also solved in .spec file conditionals logic, keyed on '--defines', although this is not seen in the CentOS project's upstream very often
From my notes on the topic:
[herrold@centos-5 R2spec]$ cat aa_README
To break dependency loops
1. identify a pair (or more) of affected packages
2. note up top the circular: # circular on: R-acme and R-beta -- parent seems to be: R-acme
3. add to each package: 1) %check conditional header, see: R-graph.spec
of the form:
# check by default -- to break circular BR's use: # $ rpmbuild --define 'nocheck 1' [--nodeps] ... %define docheck 0 %if "%{nocheck}" != "1" %define docheck 1 %define nocheck 0 %endif
2) mark the Release, and
of the form:
Release: 1%{?dist}.%{docheck}%{nocheck}
3) %check stanza patches
of the form:
%if "%{docheck}" == "1" %check %{_bindir}/R CMD check %{packname} %endif
4. build the likely parent with the following:
rpmbuild -ba --nodeps --define 'nocheck 1' acme.spec
5. Assuming the acme build succeeds, install it 'nodeps' thus:
sudo rpm -Uvh --nodeps acme-result.01.whatever
6. Assuming the acme install succeeds, build the subordinate in a usualfashion:
rpmbuild -ba beta.spec
7. Assuming the beta build succeeds, install it conventionally:
sudo rpm -Uvh beta-result.10.whatever
8. Assuming the beta install succeeds, build the parent in a usualfashion:
rpmbuild -ba acme.spec
9. Assuming a clean build, remove the bootstrap 'acme' binary thus:
sudo rpm -e --nodeps acme - and - sudo rpm -Uvh acme-result.10.whatever
10. files ending in ".01" are still needing solution and a non-nodeps build; files ending: ".10" are done
rpm -qa | grep ^R | grep ".[01][01]$"
[herrold@centos-5 ~]$ rpm -qa | grep ^R | grep ".[01][01]$" R-Hmisc-3.6_0-1orc.01 R-sm-2.2-1orc.10 R-igraph-0.5.2_2-1orc.10 R-rpanel-1.0-1orc.10 R-maps-2.1-1orc.10 R-graph-1.22.2-1orc.10 R-mapproj-1.1_7.2-1orc.10 [herrold@centos-5 ~]$ date Tue Jun 2 12:27:57 EDT 2009 [herrold@centos-5 ~]$
and R-Hmisc is blocked by packaging problems in: R-TeachingDemos and R-Design
---------------------- ~/build/R/R2spec/aa_README rev: 090608
============================
A sample .spec file demonstrating this is at:
http://gallery.herrold.com/R-Hmisc.spec
As I have mentioned before, I have privately packaged most of the R finance, stats, and econometric packages. Not all are of a License re-distributable form, sadly
- Russ herrold
-- end ================================== .-- -... ---.. ... -.- -.-- Copyright (C) 2011 R P Herrold herrold@owlriver.com My words are not deathless prose, but they are mine.