niv / neverwinter.nim

CLI tools and nim library used in Neverwinter Nights: Enhanced Edition development
MIT License
131 stars 29 forks source link

nwn_script_comp: Issues building on Windows 10 and not picking up $NWN_ROOT and $NWN_HOME environment variables on WSL2 #132

Open zeroark opened 2 months ago

zeroark commented 2 months ago

It is most likely related to my specific setup, not the code itself, so I'm sorry if it is unrelated.

Environment

Steps to Reproduce

Expected Result

All the neverwinter.nim binaries should build successfully

Actual Result

All binaries build correctly, except nwn_script_comp. See the attached logs:

   Building neverwinter/nwn_resman_extract.exe using c backend
   Building neverwinter/nwn_net.exe using c backend
   Building neverwinter/nwn_resman_stats.exe using c backend
   Building neverwinter/nwn_asm.exe using c backend
   Building neverwinter/nwn_gff.exe using c backend
   Building neverwinter/nwn_script_comp.exe using c backend
D:\Workspace\nwn-workspace\neverwinter.nim\nwn_script_comp.nim(1, 21) Warning: use the nimble packages `malebolgia`, `taskpools` or `weave` instead; threadpool is deprecated [Deprecated]
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(ios-inst.o):(.text$_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E[_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E]+0x0): multiple definition of `std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005354.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(ios.o):(.text$_ZNSt8ios_baseC2Ev+0x0): multiple definition of `std::ios_base::ios_base()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005262.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(ios.o):(.text$_ZNSt8ios_baseD2Ev+0x0): multiple definition of `std::ios_base::~ios_base()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005265.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(sstream-inst.o):(.text$_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev[_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev]+0x0): multiple definition of `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005005.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(string-inst.o):(.text$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERyy[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERyy]+0x0): multiple definition of `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long long&, unsigned long long)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004537.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(string-inst.o):(.text$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv]+0x0): multiple definition of `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004434.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(string-inst.o):(.text$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_]+0x0): multiple definition of `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004536.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(string-inst.o):(.text$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEyyPKcy[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEyyPKcy]+0x0): multiple definition of `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long long, unsigned long long, char const*, unsigned long long)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004435.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(string-inst.o):(.text$_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcyy[_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcyy]+0x0): multiple definition of `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned long long, unsigned long long) const'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d001079.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(eh_personality.o):(.text$__gxx_personality_seh0+0x0): multiple definition of `__gxx_personality_seh0'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006855.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(eh_throw.o):(.text$__cxa_rethrow+0x0): multiple definition of `__cxa_rethrow'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006836.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(locale.o):(.text$_ZNSt6localeD2Ev+0x0): multiple definition of `std::locale::~locale()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004369.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(locale_init.o):(.text$_ZNSt6localeC2Ev+0x0): multiple definition of `std::locale::locale()'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d004362.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(functexcept.o):(.text.unlikely._ZSt20__throw_length_errorPKc+0x0): multiple definition of `std::__throw_length_error(char const*)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005553.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(functexcept.o):(.text$_ZSt24__throw_out_of_range_fmtPKcz+0x0): multiple definition of `std::__throw_out_of_range_fmt(char const*, ...)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005575.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(ostream-inst.o):(.text$_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_x[_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_x]+0x0): multiple definition of `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long long)'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d005520.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(eh_catch.o):(.text$__cxa_begin_catch+0x0): multiple definition of `__cxa_begin_catch'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006819.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(eh_catch.o):(.text$__cxa_end_catch+0x0): multiple definition of `__cxa_end_catch'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006825.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(guard.o):(.text$__cxa_guard_acquire+0x0): multiple definition of `__cxa_guard_acquire'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006832.o):(.text+0x0): first defined here
C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0\libstdc++.a(guard.o):(.text$__cxa_guard_release+0x0): multiple definition of `__cxa_guard_release'; C:/ProgramData/mingw64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/libstdc++.dll.a(libstdc___6_dll_d006833.o):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++.exe  @nwn_script_comp_linkerArgs.txt'
       Tip: 7 messages have been suppressed, use --verbose to show them.
nimble.nim(229)          buildFromDir

Notes

zeroark@Zeroark % nwn_script_comp test.nss                                                                        ~
shared.nim(112)          :anonymous
game.nim(83)             findNwnRoot
Error: unhandled exception: Could not locate NWN; try --root [ValueError]
zeroark@Zeroark [1] %                                                                                             ~
zeroark@Zeroark [1] % nwn_script_comp --root /mnt/e/Program\ Files\ \(x86\)/Steam/steamapps/common/Neverwinter\ Nights --userdirectory /mnt/c/Users/Usuario/Documents/Neverwinter\ Nights test.nss
W [2024-06-19T22:33:34]   key not found, skipping: /mnt/e/Program Files (x86)/Steam/steamapps/common/Neverwinter Nights/data/nwn_retail.key
I [2024-06-19T22:33:34] 1 successful, 0 skipped, 0 errored
zeroark@Zeroark %                                                                                                 ~
zeroark@Zeroark % 

I haven't tried using prebuilt binaries yet (Probably will be most likely solution) but just wanted to know if anybody stumbled upon any of the above issues, or if it's just me.

Once again, I appreciate any help on any of the above issues. Thanks!

tinygiant98 commented 3 weeks ago

For the nsc compilation issue, have you tried adding the -d:mingw flag to you nim c command?

zeroark commented 3 weeks ago

Hello @tinygiant98, I ran nimble build -d:mingw in the console and it seems it worked this time. The only issue I found was it that took much longer than usual, but apart from that everything worked just fine.

Tested compiling a simple script, but the Environment Variables issue persists as follows:

image

Everything works just fine If i use the --root flag, but if not it will always drop the same error even if the Environment Variable is present.