--editable suppresses binary caching and source re-extraction for packages listed on the command line (similar to --head).
This fundamentally changes the port maintenance loop, so several example documents were updated. To avoid users having substantial changes suddenly destroyed by forgetting to pass --editable, "clean" sources have different extract locations.
The undocumented command `build` implies `--editable`.
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
This changes our PR builds to treat 'fail' in the ci.baseline.txt as 'skip' instead of using tombstones.
We currently have large numbers of spurious failures that get enshrined in PRs through no fault of a PR author, removing the tombstones concept will fix those by allowing the user to retry. This does mean we accept some risk of not detecting when a port is 'fixed', but that failure is reasonable for us to handle after we see it in CI, but that seems worth it given that it lets us get rid of the tombstone concept.
This also helps out the binary caching feature, because we don't have to figure out how to productize tombstones.
* [vcpkg] Implement --x-write-nuget-packages-config= setting for `install` and `x-set-installed`.
* [vcpkg] Add end-to-end testing suite for install, remove, and binary caching
* [vcpkg] Define `$TestingRoot in end-to-end-tests.ps1
* [vcpkg] Address CR comments
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] Upgrade find_acquire_program(NUGET) to 5.5.1. Add partial SHA to temporary download paths to avoid collisions.
* [vcpkg] Fix regression in `vcpkg export --nuget` due to file locking on .vcpkg-root
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
==== Changes Related to manifests ====
* Add the `manifests` feature flag
* This only says whether we look for a `vcpkg.json` in the cwd, not
whether we support parsing manifests (for ports, for example)
* Changes to the manifests RFC
* `"authors"` -> `"maintainers"`
* `--x-classic-mode` -> `-manifests` \in `vcpkg_feature_flags`
* reserve `"core"` in addition to `"default"`, since that's already
reserved for features
* Add a small helper note about what identifiers must look like
* `<license-string>`: SPDX v3.8 -> v3.9
* `"feature"."description"` is allowed to be an array of strings as well
* `"version"` -> `"version-string"` for forward-compat with versions
RFC
* Add the `--feature-flags` option
* Add the ability to turn off feature flags via passing
`-<feature-flag>` to `VCPKG_FEATURE_FLAGS` or `--feature-flags`
* Add CMake toolchain support for manifests
* Requires either:
* a feature flag of `manifests` in either `Env{VCPKG_FEATURE_FLAGS}`
or `VCPKG_FEATURE_FLAGS`
* Passing the `VCPKG_ENABLE_MANIFESTS` option
* The toolchain will install your packages to
`${VCPKG_MANIFEST_DIR}/vcpkg_installed`.
* Add MSBuild `vcpkg integrate install` support for manifests
* Requires `VcpkgEnableManifest` to be true
* `vcpkg create` creates a port that has a `vcpkg.json` instead of a
`CONTROL`
* argparse, abseil, 3fd, and avisynthplus ports switched to manifest
from CONTROL
* Add support for `--x-manifest-root`, as well as code for finding it if
not passed
* Add support for parsing manifests!
* Add a filesystem lock!
==== Important Changes which are somewhat unrelated to manifests ====
* Rename `logicexpression.{h,cpp}` to `platform-expression.{h,cpp}`
* Add `PlatformExpression` type which takes the place of the old logic
expression
* Split the parsing of platform expressions from checking whether
they're true or not
* Eagerly parse PlatformExpressions as opposed to leaving them as
strings
* Add checking for feature flag consistency
* i.e., if `-binarycaching` is passed, you shouldn't be passing
`--binarysource`
* Add the `Json::Reader` type which, with the help of user-defined
visitors, converts JSON to your internal type
* VcpkgArgParser: place the switch names into a constant as opposed to
using magic constants
* In general update the parsing code so that this ^ works
* Add `Port-Version` fields to CONTROL files
* This replaces the existing practice of
`Version: <my-version>-<port-version>`
==== Smaller changes ====
* small drive-by cleanups to some CMake
* `${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}` ->
`${CURRENT_INSTALLED_DIR}`
* Remove `-analyze` when compiling with clang-cl, since that's not a
supported flag (vcpkg's build system)
* Add a message about which compiler is detected by vcpkg's build
system machinery
* Fix `Expected::then`
* Convert `""` to `{}` for `std::string` and `fs::path`, to avoid a
`strlen` (additionally, `.empty()` instead of `== ""`, and `.clear()`)
* Add `Strings::strto` which converts strings to numeric types
* Support built-in arrays and `StringView` for `Strings::join`
* Add `operator<` and friends to `StringView`
* Add `substr` to `StringView`
* SourceParagraphParser gets some new errors
* Introduce buffered_print class to manage buffered write patterns like in the ci command.
* Remove --purge-tombstones option.
* Law of demeter.
* Make buffered_print imobile.
* buffered_print => BufferedPrint
* Fix merge conflict.
* [vcpkg] Initial implementation of --x-binarysource=nuget
* [vcpkg] Remove double-double quoting of CMake arguments
* [vcpkg] Update nuget.exe to 5.5.1 to support Azure DevOps Artifacts
* [vcpkg] Enable batching of NuGet server calls with prefetch(). Add `interactive` binarysource.
* [vcpkg] Add `nugetconfig` binary source
* [vcpkg] Short circuit querying remote NuGet servers once all refs are found
* [vcpkg] Add experimental help for binary caching
* [vcpkg] Improved NuGet cache package descriptions and version formatting
* [vcpkg] Rename `CmdLineBuilder::build()` to extract()
* [vcpkg-help] Ascii-betize help topics
* [vcpkg] Add tests for cmdlinebuilder. Improve handling of quotes and slashes.
* [vcpkg] Addressing code review comments
* [vcpkg] Add tests for vcpkg::reformat_version()
* [vcpkg] Added test for vcpkg::generate_nuspec()
* [vcpkg] Add tests for vcpkg::XmlSerializer
* [vcpkg] Addressed code review comment
* [vcpkg] Add test for vcpkg::Strings::find_first_of
* [vcpkg] Fix machine-specific paths in test for vcpkg::generate_nuspec()
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] Fix "[commands-build] build smoke test"
1. Do not exit with a success code in Build::perform, because this causes failures in other tests to be ignored.
2. Use temp directory to avoid interference with the current set of {installed, buildtrees, packages}
3. Explicitly disable binary caching
* [vcpkg] Disable binarycaching in "build smoke test", "[commands-build]"
Return 1 for the last failure case in Build::perform() so testing may continue.
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] Use XDG Base Directory Specification on non-Windows
* [vcpkg] Move user-wide binary cache on Windows to $LOCALAPPDATA/vcpkg/archives
* [vcpkg] Address code review comments; refactor other uses of LOCALAPPDATA
* [vcpkg] Address code review comments
* [vcpkg] filesystem::path::append() accepts string arguments, not paths.
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] Refactor out abi_tags_from_pre_build_info()
* [vcpkg] Track Windows toolchain file in triplet hash
* [vcpkg] Improve error messages when constructing PreBuildInfo
* [vcpkg] Extract InstallPlanAction::BuildAbiInfo
* [vcpkg] Extract Build::EnvCache and private-impl VcpkgPaths
* [vcpkg] Enable compiler hash detection when binarycaching is enabled
* [vcpkg] Downgrade warning about missing ABI keys
When binarycaching is not enabled, this warning is spurious and provides no user value.
* [vcpkg] Cleanup
* [vcpkg] Refactor compiler tracking into triplet abi computation
Move several static global caches into VcpkgPaths/EnvCache.
Add feature flag 'compilertracking' to enable the new feature.
* [vcpkg] Refactor out PreBuildInfo::using_vcvars()
Move VcpkgTripletVar into build.cpp because it is not used outside that file.
* [vcpkg] Address some code analysis warnings
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
I believe that user-defined configuration triplets paths should be the first when searching for triplet configuration.
This commit puts user-defined configuration triplets (if defined) on top of the search queue before standard paths.
This could help to overwrite default tiplet configuration without setting custom triplet.
P.S. If current implementation is better than my suggestion, feel free to ignore this commit.
Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
* [vcpkg] Fix issue #9781 by exporting from the installed directory
* [vcpkg] Address code review comments for #11015
* [vcpkg] Remove duplicate triplet in installed path from exports
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Co-authored-by: Curtis J Bezault <curtbezault@gmail.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] Remove do-nothing Set-Content from Windows azure-pipelines.yml.
* [vcpkg] Fix OSX CI by ensuring the downloads directory exists in advance, and extract common command line parameters with powershell splatting.
* [tensorflow-cc] Prevent hang building tensorflow-cc asking to configure iOS.
* Skip ignition-msgs5:x64-osx
* add x86-wasm.cmake to community triplets
The EMSDK enviroment variable is normally defined when first installing Emscripten.
* Rename x86-wasm.cmake to wasm32-emscripten.cmake
* Update wasm32-emscripten.cmake
* Update wasm32-emscripten.cmake
* Add wasm32 and wasm64 arch to docs
* Create wasm64-emscripten.cmake
* remove wasm64
* Delete wasm64-emscripten.cmake
* Add wasm32 to list of identifiers
* add emscripten VCPKG_CMAKE_SYSTEM_NAME support
* add path check to EMSDK cmake toolchain
* [vcpkg metrics] start using json library
Additionally, add floats to the JSON library since they're required.
* [vcpkg metrics] allow users to disable metrics after the build
Additionally, as a drive by, fix UUID generation
* fix metrics data
* code review
* [cmake] Update to 3.17.1
* update cmake directory name
* [cpuid] Fix install headers.
* [stormlib] Fix install headers
* [murmurhash] Fix install headers
* [metrohash] Fix install headers
* update baseline
* update baseline
* [otl] update hash
* update baseline
* [gts] Do not use ninja to avoid empty implib issue
* update baseline
* [dmlc] Re-trigger ci test
* [replxx] Re-trigger ci test
* update baseline
* [osg] Re-trigger ci test
* [replxx] Fix build failure
* Set cmake min version to 3.17.1
* update baseline
* [libnice] Re-trigger ci test
* [mlpack] Re-trigger ci test
* update to 3.17.2
* update cmake hash
* update baseline
* update baseline
* update baseline
* update baseline
* Update scripts/ci.baseline.txt
Co-authored-by: Billy O'Neal <billy.oneal@gmail.com>
* update baseline
* update baseline
* [magnum] Set magnum:arm64-windows to skip in baseline
* [nanogui] Set nanogui:arm64-windows to fail in baseline
* [nettle] Set nettle:x64-windows to fail, waiting for fix this issue in another PR
* re-trigger CI test
* update baseline
* Install unixODBC in Linux
* [nanodbc] Re-trigger CI test
* update baseline
* Remove space
* update baseline
`files.h/files.cpp`:
* Add end and else comments to all macros.
* Add "remove_all_inside" function which empties a directory without actually deleting the directory. This is necessary to handle the case where the directory is actually a directory symlink.
* Change remove_all to use std::remove when VCPKG_USE_STD_FILESYSTEM is set; this will engage POSIX delete support available on current Win10.
`commands.ci.cpp`: empty "installed".
`*/initialize_environment.*`: No longer clean the directories outside the tool.
`ci-step.ps1`: Remove unused console output tee-ing.
* Fixing build with VS2019
* Added support for finding VS2019 by VS160COMNTOOLS env var
* [vcpkg] Explicitly handle trailing backslash in VS140 path.
* [vcpkg] Defer instance validation for VS160COMNTOOLS
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>