+++ This bug was initially created as a clone of Bug #209147 +++ apologies for the length of this report. I recently tried to "rpmbuild --rebuild" all of RHEL4 (AS) from source. to speed things up, I activated swap on a large file (~ 6 GB), and then mounted /usr/src/redhat/BUILD as a 5 GB tmpfs. since my RAM was rather large (~ 512 MB), that ensured that building most small packages only involved I/O within RAM, and did not even touch the platters, because the build directory was deleted after successful builds: much faster than building with /usr/src/redhat/BUILD living in a "real" file system. most packages built fine. an exception was ecj, that kept failing with the attached log. it took me awhile to understand where the problem is, and it became clear only after I successfully built in a real file system, and discovered that the same specfile - in a tmpfs, tries to compile QualifiedAllocationExpression.java BEFORE TypeReference.java, and therefore fails - in a real file system, compiles TypeReference.java first, and all the rest goes smoothly. the core of the problem is the fact is that the find utility (used in your spec-file) does not guarantee any order in its output: it follows the order of entries in the directory it is visiting. without knowing the details of the tmpfs implementation in Linux, I guess that while in most real file systems directories are almost linear, and the order is the same as when files were extracted from the source file to the directory, in the tmpfs the order is random (maybe the directory is represented by a tree and traversed in pre- or post-order). whatever the reason, ecj might fail to build somewhere else, if directory layout has not an intrinsic order. perhaps the spec-file should order source files a priori. -- Additional comment from g.bonacci.it on 2006-10-03 11:55 EST -- Created an attachment (id=137661) failed build (compressed log file)
This is fixed in FC-6 updates (3.2.1-23.fc6) and rawhide.