Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vcpkg manifest mode dependencies default-features not work #12186

Closed
linquize opened this issue Jul 1, 2020 · 2 comments · Fixed by #12227
Closed

vcpkg manifest mode dependencies default-features not work #12186

linquize opened this issue Jul 1, 2020 · 2 comments · Fixed by #12227
Assignees
Labels
category:vcpkg-bug The issue is with the vcpkg system (including helper scripts in `scripts/cmake/`) info:manifests This PR or Issue pertains to the Manifests feature

Comments

@linquize
Copy link

linquize commented Jul 1, 2020

vcpkg: c8ebb5a
I want to perform vcpkg install libarchive[core] in manifest mode.
Note: libarchive has a list of Default-Features: bzip2, libxml2, lz4, lzma, lzo, openssl, zstd

Here is my vcpkg.json

{
  "name": "project1",
  "version-string": "0.0.1",
  "dependencies": [
    {
      "name": "libarchive",
      "default-features": false
    },
    "jsoncpp"
  ]
}

But shows error

Error: There are invalid field types in the CONTROL or manifest file of C:\project1\vcpkg.json
 The following fields had the wrong types:
 
     default-features was expected to be a boolean

The following packages will be built and installed:
  * bzip2[core]:x64-windows
    jsoncpp[core]:x64-windows
    libarchive[bzip2,core,libxml2,lz4,lzma,lzo,openssl,zstd]:x64-windows
  * libiconv[core]:x64-windows
  * liblzma[core]:x64-windows
  * libxml2[core]:x64-windows
  * lz4[core]:x64-windows
  * lzo[core]:x64-windows
  * openssl[core]:x64-windows
  * openssl-windows[core]:x64-windows
  * xxhash[core]:x64-windows
  * zlib[core]:x64-windows
  * zstd[core]:x64-windows
Additional packages (*) will be modified to complete this operation.

Expected result:

The following packages will be built and installed:
    jsoncpp[core]:x64-windows
    libarchive[core]:x64-windows
  * zlib[core]:x64-windows
Additional packages (*) will be modified to complete this operation.
linquize referenced this issue Jul 1, 2020
==== 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
@PhoebeHui PhoebeHui self-assigned this Jul 2, 2020
@PhoebeHui
Copy link
Contributor

Confirmed, this issue fixed.

@PhoebeHui PhoebeHui added the category:vcpkg-bug The issue is with the vcpkg system (including helper scripts in `scripts/cmake/`) label Jul 2, 2020
@strega-nil strega-nil added the info:manifests This PR or Issue pertains to the Manifests feature label Jul 7, 2020
@strega-nil strega-nil reopened this Jul 8, 2020
strega-nil added a commit to strega-nil/vcpkg that referenced this issue Jul 8, 2020
strega-nil added a commit that referenced this issue Jul 9, 2020
@linquize linquize changed the title vcpkg manifest mode default-features not work vcpkg manifest mode dependencies default-features not work Aug 2, 2020
@linquize
Copy link
Author

linquize commented Aug 2, 2020

After #12548, it breaks again, see #12693.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:vcpkg-bug The issue is with the vcpkg system (including helper scripts in `scripts/cmake/`) info:manifests This PR or Issue pertains to the Manifests feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants