graphics/blender: math.h: isnan(): error: controlling expression type 'unsigned int' not compatible with any generic association type

2013-08-17 Thread O. Hartmann
port graphics/blender doesn't compiler neither in CURRENT nor 9.2-PRE
for the moment. On CURRENT (FreeBSD 10.0-CURRENT #4 r254430: Fri Aug 16
23:23:08 CEST 2013 amd64), compilation fails with the belwo shown error
message - for roughly a month now. 

I think this is dur to some issues of inconsistency/incompatibility of
the math.h/cmath headers regarding the reported c++11 issues.


Since port graphics/blender doesn't compile on 9.2 nor does it compile
in CURRENT and the fact that the math.h isn't fixed in the 9.2-RELEASE
as I was told, the port should be marked broken.



[ 55%] Building C object
source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineon_dpx.c.o
[ 55%] Building C object
source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineonlib.c.o 
/usr/ports/graphics/blender/work/blender-2.68/source/blender/imbuf/intern/cineon/cineonlib.c:280:70:
error: controlling expression type 'unsigned int' not compatible with
any generic association type if (cineon-element[i].refLowData ==
CINEON_UNDEFINED_U32 || isnan(cineon-element[i].refLowData))
^ /usr/include/math.h:118:19: note:
expanded from macro 'isnan' __fp_type_select(x, __inline_isnanf,
__inline_isnan, __inline_isnanl) ^ /usr/include/math.h:86:49: note:
expanded from macro '__fp_type_select' #define __fp_type_select(x, f,
d, ld) _Generic((x),


signature.asc
Description: PGP signature


Re: graphics/blender: math.h: isnan(): error: controlling expression type 'unsigned int' not compatible with any generic association type

2013-08-17 Thread David Chisnall
On 17 Aug 2013, at 10:48, O. Hartmann ohart...@zedat.fu-berlin.de wrote:

 port graphics/blender doesn't compiler neither in CURRENT nor 9.2-PRE
 for the moment. On CURRENT (FreeBSD 10.0-CURRENT #4 r254430: Fri Aug 16
 23:23:08 CEST 2013 amd64), compilation fails with the belwo shown error
 message - for roughly a month now. 
 
 I think this is dur to some issues of inconsistency/incompatibility of
 the math.h/cmath headers regarding the reported c++11 issues.
 
 
 Since port graphics/blender doesn't compile on 9.2 nor does it compile
 in CURRENT and the fact that the math.h isn't fixed in the 9.2-RELEASE
 as I was told, the port should be marked broken.
 
 
 
 [ 55%] Building C object
 source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineon_dpx.c.o
 [ 55%] Building C object
 source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineonlib.c.o
  
 /usr/ports/graphics/blender/work/blender-2.68/source/blender/imbuf/intern/cineon/cineonlib.c:280:70:
 error: controlling expression type 'unsigned int' not compatible with
 any generic association type if (cineon-element[i].refLowData ==
 CINEON_UNDEFINED_U32 || isnan(cineon-element[i].refLowData))
 ^ /usr/include/math.h:118:19: note:
 expanded from macro 'isnan' __fp_type_select(x, __inline_isnanf,
 __inline_isnan, __inline_isnanl) ^ /usr/include/math.h:86:49: note:
 expanded from macro '__fp_type_select' #define __fp_type_select(x, f,
 d, ld) _Generic((x),

This looks like a correct error.  isnan(unsigned int) is undefined behaviour in 
C or C++.  Now, we have a hard error instead of doing something random.  This 
change was made it make it easier to find logic errors at compile time, and it 
seems to be doing exactly that here: now the port fails to build, rather than 
building and having undefined behaviour.

David



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: graphics/blender: math.h: isnan(): error: controlling expression type 'unsigned int' not compatible with any generic association type

2013-08-17 Thread O. Hartmann
On Sat, 17 Aug 2013 11:24:41 +0100
David Chisnall thera...@freebsd.org wrote:

 On 17 Aug 2013, at 10:48, O. Hartmann ohart...@zedat.fu-berlin.de
 wrote:
 
  port graphics/blender doesn't compiler neither in CURRENT nor
  9.2-PRE for the moment. On CURRENT (FreeBSD 10.0-CURRENT #4
  r254430: Fri Aug 16 23:23:08 CEST 2013 amd64), compilation fails
  with the belwo shown error message - for roughly a month now. 
  
  I think this is dur to some issues of inconsistency/incompatibility
  of the math.h/cmath headers regarding the reported c++11 issues.
  
  
  Since port graphics/blender doesn't compile on 9.2 nor does it
  compile in CURRENT and the fact that the math.h isn't fixed in the
  9.2-RELEASE as I was told, the port should be marked broken.
  
  
  
  [ 55%] Building C object
  source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineon_dpx.c.o
  [ 55%] Building C object
  source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineonlib.c.o
   
  /usr/ports/graphics/blender/work/blender-2.68/source/blender/imbuf/intern/cineon/cineonlib.c:280:70:
  error: controlling expression type 'unsigned int' not compatible
  with any generic association type if (cineon-element[i].refLowData
  == CINEON_UNDEFINED_U32 || isnan(cineon-element[i].refLowData))
  ^ /usr/include/math.h:118:19: note:
  expanded from macro 'isnan' __fp_type_select(x, __inline_isnanf,
  __inline_isnan, __inline_isnanl) ^ /usr/include/math.h:86:49: note:
  expanded from macro '__fp_type_select' #define __fp_type_select(x,
  f, d, ld) _Generic((x),
 
 This looks like a correct error.  isnan(unsigned int) is undefined
 behaviour in C or C++.  Now, we have a hard error instead of doing
 something random.  This change was made it make it easier to find
 logic errors at compile time, and it seems to be doing exactly that
 here: now the port fails to build, rather than building and having
 undefined behaviour.
 
 David
 

Hello David.

Thank you very much for this insight.

As I understand it for now, the math.h/cmath behaviour is as expected by
defintion an correct so far in FreeBSD? If yes, it would imply that the
port graphics/blender is broken then. In the latter case the blender
developers should be correct this upstream, shouldn't they?

Again, thank you very much and for the patience explaining it again.

Regards,
Oliver


signature.asc
Description: PGP signature


Re: graphics/blender: math.h: isnan(): error: controlling expression type 'unsigned int' not compatible with any generic association type

2013-08-17 Thread David Chisnall

On 17 Aug 2013, at 15:39, O. Hartmann ohart...@zedat.fu-berlin.de wrote:

 On Sat, 17 Aug 2013 11:24:41 +0100
 David Chisnall thera...@freebsd.org wrote:
 
 On 17 Aug 2013, at 10:48, O. Hartmann ohart...@zedat.fu-berlin.de
 wrote:
 
 port graphics/blender doesn't compiler neither in CURRENT nor
 9.2-PRE for the moment. On CURRENT (FreeBSD 10.0-CURRENT #4
 r254430: Fri Aug 16 23:23:08 CEST 2013 amd64), compilation fails
 with the belwo shown error message - for roughly a month now. 
 
 I think this is dur to some issues of inconsistency/incompatibility
 of the math.h/cmath headers regarding the reported c++11 issues.
 
 
 Since port graphics/blender doesn't compile on 9.2 nor does it
 compile in CURRENT and the fact that the math.h isn't fixed in the
 9.2-RELEASE as I was told, the port should be marked broken.
 
 
 
 [ 55%] Building C object
 source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineon_dpx.c.o
 [ 55%] Building C object
 source/blender/imbuf/intern/cineon/CMakeFiles/bf_imbuf_cineon.dir/cineonlib.c.o
  
 /usr/ports/graphics/blender/work/blender-2.68/source/blender/imbuf/intern/cineon/cineonlib.c:280:70:
 error: controlling expression type 'unsigned int' not compatible
 with any generic association type if (cineon-element[i].refLowData
 == CINEON_UNDEFINED_U32 || isnan(cineon-element[i].refLowData))
 ^ /usr/include/math.h:118:19: note:
 expanded from macro 'isnan' __fp_type_select(x, __inline_isnanf,
 __inline_isnan, __inline_isnanl) ^ /usr/include/math.h:86:49: note:
 expanded from macro '__fp_type_select' #define __fp_type_select(x,
 f, d, ld) _Generic((x),
 
 This looks like a correct error.  isnan(unsigned int) is undefined
 behaviour in C or C++.  Now, we have a hard error instead of doing
 something random.  This change was made it make it easier to find
 logic errors at compile time, and it seems to be doing exactly that
 here: now the port fails to build, rather than building and having
 undefined behaviour.
 
 David
 
 
 Hello David.
 
 Thank you very much for this insight.
 
 As I understand it for now, the math.h/cmath behaviour is as expected by
 defintion an correct so far in FreeBSD? If yes, it would imply that the
 port graphics/blender is broken then. In the latter case the blender
 developers should be correct this upstream, shouldn't they?

Yes, I believe (and am willing to be convinced otherwise by test cases) that we 
now accept anything that the standard allows and reject with a compile-time 
error things that are undefined behaviour.

From the tiny snipped of code in the error message, my guess would be that 
refLowData is something that is read from a file (header?) as an unsigned int 
and is supposed to be a float here, and so needs a cast via a union (or just a 
*(float*) if strict aliasing is not turned on).

David



signature.asc
Description: Message signed with OpenPGP using GPGMail