It looks like we are still missing some instances of  EINTRLOOP() macro
usage. The gcc5 build with fink make still fails with the proposed fix
starting at...

make[5]: *** read jobs pipe: No such file or directory.  Stop.
make[5]: *** Waiting for unfinished jobs....

and resulting in....

make: INTERNAL: Exiting with 1 jobserver tokens available; should be 8!

I am certain that the issue is missing instances of EINTRLOOP() on file i/o
in make 4.x but we will just have to weed through all of the different
cases. This makes sense as the exact initial context of the make error does
vary across the different failing package builds but always ends in the
jobs being reduced to 1. The likely candidate for the failure with the gcc5
build is the instance of...

got_token = read (job_rfd, &token, 1);

which is missing the  EINTRLOOP()  macro.
            Jack

On Tue, Oct 20, 2015 at 10:52 PM, Jack Howarth <howarth.at.f...@gmail.com>
wrote:

> Of course the 10.12 should be 10.11 (doh). FYI, the original discussion of
> the requirement for the EINTRLOOP() macros can be found at...
>
> https://lists.gnu.org/archive/html/make-alpha/2001-05/msg00008.html
>
> On Tue, Oct 20, 2015 at 10:29 PM, Jack Howarth <howarth.at.f...@gmail.com>
> wrote:
>
>> FYI, I've also opened a bug report at...
>>
>> https://savannah.gnu.org/bugs/index.php?46261
>>
>> and posted the proposed fix there as well.
>>
>> On Tue, Oct 20, 2015 at 10:16 PM, Jack Howarth <howarth.at.f...@gmail.com
>> > wrote:
>>
>>> The attached packaging adds the change...
>>>
>>> diff -uNr make-4.1.orig/main.c make-4.1/main.c
>>> --- make-4.1.orig/main.c        2014-10-05 12:24:51.000000000 -0400
>>> +++ make-4.1/main.c     2015-10-20 22:08:00.000000000 -0400
>>> @@ -3364,9 +3364,12 @@
>>>  #else
>>>        /* Close the write side, so the read() won't hang.  */
>>>        close (job_fds[1]);
>>> -
>>> -      while (read (job_fds[0], &token, 1) == 1)
>>> +      int r;
>>> +      EINTRLOOP (r, read (job_fds[0], &token, 1));
>>> +      while (r == 1) {
>>>          ++tcnt;
>>> +       EINTRLOOP (r, read (job_fds[0], &token, 1));
>>> +      }
>>>  #endif
>>>
>>>        if (tcnt != master_job_slots)
>>>
>>> which seems to eliminate the build failures with make 4.1 on 10.12 here
>>> by adding the missing usage of the EINTRLOOP() on the read calls in main.c.
>>>              Jack
>>>
>>
>>
>
------------------------------------------------------------------------------
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to