nicole mazzuca 1d8f0acc9c
[vcpkg manifest] Manifest Implementation (#11757)
==== 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
2020-06-30 10:40:18 -07:00
..
2019-07-10 13:56:07 -07:00
2020-06-11 22:27:55 -07:00
2020-04-30 17:45:43 -07:00
2019-05-27 11:44:01 +02:00
2019-10-31 13:04:30 -07:00
2020-06-09 15:41:24 -07:00
2019-06-28 13:50:32 -07:00
2020-01-27 14:14:26 -08:00
2019-06-06 13:58:40 -07:00
2019-08-26 14:09:53 -07:00
2019-08-12 13:22:22 -07:00
2020-06-23 14:18:09 -07:00
2020-02-28 21:44:18 -08:00
2019-07-22 10:09:58 -07:00
2020-05-13 10:26:05 -07:00
2019-08-02 10:29:18 -07:00
2019-12-20 11:55:20 -08:00
2020-02-28 21:30:50 -08:00
2020-02-05 16:31:40 +01:00
2020-04-17 14:10:00 -07:00
2020-01-10 15:46:23 -08:00
2020-04-24 12:56:10 -07:00
2020-06-11 23:20:27 -07:00
2020-02-28 22:14:37 -08:00
2019-09-06 18:27:12 -07:00
2020-01-06 13:17:14 -08:00
2019-09-05 10:43:09 -07:00
2020-01-02 13:30:27 -08:00
2019-09-09 11:31:43 -07:00
2020-05-20 14:20:59 -07:00
2020-02-04 14:11:19 -08:00
2020-03-12 12:13:38 -07:00
2019-05-24 15:15:22 -07:00
2019-08-29 14:10:24 -07:00
2019-07-21 23:21:29 -07:00
2019-06-25 10:55:24 -07:00
2020-04-09 08:04:35 +00:00
2019-05-28 15:31:46 -07:00
2019-04-15 04:21:25 -07:00
2020-05-19 14:47:19 -07:00
2020-06-10 17:53:22 -07:00
2019-09-24 11:25:22 -07:00
2019-11-20 14:04:54 -08:00
2019-08-02 10:31:29 -07:00
2020-06-23 13:37:41 -07:00
2019-08-12 13:32:38 -07:00
2019-09-03 02:53:38 +00:00
2019-08-13 10:31:37 -07:00
2020-06-23 13:03:23 -07:00
2020-02-28 21:34:44 -08:00
2020-02-19 16:45:58 -08:00
2019-11-21 16:58:35 -08:00
2020-06-23 13:58:38 -07:00
2020-06-02 22:40:56 -07:00
2019-11-19 11:42:34 -08:00
2020-03-27 19:33:05 -07:00
2019-07-01 22:39:51 -07:00
2019-09-05 10:43:09 -07:00
2020-06-11 21:42:36 -07:00
2019-08-25 16:16:38 -07:00
2020-02-11 16:32:28 -08:00
2020-05-07 12:36:44 -07:00
2019-07-10 17:25:51 -07:00
2020-02-02 23:16:54 -08:00
2020-05-11 15:44:55 -07:00
2020-01-15 16:46:35 -08:00
2020-02-28 22:30:06 -08:00
2019-06-17 10:24:41 -07:00
2020-06-23 14:36:26 -07:00
2019-09-13 13:16:49 -07:00
2020-06-11 02:51:31 -07:00
2020-05-13 16:59:31 -07:00
2019-08-13 11:44:11 -07:00
2020-06-23 12:58:50 -07:00
2019-06-10 16:28:28 -07:00
2019-08-15 13:35:57 -07:00
2019-09-10 08:51:46 -07:00
2020-05-13 10:26:05 -07:00
2020-04-24 14:10:39 -07:00
2019-06-08 19:10:25 -07:00
2020-04-03 14:39:04 -07:00
2019-10-08 02:16:03 -07:00
2019-04-28 19:26:31 -07:00
2020-01-29 11:49:19 -08:00
2019-10-28 17:45:46 -07:00
2019-10-07 19:15:32 -07:00
2019-12-21 12:47:40 -08:00
2020-05-12 16:21:22 -07:00
2019-08-07 12:29:14 -04:00
2020-01-10 15:50:35 -08:00
2020-01-22 22:06:43 +01:00
2020-02-04 15:35:26 -08:00
2020-02-11 14:09:51 -08:00
2020-01-06 14:33:00 -08:00
2020-05-13 10:26:05 -07:00
2019-09-17 10:05:35 -07:00
2020-05-06 13:53:41 -07:00
2020-05-19 14:47:19 -07:00
2019-09-11 14:33:07 -07:00
2020-05-21 11:31:00 -07:00
2019-11-20 19:38:47 +08:00
2019-10-28 11:23:21 -07:00
2019-09-11 22:34:35 -07:00
2020-05-18 10:38:59 -07:00
2020-02-03 15:45:23 +01:00
2020-06-23 13:09:21 -07:00
2020-05-11 14:44:02 -07:00
2020-06-17 14:47:32 -07:00
2020-06-23 13:39:52 -07:00
2020-06-11 00:56:42 -07:00
2020-03-10 17:06:56 -07:00
2020-05-19 14:47:19 -07:00
2020-05-21 11:35:54 -07:00
2019-09-30 08:51:44 -07:00
2019-10-02 19:17:31 -07:00
2020-05-21 11:25:25 -07:00
2019-10-05 07:58:20 -07:00
2019-07-31 14:47:59 -07:00
2020-06-15 13:13:04 -07:00
2020-04-23 21:14:12 -07:00
2020-04-30 17:47:22 -07:00
2020-05-19 14:34:08 -07:00
2020-06-11 02:17:54 -07:00
2019-09-26 17:04:10 -07:00
2020-05-18 11:20:37 -07:00
2020-04-23 21:43:37 -07:00
2020-04-23 21:18:00 -07:00
2020-06-23 13:07:42 -07:00
2020-05-15 13:34:08 -07:00
2020-05-15 13:34:08 -07:00
2020-05-15 13:34:08 -07:00
2020-05-21 11:25:51 -07:00
2020-04-27 07:01:00 -07:00
2019-08-28 12:25:28 -07:00
2019-09-05 10:43:09 -07:00
2019-12-20 12:00:29 -08:00
2020-02-11 17:23:12 -08:00
2019-10-29 23:20:30 -07:00
2019-09-05 10:43:09 -07:00
2020-05-11 20:13:38 -07:00
2019-08-27 23:54:22 -07:00
2019-07-31 14:47:59 -07:00
2020-05-13 10:26:05 -07:00
2019-08-08 08:15:09 -07:00
2020-04-27 07:06:49 -07:00
2019-10-03 16:20:50 -07:00
2020-04-13 11:41:27 +08:00
2019-10-21 15:18:52 -07:00
2020-03-06 10:09:15 -08:00
2019-07-18 19:20:53 -07:00
2019-12-23 15:58:21 -08:00
2019-05-16 13:49:25 -07:00
2020-04-24 15:04:51 -07:00
2020-04-24 15:04:51 -07:00
2019-09-09 10:51:56 -07:00
2020-05-15 16:55:20 -07:00
2020-02-26 13:59:31 -08:00
2020-06-01 16:21:50 -07:00
2019-09-17 12:17:06 -07:00
2019-12-06 17:05:36 +01:00
2020-04-23 13:43:38 -07:00
2020-04-23 21:16:24 -07:00
2020-05-21 10:46:07 -07:00
2019-05-20 01:41:52 -07:00
2020-01-13 13:37:40 -08:00
2020-01-27 14:19:26 -08:00
2020-02-04 11:32:03 -08:00
2019-06-08 18:44:07 -07:00
2020-02-07 09:34:22 -08:00
2020-06-01 19:10:23 -07:00
2020-01-14 12:28:06 -08:00
2019-09-10 11:44:01 -07:00
2019-04-07 22:17:02 -07:00
2020-06-11 02:42:04 -07:00
2019-06-24 13:23:55 -07:00
2019-08-07 12:32:48 -04:00
2020-03-04 13:52:00 -08:00
2020-01-06 10:50:36 -08:00
2020-03-25 20:43:02 -07:00
2020-05-21 10:46:07 -07:00
2020-02-10 16:23:04 -08:00
2020-01-13 15:31:57 -08:00
2019-06-20 14:52:54 -07:00
2019-08-07 12:14:35 -04:00
2019-04-22 12:08:36 +10:00
2019-09-20 12:46:40 -07:00
2020-05-26 21:45:20 -07:00
2019-04-29 12:16:12 -07:00
2020-02-11 16:39:59 -08:00
2019-09-26 14:24:54 -07:00
2020-04-28 13:15:57 -07:00
2020-06-18 15:23:54 -07:00
2020-05-12 16:09:10 -07:00
2019-09-09 08:59:05 -07:00
2020-03-10 09:33:28 -07:00
2020-03-04 10:38:47 -08:00
2020-05-19 15:13:17 -07:00
2020-06-11 01:48:31 -07:00
2019-09-09 15:43:30 -07:00
2020-06-01 16:20:12 -07:00
2019-09-28 08:54:09 -07:00
2020-05-22 21:59:05 -07:00
2020-06-11 21:29:31 -07:00
2019-10-31 14:12:32 -07:00
2019-09-11 14:52:07 -07:00
2020-03-27 19:43:20 -07:00
2019-09-07 23:16:27 +02:00
2020-05-21 10:46:07 -07:00
2020-06-11 00:57:38 -07:00
2020-02-19 16:45:58 -08:00
2020-05-26 20:37:58 -07:00
2020-01-06 14:53:56 -08:00
2020-05-12 16:07:16 -07:00
2019-05-05 23:18:18 -07:00
2020-03-10 12:20:42 -07:00
2020-03-10 12:20:42 -07:00
2020-03-16 14:52:12 -07:00
2019-06-06 18:58:40 -07:00
2020-05-11 15:35:40 -07:00
2019-06-29 22:21:00 -07:00