Hi, Alle sabato 6 luglio 2013, Stefan Fritsch ha scritto: > On Friday 05 July 2013, Pino Toscano wrote: > > the new version of apr fails to build on hurd-i386 [1]. > > > > During the build, the configure test for accept4 gets stuck, and > > thus the build is then killed after the timeout. > > That's interesting because the test has not changed from 1.4.6 to > 1.4.8. Maybe there was some behavior change in hurd in the last 2 > months? If you are interested, you could re-try building 1.4.6-4.
Oh right, I forgot to add earlier: basically what changed between then and now is that (e)glibc has been updated from 2.13 to 2.17, which features the implementation on Hurd of accept4. Indeed, checking the latest build log (eg for 1.4.6-4) shows | checking for accept4 support... no and compiling it on an up-to-date Hurd system shows the same stucking behaviour of that configure test. > > What happens is that inside the test the connect in the child fails > > with an errno not checked among the ones to retry the connect > > again; such errno (EADDRNOTAVAIL) may be returned while the bind > > operation (in the parent) is in progress (at least on Hurd), so > > just check it too (it is a valid errno for connect [2]) and > > continue connect'ing. > > The test is rather weird, anyway. Fortunately, there is a better one > in apr trunk. Could you give > > http://svn.apache.org/viewvc/apr/apr/trunk/configure.in?r1=832904&r2= > 832903&pathrev=832904&view=patch > > a try? Sure. This new version does not block, but it does not work on Hurd either. The problem is that, while supporting accept4 and SOCK_* in it, flags such as SOCK_NONBLOCK are not supported (yet) in socket and socketpair, so the first socket call fails straight away. Easy fix would be using fcntl to set the fd as nonblocking, which allows the test to pass on Hurd (enabling accept4). Thanks, -- Pino Toscano
signature.asc
Description: This is a digitally signed message part.