microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.87k stars 6.31k forks source link

[RapidJson, Taocpp-json, Boost-json, boost-signals2] build failure #18684

Closed Aneutronic closed 3 years ago

Aneutronic commented 3 years ago

Host Environment

To Reproduce ./vcpkg install rapidjson:x64-windows or ./vcpkg install taocpp-json:x64-windows or ./vcpkg install boost-json:x64-windows or ./vcpkg install boost-signals2:x64-windows

Failure logs The failure message for all of the ports above are exactly the same:

Error: while loading boost-signals:
The port directory (K:\Bulk_Program_Files\vcpkg\ports\boost-signals) does not exist
Error: failed to load port from K:\Bulk_Program_Files\vcpkg\ports\boost-signals
Note: Updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.

Additional context I believe the issue is rooted in the removal of the boost-signals library, (as opposed to the boost-signals2 library, which still exists in vcpkg.)

Checking out the tagged commit "2020.11-1", then rerunning the command ./vcpkg install rapidjson:x64-windows changes the error message to the following:

Error: while loading blas:
The port directory (K:\Bulk_Program_Files\vcpkg\ports\blas) does not exist
Error: failed to load port from K:\Bulk_Program_Files\vcpkg\ports\blas
Note: Updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.
NancyLi1013 commented 3 years ago

Hi @Aneutronic

Thanks for posting this issue.

Could you please try to update vcpkg to the latest commit via git pulland run bootstrap-vcpkg.bat, then rebuild these ports?

Aneutronic commented 3 years ago

I tried that originally, and it didn't fix anything, @NancyLi1013 . I just did that again, and tried the command, and it still didn't work. This time, the library yajl wouldn't build, either.

NancyLi1013 commented 3 years ago

For boost-signals, it doesn't exist in vcpkg now. I don't know why you encountered this problem.

Does K:\Bulk_Program_Files\vcpkg\ports\boost-signals exist on your machine?

NancyLi1013 commented 3 years ago

Could you please also provide the information after you run git pulland ./vcpkg install xxx?

Aneutronic commented 3 years ago

@NancyLi1013 No, the directory K:\Bulk_Program_Files\vcpkg\ports\boost-signals does not exist on my machine, although I did install the library before it was removed from vcpkg, and that directory does still exist on my machine.

I already provided the vcpkg output from after I ran git pull and ./vcpkg install xxx. They are in my original post.

NancyLi1013 commented 3 years ago

Thanks for your reply. Could you please try to create a new vcpkg repo to rebuild? Or are there any changes on your machine manually?

Aneutronic commented 3 years ago

When I created a new repository on my local machine and tried to rebuild rapidjson from there, I ran into no issues. I have no other manual changes made to my normal vcpkg repo. I feel like this issue is worth exploring, still, instead of just saying, "well, don't use that other repo"/"just uninstall boost-signals, and you are good." boost-signals has nothing to do with the libraries I was trying to install, yet vcpkg checked for it and threw an error anyway. That to me sounds like a bug.

NancyLi1013 commented 3 years ago

@Aneutronic

Could you please help provide the output after run ./vcpkg install xxx --debug?

Aneutronic commented 3 years ago

The output after running ./vcpkg install taocpp-json:x64-windows --debug in the original vcpkg directory is this:

[DEBUG] Feature flag 'binarycaching' unset
[DEBUG] Feature flag 'manifests' unset
[DEBUG] Feature flag 'compilertracking' unset
[DEBUG] Feature flag 'registries' unset
[DEBUG] Feature flag 'versions' unset
[DEBUG] BuiltinRegistry initialized with: ""
[DEBUG] Using vcpkg-root: K:\Bulk_Program_Files\vcpkg
[DEBUG] Using installed-root: K:\Bulk_Program_Files\vcpkg\installed
[DEBUG] BuiltinRegistry initialized with: ""
[DEBUG] Using buildtrees-root: K:\Bulk_Program_Files\vcpkg\buildtrees
[DEBUG] Using downloads-root: K:\Bulk_Program_Files\vcpkg\downloads
[DEBUG] Using packages-root: K:\Bulk_Program_Files\vcpkg\packages
[DEBUG] Using scripts-root: K:\Bulk_Program_Files\vcpkg\scripts
[DEBUG] Using ports-root: K:\Bulk_Program_Files\vcpkg\ports
[DEBUG] Using versions-root: K:\Bulk_Program_Files\vcpkg\versions
[DEBUG] Default binary cache path is: C:\Users\Me\AppData\Local\vcpkg\archives
Computing installation plan...
Error: while loading boost-signals:
The port directory (K:\Bulk_Program_Files\vcpkg\ports\boost-signals) does not exist
Error: failed to load port from K:\Bulk_Program_Files\vcpkg\ports\boost-signals
Note: Updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.
[DEBUG] C:\A\1\60\s\src\vcpkg\registries.cpp(438)
[DEBUG] Exiting after 1546907 us (1546849 us)
Aneutronic commented 3 years ago

