Changes between Initial Version and Version 2 of Ticket #49421


Ignore:
Timestamp:
Oct 24, 2015, 4:38:17 PM (9 years ago)
Author:
ryandesign (Ryan Carsten Schmidt)
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #49421

    • Property Cc stuartwesterman@… removed
    • Property Owner changed from macports-tickets@… to stuartwesterman@…
  • Ticket #49421 – Description

    initial v2  
    55The build failures under fink when make 4.1 is used can also be suppressed with --enable-nls if gettext is built with...
    66
     7{{{
    78        gt_cv_func_CFPreferencesCopyAppValue=no \
    89        gt_cv_func_CFLocaleCopyCurrent=no \
    910        gt_cv_func_CFPreferencesCopyAppValue=no \
    1011        gt_cv_func_CFLocaleCopyCurrent=no
     12}}}
    1113
    1214to avoid linking libintl against the CoreFoundation framework. Since this would reduce the functionality of gettext, building make 4.1 with --disable-nls (which is how the system make is built) is the better approach.
    13     The CoreFoundation linkage, in the indirectly linked libintl, immediately caught my eye because pymol also relies on fork()/exec() and requires the -CoreFoundation variant of tcl in order to avoid crashes. If you examine the sources of CoreFoundation, you will also see that there isn't any EINTR handling for system calls like read(), write() and (f)stat() which can return EINTR. If you look at the sources in gettext-0.19.5.1/gettext-runtime/intl, you will see that code like...
    1415
     16The CoreFoundation linkage, in the indirectly linked libintl, immediately caught my eye because pymol also relies on fork()/exec() and requires the -CoreFoundation variant of tcl in order to avoid crashes. If you examine the sources of CoreFoundation, you will also see that there isn't any EINTR handling for system calls like read(), write() and (f)stat() which can return EINTR. If you look at the sources in gettext-0.19.5.1/gettext-runtime/intl, you will see that code like...
     17
     18{{{
    1519      to_read = size;
    1620      read_ptr = (char *) data;
     
    2933          to_read -= nb;
    3034        }
     35}}}
    3136
    3237is used to insure that if a read() returns EINTR, the call is considered to be interrupted and is retried until it either fails without EINTR or succeeds.