sparklemotion/nokogiri

[install] cygwin

SabreRunner opened this issue · 3 comments

The environment I'm running in is Unity's Build Automation. I need it to work for Mac/ios and Windows/Android builds but I'm currently focusing on Android in Cygwin. Since I don't control the environment, I don't know if I can even break out of cygwin. If there's any other commands I can try and get more info, let me know. Of course, attached below, is all the info I have.

Have you read and followed the installation tutorial at http://www.nokogiri.org/tutorials/installing_nokogiri.html?

  • [✔] Yes!

What is the complete output of gem install or bundle install?

[warning] /home/buildbot/.rvm/rubies/ruby-2.7.4/lib/ruby/2.7.0/net/http.rb:1122: warning: The environment variable HTTP_PROXY is discouraged.  Use http_proxy.
[error] ERROR:  Error installing nokogiri:
[error] 	ERROR: Failed to build gem native extension.
    current directory: /home/buildbot/.rvm/gems/ruby-2.7.4/gems/nokogiri-1.15.6/ext/nokogiri
/home/buildbot/.rvm/rubies/ruby-2.7.4/bin/ruby.exe -I /home/buildbot/.rvm/rubies/ruby-2.7.4/lib/ruby/2.7.0 -r ./siteconf20240418-1477-1ldb5wh.rb extconf.rb
checking for whether -std=c99 is accepted as CFLAGS... yes
checking for whether -Wno-declaration-after-statement is accepted as CFLAGS... yes
checking for whether -O2 is accepted as CFLAGS... yes
checking for whether -g is accepted as CFLAGS... yes
checking for whether -Winline is accepted as CFLAGS... yes
checking for whether -Wmissing-noreturn is accepted as CFLAGS... yes
checking for whether -Wconversion -Wno-sign-conversion is accepted as CFLAGS... yes
Building nokogiri using packaged libraries.
Static linking is enabled.
Cross build is disabled.
Using mini_portile version 2.8.6
checking for iconv... no
-----
extconf.rb:425:in `iconv_configure_flags'
extconf.rb:899:in `block in <main>'
libiconv is missing. Please locate mkmf.log to investigate how it is failing.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/buildbot/.rvm/rubies/ruby-2.7.4/bin/$(RUBY_BASE_NAME)
	--help
	--clean
	--prevent-strip
	--enable-system-libraries
	--disable-system-libraries
	--use-system-libraries
	--enable-system-libraries
	--disable-system-libraries
	--use-system-libraries
	--enable-static
	--disable-static
	--enable-cross-build
	--disable-cross-build
	--enable-cross-build
	--disable-cross-build
	--with-zlib-dir
	--without-zlib-dir
	--with-zlib-include
	--without-zlib-include=${zlib-dir}/include
	--with-zlib-lib
	--without-zlib-lib=${zlib-dir}/lib
	--with-xml2-source-dir
To see why this extension failed to compile, please check the mkmf.log which can be found here:
  /home/buildbot/.rvm/gems/ruby-2.7.4/extensions/x86_64-cygwin/2.7.0/nokogiri-1.15.6/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /home/buildbot/.rvm/gems/ruby-2.7.4/gems/nokogiri-1.15.6 for inspection.
Results logged to /home/buildbot/.rvm/gems/ruby-2.7.4/extensions/x86_64-cygwin/2.7.0/nokogiri-1.15.6/gem_make.out

If installation completed but is broken, what is the complete output from nokogiri -v?

Not available.

If installation failed during compilation, what are the complete contents of the mkmf.log file generated during the failed installation?