Just in case it is useful, here is the result of ./vcpkg list inside my original, problematic vcpkg repo:

atlmfc:x64-windows                                 0                a stub package that ensures VS has ATL/MFC insta...
blas:x64-windows                                   1                Metapackage for packages which provide BLAS
blosc:x64-windows                                  1.18.1-1         A blocking, shuffling and loss-less compression ...
boost-accumulators:x64-windows                     1.74.0           Boost accumulators module
boost-algorithm:x64-windows                        1.74.0           Boost algorithm module
boost-align:x64-windows                            1.74.0           Boost align module
boost-any:x64-windows                              1.74.0           Boost any module
boost-array:x64-windows                            1.74.0           Boost array module
boost-asio:x64-windows                             1.74.0           Boost asio module
boost-assert:x64-windows                           1.74.0           Boost assert module
boost-assert:x86-windows                           1.74.0           Boost assert module
boost-assign:x64-windows                           1.74.0           Boost assign module
boost-atomic:x64-windows                           1.74.0           Boost atomic module
boost-beast:x64-windows                            1.74.0           Boost beast module
boost-bimap:x64-windows                            1.74.0           Boost bimap module
boost-bind:x64-windows                             1.74.0           Boost bind module
boost-build:x64-windows                            1.74.0           Boost.Build
boost-callable-traits:x64-windows                  1.74.0           Boost callable_traits module
boost-chrono:x64-windows                           1.74.0           Boost chrono module
boost-circular-buffer:x64-windows                  1.74.0           Boost circular_buffer module
boost-compatibility:x64-windows                    1.74.0           Boost compatibility module
boost-compatibility:x86-windows                    1.74.0           Boost compatibility module
boost-compute:x64-windows                          1.74.0           Boost compute module
boost-concept-check:x64-windows                    1.74.0           Boost concept_check module
boost-config:x64-windows                           1.74.0           Boost config module
boost-config:x86-windows                           1.74.0           Boost config module
boost-container-hash:x64-windows                   1.74.0           Boost container_hash module
boost-container:x64-windows                        1.74.0           Boost container module
boost-context:x64-windows                          1.74.0           Boost context module
boost-contract:x64-windows                         1.74.0           Boost contract module
boost-conversion:x64-windows                       1.74.0           Boost conversion module
boost-convert:x64-windows                          1.74.0           Boost convert module
boost-core:x64-windows                             1.74.0           Boost core module
boost-coroutine2:x64-windows                       1.74.0           Boost coroutine2 module
boost-coroutine:x64-windows                        1.74.0           Boost coroutine module
boost-crc:x64-windows                              1.74.0           Boost crc module
boost-date-time:x64-windows                        1.74.0           Boost date_time module
boost-detail:x64-windows                           1.74.0           Boost detail module
boost-dll:x64-windows                              1.74.0           Boost dll module
boost-dynamic-bitset:x64-windows                   1.74.0           Boost dynamic_bitset module
boost-endian:x64-windows                           1.74.0           Boost endian module
boost-exception:x64-windows                        1.74.0           Boost exception module
boost-fiber:x64-windows                            1.74.0           Boost fiber module
boost-filesystem:x64-windows                       1.74.0           Boost filesystem module
boost-flyweight:x64-windows                        1.74.0           Boost flyweight module
boost-foreach:x64-windows                          1.74.0           Boost foreach module
boost-format:x64-windows                           1.74.0           Boost format module
boost-function-types:x64-windows                   1.74.0           Boost function_types module
boost-function:x64-windows                         1.74.0           Boost function module
boost-functional:x64-windows                       1.74.0           Boost functional module
boost-fusion:x64-windows                           1.74.0           Boost fusion module
boost-geometry:x64-windows                         1.74.0           Boost geometry module
boost-gil:x64-windows                              1.74.0           Boost gil module
boost-graph-parallel:x64-windows                   1.74.0           Boost graph_parallel module
boost-graph:x64-windows                            1.74.0           Boost graph module
boost-hana:x64-windows                             1.74.0           Boost hana module
boost-heap:x64-windows                             1.74.0           Boost heap module
boost-histogram:x64-windows                        1.74.0           Boost histogram module
boost-hof:x64-windows                              1.74.0           Boost hof module
boost-icl:x64-windows                              1.74.0           Boost icl module
boost-integer:x64-windows                          1.74.0           Boost integer module
boost-interprocess:x64-windows                     1.74.0           Boost interprocess module
boost-interval:x64-windows                         1.74.0           Boost interval module
boost-intrusive:x64-windows                        1.74.0           Boost intrusive module
boost-io:x64-windows                               1.74.0           Boost io module
boost-iostreams:x64-windows                        1.74.0           Boost iostreams module
boost-iterator:x64-windows                         1.74.0           Boost iterator module
boost-lambda:x64-windows                           1.74.0           Boost lambda module
boost-lexical-cast:x64-windows                     1.74.0           Boost lexical_cast module
boost-local-function:x64-windows                   1.74.0           Boost local_function module
boost-locale:x64-windows                           1.74.0#3         Boost locale module
boost-lockfree:x64-windows                         1.74.0           Boost lockfree module
boost-log:x64-windows                              1.74.0           Boost log module
boost-logic:x64-windows                            1.74.0           Boost logic module
boost-math:x64-windows                             1.74.0           Boost math module
boost-metaparse:x64-windows                        1.74.0           Boost metaparse module
boost-modular-build-helper:x64-windows             1.74.0#2
boost-move:x64-windows                             1.74.0           Boost move module
boost-mp11:x64-windows                             1.74.0           Boost mp11 module
boost-mpl:x64-windows                              1.74.0           Boost mpl module
boost-msm:x64-windows                              1.74.0           Boost msm module
boost-multi-array:x64-windows                      1.74.0           Boost multi_array module
boost-multi-index:x64-windows                      1.74.0           Boost multi_index module
boost-multiprecision:x64-windows                   1.74.0           Boost multiprecision module
boost-nowide:x64-windows                           1.74.0           Boost nowide module
boost-numeric-conversion:x64-windows               1.74.0           Boost numeric_conversion module
boost-odeint:x64-windows                           1.74.0           Boost odeint module
boost-optional:x64-windows                         1.74.0           Boost optional module
boost-outcome:x64-windows                          1.74.0           Boost outcome module
boost-parameter-python:x64-windows                 1.74.0           Boost parameter_python module
boost-parameter:x64-windows                        1.74.0           Boost parameter module
boost-phoenix:x64-windows                          1.74.0           Boost phoenix module
boost-poly-collection:x64-windows                  1.74.0           Boost poly_collection module
boost-polygon:x64-windows                          1.74.0           Boost polygon module
boost-pool:x64-windows                             1.74.0           Boost pool module
boost-predef:x64-windows                           1.74.0           Boost predef module
boost-preprocessor:x64-windows                     1.74.0           Boost preprocessor module
boost-process:x64-windows                          1.74.0           Boost process module
boost-program-options:x64-windows                  1.74.0           Boost program_options module
boost-property-map:x64-windows                     1.74.0           Boost property_map module
boost-property-tree:x64-windows                    1.74.0           Boost property_tree module
boost-proto:x64-windows                            1.74.0           Boost proto module
boost-ptr-container:x64-windows                    1.74.0           Boost ptr_container module
boost-python:x64-windows                           1.74.0           Boost python module
boost-qvm:x64-windows                              1.74.0           Boost qvm module
boost-random:x64-windows                           1.74.0           Boost random module
boost-range:x64-windows                            1.74.0           Boost range module
boost-ratio:x64-windows                            1.74.0           Boost ratio module
boost-rational:x64-windows                         1.74.0           Boost rational module
boost-regex:x64-windows                            1.74.0           Boost regex module
boost-safe-numerics:x64-windows                    1.74.0           Boost safe_numerics module
boost-scope-exit:x64-windows                       1.74.0           Boost scope_exit module
boost-serialization:x64-windows                    1.74.0           Boost serialization module
boost-signals2:x64-windows                         1.74.0           Boost signals2 module
boost-signals:x64-windows                          1.68.0-1         Boost signals module
boost-smart-ptr:x64-windows                        1.74.0           Boost smart_ptr module
boost-sort:x64-windows                             1.74.0           Boost sort module
boost-spirit:x64-windows                           1.74.0           Boost spirit module
boost-stacktrace:x64-windows                       1.74.0           Boost stacktrace module
boost-statechart:x64-windows                       1.74.0           Boost statechart module
boost-static-assert:x64-windows                    1.74.0           Boost static_assert module
boost-static-string:x64-windows                    1.74.0           Boost static_string module
boost-stl-interfaces:x64-windows                   1.74.0           Boost stl_interfaces module
boost-system:x64-windows                           1.74.0           Boost system module
boost-test:x64-windows                             1.74.0           Boost test module
boost-thread:x64-windows                           1.74.0           Boost thread module
boost-throw-exception:x64-windows                  1.74.0           Boost throw_exception module
boost-timer:x64-windows                            1.74.0           Boost timer module
boost-tokenizer:x64-windows                        1.74.0           Boost tokenizer module
boost-tti:x64-windows                              1.74.0           Boost tti module
boost-tuple:x64-windows                            1.74.0           Boost tuple module
boost-type-erasure:x64-windows                     1.74.0           Boost type_erasure module
boost-type-index:x64-windows                       1.74.0           Boost type_index module
boost-type-traits:x64-windows                      1.74.0           Boost type_traits module
boost-typeof:x64-windows                           1.74.0           Boost typeof module
boost-ublas:x64-windows                            1.74.0           Boost ublas module
boost-uninstall:x64-windows                        1.74.0           boost uninstall port
boost-uninstall:x64-windows-static                 1.74.0           boost uninstall port
boost-uninstall:x86-windows                        1.74.0           boost uninstall port
boost-units:x64-windows                            1.74.0           Boost units module
boost-unordered:x64-windows                        1.74.0           Boost unordered module
boost-utility:x64-windows                          1.74.0           Boost utility module
boost-uuid:x64-windows                             1.74.0           Boost uuid module
boost-variant2:x64-windows                         1.74.0           Boost variant2 module
boost-variant:x64-windows                          1.74.0           Boost variant module
boost-vcpkg-helpers:x64-windows                    7#2              a set of vcpkg-internal scripts used to modulari...
boost-vcpkg-helpers:x64-windows-static             7#2              a set of vcpkg-internal scripts used to modulari...
boost-vcpkg-helpers:x86-windows                    7#2              a set of vcpkg-internal scripts used to modulari...
boost-vmd:x64-windows                              1.74.0           Boost vmd module
boost-wave:x64-windows                             1.74.0           Boost wave module
boost-winapi:x64-windows                           1.74.0           Boost winapi module
boost-xpressive:x64-windows                        1.74.0           Boost xpressive module
boost-yap:x64-windows                              1.74.0           Boost yap module
boost:x64-windows                                  1.74.0           Peer-reviewed portable C++ source libraries
brotli:x64-windows                                 1.0.9            a generic-purpose lossless compression algorithm...
bzip2:x64-windows                                  1.0.8#1          bzip2 is a freely available, patent free, high-q...
clapack:x64-windows                                3.2.1#16         CLAPACK (f2c'ed version of LAPACK)
constexpr:x64-windows                              1.0-1            Small MIT License Library of general stdlib func...
date:x64-windows                                   3.0.0#1          A date and time library based on the C++17 <chro...
eabase:x64-windows                                 2.09.12-1        Electronic Arts Base. EABase is a small set of h...
eastl:x64-windows                                  3.17.03          Electronic Arts Standard Template Library. It is...
egl-registry:x64-windows                           2020-02-20       the EGL API and Extension Registry
expat:x64-windows                                  2020-08-18       XML parser library written in C
fastlz:x64-windows                                 1.0-3            A lightning-fast lossless compression library
fftw3:x64-windows                                  3.3.8-7          FFTW is a C subroutine library for computing the...
fmt:x64-windows                                    7.1.3            Formatting library for C++. It can be used as a ...
geographiclib:x64-windows                          1.51             GeographicLib, a C++ library for performing geog...
glew:x64-windows                                   2.1.0#9          The OpenGL Extension Wrangler Library (GLEW) is ...
glslang:x64-windows                                2019-03-05-1     Khronos reference front-end for GLSL and ESSL, a...
hpx:x64-windows                                    1.5.1#1          The C++ Standards Library for Concurrency and Pa...
hwloc:x64-windows                                  2.2.0            Portable Hardware Locality (hwloc)
libffi:x64-windows                                 3.3#6            Portable, high level programming interface to va...
libjpeg-turbo:x64-windows                          2.0.5#1          libjpeg-turbo is a JPEG image codec that uses SI...
liblzma:x64-windows                                5.2.5#2          Compression library with an API similar to that ...
libmad:x64-windows                                 0.15.1-8         high-quality MPEG audio decoder
libogg:x64-windows                                 1.3.4#3          Ogg is a multimedia container format, and the na...
libpng:x64-windows                                 1.6.37#14        libpng is a library implementing an interface fo...
libtheora:x64-windows                              1.2.0alpha1-2... Theora is a free and open video compression form...
lz4:x64-windows                                    1.9.2-2          Lossless compression algorithm, providing compre...
lzo:x64-windows                                    2.10-5           Lossless data compression library
mpg123:x64-windows                                 1.26.3           mpg123 is a real time MPEG 1.0/2.0/2.5 audio pla...
ms-gsl:x64-windows                                 3.1.0            Microsoft implementation of the Guidelines Suppo...
openal-soft:x64-windows                            1.20.1#5         OpenAL Soft is an LGPL-licensed, cross-platform,...
openblas:x64-windows                               0.3.10           OpenBLAS is an optimized BLAS library based on G...
opengl-registry:x64-windows                        2020-03-25       the API and Extension registries for the OpenGL ...
opengl:x64-windows                                 0.0#8            Open Graphics Library (OpenGL)[3][4][5] is a cro...
openssl-windows:x64-windows                        1.1.1h#1         Deprecated OpenSSL port
openssl:x64-windows                                1.1.1h#4         OpenSSL is an open source project that provides ...
opus:x64-windows                                   1.3.1#5          Totally open, royalty-free, highly versatile aud...
pngpp:x64-windows                                  0.2.10           A C++ wrapper for libpng library.
pthreads:x64-windows                               3.0.0-6          pthreads for windows
python3:x64-windows                                3.9.0#1          The Python programming language
sdl2-gfx:x64-windows                               1.0.4#7          Graphics primitives (line, circle, rectangle etc...
sdl2-image:x64-windows                             2.0.5#1          SDL_image is an image file loading library. It l...
sdl2-image[libjpeg-turbo]:x64-windows                               Support for JPEG image format
sdl2:x64-windows                                   2.0.12#8         Simple DirectMedia Layer is a cross-platform dev...
sdl2[vulkan]:x64-windows                                            Vulkan functionality for SDL
snappy:x64-windows                                 1.1.8            A fast compressor/decompressor.
speex:x64-windows                                  1.2.0#7          Speex is an Open Source/Free Software patent-fre...
sqlite3:x64-windows                                3.33.0           SQLite is a software library that implements a s...
tinyxml2:x64-windows-static                        8.0.0-1          A simple, small, efficient, C++ XML parser
tinyxml:x64-windows                                2.6.2-7          A simple, small, minimal, C++ XML parser that ca...
tinyxml:x64-windows-static                         2.6.2-7          A simple, small, minimal, C++ XML parser that ca...
vulkan:x64-windows                                 1.1.82.1-1       A graphics and compute API that provides high-ef...
xxhash:x64-windows                                 0.8.0#1          Extremely fast hash algorithm
yasm-tool-helper:x64-windows                       2020-10-12       This port provides helper functions for ports ne...
yasm-tool:x86-windows                              2020-10-12       A modular assembler. This port is intended to bu...
zlib:x64-windows                                   1.2.11#9         A compression library
zstd:x64-windows                                   1.4.5#1          Zstandard - Fast real-time compression algorithm
NancyLi1013 commented 3 years ago

Seems you installed boost-signals on your machine before this. boost-signals:x64-windows 1.68.0-1 Boost signals module

Could you please try to run ./vcpkg remove boost-signals and then rerun ./vcpkg install taocpp-json:x64-windows --debug?

Aneutronic commented 3 years ago

I don't want to uninstall boost-signals until I know why it is preventing the installation of a completely unrelated package. I have inspected the other ports I tried to install. I know they do not use boost-signals. The presence of the boost-signals library should not prevent other libraries from being installed. I know I could work around the issue by simply uninstalling boost-signals. If my goal was to simply install taocpp-json, I would have done that. I am not trying to install a library; I am trying to help fix a subtle bug in the vcpkg code that is affecting my use of the software.

I am willing to dive into the actual vcpkg source code to try and diagnose this bug myself, if you are not willing to or would like me to. I am simply unfamiliar with the code, and it will take me a while to familiarize myself with it enough to be able to figure out why vcpkg is checking for the presence of unrelated libraries when trying to install new ones.