On Sun, 2011-06-05 at 09:46 -0400, R P Herrold wrote:
On Sat, 4 Jun 2011, Jon Masters wrote:
> On Sat, 2011-06-04 at 16:40 -0400, R P Herrold wrote:
>> On Sat, 4 Jun 2011, Jon Masters wrote:
>>
>>> Oh, it can all be done :) I'm just curious what exists already. Perhaps
>>> Dennis can help fill in some gaps here. Also, I know of at least one
>>> script already I've pinged someone else about.
>>
>> umm -- in rpm-devel package, rpmgraph has been present for a
>> long, long time
>
> Thanks for the pointer. I actually didn't know about rpmgraph. I
> probably should have, and now I do :) This gives the kind of data I am
> looking for as a good starting point. I'd like to take all of the F15
> packages and prepare some graphs to look at/discuss before Friday. In a
> perfect world, we'd have dependency data on packages so we can exclude
> non-bootstrap bits (functionality we don't need for bootstrap), but that
> data isn't available, so we'll have to cull the graph a little manually.
This information (BuildRequire-ments) is in the SRPMs and may
be queried out reasonably directly with a loop construct. The
skript monkey pseudocode looks like this:
foreach i in rpm -qp --qf '%{name}:%{SOURCERPM}\n' \
(binary-package) {
#
# use ls and grep to ID the particular SRPM to furhter
# query the SRPM
#
SRPM-package = `echo "${i}" | awk -F":" {'print $2'}`
foreach j in rpm -qp --requires \
(SRPM-package) {
#
# aggregate I and J data to taste --- lately I've been
# stuffing it into a mysql backend
#
}
}
#
************************************************************
which yields for the first case (here against the RPM
database, rather than against the package directly):
[herrold@bronson ~]$ rpm -q --qf '%{name}:%{SOURCERPM}\n' rpm
rpm:rpm-4.4.2.3-22.el5.src.rpm
[herrold@bronson alpine]$ rpm -qp --requires \
alpine-0.999-2.src.rpm
/usr/sbin/sendmail
gettext
inews
krb5-devel
ncurses-devel
openldap-devel
openssl-devel
pam-devel
passwd
sendmail
rpmlib(CompressedFileNames) <= 3.0.4-1
[herrold@bronson alpine]$
************************************
simply inventorying the binaries in a minimal build chroot,
and tracking them back to their owners tells you the bootstrap
minimum; do the tracing with 'rpm -qf (binary) '
-- Russ herrold
Right -- but the next question is, what can you build with that "minimal
build chroot"? The answer well under half -- closer to 1/3 -- of the
Fedora package collection. So the question becomes, what is the minimum
seed set needed to produce the entire package collection? And where are
there circular dependencies?
-Chris