Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[curl] with feature psl on windows static build failure #38820

Open
talregev opened this issue May 20, 2024 · 6 comments
Open

[curl] with feature psl on windows static build failure #38820

talregev opened this issue May 20, 2024 · 6 comments
Assignees
Labels
category:port-bug The issue is with a library, which is something the port should already support

Comments

@talregev
Copy link
Contributor

talregev commented May 20, 2024

Operating system

windows 11

Compiler

visual studio 2022

Steps to reproduce the behavior

vcpkg install curl[tool,psl]:x64-windows-static

Failure logs

failure logs for x64-windows-static.zip

Additional context

[217/218] C:\Windows\system32\cmd.exe /C "cd . && D:\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E vs_link_exe --intdir=src\CMakeFiles\curl.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe  src\CMakeFiles\curl.dir\slist_wc.c.obj src\CMakeFiles\curl.dir\tool_binmode.c.obj src\CMakeFiles\curl.dir\tool_bname.c.obj src\CMakeFiles\curl.dir\tool_cb_dbg.c.obj src\CMakeFiles\curl.dir\tool_cb_hdr.c.obj src\CMakeFiles\curl.dir\tool_cb_prg.c.obj src\CMakeFiles\curl.dir\tool_cb_rea.c.obj src\CMakeFiles\curl.dir\tool_cb_see.c.obj src\CMakeFiles\curl.dir\tool_cb_wrt.c.obj src\CMakeFiles\curl.dir\tool_cfgable.c.obj src\CMakeFiles\curl.dir\tool_dirhie.c.obj src\CMakeFiles\curl.dir\tool_doswin.c.obj src\CMakeFiles\curl.dir\tool_easysrc.c.obj src\CMakeFiles\curl.dir\tool_filetime.c.obj src\CMakeFiles\curl.dir\tool_findfile.c.obj src\CMakeFiles\curl.dir\tool_formparse.c.obj src\CMakeFiles\curl.dir\tool_getparam.c.obj src\CMakeFiles\curl.dir\tool_getpass.c.obj src\CMakeFiles\curl.dir\tool_help.c.obj src\CMakeFiles\curl.dir\tool_helpers.c.obj src\CMakeFiles\curl.dir\tool_hugehelp.c.obj src\CMakeFiles\curl.dir\tool_ipfs.c.obj src\CMakeFiles\curl.dir\tool_libinfo.c.obj src\CMakeFiles\curl.dir\tool_listhelp.c.obj src\CMakeFiles\curl.dir\tool_main.c.obj src\CMakeFiles\curl.dir\tool_msgs.c.obj src\CMakeFiles\curl.dir\tool_operate.c.obj src\CMakeFiles\curl.dir\tool_operhlp.c.obj src\CMakeFiles\curl.dir\tool_paramhlp.c.obj src\CMakeFiles\curl.dir\tool_parsecfg.c.obj src\CMakeFiles\curl.dir\tool_progress.c.obj src\CMakeFiles\curl.dir\tool_setopt.c.obj src\CMakeFiles\curl.dir\tool_sleep.c.obj src\CMakeFiles\curl.dir\tool_stderr.c.obj src\CMakeFiles\curl.dir\tool_strdup.c.obj src\CMakeFiles\curl.dir\tool_urlglob.c.obj src\CMakeFiles\curl.dir\tool_util.c.obj src\CMakeFiles\curl.dir\tool_vms.c.obj src\CMakeFiles\curl.dir\tool_writeout.c.obj src\CMakeFiles\curl.dir\tool_writeout_json.c.obj src\CMakeFiles\curl.dir\tool_xattr.c.obj src\CMakeFiles\curl.dir\var.c.obj src\CMakeFiles\curl.dir\curl.rc.res src\CMakeFiles\curl.dir\__\lib\base64.c.obj src\CMakeFiles\curl.dir\__\lib\dynbuf.c.obj  /out:src\curl.exe /implib:src\curl.lib /pdb:src\curl.pdb /version:0.0 /machine:x64 /MANIFEST:NO /nologo    /debug /INCREMENTAL /subsystem:console  lib\libcurl-d.lib  D:\installed\x64-windows-static\debug\lib\brotlidec.lib  ws2_32.lib  bcrypt.lib  D:\installed\x64-windows-static\debug\lib\libssl.lib  D:\installed\x64-windows-static\debug\lib\libcrypto.lib  D:\installed\x64-windows-static\debug\lib\zlibd.lib  D:\installed\x64-windows-static\debug\lib\brotlidec.lib  D:\installed\x64-windows-static\debug\lib\zstd.lib  D:\installed\x64-windows-static\debug\lib\nghttp2.lib  wldap32.lib  normaliz.lib  D:\installed\x64-windows-static\debug\lib\psl.lib  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WS2_32.Lib"  D:\installed\x64-windows-static\debug\lib\icuucd.lib  D:\installed\x64-windows-static\debug\lib\icudtd.lib  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\kernel32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\User32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Gdi32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WinSpool.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\shell32.lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Ole32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\OleAut32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\ComDlg32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\AdvAPI32.Lib"  advapi32.lib  crypt32.lib  D:\installed\x64-windows-static\debug\lib\brotlicommon.lib  ws2_32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
FAILED: src/curl.exe 
C:\Windows\system32\cmd.exe /C "cd . && D:\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E vs_link_exe --intdir=src\CMakeFiles\curl.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe  src\CMakeFiles\curl.dir\slist_wc.c.obj src\CMakeFiles\curl.dir\tool_binmode.c.obj src\CMakeFiles\curl.dir\tool_bname.c.obj src\CMakeFiles\curl.dir\tool_cb_dbg.c.obj src\CMakeFiles\curl.dir\tool_cb_hdr.c.obj src\CMakeFiles\curl.dir\tool_cb_prg.c.obj src\CMakeFiles\curl.dir\tool_cb_rea.c.obj src\CMakeFiles\curl.dir\tool_cb_see.c.obj src\CMakeFiles\curl.dir\tool_cb_wrt.c.obj src\CMakeFiles\curl.dir\tool_cfgable.c.obj src\CMakeFiles\curl.dir\tool_dirhie.c.obj src\CMakeFiles\curl.dir\tool_doswin.c.obj src\CMakeFiles\curl.dir\tool_easysrc.c.obj src\CMakeFiles\curl.dir\tool_filetime.c.obj src\CMakeFiles\curl.dir\tool_findfile.c.obj src\CMakeFiles\curl.dir\tool_formparse.c.obj src\CMakeFiles\curl.dir\tool_getparam.c.obj src\CMakeFiles\curl.dir\tool_getpass.c.obj src\CMakeFiles\curl.dir\tool_help.c.obj src\CMakeFiles\curl.dir\tool_helpers.c.obj src\CMakeFiles\curl.dir\tool_hugehelp.c.obj src\CMakeFiles\curl.dir\tool_ipfs.c.obj src\CMakeFiles\curl.dir\tool_libinfo.c.obj src\CMakeFiles\curl.dir\tool_listhelp.c.obj src\CMakeFiles\curl.dir\tool_main.c.obj src\CMakeFiles\curl.dir\tool_msgs.c.obj src\CMakeFiles\curl.dir\tool_operate.c.obj src\CMakeFiles\curl.dir\tool_operhlp.c.obj src\CMakeFiles\curl.dir\tool_paramhlp.c.obj src\CMakeFiles\curl.dir\tool_parsecfg.c.obj src\CMakeFiles\curl.dir\tool_progress.c.obj src\CMakeFiles\curl.dir\tool_setopt.c.obj src\CMakeFiles\curl.dir\tool_sleep.c.obj src\CMakeFiles\curl.dir\tool_stderr.c.obj src\CMakeFiles\curl.dir\tool_strdup.c.obj src\CMakeFiles\curl.dir\tool_urlglob.c.obj src\CMakeFiles\curl.dir\tool_util.c.obj src\CMakeFiles\curl.dir\tool_vms.c.obj src\CMakeFiles\curl.dir\tool_writeout.c.obj src\CMakeFiles\curl.dir\tool_writeout_json.c.obj src\CMakeFiles\curl.dir\tool_xattr.c.obj src\CMakeFiles\curl.dir\var.c.obj src\CMakeFiles\curl.dir\curl.rc.res src\CMakeFiles\curl.dir\__\lib\base64.c.obj src\CMakeFiles\curl.dir\__\lib\dynbuf.c.obj  /out:src\curl.exe /implib:src\curl.lib /pdb:src\curl.pdb /version:0.0 /machine:x64 /MANIFEST:NO /nologo    /debug /INCREMENTAL /subsystem:console  lib\libcurl-d.lib  D:\installed\x64-windows-static\debug\lib\brotlidec.lib  ws2_32.lib  bcrypt.lib  D:\installed\x64-windows-static\debug\lib\libssl.lib  D:\installed\x64-windows-static\debug\lib\libcrypto.lib  D:\installed\x64-windows-static\debug\lib\zlibd.lib  D:\installed\x64-windows-static\debug\lib\brotlidec.lib  D:\installed\x64-windows-static\debug\lib\zstd.lib  D:\installed\x64-windows-static\debug\lib\nghttp2.lib  wldap32.lib  normaliz.lib  D:\installed\x64-windows-static\debug\lib\psl.lib  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WS2_32.Lib"  D:\installed\x64-windows-static\debug\lib\icuucd.lib  D:\installed\x64-windows-static\debug\lib\icudtd.lib  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\kernel32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\User32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Gdi32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WinSpool.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\shell32.lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Ole32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\OleAut32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\ComDlg32.Lib"  "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\AdvAPI32.Lib"  advapi32.lib  crypt32.lib  D:\installed\x64-windows-static\debug\lib\brotlicommon.lib  ws2_32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK: command "C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\link.exe src\CMakeFiles\curl.dir\slist_wc.c.obj src\CMakeFiles\curl.dir\tool_binmode.c.obj src\CMakeFiles\curl.dir\tool_bname.c.obj src\CMakeFiles\curl.dir\tool_cb_dbg.c.obj src\CMakeFiles\curl.dir\tool_cb_hdr.c.obj src\CMakeFiles\curl.dir\tool_cb_prg.c.obj src\CMakeFiles\curl.dir\tool_cb_rea.c.obj src\CMakeFiles\curl.dir\tool_cb_see.c.obj src\CMakeFiles\curl.dir\tool_cb_wrt.c.obj src\CMakeFiles\curl.dir\tool_cfgable.c.obj src\CMakeFiles\curl.dir\tool_dirhie.c.obj src\CMakeFiles\curl.dir\tool_doswin.c.obj src\CMakeFiles\curl.dir\tool_easysrc.c.obj src\CMakeFiles\curl.dir\tool_filetime.c.obj src\CMakeFiles\curl.dir\tool_findfile.c.obj src\CMakeFiles\curl.dir\tool_formparse.c.obj src\CMakeFiles\curl.dir\tool_getparam.c.obj src\CMakeFiles\curl.dir\tool_getpass.c.obj src\CMakeFiles\curl.dir\tool_help.c.obj src\CMakeFiles\curl.dir\tool_helpers.c.obj src\CMakeFiles\curl.dir\tool_hugehelp.c.obj src\CMakeFiles\curl.dir\tool_ipfs.c.obj src\CMakeFiles\curl.dir\tool_libinfo.c.obj src\CMakeFiles\curl.dir\tool_listhelp.c.obj src\CMakeFiles\curl.dir\tool_main.c.obj src\CMakeFiles\curl.dir\tool_msgs.c.obj src\CMakeFiles\curl.dir\tool_operate.c.obj src\CMakeFiles\curl.dir\tool_operhlp.c.obj src\CMakeFiles\curl.dir\tool_paramhlp.c.obj src\CMakeFiles\curl.dir\tool_parsecfg.c.obj src\CMakeFiles\curl.dir\tool_progress.c.obj src\CMakeFiles\curl.dir\tool_setopt.c.obj src\CMakeFiles\curl.dir\tool_sleep.c.obj src\CMakeFiles\curl.dir\tool_stderr.c.obj src\CMakeFiles\curl.dir\tool_strdup.c.obj src\CMakeFiles\curl.dir\tool_urlglob.c.obj src\CMakeFiles\curl.dir\tool_util.c.obj src\CMakeFiles\curl.dir\tool_vms.c.obj src\CMakeFiles\curl.dir\tool_writeout.c.obj src\CMakeFiles\curl.dir\tool_writeout_json.c.obj src\CMakeFiles\curl.dir\tool_xattr.c.obj src\CMakeFiles\curl.dir\var.c.obj src\CMakeFiles\curl.dir\curl.rc.res src\CMakeFiles\curl.dir\__\lib\base64.c.obj src\CMakeFiles\curl.dir\__\lib\dynbuf.c.obj /out:src\curl.exe /implib:src\curl.lib /pdb:src\curl.pdb /version:0.0 /machine:x64 /MANIFEST:NO /nologo /debug /INCREMENTAL /subsystem:console lib\libcurl-d.lib D:\installed\x64-windows-static\debug\lib\brotlidec.lib ws2_32.lib bcrypt.lib D:\installed\x64-windows-static\debug\lib\libssl.lib D:\installed\x64-windows-static\debug\lib\libcrypto.lib D:\installed\x64-windows-static\debug\lib\zlibd.lib D:\installed\x64-windows-static\debug\lib\brotlidec.lib D:\installed\x64-windows-static\debug\lib\zstd.lib D:\installed\x64-windows-static\debug\lib\nghttp2.lib wldap32.lib normaliz.lib D:\installed\x64-windows-static\debug\lib\psl.lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WS2_32.Lib D:\installed\x64-windows-static\debug\lib\icuucd.lib D:\installed\x64-windows-static\debug\lib\icudtd.lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\kernel32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\User32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Gdi32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WinSpool.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\shell32.lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\Ole32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\OleAut32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\ComDlg32.Lib C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\AdvAPI32.Lib advapi32.lib crypt32.lib D:\installed\x64-windows-static\debug\lib\brotlicommon.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib" failed (exit code 1120) with the following output:
libcurl-d.lib(version.c.obj) : error LNK2019: unresolved external symbol __imp_psl_check_version_number referenced in function curl_version
libcurl-d.lib(cookie.c.obj) : error LNK2019: unresolved external symbol __imp_psl_is_cookie_domain_acceptable referenced in function Curl_cookie_add
libcurl-d.lib(psl.c.obj) : error LNK2019: unresolved external symbol __imp_psl_free referenced in function Curl_psl_destroy
libcurl-d.lib(psl.c.obj) : error LNK2019: unresolved external symbol __imp_psl_builtin referenced in function Curl_psl_use
libcurl-d.lib(psl.c.obj) : error LNK2019: unresolved external symbol __imp_psl_latest referenced in function Curl_psl_use
src\curl.exe : fatal error LNK1120: 5 unresolved externals
ninja: build stopped: subcommand failed.
@talregev talregev added the category:port-bug The issue is with a library, which is something the port should already support label May 20, 2024
@dg0yt
Copy link
Contributor

