trilogy-libraries / trilogy

Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding.
MIT License
704 stars 69 forks source link

failed install on windows 11 with mysys64 #138

Open rioda78 opened 11 months ago

rioda78 commented 11 months ago

info enviroment

windows 11 ruby version 3.2.2 rails version 7.1.2

rails install with ruby installer just try to install this gem on that machine but error appear with log :

`Temporarily enhancing PATH for MSYS/MINGW... Building native extensions. This could take a while... ERROR: Error installing trilogy: ERROR: Failed to build gem native extension.

current directory: C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/trilogy-2.6.0/ext/trilogy-ruby

C:/Ruby32-x64/bin/ruby.exe extconf.rb checking for CRYPTO_malloc() in -lcrypto... yes checking for SSL_new() in -lssl... yes checking for rb_interned_str() in ruby.h... yes creating Makefile

current directory: C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/trilogy-2.6.0/ext/trilogy-ruby make DESTDIR\= sitearchdir\=./.gem.20231203-27348-kv5wwy sitelibdir\=./.gem.20231203-27348-kv5wwy clean

current directory: C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/trilogy-2.6.0/ext/trilogy-ruby make DESTDIR\= sitearchdir\=./.gem.20231203-27348-kv5wwy sitelibdir\=./.gem.20231203-27348-kv5wwy generating cext-x64-mingw-ucrt.def compiling trilogy.c trilogy.c:2:10: fatal error: poll.h: No such file or directory 2 | #include | ^~~~ compilation terminated. make: *** [Makefile:248: trilogy.o] Error 1

make failed, exit code 2

Gem files will remain installed in C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/trilogy-2.6.0 for inspection. Results logged to C:/Ruby32-x64/lib/ruby/gems/3.2.0/extensions/x64-mingw-ucrt/3.2.0/trilogy-2.6.0/gem_make.out ` thanks

chadmyers commented 7 months ago

After doing some searching it appears that Windows doesn't support poll() or have a poll.h availabile in msys64/mingw32/64. I saw some other packages use WSAPoll and use compiler conditionals to choose poll.h/poll or WSAPool (#if defined(_WIN32))