neverwinter.nim
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
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_HOMEandNWN_ROOTenvironment variables I manually set after building so I have to always manually use--rootand--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!
For the nsc compilation issue, have you tried adding the -d:mingw flag to you nim c command?
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:
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.
Sorry for the late reply. Looks like --root isn't working because it appears that that nsc is looking for the game on windows with a hardcoded c:\ directory. Yours is E. You can get around this by setting an environmental variables called NWN_ROOT to your game's install.
Hello @tinygiant98,
Looks like NWN_ROOT worked. Weird that NWN_HOME didn't. This has effectively solved my issue. Thanks again!