dg0yt commented May 20, 2024

libpsl is a fairly new port...
The symbols shouldn't be prefixed with __impl for static linkage. Maybe an issue with the pc files, or a header adding declspec(dllimport).

@talregev
Copy link
Contributor Author

libpsl is a fairly new port... The symbols shouldn't be prefixed with __impl for static linkage. Maybe an issue with the pc files, or a header adding declspec(dllimport).

I also write on curl, and he also suspected that is a declspec(dllimport) problem.
I compile libpsl with added a -Ddefault_library=static that add -DPSL_STATIC flag. But it still give me the same error.
https://github.com/rockdaboot/libpsl/blob/master/src/meson.build#L30

Can you take a look on it?

@talregev
Copy link
Contributor Author

@dg0yt I figure out, I will create a PR.

@dg0yt
Copy link
Contributor

dg0yt commented May 20, 2024

Look at the installed header:
https://github.com/rockdaboot/libpsl/blob/490bd6f98a2addcade55028ea60c36cce07e21e4/include/libpsl.h.in#L53

Basically what is needed for vcpkg is to substitute defined PSL_STATIC with 1 for static windows triplets, after the install step.

@talregev
Copy link
Contributor Author

talregev commented May 20, 2024

Look at the installed header: https://github.com/rockdaboot/libpsl/blob/490bd6f98a2addcade55028ea60c36cce07e21e4/include/libpsl.h.in#L53

Basically what is needed for vcpkg is to substitute defined PSL_STATIC with 1 for static windows triplets, after the install step.

Yes, I already fix this, but now I added a test, and I got new errors on other ports. Do you mind to look on this PR?
#38828

@talregev
Copy link
Contributor Author

where we should define defined PSL_STATIC 1 before that line?
https://github.com/rockdaboot/libpsl/blob/490bd6f98a2addcade55028ea60c36cce07e21e4/include/libpsl.h.in#L53

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-bug The issue is with a library, which is something the port should already support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants