[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

nokogumbo 2.0 and missing nokogiri.h - request for help



Hi ruby team,

I'm trying to update ruby-nokogumbo to 2.x and the build fails since it cannot find nokogiri.h. I can see we have to not included nokogiri.h in the binary package so I tried to include it in include-headers branch in salsa (a proof of concept now as it hard codes paths). But even with all headers in place, nokogumbo still fails to build (though it found the headers this time). ruby-nokogumbo is pushed to salsa master branch. Can someone help here?

1. What is the best way to ship headers in nokogiri? Should gem2deb do this by default?
2. How to fix this build failure.

find_header: checking for nokogiri.h in /usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri... -------------------- yes

gcc -fdebug-prefix-map=/home/pravi/forge/ruby-team/ruby-nokogumbo=. -I. -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -I/usr/include/libxml2 -I./../../gumbo-parser/src -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ -DNGLIB=1 -o nokogumbo.o -c nokogumbo.c
In file included from nokogumbo.c:53:
/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.h:13: warning: "_GNU_SOURCE" redefined
  13 | #define _GNU_SOURCE
     |
In file included from /usr/include/ruby-2.7.0/ruby/ruby.h:24,
                from /usr/include/ruby-2.7.0/ruby.h:33,
                from nokogumbo.c:22:
/usr/include/x86_64-linux-gnu/ruby-2.7.0/ruby/config.h:16: note: this is the location of the previous definition
  16 | #define _GNU_SOURCE 1
     |
nokogumbo.c: In function ‘perform_parse’:
nokogumbo.c:280:31: warning: implicit declaration of function ‘gumbo_status_to_string’ [-Wimplicit-function-declaration] 280 | const char *status_string = gumbo_status_to_string(output->status);
     | ^~~~~~~~~~~~~~~~~~~~~~
nokogumbo.c:280:60: error: ‘GumboOutput’ {aka ‘struct GumboInternalOutput’} has no member named ‘status’ 280 | const char *status_string = gumbo_status_to_string(output->status);
     | ^~
nokogumbo.c:281:17: error: ‘GumboOutput’ {aka ‘struct GumboInternalOutput’} has no member named ‘status’
 281 | switch (output->status) {
     | ^~
nokogumbo.c:282:8: error: ‘GUMBO_STATUS_OK’ undeclared (first use in this function); did you mean ‘GUMBO_TAG_OL’?
 282 | case GUMBO_STATUS_OK:
     | ^~~~~~~~~~~~~~~
     | GUMBO_TAG_OL
nokogumbo.c:282:8: note: each undeclared identifier is reported only once for each function it appears in nokogumbo.c:284:8: error: ‘GUMBO_STATUS_TREE_TOO_DEEP’ undeclared (first use in this function)
 284 | case GUMBO_STATUS_TREE_TOO_DEEP:
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~
nokogumbo.c:285:26: warning: passing argument 1 of ‘gumbo_destroy_output’ from incompatible pointer type [-Wincompatible-pointer-types]
 285 | gumbo_destroy_output(output);
     | ^~~~~~
     | |
     | GumboOutput * {aka struct GumboInternalOutput *}
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:47: note: expected ‘const GumboOptions *’ {aka ‘const struct GumboInternalOptions *’} but argument is of type ‘GumboOutput *’ {aka ‘struct GumboInternalOutput *’} 665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ~~~~~~~~~~~~~~~~~~~~^~~~~~~
nokogumbo.c:285:5: error: too few arguments to function ‘gumbo_destroy_output’
 285 | gumbo_destroy_output(output);
     | ^~~~~~~~~~~~~~~~~~~~
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:6: note: declared here
665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ^~~~~~~~~~~~~~~~~~~~
nokogumbo.c:287:8: error: ‘GUMBO_STATUS_OUT_OF_MEMORY’ undeclared (first use in this function)
 287 | case GUMBO_STATUS_OUT_OF_MEMORY:
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~
nokogumbo.c:288:26: warning: passing argument 1 of ‘gumbo_destroy_output’ from incompatible pointer type [-Wincompatible-pointer-types]
 288 | gumbo_destroy_output(output);
     | ^~~~~~
     | |
     | GumboOutput * {aka struct GumboInternalOutput *}
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:47: note: expected ‘const GumboOptions *’ {aka ‘const struct GumboInternalOptions *’} but argument is of type ‘GumboOutput *’ {aka ‘struct GumboInternalOutput *’} 665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ~~~~~~~~~~~~~~~~~~~~^~~~~~~
nokogumbo.c:288:5: error: too few arguments to function ‘gumbo_destroy_output’
 288 | gumbo_destroy_output(output);
     | ^~~~~~~~~~~~~~~~~~~~
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:6: note: declared here
665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ^~~~~~~~~~~~~~~~~~~~
nokogumbo.c: In function ‘build_tree’:
nokogumbo.c:388:76: error: ‘GumboElement’ has no member named ‘name’ 388 | xml_child = xmlNewDocNode(doc, NIL, BAD_CAST gumbo_child->v.element.name, NULL);
     | ^
nokogumbo.c: In function ‘add_errors’:
nokogumbo.c:450:7: error: unknown type name ‘GumboError’; did you mean ‘xmlError’?
 450 | GumboError *err = errors->data[i];
     | ^~~~~~~~~~
     | xmlError
nokogumbo.c:451:38: warning: implicit declaration of function ‘gumbo_error_position’ [-Wimplicit-function-declaration]
 451 | GumboSourcePosition position = gumbo_error_position(err);
     | ^~~~~~~~~~~~~~~~~~~~
nokogumbo.c:451:38: error: invalid initializer
nokogumbo.c:453:21: warning: implicit declaration of function ‘gumbo_caret_diagnostic_to_string’ [-Wimplicit-function-declaration] 453 | size_t size = gumbo_caret_diagnostic_to_string(err, input_str, input_len, &msg);
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nokogumbo.c:457:32: warning: implicit declaration of function ‘gumbo_error_code’ [-Wimplicit-function-declaration]
 457 | const char *error_code = gumbo_error_code(err);
     | ^~~~~~~~~~~~~~~~
nokogumbo.c:457:32: warning: initialization of ‘const char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
nokogumbo.c: In function ‘parse_cleanup’:
nokogumbo.c:483:28: warning: passing argument 1 of ‘gumbo_destroy_output’ from incompatible pointer type [-Wincompatible-pointer-types]
 483 | gumbo_destroy_output(args->output);
     | ~~~~^~~~~~~~
     | |
     | GumboOutput * {aka struct GumboInternalOutput *}
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:47: note: expected ‘const GumboOptions *’ {aka ‘const struct GumboInternalOptions *’} but argument is of type ‘GumboOutput *’ {aka ‘struct GumboInternalOutput *’} 665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ~~~~~~~~~~~~~~~~~~~~^~~~~~~
nokogumbo.c:483:3: error: too few arguments to function ‘gumbo_destroy_output’
 483 | gumbo_destroy_output(args->output);
     | ^~~~~~~~~~~~~~~~~~~~
In file included from nokogumbo.c:25:
/usr/include/gumbo.h:665:6: note: declared here
665 | void gumbo_destroy_output(const GumboOptions* options, GumboOutput* output);
     | ^~~~~~~~~~~~~~~~~~~~
nokogumbo.c: In function ‘parse’:
nokogumbo.c:496:10: error: ‘GumboOptions’ {aka ‘struct GumboInternalOptions’} has no member named ‘max_tree_depth’
 496 | options.max_tree_depth = NUM2INT(max_depth);
     | ^
nokogumbo.c:505:20: warning: passing argument 1 of ‘rb_ensure’ from incompatible pointer type [-Wincompatible-pointer-types] 505 | return rb_ensure(parse_continue, (VALUE)&args, parse_cleanup, (VALUE)&args);
     | ^~~~~~~~~~~~~~
     | |
     | VALUE (*)(ParseArgs *) {aka long unsigned int (*)(ParseArgs *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
                from nokogumbo.c:22:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:17: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(ParseArgs *)’ {aka ‘long unsigned int (*)(ParseArgs *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
     | ^~~~~~~~~~~~~~~
nokogumbo.c:505:50: warning: passing argument 3 of ‘rb_ensure’ from incompatible pointer type [-Wincompatible-pointer-types] 505 | return rb_ensure(parse_continue, (VALUE)&args, parse_cleanup, (VALUE)&args);
     | ^~~~~~~~~~~~~
     | |
     | VALUE (*)(ParseArgs *) {aka long unsigned int (*)(ParseArgs *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
                from nokogumbo.c:22:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:39: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(ParseArgs *)’ {aka ‘long unsigned int (*)(ParseArgs *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
     | ^~~~~~~~~~~~~~~
nokogumbo.c: In function ‘fragment’:
nokogumbo.c:669:19: warning: implicit declaration of function ‘gumbo_compute_quirks_mode’ [-Wimplicit-function-declaration]
 669 | quirks_mode = gumbo_compute_quirks_mode (
     | ^~~~~~~~~~~~~~~~~~~~~~~~~
nokogumbo.c:681:10: error: ‘GumboOptions’ {aka ‘struct GumboInternalOptions’} has no member named ‘max_tree_depth’
 681 | options.max_tree_depth = depth < 0 ? -1 : (depth + 1);
     | ^
nokogumbo.c:682:30: error: incompatible types when assigning to type ‘GumboTag’ from type ‘const char *’
 682 | options.fragment_context = ctx_tag;
     | ^~~~~~~
nokogumbo.c:684:10: error: ‘GumboOptions’ {aka ‘struct GumboInternalOptions’} has no member named ‘fragment_encoding’
 684 | options.fragment_encoding = encoding;
     | ^
nokogumbo.c:685:10: error: ‘GumboOptions’ {aka ‘struct GumboInternalOptions’} has no member named ‘quirks_mode’
 685 | options.quirks_mode = quirks_mode;
     | ^
nokogumbo.c:686:10: error: ‘GumboOptions’ {aka ‘struct GumboInternalOptions’} has no member named ‘fragment_context_has_form_ancestor’
 686 | options.fragment_context_has_form_ancestor = form;
     | ^
nokogumbo.c:695:13: warning: passing argument 1 of ‘rb_ensure’ from incompatible pointer type [-Wincompatible-pointer-types] 695 | rb_ensure(fragment_continue, (VALUE)&args, parse_cleanup, (VALUE)&args);
     | ^~~~~~~~~~~~~~~~~
     | |
     | VALUE (*)(ParseArgs *) {aka long unsigned int (*)(ParseArgs *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
                from nokogumbo.c:22:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:17: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(ParseArgs *)’ {aka ‘long unsigned int (*)(ParseArgs *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
     | ^~~~~~~~~~~~~~~
nokogumbo.c:695:46: warning: passing argument 3 of ‘rb_ensure’ from incompatible pointer type [-Wincompatible-pointer-types] 695 | rb_ensure(fragment_continue, (VALUE)&args, parse_cleanup, (VALUE)&args);
     | ^~~~~~~~~~~~~
     | |
     | VALUE (*)(ParseArgs *) {aka long unsigned int (*)(ParseArgs *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
                from nokogumbo.c:22:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:39: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(ParseArgs *)’ {aka ‘long unsigned int (*)(ParseArgs *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
     | ^~~~~~~~~~~~~~~
make[1]: *** [Makefile:245: nokogumbo.o] Error 1
make[1]: Leaving directory '/home/pravi/forge/ruby-team/ruby-nokogumbo/ext/nokogumbo'
~~~~~~~~~~~~~~~~~~~~~ ↓ mkmf.log ~~~~~~~~~~~~~~~~~~~~~
"pkg-config --exists libxml-2.0"
| pkg-config --libs libxml-2.0
=> "-lxml2\n"
"x86_64-linux-gnu-gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -lruby-2.7 -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return !!argv[argc];
6: }
/* end */

"x86_64-linux-gnu-gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -lruby-2.7 -lxml2 -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return !!argv[argc];
6: }
/* end */

| pkg-config --cflags-only-I libxml-2.0
=> "-I/usr/include/libxml2\n"
| pkg-config --cflags-only-other libxml-2.0
=> "\n"
| pkg-config --libs-only-l libxml-2.0
=> "-lxml2\n"
package configuration for libxml-2.0
incflags: -I/usr/include/libxml2
cflags:
ldflags:
libs: -lxml2

have_library: checking for xmlNewDoc() in -lxml2... -------------------- yes

"x86_64-linux-gnu-gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -I/usr/include/libxml2 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -lxml2 -lruby-2.7 -lxml2 -lxml2 -lm -lc"
conftest.c: In function ‘t’:
conftest.c:14:57: error: ‘xmlNewDoc’ undeclared (first use in this function) 14 | int t(void) { void ((*volatile p)()); p = (void ((*)()))xmlNewDoc; return !p; }
     | ^~~~~~~~~
conftest.c:14:57: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: /*top*/
4: extern int t(void);
5: int main(int argc, char **argv)
6: {
7: if (argc > 1000000) {
8: int (* volatile tp)(void)=(int (*)(void))&t;
9: printf("%d", (*tp)());
10: }
11:
12: return !!argv[argc];
13: }
14: int t(void) { void ((*volatile p)()); p = (void ((*)()))xmlNewDoc; return !p; }
/* end */

"x86_64-linux-gnu-gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -I/usr/include/libxml2 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -lxml2 -lruby-2.7 -lxml2 -lxml2 -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: /*top*/
4: extern int t(void);
5: int main(int argc, char **argv)
6: {
7: if (argc > 1000000) {
8: int (* volatile tp)(void)=(int (*)(void))&t;
9: printf("%d", (*tp)());
10: }
11:
12: return !!argv[argc];
13: }
14: extern void xmlNewDoc();
15: int t(void) { xmlNewDoc(); return 0; }
/* end */

--------------------

find_header: checking for nokogiri.h in /usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri... -------------------- yes

"x86_64-linux-gnu-gcc -E -I/usr/include/x86_64-linux-gnu/ruby-2.7.0 -I/usr/include/ruby-2.7.0/ruby/backward -I/usr/include/ruby-2.7.0 -I. -I/usr/include/libxml2 -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.7-ikoxWz/ruby2.7-2.7.2=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -std=c99 -I/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/ conftest.c -o conftest.i"
In file included from conftest.c:3:
/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.h:13: warning: "_GNU_SOURCE" redefined
  13 | #define _GNU_SOURCE
     |
In file included from /usr/include/ruby-2.7.0/ruby/ruby.h:24,
                from /usr/include/ruby-2.7.0/ruby.h:33,
                from conftest.c:1:
/usr/include/x86_64-linux-gnu/ruby-2.7.0/ruby/config.h:16: note: this is the location of the previous definition
  16 | #define _GNU_SOURCE 1
     |
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <nokogiri.h>
/* end */

--------------------

~~~~~~~~~~~~~~~~~~~~~ ↑ mkmf.log ~~~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
13: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:128:in `<main>' 12: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:112:in `build_all_extensions' 11: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:112:in `each' 10: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:115:in `block in build_all_extensions' 9: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:71:in `build_and_install' 8: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:71:in `chdir' 7: from /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb:81:in `block in build_and_install' 6: from /usr/lib/ruby/vendor_ruby/rubygems/ext/ext_conf_builder.rb:29:in `build'
 5: from /usr/lib/ruby/2.7.0/tempfile.rb:291:in `open'
4: from /usr/lib/ruby/vendor_ruby/rubygems/ext/ext_conf_builder.rb:62:in `block in build'
 3: from /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:43:in `make'
 2: from /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:43:in `each'
1: from /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:51:in `block in make' /usr/lib/ruby/vendor_ruby/rubygems/ext/builder.rb:99:in `run': make failed, exit code 2 (Gem::InstallError)
Traceback (most recent call last):
9: from /usr/bin/dh_ruby:89:in `<main>'
8: from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:84:in `install'
7: from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:84:in `each'
6: from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:86:in `block in install'
5: from /usr/lib/ruby/vendor_ruby/gem2deb/installer.rb:28:in `install'
4: from /usr/lib/ruby/vendor_ruby/gem2deb/installer.rb:51:in `install_files_and_build_extensions'
3: from /usr/lib/ruby/vendor_ruby/gem2deb/installer.rb:51:in `each'
2: from /usr/lib/ruby/vendor_ruby/gem2deb/installer.rb:54:in `block in install_files_and_build_extensions'
1: from /usr/lib/ruby/vendor_ruby/gem2deb.rb:65:in `run_ruby'
/usr/lib/ruby/vendor_ruby/gem2deb.rb:54:in `run': /usr/bin/ruby2.7 /usr/lib/ruby/vendor_ruby/gem2deb/extension_builder.rb /home/pravi/forge/ruby-team/ruby-nokogumbo debian/ruby-nokogumbo (Gem2Deb::CommandFailed) dh_auto_install: error: dh_ruby --install /home/pravi/forge/ruby-team/ruby-nokogumbo/debian/ruby-nokogumbo returned exit code 1
make: *** [debian/rules:18: binary] Error 1
dpkg-buildpackage: error: fakeroot debian/rules binary subprocess returned exit status 2




Reply to: