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

Fix gem installation problems on 64-bit Windows #671

Merged
merged 12 commits into from
Aug 18, 2023
Merged

Fix gem installation problems on 64-bit Windows #671

merged 12 commits into from
Aug 18, 2023

Conversation

jlnr
Copy link
Member

@jlnr jlnr commented Aug 16, 2023

Trying to fix #670... @cyberarm Do you have tooling set up to verify this? Since GitHub Actions didn't catch the original issue, I can't use it to verify this fix, and I will be away from my Windows machine for another few days.

@jlnr jlnr requested a review from cyberarm August 16, 2023 19:07
@cyberarm
Copy link
Collaborator

I'll give it a go tomorrow (~12 hours from now)

@cyberarm
Copy link
Collaborator

From: d2822c0
Error

linking shared-object gosu-ffi.so
[...]/x86_64-w64-mingw32/bin/ld.exe: cannot export Init_gosu: symbol not defined

Log

PS C:\Users\cyber\Code\gosu> rake GOSU_RELEASE_VERSION=9.9.9 gem
[...]

PS C:\Users\cyber\Code\gosu> gem install .\pkg\gosu-9.9.9.gem
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
ERROR:  Error installing .\pkg\gosu-9.9.9.gem:
        ERROR: Failed to build gem native extension.

    current directory: C:/Users/cyber/Rubies/Ruby32-x64/lib/ruby/gems/3.2.0/gems/gosu-9.9.9/ext/gosu-ffi
C:/Users/cyber/Rubies/Ruby32-x64/bin/ruby.exe extconf.rb
creating Makefile

current directory: C:/Users/cyber/Rubies/Ruby32-x64/lib/ruby/gems/3.2.0/gems/gosu-9.9.9/ext/gosu-ffi
make DESTDIR\= sitearchdir\=./.gem.20230817-37100-hyizaq sitelibdir\=./.gem.20230817-37100-hyizaq clean

