microsoft / vcpkg

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

[vcpkg --editable] does not install dependency ports as editable #13596

Closed StarGate-One closed 4 years ago

StarGate-One commented 4 years ago

Describe the bug .\vcpkg.exe --editable install [port] [port]... only installs ports provided on command line as editable, any required dependency ports are install as clean.

Environment

To Reproduce Steps to reproduce the behavior:

  1. Environment variables set set VCPKG_BINARY_SOURCES=clear;files,D:\Git\vcpkg\archives,readwrite set VCPKG_DEFAULT_TRIPLET=x64-windows set VCPKG_FEATURE_FLAGS=-binarycaching

  2. I randomly picked libpq but it can be any port having dependencies not already installed and dependencies previously not installed and not included on the command line: .\vcpkg.exe --debug install --x-use-aria2 --recurse --keep-going --editable libpq[core,openssl,zlib] See log/screen-shot openssl-windows and zlib were installed clean where libpq was installed editable: vcpkg-no-dependencies-on-command-line.txt image

  3. Now running the same port with all dependencies specified on command line: .\vcpkg.exe --debug install --x-use-aria2 --recurse --keep-going --editable libpq[core,openssl,zlib] openssl openssl-windows zlib See log/screen-shot where all ports libpq openssl-windows and zlib were installed editable: vcpkg-with-dependencies-on-command-line.txt image

Expected behavior When --editable is on command line, all ports installed, including dependencies not specified for install of said port should all be installed as --editable

Failure logs -None

Additional context -None

JackBoosY commented 4 years ago

@ras0219-msft I think it's by design. Is it?

StarGate-One commented 4 years ago

--editable [NEW OPTION]: Suppress binary caching and source re-extraction for packages listed on the command line

@JackBoosY Yes you are correct. My bad - it just makes more work on ports having many dependencies, like boost.

  1. It is just my command line goes from a simple short 3 ports listed: vcpkg install --editable boost[mpi] boost-locale[icu] boost-regex[icu]
  2. to over 150 ports listed (I am sorry, but it seems the more changes made, the harder it becomes to maintain and the less desirable the product becomes for day-to-day C/C++ package management) I was taught the KISS method where this project is becoming just the opposite :( vcpkg install --editable boost-accumulators[core] boost-algorithm[core] boost-align[core] boost-any[core] boost-array[core] boost-asio[core] boost-assert[core] boost-assign[core] boost-atomic[core] boost-beast[core] boost-bimap[core] boost-bind[core] boost-build[core] boost-callable-traits[core] boost-chrono[core] boost-circular-buffer[core] boost-compatibility[core] boost-compute[core] boost-concept-check[core] boost-config[core] boost-container-hash[core] boost-container[core] boost-context[core] boost-contract[core] boost-conversion[core] boost-convert[core] boost-core[core] boost-coroutine2[core] boost-coroutine[core] boost-crc[core] boost-date-time[core] boost-detail[core] boost-dll[core] boost-dynamic-bitset[core] boost-endian[core] boost-exception[core] boost-fiber[core] boost-filesystem[core] boost-flyweight[core] boost-foreach[core] boost-format[core] boost-function-types[core] boost-functional[core] boost-function[core] boost-fusion[core] boost-geometry[core] boost-gil[core] boost-graph-parallel[core] boost-graph[core] boost-hana[core] boost-heap[core] boost-histogram[core] boost-hof[core] boost-icl[core] boost-integer[core] boost-interprocess[core] boost-interval[core] boost-intrusive[core] boost-iostreams[core] boost-io[core] boost-iterator[core] boost-lambda[core] boost-lexical-cast[core] boost-local-function[core] boost-locale[core,icu] boost-lockfree[core] boost-logic[core] boost-log[core] boost-math[core] boost-metaparse[core] boost-modular-build-helper[core] boost-move[core] boost-mp11[core] boost-mpi[core] boost-mpl[core] boost-msm[core] boost-multi-array[core] boost-multi-index[core] boost-multiprecision[core] boost-nowide[core] boost-numeric-conversion[core] boost-odeint[core] boost-optional[core] boost-outcome[core] boost-parameter-python[core] boost-parameter[core] boost-phoenix[core] boost-poly-collection[core] boost-polygon[core] boost-pool[core] boost-predef[core] boost-preprocessor[core] boost-process[core] boost-program-options[core] boost-property-map[core] boost-property-tree[core] boost-proto[core] boost-ptr-container[core] boost-python[core] boost-qvm[core] boost-random[core] boost-range[core] boost-rational[core] boost-ratio[core] boost-regex[core,icu] boost-safe-numerics[core] boost-scope-exit[core] boost-serialization[core] boost-signals2[core] boost-smart-ptr[core] boost-sort[core] boost-spirit[core] boost-stacktrace[core] boost-statechart[core] boost-static-assert[core] boost-static-string[core] boost-system[core] boost-test[core] boost-thread[core] boost-throw-exception[core] boost-timer[core] boost-tokenizer[core] boost-tti[core] boost-tuple[core] boost-type-erasure[core] boost-type-index[core] boost-type-traits[core] boost-typeof[core] boost-ublas[core] boost-units[core] boost-unordered[core] boost-utility[core] boost-uuid[core] boost-variant2[core] boost-variant[core] boost-vcpkg-helpers[core] boost-vmd[core] boost-wave[core] boost-winapi[core] boost-xpressive[core] boost-yap[core] boost[core,mpi] icu[core] libffi[core] mpi[core] msmpi[core] python3[core]