Ugh. This other permutation of the parallel make failure...

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

may not be easy to fix. The offending code seems to be in the section...

#else
        /* Set interruptible system calls, and read() for a job token.  */
        set_child_handler_action_flags (1, waiting_jobs != NULL);
        got_token = read (job_rfd, &token, 1);
        saved_errno = errno;
        set_child_handler_action_flags (0, waiting_jobs != NULL);

in job.c. As I understand this code, it is using its own interrupt handling
setup in set_child_handler_action_flags(). and so the EINTRLOOP() macro fix
would be inappropriate there. Sigh,

On Wed, Oct 21, 2015 at 9:02 AM, Jack Howarth <howarth.at.f...@gmail.com>
wrote:

> 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