::::::::::::::
/home/buildbot/.rvm/gems/ruby-2.7.4/extensions/x86_64-cygwin/2.7.0/nokogiri-1.15.6/mkmf.log
::::::::::::::
block in append_cflags: checking for whether -std=c99 is accepted as CFLAGS... -------------------- yes
"gcc -o conftest.exe -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 conftest.c  -L. -L/home/buildbot/.rvm/rubies/ruby-2.7.4/lib -L. -fstack-protector-strong     -lruby270   "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2  -std=c99 -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -Wno-declaration-after-statement is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99  -Wno-declaration-after-statement -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -O2 is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement  -O2 -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -g is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2  -g -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -Winline is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2 -g  -Winline -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -Wmissing-noreturn is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2 -g -Winline  -Wmissing-noreturn -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
block in append_cflags: checking for whether -Wconversion -Wno-sign-conversion is accepted as CFLAGS... -------------------- yes
"gcc -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2 -g -Winline -Wmissing-noreturn  -Wconversion -Wno-sign-conversion -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */
--------------------
try_link_iconv: checking for iconv... -------------------- no
"gcc -o conftest.exe -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2 -g -Winline -Wmissing-noreturn -Wconversion -Wno-sign-conversion conftest.c  -L. -L/home/buildbot/.rvm/rubies/ruby-2.7.4/lib -L. -fstack-protector-strong     -lruby270   "
[error] conftest.c:4:10: fatal error: iconv.h: No such file or directory
    4 | #include <iconv.h>
compilation terminated.
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <stdlib.h>
 4: #include <iconv.h>
 5: int main(void)
 6: {
 7:     iconv_t cd = iconv_open("", "");
 8:     iconv(cd, NULL, NULL, NULL, NULL);
 9:     return EXIT_SUCCESS;
10: }
/* end */
"gcc -o conftest.exe -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/x86_64-cygwin -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0/ruby/backward -I/home/buildbot/.rvm/rubies/ruby-2.7.4/include/ruby-2.7.0 -I. -D_XOPEN_SOURCE -D_GNU_SOURCE   -g -O2 -std=c99 -Wno-declaration-after-statement -O2 -g -Winline -Wmissing-noreturn -Wconversion -Wno-sign-conversion conftest.c  -L. -L/home/buildbot/.rvm/rubies/ruby-2.7.4/lib -L. -fstack-protector-strong     -lruby270 -liconv  "
[error] conftest.c:4:10: fatal error: iconv.h: No such file or directory
    4 | #include <iconv.h>
compilation terminated.
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <stdlib.h>
 4: #include <iconv.h>
 5: int main(void)
 6: {
 7:     iconv_t cd = iconv_open("", "");
 8:     iconv(cd, NULL, NULL, NULL, NULL);
 9:     return EXIT_SUCCESS;
10: }
/* end */
--------------------
"pkg-config --exists libiconv"
package configuration for libiconv is not found

Tell us about your system!

What is the output from ruby -v?

x86_64-cygwin
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-cygwin]

What is the output from gem -v?

Unknown switches "-v"

What is the output from gem env?

[the output of "gem env" output goes here
](bundler: failed to load command: gem (/home/buildbot/.rvm/rubies/ruby-2.7.4/bin/gem))

If you're using Bundler:

  • what is the output from bundle version?
    • Bundler version 2.1.4
  • what is the output from bundle config? (Take care to redact any credentials)
Settings are listed in order of priority. The top value will be used.

If Windows, please note:

  • whether you're installing the precompiled gems, or compiling yourself with DevKit
    • Since I don't control the cloud environment, I don't know.
  • the version of RubyInstaller you've installed
    • Same reason, don't know.
  • or if you're not using RubyInstaller, how did you install Ruby?
    • Came with the machine.

@SabreRunner Hi. I'll try to help you get this installed.

From your mkmf.log:

[error] conftest.c:4:10: fatal error: iconv.h: No such file or directory

It seems like iconv isn't installed on this machine. Cygwin seems to have a package that you may be able to install:

https://www.cygwin.com/packages/summary/libiconv.html

But alternatively, there is also a cygwin package available for nokogiri that you may want to try installing instead and avoid the entire compilation step?

https://cygwin.com/packages/summary/ruby-nokogiri.html

I tried installing the libiconv package but that had a different problem.

@SabreRunner You may want to try to ask this question on a cywin-specific forum. I'm not sure I can help you without more information.