Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arg_scanner build failure #18

Open
develop7 opened this issue Mar 20, 2018 · 1 comment
Open

arg_scanner build failure #18

develop7 opened this issue Mar 20, 2018 · 1 comment

Comments

@develop7
Copy link

develop7 commented Mar 20, 2018

Repro:

  1. Install rvm & MRI 2.5
  2. run gem i arg_scanner

Expected: the gem gets installed successfully
Instead: gem fails to install.

Console output:

develop7@t-rex ~>  rvm use ruby-2.5.0
Using /home/develop7/.rvm/gems/ruby-2.5.0
develop7@t-rex ~>  gem i arg_scanner
Building native extensions. This could take a while...
ERROR:  Error installing arg_scanner:
	ERROR: Failed to build gem native extension.

    current directory: /home/develop7/.rvm/gems/ruby-2.5.0/gems/arg_scanner-0.2.0/ext/arg_scanner
/home/develop7/.rvm/rubies/ruby-2.5.0/bin/ruby -r ./siteconf20180320-4785-1g5uy94.rb extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
checking for vm_core.h... yes
checking for iseq.h... yes
checking for version.h... yes
checking for vm_core.h... yes
checking for vm_insnhelper.h... yes
checking for vm_core.h... yes
checking for method.h... yes
creating Makefile

current directory: /home/develop7/.rvm/gems/ruby-2.5.0/gems/arg_scanner-0.2.0/ext/arg_scanner
make "DESTDIR=" clean

