[MacPorts] #37601: libc-headers installs stdio.h masking OS libc header

MacPorts noreply at macports.org
Sat Jan 12 16:55:04 PST 2013


#37601: libc-headers installs stdio.h masking OS libc header
---------------------------+----------------------
  Reporter:  ciserlohn@…   |      Owner:  mfeiri@…
      Type:  defect        |     Status:  new
  Priority:  Normal        |  Milestone:
 Component:  ports         |    Version:  2.1.2
Resolution:                |   Keywords:
      Port:  libc-headers  |
---------------------------+----------------------

Comment (by mfeiri@…):

 I was unable to reproduce this error on my 10.8 machine. But based on your
 description I assume that this is indeed a case of preprocessor header
 mixup. I guess you have at least three cdefs.h files on your machine

  * /usr/include/
  *
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/sys/cdefs.h
  *
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/sys/cdefs.h

 In your case the 10.7 version of stdio.h from libc-headers collided with
 the 10.8 version of cdefs.h from the MacOSX10.8.sdk. Targeting an SDK that
 does not match the host OS is more like cross compiling. MacPorts should,
 just like /usr/include/,  stay out of such a cross compilation. The reason
 why MacPorts headers interfere, while the /usr/include headers don't, is
 likely because we use CPATH to give MacPorts precedence over other
 includes. I guess I need to find a way to avoid this when targeting a non-
 local SDK for "cross" compilation. And I need to commit the xnu-headers
 port to provide cdefs.h in MacPorts and make sure that the xnu-headers are
 always installed when libc-headers are present to avoid partial shadowing.

-- 
Ticket URL: <https://trac.macports.org/ticket/37601#comment:9>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list