[ 
https://issues.apache.org/jira/browse/THRIFT-5475?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jens Geyer reassigned THRIFT-5475:
----------------------------------

    Assignee: Jean Boussier  (was: Jens Geyer)

> shorten-64-to-32 errors compilation errors on macOS
> ---------------------------------------------------
>
>                 Key: THRIFT-5475
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5475
>             Project: Thrift
>          Issue Type: Bug
>          Components: Ruby - Library
>            Reporter: Jean Boussier
>            Assignee: Jean Boussier
>            Priority: Major
>             Fix For: 0.22.0
>
>
> The ruby gem fail to compile on newer macOS versions, presumably because of a 
> new clang warning.
>  
> I provided a patch for it here: [https://github.com/apache/thrift/pull/2464]
>  
> On a sidenote, it's not recommended for Ruby native extensions to set `-Wall` 
> outside of their own CI environment for this exact reason. Newer compilers 
> get stricter, and the gem becomes unusable. 
> ```
>  
> {{$ ruby --version
> ruby 3.1.0dev (2021-10-06T06:42:37Z master d53493715c) [x86_64-darwin20]
> $ gem install thrift
> Building native extensions. This could take a while...
> ERROR:  Error installing thrift:
>       ERROR: Failed to build gem native extension.
>     current directory: /Users/byroot/.gem/ruby/3.1.0/gems/thrift-0.15.0/ext
> /opt/rubies/3.1.0-dev/bin/ruby -I /opt/rubies/3.1.0-dev/lib/ruby/3.1.0 -r 
> ./siteconf20211013-11520-x7l42b.rb extconf.rb
> checking for strlcpy() in string.h... yes
> creating Makefile
> current directory: /Users/byroot/.gem/ruby/3.1.0/gems/thrift-0.15.0/ext
> make DESTDIR\= clean
> current directory: /Users/byroot/.gem/ruby/3.1.0/gems/thrift-0.15.0/ext
> make DESTDIR\=
> compiling binary_protocol_accelerated.c
> binary_protocol_accelerated.c:85:27: error: implicit conversion loses integer 
> precision: 'long' to 'int32_t' (aka 'int') [-Werror,-Wshorten-64-to-32]
>   write_i32_direct(trans, RSTRING_LEN(str));
>   ~~~~~~~~~~~~~~~~        ^~~~~~~~~~~~~~~~
> /opt/rubies/3.1.0-dev/include/ruby-3.1.0/ruby/internal/core/rstring.h:50:27: 
> note: expanded from macro 'RSTRING_LEN'
> #define RSTRING_LEN       RSTRING_LEN
>                           ^
> binary_protocol_accelerated.c:226:27: error: implicit conversion loses 
> integer precision: 'long' to 'int32_t' (aka 'int') 
> [-Werror,-Wshorten-64-to-32]
>   write_i32_direct(trans, RSTRING_LEN(buf));
>   ~~~~~~~~~~~~~~~~        ^~~~~~~~~~~~~~~~
> /opt/rubies/3.1.0-dev/include/ruby-3.1.0/ruby/internal/core/rstring.h:50:27: 
> note: expanded from macro 'RSTRING_LEN'
> #define RSTRING_LEN       RSTRING_LEN
>                           ^
> binary_protocol_accelerated.c:406:15: error: implicit conversion loses 
> integer precision: 'long long' to 'int' [-Werror,-Wshorten-64-to-32]
>   VERSION_1 = rb_num2ll(rb_const_get(thrift_binary_protocol_class, 
> rb_intern("VERSION_1")));
>             ~ 
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> binary_protocol_accelerated.c:407:18: error: implicit conversion loses 
> integer precision: 'long long' to 'int' [-Werror,-Wshorten-64-to-32]
>   VERSION_MASK = rb_num2ll(rb_const_get(thrift_binary_protocol_class, 
> rb_intern("VERSION_MASK")));
>                ~ 
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> binary_protocol_accelerated.c:408:15: error: implicit conversion loses 
> integer precision: 'long long' to 'int' [-Werror,-Wshorten-64-to-32]
>   TYPE_MASK = rb_num2ll(rb_const_get(thrift_binary_protocol_class, 
> rb_intern("TYPE_MASK")));
>             ~ 
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 5 errors generated.
> make: *** [binary_protocol_accelerated.o] Error 1}}
> {{```}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to