neverwinter.nim icon indicating copy to clipboard operation
neverwinter.nim copied to clipboard

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

Open zeroark opened this issue 8 months ago • 2 comments

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

Environment

  • Windows 10 Professional
  • Nim 2.0.4 (Installed using Chocolatey)
  • Ubuntu 18.04.6 (WSL2)

Steps to Reproduce

  • Clone repo, checkout master branch.
  • Build the project using nimble build -d:release

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

  • I made a second attempt adding the nimble install -y --depsOnly and nimble setup just as in the Github Actions. No success.
  • For testing purposes, I attempted to build this from WSL2 and it works without issues. This solution works but, for whatever reason, it's not picking the NWN_HOME and NWN_ROOT environment variables I manually set after building so I have to always manually use --root and --userDirectory
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!

zeroark avatar Jun 20 '24 03:06 zeroark