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
>>>>>> 
>>>> 
>> 

Reply via email to