current directory: /home/develop7/.rvm/gems/ruby-2.5.0/gems/arg_scanner-0.2.0/ext/arg_scanner
make "DESTDIR="
compiling arg_scanner.c
arg_scanner.c: In function ‘my_rb_vm_get_binding_creatable_next_cfp’:
arg_scanner.c:94:52: warning: passing argument 1 of ‘RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P’ from incompatible pointer type [-Wincompatible-pointer-types]
     while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {
                                                    ^~
In file included from arg_scanner.h:5:0,
                 from arg_scanner.c:1:
/home/develop7/.rvm/gems/ruby-2.5.0/gems/debase-ruby_core_source-0.10.2/lib/debase/ruby_core_source/ruby-2.5.0-p0/vm_core.h:1244:1: note: expected ‘const rb_execution_context_t * {aka const struct rb_execution_context_struct *}’ but argument is of type ‘const rb_thread_t * {aka const struct rb_thread_struct *}’
 RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arg_scanner.c: In function ‘handle_return’:
arg_scanner.c:171:56: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘ssize_t {aka long int}’ [-Wformat=]
         "{\"method_name\":\"%s\",\"call_info_argc\":\"%d\",\"call_info_kw_args\":\"%s\",\"args_info\":\"%s\",\"visibility\":\"%s\",\"path\":\"%s\",\"lineno\":\"%d\",",
                                                       ~^
                                                       %ld
arg_scanner.c:173:9:
         sign->call_info_argc,
         ~~~~~~~~~~~~~~~~~~~~                            
arg_scanner.c: In function ‘get_call_info’:
arg_scanner.c:12:63: error: ‘thread->ec’ is a pointer; did you mean to use ‘->’?
     #define TH_CFP(thread) ((rb_control_frame_t *)(thread)->ec.cfp)
                                                               ^
arg_scanner.c:195:11: note: in expansion of macro ‘TH_CFP’
     cfp = TH_CFP(thread);
           ^~~~~~
arg_scanner.c:213:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
         const rb_iseq_t *iseq = cfp->iseq;
         ^~~~~
arg_scanner.c:232:17: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
                 struct rb_call_info *ci = (struct rb_call_info *)iseq_original[pc - indent + 1];
                 ^~~~~~
arg_scanner.c: In function ‘fast_join’:
arg_scanner.c:364:40: warning: passing argument 3 of ‘fast_join_array’ from incompatible pointer type [-Wincompatible-pointer-types]
     return fast_join_array(sep, count, strings);
                                        ^~~~~~~
arg_scanner.c:310:1: note: expected ‘const char **’ but argument is of type ‘char **’
 fast_join_array(char sep, size_t count, const char **strings)
 ^~~~~~~~~~~~~~~
arg_scanner.c: In function ‘get_args_info’:
arg_scanner.c:12:63: error: ‘thread->ec’ is a pointer; did you mean to use ‘->’?
     #define TH_CFP(thread) ((rb_control_frame_t *)(thread)->ec.cfp)
                                                               ^
arg_scanner.c:374:11: note: in expansion of macro ‘TH_CFP’
     cfp = TH_CFP(thread);
           ^~~~~~
arg_scanner.c:378:17: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
     VALUE *ep = cfp->ep;
                 ^~~
arg_scanner.c:378:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     VALUE *ep = cfp->ep;
     ^~~~~
arg_scanner.c:381:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     size_t param_size = cfp->iseq->body->param.size;
     ^~~~~~
arg_scanner.c:404:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     const char **types = (const char **)malloc(param_size * sizeof(const char*));
     ^~~~~
arg_scanner.c:410:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     int new_version_flag = strcmp(RUBY_VERSION, "2.4.0") >= 0 ? 1 : 0;
     ^~~
arg_scanner.c:425:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     char **ans = (char** )malloc(param_size * sizeof(char*));
     ^~~~
arg_scanner.c:444:14: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
         type = types[types_iterator];
              ^
arg_scanner.c:484:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
         char* type;
         ^~~~
arg_scanner.c:486:14: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
         type = types[types_iterator];
              ^
arg_scanner.c:497:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     int answer_size = 0;
     ^~~
arg_scanner.c:507:55: warning: passing argument 3 of ‘fast_join_array’ from incompatible pointer type [-Wincompatible-pointer-types]
     char *answer = fast_join_array(';', ans_iterator, ans);
                                                       ^~~
arg_scanner.c:310:1: note: expected ‘const char **’ but argument is of type ‘char **’
 fast_join_array(char sep, size_t count, const char **strings)
 ^~~~~~~~~~~~~~~
arg_scanner.c:507:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     char *answer = fast_join_array(';', ans_iterator, ans);
     ^~~~
arg_scanner.c: In function ‘is_call_info_needed’:
arg_scanner.c:12:63: error: ‘thread->ec’ is a pointer; did you mean to use ‘->’?
     #define TH_CFP(thread) ((rb_control_frame_t *)(thread)->ec.cfp)
                                                               ^
arg_scanner.c:559:11: note: in expansion of macro ‘TH_CFP’
     cfp = TH_CFP(thread);
           ^~~~~~
In file included from arg_scanner.h:8:0,
                 from arg_scanner.c:1:
arg_scanner.c: At top level:
/home/develop7/.rvm/gems/ruby-2.5.0/gems/debase-ruby_core_source-0.10.2/lib/debase/ruby_core_source/ruby-2.5.0-p0/vm_insnhelper.h:195:14: warning: ‘make_no_method_exception’ declared ‘static’ but never defined [-Wunused-function]
 static VALUE make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
              ^~~~~~~~~~~~~~~~~~~~~~~~
arg_scanner.c:67:13: warning: ‘signature_t_free’ defined but not used [-Wunused-function]
 static void signature_t_free(void *s)
             ^~~~~~~~~~~~~~~~
arg_scanner.c:60:13: warning: ‘call_info_t_free’ defined but not used [-Wunused-function]
 static void call_info_t_free(void *s)
             ^~~~~~~~~~~~~~~~
cc1: warning: unrecognized command line option ‘-Wno-self-assign’
cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’
cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’
make: *** [Makefile:242: arg_scanner.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/develop7/.rvm/gems/ruby-2.5.0/gems/arg_scanner-0.2.0 for inspection.
Results logged to /home/develop7/.rvm/gems/ruby-2.5.0/extensions/x86_64-linux/2.5.0/arg_scanner-0.2.0/gem_make.out

environment:

develop7@t-rex ~ [1]>  gcc --version
gcc (SUSE Linux) 7.3.1 20180307 [gcc-7-branch revision 258314]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

develop7@t-rex ~>  lsb-release -sa
n/a openSUSE "openSUSE Tumbleweed" 20180316 n/a
@develop7
Copy link
Author

develop7 commented Mar 28, 2018

Right, seems to work for 2.4.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant