[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

history of buildinstall.functions



Did buildinstall.functions (and/or mkinitrd), which is now written
in bash, used to be written in some other language, such as python?
get_dso_deps contains a comment "I still hate shell."

I have been building and testing a DVD from rawhide daily using
pungi.  Building takes about 40 to 45 minutes:  10 minutes user CPU,
14 minutes system CPU, and 16 to 20 minutes download.

I'd like that to be faster, say 8 to 10 minutes plus download.
After Bug 559647 (quadratic work: genisoimage per .rpm) then
the next longest piece is upd-instroot.  "strace -f -c" shows
that there are over 125,000 successful execve().  Now install.img
has around 14,600 files, so the average is more than 8 execve
per file.  A detailed examination using strace shows over 97,000
execve by upd-instroot:
  34573  upd-instroot execve("/usr/bin/dirname",
  15167  upd-instroot execve("/bin/cp",
  12513  upd-instroot execve("/bin/egrep",
  11478  upd-instroot execve("/usr/bin/file",
   5538  upd-instroot execve("/bin/sed",
   5010  upd-instroot execve("/bin/basename",
   3675  upd-instroot execve("/usr/bin/readlink",
   3090  upd-instroot execve("/usr/sbin/chroot",
   2264  upd-instroot execve("/bin/rm",
   1134  upd-instroot execve("/bin/ln",
   1046  upd-instroot execve("/bin/grep",
   1031  upd-instroot execve("/lib64/ld-2.11.90.so",
   1030  upd-instroot execve("/bin/uname",
    703  upd-instroot execve("/usr/bin/find",
    627  upd-instroot execve("/bin/mkdir",
     [snip]
and the culprits are instFile() and get_dso_deps() and callers.
One process making some direct calls per file, instead of
clone+execve several times per file, should be much faster.

--


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]