Yubico/libfido2

file not found during make

Kc9jjj opened this issue · 5 comments

I'm trying to build the latest version using vscode on windows 11 and I keep getting the below error.
CMake Error at man/cmake_install.cmake:164 (file):
file INSTALL cannot find
"C:/Users/Darren/libfido2/build/x64/dynamic/man/eddsa_pk_free.3.gz": No
error.
Call Stack (most recent call first):
cmake_install.cmake:41 (include)

C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: The command "setlocal [C:\Users\Darren\libfid
o2\build\x64\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: "C:\Program Files\Microsoft Visual Studio\202
2\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake [C:\Users\Darren\libfido2\build\x64\dynamic\install.vcxp
roj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Users\D
arren\libfido2\build\x64\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmEnd [C:\Users\Darren\libfido2\build\x64\dy
namic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% &
goto :cmDone [C:\Users\Darren\libfido2\build\x64\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmErrorLevel [C:\Users\Darren\libfido2\build
\x64\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: exit /b %1 [C:\Users\Darren\libfido2\build\x6
4\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmDone [C:\Users\Darren\libfido2\build\x64\d
ynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [C:\Users\D
arren\libfido2\build\x64\dynamic\install.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :VCEnd" exited with code 1. [C:\Users\Darren\
libfido2\build\x64\dynamic\install.vcxproj]
Done Building Project "C:\Users\Darren\libfido2\build\x64\dynamic\install.vcxproj" (default targets) -- FAILED.
I looked in the folder and the size of that file is 0 bytes I was wondering if it was a typo or somethingthanks

What version of libfido2 are you using?

What operating system are you running?

What application are you using in conjunction with libfido2?

How does the problem manifest itself?

Is the problem reproducible?

What are the steps that lead to the problem?

Does the problem happen with different authenticators?

Please include the output of fido2-token -L.

fido2-token -L
$ fido2-token -L

Please include the output of fido2-token -I.

fido2-token -I
$ fido2-token -I <device>

Please include the output of FIDO_DEBUG=1.

FIDO_DEBUG=1
$ export FIDO_DEBUG=1
$ <command1>
$ <command2>
(...)
$ <commandn>
LDVG commented

I cannot reproduce this error in my test environment. Please provide more information about how you have set up your project and steps needed to reproduce. If you wish to avoid building the man pages, you could set the CMake option -DBUILD_MANPAGES=OFF.

As an aside, for our own releases we typically use the scripts under windows/ to build libfido2.

I'm building using the build.ps1 script in the windows directory. The only things I have changed are the locations of the dependancies at the top of th file. thanks

LDVG commented

Please show your modifications, the invocation of, and full output of the command. Please also indicate whether you're building from the Git repository (if so, which commit?) or from a release tarball. What version of CMake are you running?

[string]$CMakePath = "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe",
[string]$GitPath = "C:\Program Files\Git\bin\git.exe",
[string]$SevenZPath = "C:\Program Files\7-Zip\7z.exe",
[string]$GPGPath = "C:\Program Files (x86)\GnuPG\bin\gpg.exe",
[string]$WinSDK = "",
[string]$Config = "Release",
[string]$Arch = "x64",
[string]$Type = "dynamic",
[string]$Fido2Flags = ""

)
./build.ps1
github repository
3.28.0.0
buildoutput.txt

LDVG commented

OK, thanks!

A couple of thoughts from my side: It looks like your CMake invocation finds a Cygwin install that includes gzip. I'd assume it also finds ln in the same location. We rely on symbolic links to alias manual pages, e.g. eddsa_pk_free.3.gz is a symbolic link to eddsa_pk_new.3.gz. It seems to me that these Cygwin-style symbolic links confuses (the Windows-native) CMake.

Looking at our CMakeLists.txt, we have probably assumed that neither mandoc nor gzip is found under MSVC which, if true, results in no symlink rules executing. To resolve your current issue, you can either a) remove Cygwin from your path; or b) patch build.ps1 to set -DBUILD_MANPAGES=OFF for libfido2.

Going forward, I think it might make the most sense for us to unconditionally disable manual page generation under MSVC, see #790.