current directory: C:/Users/cyber/Rubies/Ruby32-x64/lib/ruby/gems/3.2.0/gems/gosu-9.9.9/ext/gosu-ffi
make DESTDIR\= sitearchdir\=./.gem.20230817-37100-hyizaq sitelibdir\=./.gem.20230817-37100-hyizaq
generating gosu-ffi-x64-mingw-ucrt.def
compiling ./../../dependencies/SDL_sound/SDL_sound.c
compiling ./../../dependencies/SDL_sound/SDL_sound_aiff.c
compiling ./../../dependencies/SDL_sound/SDL_sound_au.c
compiling ./../../dependencies/SDL_sound/SDL_sound_coreaudio.c
compiling ./../../dependencies/SDL_sound/SDL_sound_flac.c
compiling ./../../dependencies/SDL_sound/SDL_sound_modplug.c
compiling ./../../dependencies/SDL_sound/SDL_sound_mp3.c
compiling ./../../dependencies/SDL_sound/SDL_sound_raw.c
compiling ./../../dependencies/SDL_sound/SDL_sound_shn.c
compiling ./../../dependencies/SDL_sound/SDL_sound_voc.c
compiling ./../../dependencies/SDL_sound/SDL_sound_vorbis.c
compiling ./../../dependencies/SDL_sound/SDL_sound_wav.c
compiling ./../../dependencies/SDL_sound/libmodplug/fastmix.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_669.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_amf.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_ams.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_dbm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_dmf.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_dsm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_far.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_gdm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_it.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_mdl.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_med.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_mod.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_mt2.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_mtm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_okt.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_psm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_ptm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_s3m.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_stm.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_ult.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_umx.c
compiling ./../../dependencies/SDL_sound/libmodplug/load_xm.c
compiling ./../../dependencies/SDL_sound/libmodplug/mmcmp.c
compiling ./../../dependencies/SDL_sound/libmodplug/modplug.c
compiling ./../../dependencies/SDL_sound/libmodplug/snd_dsp.c
compiling ./../../dependencies/SDL_sound/libmodplug/snd_flt.c
compiling ./../../dependencies/SDL_sound/libmodplug/sndfile.c
compiling ./../../dependencies/SDL_sound/libmodplug/sndmix.c
compiling ./../../dependencies/mojoAL/mojoal.c
compiling ./../../dependencies/utf8proc/utf8proc.c
compiling ./../../src/Audio.cpp
compiling ./../../src/AudioFileAudioToolbox.cpp
compiling ./../../src/AudioFileSDLSound.cpp
compiling ./../../src/AudioImpl.cpp
compiling ./../../src/BinPacker.cpp
compiling ./../../src/Bitmap.cpp
compiling ./../../src/BitmapIO.cpp
compiling ./../../src/Buffer.cpp
compiling ./../../src/Channel.cpp
compiling ./../../src/Color.cpp
compiling ./../../src/Directories.cpp
compiling ./../../src/DirectoriesUIKit.cpp
compiling ./../../src/Drawable.cpp
compiling ./../../src/FPS.cpp
compiling ./../../src/Font.cpp
compiling ./../../src/GosuGLView.cpp
compiling ./../../src/GosuViewController.cpp
compiling ./../../src/Graphics.cpp
compiling ./../../src/Image.cpp
compiling ./../../src/Input.cpp
compiling ./../../src/InputUIKit.cpp
compiling ./../../src/Macro.cpp
compiling ./../../src/MarkupParser.cpp
compiling ./../../src/Math.cpp
compiling ./../../src/OffScreenTarget.cpp
compiling ./../../src/OpenGLContext.cpp
compiling ./../../src/Resolution.cpp
compiling ./../../src/TexChunk.cpp
compiling ./../../src/Text.cpp
compiling ./../../src/TextBuilder.cpp
compiling ./../../src/TextInput.cpp
compiling ./../../src/Texture.cpp
compiling ./../../src/TiledDrawable.cpp
compiling ./../../src/TimingApple.cpp
compiling ./../../src/TimingUnix.cpp
compiling ./../../src/TimingWin.cpp
compiling ./../../src/Transform.cpp
compiling ./../../src/TrueTypeFont.cpp
compiling ./../../src/TrueTypeFontApple.cpp
compiling ./../../src/TrueTypeFontUnix.cpp
compiling ./../../src/TrueTypeFontWin.cpp
compiling ./../../src/Utility.cpp
compiling ./../../src/UtilityWin.cpp
compiling ./../../src/Version.cpp
compiling ./../../src/Window.cpp
compiling ./../../src/WindowUIKit.cpp
compiling ./../../ffi/Gosu.cpp
compiling ./../../ffi/Gosu_Channel.cpp
compiling ./../../ffi/Gosu_Color.cpp
compiling ./../../ffi/Gosu_Constants.cpp
compiling ./../../ffi/Gosu_Font.cpp
compiling ./../../ffi/Gosu_Image.cpp
compiling ./../../ffi/Gosu_Sample.cpp
compiling ./../../ffi/Gosu_Song.cpp
compiling ./../../ffi/Gosu_TextInput.cpp
compiling ./../../ffi/Gosu_Window.cpp
linking shared-object gosu-ffi.so
C:/Users/cyber/Rubies/Ruby32-x64/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot export Init_gosu: symbol not defined
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:265: gosu-ffi.so] Error 1

make failed, exit code 2

Gem files will remain installed in C:/Users/cyber/Rubies/Ruby32-x64/lib/ruby/gems/3.2.0/gems/gosu-9.9.9 for inspection.
Results logged to C:/Users/cyber/Rubies/Ruby32-x64/lib/ruby/gems/3.2.0/extensions/x64-mingw-ucrt/3.2.0/gosu-9.9.9/gem_make.out

@jlnr
Copy link
Member Author

jlnr commented Aug 17, 2023

Thanks for testing! Aha, it turns out the odd command line for running Ruby tests on Windows was broken. (It used to work on Appveyor...) Now I can reproduce the error using GitHub Actions too.

@jlnr jlnr changed the title Fix compilation on 64-bit Windows Fix gem installation problems on 64-bit Windows Aug 17, 2023
@jlnr jlnr marked this pull request as ready for review August 18, 2023 13:10
@jlnr jlnr merged commit eeedf01 into master Aug 18, 2023
10 checks passed
@jlnr jlnr deleted the windows-fix branch August 18, 2023 13:11
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

Successfully merging this pull request may close these issues.

FFI 2.0.0 pre release fails to compile from rubygems on win64
2 participants