* [vcpkg registries] Registries: Take 2
unfortunately without all the history because I really screwed up the git commands
This RFC is the new state of the world with regard to our plan for registries; it is very different from the old RFC. It includes registry databases, which are how one describes the set of versions of ports that one has access to. It also includes the specification for git registries, and updates the specification for filesystem registries with these new registry databases.
Since this RFC completely changes how registries work, the existing implementation will be broken.
* update the registries RFC for modern design
* remove bikeshedding
==== 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
* [vcpkg] Add manifests specification
* Remove invisible tabs and fix nested lists
Somehow, a lot of tabs where inserted betweend the `*` and start of list items, and they didn't show up in the github source view 🤷.
* feedback from @traversaro
* fix stuff from review
Co-authored-by: Edhebi <aurore53000@gmail.com>
* Android: add docs/examples/vcpkg_android_example_cmake/
* Add docs/users/android.md
* Improve Android prefab doc
Following additional informations given by @atkawa7 at
https://github.com/microsoft/vcpkg/pull/11264
* Link to android.md
* Update the prefab usage instructions: "vcpkg install"
the 4 archs before exporting a prefab
* added --prefab-debug flag
* added gradle integration info
* reviewed the prefab output directory structure
(from a dump of an actual export)
* docs/users/triplets.md: link to android.md
* docs/index.md: link to android.md
* android.md: specify 2 possibiities for android_ndk_home
* Added examples/vcpkg_android_example_cmake_script/cmake/vcpkg_android.cmake
Usage:
1. Main CMakeLists:
if (VCPKG_TARGET_ANDROID)
include("cmake/vcpkg_android.cmake")
endif()
2. cmake invocation:
cmake .. -DVCPKG_TARGET_ANDROID=ON -DANDROID_ABI=armeabi-v7a
* trigger pipeline build
* trigger pipelines
* added android triplets
* added android support to vcpkg
* added export directories to git ignore
* fix libraries naming
* added vckpg sources to visual studio project files
* rename file location
* issue with std::string fs:path copy initialization
* format path on VStudio
* fix checks format cannot work on fs::path
* support header only libraries
* support using architecture instead of triplets
* added prefab support
* added debug logs and prefab debug flag
* added support for empty packages i.e openssl