On Fri, Dec 19, 2008 at 10:27, Andrew Haley <[email protected]> wrote: > As an example of the cost of building on old boxes, OpenJDK contains > prototypes for epoll(7) that are incorrect for some arches. These
We are changing the subject slightly from portability of binaries to portability of sources. > prototypes exist because epoll didn't come into existence before > Kernel 2.6(ish), and OpenJDK was being built on an old box, so the > prototypes were copied from the kernel headers on (I think) an x86 > box. This bug causes bizarre and hard to debug behaviour on non-x86 > arches. > > At some point you have to get rid of cruft like this. If not now, > when? Obviously opinions differ on how long to support older platforms. "Kids these days..." think 2 years is old. When I was maintaining an open source project, I tried to maintain a portability horizon of at least 10 years. Seriously. I would like people to be able to build my software on that old Irix machine they picked up at a garage sale. For problems like changing prototypes, we have configure. Sure the following example is ugly cruft, but we can wait one more decade before nuking it. dnl If `getpgrp' takes no argument (the POSIX.1 version), define dnl `GETPGRP_VOID'. Otherwise, it is the BSD version, which takes a dnl process ID as an argument. AC_CHECK_FUNCS(getpgrp) AC_FUNC_GETPGRP Martin
