* Add more XXX comments for future work
* Only record a cvsdone timestamp if we updated cvs
* When building with -trybroken, it's safe (and desirable) to run the
prunefailure script
* Reorganise a few things for better parallelism
* Instead of keeping a duplicate copy of the previous logs and errors
under bak/, just store a symlink to the archival location
* When doing an incremental build, also cycle out the old logs to avoid
broken links on the website (the logs from the previous build are
removed until the packages are rebuilt). Use cpio to create
hardlinked copies of the previous logs. XXX when these are bzipped
by cron to save space the links will be broken and it might actually
take more space.
* Don't bother bunzipping old logs, now that the processlogs scripts
can handle it. This was a waste of time anyway since they'd all be
rebzipped by the next nightly cron job.
* When the build is complete, stash a copy of the restricted ports in
bak/restricted/ before deleting them from packages/, and restore from
here when doing an incremental build to avoid needlessly rebuilding
them each time.
* Increase sparc64 build timeout to 24 hours (we have so few build
machines that we cannot afford to tie them up for longer)
* Increase other arch build timeout to 100 hours (hello openoffice!)
* If we successfully build a formerly broken package, touch errors/.force
which will kick off a rebuild of the html files
* Use a generation number for the bindist tarballs, with compatibility
symlink. Eventually we'll use this to avoid building in a "stale"
chroot (i.e. populated by old world).
* Don't bother running ldconfig on i386, it is evidently not needed since
the other arches work fine without it
* Don't try and mount/umount procfs, it won't work when we build inside a
jail.
* Report the uname -mr of the build environment, to ease confusion of
people reading the error logs by mail.
- Remove obsolete explanations which are no longer seen, for speed:
ELF, MOTIF, MOTIFLIB, X_manpage, awk, bison, ffs_conflict, forbidden,
getopt, getopt.h, imake, lc_r, malloc.h, pod2man, sed, stl, soundcard.h,
texinfo, union_wait, values.h
- Add more cases to: arch, bad_c++, compiler_error, depend_object,
install_error, linker_error, mtree, perl5
These changes reduce many dozens of false positives; add a few dozen
true positives; and for certain directories, improve the speed about 10%
(a few drop by 15%).
It turns out that the performance issues are mainly due to the multiple
greps. If performance is an issue we need to go back to the moderately-
unreadable, everything-on-one-line paradigm. Before that happens, I would
like to experiment with some refactoring, so that the patterns are built up
in the shell line-by-line, so you could still be able to read it.
Tested on: pointyhat
Hat: portmgr
script, i.e. so they can be moved back into place before start the next
incremental build so they won't be needlessly rebuilt every time (jdk, I'm
looking at you). It is a bit of a hack since it relies on assumptions
about the structure of that shell script, but for now it's the best we
can do.
server. Error conditions are flagged by other processes by creating
a named dotfile in ${scratchdir}. If these files are found, report the
error status instead of the number of running jobs. Currently report "ERR"
for all error conditions; I will probably change this to a per-condition
message.
Currently only "squid not running" and "disk space low" conditions are
reported.
If the package copy fails, bail out immediately instead of later on when
we try to pkg_add it. Also trap signals and bail out.
Both conditions will cause a retry of the package build.
If portbuild bailed out unexpectedly, mail the log to ${mailto}.
Add some XXX comments about improving robustness of this script.
Sleep for 2 minutes before retrying builds, to avoid spamming ${mailto}
with a high rate of failure logs. In future we might be smarter about
attempting to automatically correct common failure modes.
* Test whether squid is running. If not, try to kick off
the rc script in the background in case it can be restarted
cleanly.
* Test for at least 100MB of free space on the scratch partition.
If either condition fails, set an exception flag and bail out. This
will be reported back to the server via reportload.
cause is because it was specified in the list twice)
* Don't panic when the list of packages to delete becomes empty
* When unexpected filesystem changes are detected, bail immediately
instead of proceeding and hiding the error in the middle of
the log