We’ve been hacking on this for the past couple of weeks on Slack as time permits, but we’re not getting to a conclusive solution.
As far as Ic an tell, we manage to build everything in a way that should work when put together, but then we fail at having the right lib paths set up and I have no clue as to how this really works on Windows. If there’s someone here who knows this better could join the CouchDB Slack for a bit of interactive debugging, I think we can get this going relatively quickly. Ronny and I a usually around during EU workdays and times. Thanks! Best Jan — Professional Support for Apache CouchDB: https://neighbourhood.ie/couchdb-support/ 24/7 Observation for your CouchDB Instances: https://opservatory.app > On 26. Nov 2021, at 11:11, Ronny Berndt <ro...@kioskkinder.com.INVALID> wrote: > > Hi Will, > > yes, you are right. I seperated the sm build dir and didn't copied the > dll's into the $VCPK_BIN directory. > Now, i copied the dll's into the bin dir and couchjs should work. The > problem is, that the library 'priv/couch_ejson_compare' isn't found > and Jan and I have no ideas how to fix that library loading error. Maybe we > need some interactive help... > > Log file: https://pastebin.com/DakNMrVM > > Cheers, Ronny > > Florian Beckert & Ronny Berndt GbR > Saalstr. 3 > 07743 Jena > > Tel. 03641 - 6391110 > Fax. 03641 - 219637 > E-Mail: p...@kioskkinder.com > > > Am Do., 25. Nov. 2021 um 15:12 Uhr schrieb Will Young < > lostnetwork...@gmail.com>: > >> Hi Ronny, >> >> I think the issue is the glazier is packaging up the dlls from >> $VCPKG_BIN in couchdb's \bin for the runtime which don't correspond to >> the paths you are indicating. You could probably copy the dlls into >> $vcpkg_bin or add lines to copy the dlls from your icu and mozjs to >> the build_installer.ps1. >> >> Cheers, >> Will >> >> Am Do., 25. Nov. 2021 um 13:00 Uhr schrieb Ronny Berndt >> <ro...@kioskkinder.com.invalid>: >>> >>> Hi Will, >>> >>> i played a little bit with the paths and set it explicit in >>> src/couch/rebar.config.script : >>> >>> {JS_CFLAGS, JS_LDFLAGS} = case os:type() of >>> {win32, _} when SMVsn == "1.8.5" -> >>> { >>> "/DXP_WIN", >>> "mozjs185-1.0.lib" >>> }; >>> {unix, _} when SMVsn == "1.8.5" -> >>> { >>> "-DXP_UNIX -I/usr/include/js -I/usr/local/include/js", >>> "-L/usr/local/lib -lmozjs185 -lm" >>> }; >>> {win32, _} when SMVsn == "60" -> >>> { >>> "/IC:\\relax\\esr60-obj-opt-x86_64-pc-mingw32\\dist\\include >>> /DXP_WIN", >>> >>> "/LIBPATH:\"C:\\relax\\esr60-obj-opt-x86_64-pc-mingw32\\js\\src\\build\" >>> mozjs-60.lib" >>> ... >>> ... >>> ... >>> >>> IcuWinEnv = [{"CFLAGS", "$DRV_CFLAGS >>> /IC:\\Users\\User\\Downloads\\icu4c-60_3-src\\icu\\include /DXP_WIN"}, >>> {"LDFLAGS", >>> "/LIBPATH:\"C:\\Users\\User\\Downloads\\icu4c-60_3-src\\icu\\lib64\" >>> icuin.lib icudt.lib icuuc.lib"}]. >>> >>> >>> It's compiling again, but with another error when starting >> ".\dev\runc.cmd" >>> >>> https://pastebin.com/vqzhR4Zk >>> >>> Cheers, Ronny >>> >>> Florian Beckert & Ronny Berndt GbR >>> Saalstr. 3 >>> 07743 Jena >>> >>> Tel. 03641 - 6391110 >>> Fax. 03641 - 219637 >>> E-Mail: p...@kioskkinder.com >>> >>> >>> Am Do., 25. Nov. 2021 um 10:49 Uhr schrieb Will Young < >>> lostnetwork...@gmail.com>: >>> >>>> Hi Ronny, >>>> >>>> If you follow its configuration here: >>>> >>>> >>>> >> https://github.com/apache/couchdb/blob/main/src/couch/rebar.config.script#L197 >>>> to IcuWinEnv, it doesn't set any search paths like other OSes since it >> is >>>> expecting these paths to already be setup in the environment. >>>> >>>> From your earlier email I saw: >>>> >>>> ERROR: sh(cmd /q /c link.exe >> priv/couch_ejson_compare/couch_ejson_compare.o >>>> icuin.lib icudt.lib icuuc.lib /DLL /LIBPATH:"c:/Program >>>> Files/erl9.3.3.14/lib/erl_interface-3.10.2.2/lib" ei.lib >>>> /OUT:priv/couch_ejson_compare.dll) >>>> >>>> I'm not sure why the vcpkg setup from glazier isn't applying library >> paths >>>> to the environment, (dumping the env with set(?) might help identify >> the >>>> cause) but in IcuWinEnv you could try adding a /LIBPATH before the ICU >>>> libraries with their location to get a clean build of this nif which >>>> hopefully then runs.. I think order might also not be important to >> window's >>>> linker so an alternative is to just jam a copy of the vcpkg directories >>>> into that erl_interface directory. >>>> Cheers, >>>> Will Young >>>> >>>> >>>> Am Mi., 24. Nov. 2021 um 17:50 Uhr schrieb Ronny Berndt >>>> <ro...@kioskkinder.com.invalid>: >>>>> >>>>> Hi, >>>>> >>>>> today I hacked manually the missing unresolved symbols for sm 60 in >> and >>>>> compiled the icu lib by myself. So I was able to create the >>>>> couchdb v3.2.1 executable and the installer. >>>>> >>>>> Side note: running the tests wasn't successful! >>>>> >>>>> I can run .\dev\run.cmd or the installed version. If I click on >> "Verify >>>>> Installation" I get the following error messages, see >>>>> https://pastebin.com/55kyfint >>>>> >>>>> Jan and I running out of the origin of the problem... >>>>> >>>>> Cheers, Ronny >>>>> >>>>> >>>>> Florian Beckert & Ronny Berndt GbR >>>>> Saalstr. 3 >>>>> 07743 Jena >>>>> >>>>> Tel. 03641 - 6391110 >>>>> Fax. 03641 - 219637 >>>>> E-Mail: p...@kioskkinder.com >>>>> >>>>> >>>>> Am Mi., 17. Nov. 2021 um 23:13 Uhr schrieb Will Young < >>>>> lostnetwork...@gmail.com>: >>>>> >>>>>> Hi, >>>>>> >>>>>> Are you sure these PS shells are running from the glazier >>>>>> bin/shell1.ps usually referred to as the same powershell in the >> docs? >>>>>> >>>>>> Looking at the pastebin it looks like libicu is being passed to >> the >>>>>> windows linker in UNIX proper style so it is being ignored, so the >>>>>> pkg-config setup didn't really change that all the icu symbols are >>>>>> going to be missing. In the later make for couch with the copied >> mozjs >>>>>> binaries, it also looks like the vcpkg paths are not in the >> linker's >>>>>> "LIBPATH" and so it makes sense that the missing symbols are again >>>>>> from libraries being added there. >>>>>> >>>>>> I don't think you need to add pkg-conf (or don't want to give it a >>>>>> real configuration), rather glazier's bin/shell.ps1 launched by or >>>>>> after the bin/install_dependencies.ps1 has all the necessary path >>>>>> settings. (AFAIK windows does some dll's search voodoo so only >> having >>>>>> the paths is important and explicit -llibname like options simply >>>>>> aren't used.) >>>>>> >>>>>> I've not really tried glazier and don't actually have windows >> locally, >>>>>> I am just using it as a guide for wsl in github actions, so my >>>>>> apologies if I'm way off on how it works.. >>>>>> Will Young >>>>>> >>>> >>