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] Use triplet file results in dependency logic expressions #8601

Merged
merged 94 commits into from
Feb 3, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
7cfd48b
remove unfinished "supports" tag
Rastaban Oct 7, 2019
9cd2a4f
extract "supports" from control files
Rastaban Oct 9, 2019
40bd2a5
Start `Supports` documentation
Rastaban Oct 9, 2019
2aec94d
Use Supports in a bunch of control files
Rastaban Oct 9, 2019
d3c83c8
Cmake var provider (#8)
cbezault Oct 10, 2019
8282161
Cmake var provider (#9)
cbezault Oct 10, 2019
8e65f00
fix windows build (#10)
cbezault Oct 11, 2019
d132950
Add missing files to build
Rastaban Oct 11, 2019
5776607
Merge branch 'master' into cleanup_supports
Rastaban Oct 11, 2019
066b21f
Fix test (#11)
cbezault Oct 11, 2019
d042b51
adding hooks for cmake variables in expressions
Rastaban Oct 11, 2019
f24c6e2
Adding hooks for 'supports' in CI test
Rastaban Oct 14, 2019
f041229
Fix test (#12)
cbezault Oct 14, 2019
bb9fa61
Merge branch 'master' into cleanup_supports
Rastaban Oct 14, 2019
fd78dde
Add overrides to evaluation environment
Rastaban Oct 14, 2019
471dc9e
use "supported" tag in CI testing
Rastaban Oct 14, 2019
b560a59
cleanup comment
Rastaban Oct 14, 2019
71f515e
Fix issues with PR
vicroms Oct 16, 2019
fa8c87a
Merge branch 'cleanup_supports' of https://github.com/Rastaban/vcpkg …
vicroms Oct 16, 2019
b49747a
Merge branch 'master' into cleanup_supports
cbezault Oct 24, 2019
67ec4cd
Merge branch 'master' into cleanup_supports
cbezault Nov 1, 2019
0146140
[var_provider] Get library linkage variables from triplet
vicroms Nov 1, 2019
e261b83
Merge branch 'cleanup_supports' of https://github.com/Rastaban/vcpkg …
vicroms Nov 1, 2019
544d1ab
Fix compilation errors in tests
vicroms Nov 4, 2019
9ab2eca
Add unimplemented functions
vicroms Nov 4, 2019
e6b38d3
Fix unit tests part 1
vicroms Nov 5, 2019
2ddc70a
Fix issue when buildtrees dir does not exist
vicroms Nov 5, 2019
6dfadbc
Change binary output hash
vicroms Nov 5, 2019
66c35d1
Merge branch 'master' of https://github.com/Microsoft/vcpkg into clea…
vicroms Nov 22, 2019
ce26abb
Merge branch 'master' into cleanup_supports
cbezault Dec 2, 2019
e24f112
Merge branch 'master' of https://github.com/Microsoft/vcpkg into clea…
vicroms Dec 4, 2019
8d1ec6d
Fix handling of * feature
vicroms Dec 4, 2019
dfb8f74
Add core feature when using *
vicroms Dec 5, 2019
496e485
Do not add Default-Features when installing 'core'
vicroms Dec 5, 2019
7e0a95f
Merge branch 'master' into cleanup_supports
ras0219-msft Dec 23, 2019
804a6e2
Merge branch 'master' into cleanup_supports
cbezault Jan 9, 2020
49232b0
Merge remote-tracking branch 'origin/master' into HEAD
ras0219-msft Jan 13, 2020
28b2942
Merge branch 'master' into cleanup_supports
cbezault Jan 14, 2020
12efc9f
[vcpkg] WIP. 6 failing tests.
ras0219-msft Jan 15, 2020
1dac329
[vcpkg] WIP. 1 failing tests.
ras0219-msft Jan 15, 2020
f3986de
[vcpkg] WIP. 0 failing tests.
ras0219-msft Jan 15, 2020
e491420
[vcpkg] Removed 'remove_graph'. 0 failing tests.
ras0219-msft Jan 15, 2020
38e5a84
[vcpkg] Removed 'install_graph'. 0 failing tests.
ras0219-msft Jan 15, 2020
8299858
[vcpkg] Remove AnyAction; replace with ActionPlan
ras0219-msft Jan 16, 2020
35f7bd4
Merge branch 'cleanup_supports' of https://github.com/Rastaban/vcpkg …
ras0219-msft Jan 16, 2020
ac4789a
[vcpkg] Minor cleanup.
ras0219-msft Jan 16, 2020
b66ba42
[vcpkg][z3][qt5-connectivity][qt5-purchasing] Improve error messages …
ras0219-msft Jan 16, 2020
8c5a50c
[vcpkg] Work around ICE with MSVC v140
ras0219-msft Jan 16, 2020
9d44bd9
[vcpkg] Add purge on fail to decompress for CI
ras0219-msft Jan 16, 2020
f7ef524
[vcpkg] Fix parsing of nested parentheses in qualifiers
ras0219-msft Jan 17, 2020
eaeb0a4
[vcpkg] Fix Linux builds (explicit qualification in declaration)
ras0219-msft Jan 17, 2020
52df594
Merge branch 'master' into cleanup_supports
ras0219-msft Jan 17, 2020
968771d
[vcpkg] Fix Build-Depends implying default features. Fix qualified de…
ras0219-msft Jan 18, 2020
3399025
Merge remote-tracking branch 'origin/master' into HEAD
ras0219-msft Jan 22, 2020
2818ea8
[mmx] Add to skip list and full rebuild -- mmx causes problems by ins…
ras0219-msft Jan 23, 2020
d7797d6
Merge remote-tracking branch 'origin/master' into HEAD
ras0219-msft Jan 23, 2020
e11d184
[libpqxx][mqtt-cpp] Prevent installing include/CMakeLists.txt
ras0219-msft Jan 23, 2020
cae7ab2
[cppitertools] Fix installed include namespace (should be include/cpp…
ras0219-msft Jan 23, 2020
7e3db76
[libsoundio] Move headers into soundio/ subdirectory as per original …
ras0219-msft Jan 25, 2020
ee5310f
[ci.baseline] Temporarily skip charls due to conflict with dcmtk
ras0219-msft Jan 25, 2020
413f987
[vcpkg] Add restricted include files post build check -- bump global …
ras0219-msft Jan 25, 2020
e6e0969
[libsoundio] Hotfix stray line in portfile
ras0219-msft Jan 25, 2020
ff77ac0
[vcpkg] Fix regression: CMake information was not being displayed for…
ras0219-msft Jan 25, 2020
2389237
[jsonnet] Fix installation of internal headers; use system nlohmann-json
ras0219-msft Jan 25, 2020
67fba1f
[grpc][upb] Teach grpc to use packaged upb. Add find_package(upb). Re…
ras0219-msft Jan 26, 2020
61aaf3d
[zfp] Move problematic 'include/bitstream.h' to 'include/zfp/bitstrea…
ras0219-msft Jan 26, 2020
eb63bed
[x265] Bump control version to trigger rebuild after zfp conflict
ras0219-msft Jan 26, 2020
fe76547
[akali] Disable parallel configure
ras0219-msft Jan 26, 2020
d107c49
[dirent][dlfcn-win32][getopt-win32][pthreads] Grandfather into VCPKG_…
ras0219-msft Jan 26, 2020
57a1fff
[ci.baseline] Update baseline for improved upb support
ras0219-msft Jan 26, 2020
925e705
[tgui] Disable parallel configure
ras0219-msft Jan 26, 2020
bd7f94d
[libiconv] Enable VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
ras0219-msft Jan 26, 2020
4b35c17
[aws-sdk-cpp] Disable parallel configure
ras0219-msft Jan 26, 2020
998a7c3
[vcpkg] Implement policy VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
ras0219-msft Jan 27, 2020
32a0ca4
[aws-sdk-cpp] Fix amount of escaping semicolons -- Note: I do not kno…
ras0219-msft Jan 27, 2020
527cf4c
[libodb-sqlite] Fix configuring into source directory
ras0219-msft Jan 27, 2020
3c48a0d
[gettext] Grandfather into VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS
ras0219-msft Jan 27, 2020
91f5038
[libodb] DISABLE_PARALLEL_CONFIGURE
ras0219-msft Jan 29, 2020
a0c5f6a
[vcpkg] Add 'config.h' and 'local.h' to restricted header list
ras0219-msft Jan 29, 2020
5b785e3
Merge remote-tracking branch 'origin/master' into HEAD
ras0219-msft Jan 30, 2020
782508f
[mcpp] Remove unused and problematic include 'config.h' from installe…
ras0219-msft Jan 30, 2020
a475f5d
[teemo] Move installed headers into subdirectory to prevent conflicts…
ras0219-msft Jan 30, 2020
bf523a6
[ci.baseline] Update current OSX. Skip libmesh on all platforms due t…
ras0219-msft Jan 30, 2020
c21f3ef
[vcpkg] Add 'slice.h' as a restricted header
ras0219-msft Jan 30, 2020
efba085
[osg] Improve accuracy of dependencies (disable some, add some to Dep…
ras0219-msft Jan 30, 2020
c5ac33e
[vcpkg] Skip invoking a subprocess for 0 specs in load_tag_vars
ras0219-msft Jan 30, 2020
51ab694
[ci.baseline] Skip mongo-c-driver on osx due to flakiness
ras0219-msft Jan 30, 2020
62531eb
[teemo] Fix incorrect include file read
ras0219-msft Jan 30, 2020
e7c3dc6
[osg] Fix dependency typo: glut -> freeglut
ras0219-msft Jan 30, 2020
c147c86
Merge remote-tracking branch 'origin/master' into HEAD
ras0219-msft Jan 31, 2020
d662365
[vcpkg] Recover some lost performance with the addition of vcpkg_get_…
ras0219-msft Jan 31, 2020
6a5202e
[vcpkg] Change Supports atom 'windows' to include UWP. Improve Suppor…
ras0219-msft Jan 31, 2020
719d9b9
[vcpkg] Add docs for VCPKG_ENV_PASSTHROUGH and VCPKG_DEP_INFO_OVERRID…
ras0219-msft Feb 1, 2020
188b437
Fix typo
vicroms Feb 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 30 additions & 13 deletions docs/maintainers/control-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ For example, given:

Then if you update the source version today, you should give it version `2019-06-01`. If you need to make a change which doesn't adjust the source version, you should give it version `2019-02-14-2`.

Example:
##### Examples:
```no-highlight
Version: 1.0.5-2
```
Expand All @@ -71,7 +71,7 @@ A description of the library.

By convention the first line of the description is a summary of the library. An optional detailed description follows. The detailed description can be multiple lines, all starting with whitespace.

Example:
##### Examples:
```no-highlight
Description: C++ header-only JSON library
```
Expand All @@ -96,38 +96,55 @@ Vcpkg does not distinguish between build-only dependencies and runtime dependenc

*For example: websocketpp is a header only library, and thus does not require any dependencies at install time. However, downstream users need boost and openssl to make use of the library. Therefore, websocketpp lists boost and openssl as dependencies*

Example:
```no-highlight
Build-Depends: zlib, libpng, libjpeg-turbo, tiff
```
If the port is dependent on optional features of another library those can be specified using the `portname[featurelist]` syntax.
If the port is dependent on optional features of another library those can be specified using the `portname[featurelist]` syntax. If the port does not require any features from the dependency, this should be specifed as `portname[core]`.

Dependencies can be filtered based on the target triplet to support different requirements on Windows Desktop versus the Universal Windows Platform. Currently, the string inside parentheses is substring-compared against the triplet name. There must be a space between the name of the port and the filter. __This will change in a future version to not depend on the triplet name.__
Dependencies can be filtered based on the target triplet to support differing requirements. These filters use the same syntax as the Supports field below and are surrounded in parentheses following the portname and feature list.

Example:
##### Example:
```no-highlight
Build-Depends: curl[openssl] (!windows&!osx), curl[winssl] (windows), curl[darwinssl] (osx)
Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)
```

#### Default-Features
Comma separated list of optional port features to install by default.

This field is optional.

##### Example:
```no-highlight
Default-Features: dynamodb, s3, kinesis
```

#### Supports
Expression that evalutates to true when the port is supported for a given triplet. This field is currently only used in the CI testing to skip ports.
Expression that evalutates to true when the port is expected to build successfully for a triplet.

Currently, this field is only used in the CI testing to skip ports. In the future, this mechanism is intended to warn users in advance that a given install tree is not expected to succeed. Therefore, this field should be used optimistically; in cases where a port is expected to succeed 10% of the time, it should still be marked "supported".

The grammar for the supports expression uses standard operators:
- `!expr` - negation
- `expr|expr` - or (`||` is also supported)
- `expr&expr` - and (`&&` is also supported)
- `(expr)` - grouping/precedence

The predefined expressions are computed from standard triplet settings:
- `x64` - `VCPKG_TARGET_ARCHITECTURE` == `"x64"`
- `x86` - `VCPKG_TARGET_ARCHITECTURE` == `"x86"`
- `arm` - `VCPKG_TARGET_ARCHITECTURE` == `"arm"` or `VCPKG_TARGET_ARCHITECTURE` == `"arm64"`
- `arm64` - `VCPKG_TARGET_ARCHITECTURE` == `"arm64"`
- `windows` - `VCPKG_CMAKE_SYSTEM_NAME` == `""` || `VCPKG_CMAKE_SYSTEM_NAME` == `"WindowsStore"`
- `uwp` - `VCPKG_CMAKE_SYSTEM_NAME` == `"WindowsStore"`
- `linux` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Linux"`
- `osx` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Darwin"`
- `android` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Android"`
- `static` - `VCPKG_LIBRARY_LINKAGE` == `"static"`

This field is optional and defaults to true.

##### Example:
```no-highlight
Supports: !(uwp||arm)
Supports: !(uwp|arm)
```


## Feature Paragraphs

Multiple optional features can be specified in the `CONTROL` files. It must have a `Feature` and `Description` field. It can optionally have a `Build-Depends` field. It must be separated from other paragraphs by one or more empty lines.
Expand Down
2 changes: 1 addition & 1 deletion toolsrc/src/vcpkg/logicexpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ namespace vcpkg
return true_if_exists_and_equal("VCPKG_TARGET_ARCHITECTURE", "arm") ||
true_if_exists_and_equal("VCPKG_TARGET_ARCHITECTURE", "arm64");
case Identifier::arm64: return true_if_exists_and_equal("VCPKG_TARGET_ARCHITECTURE", "arm64");
case Identifier::windows: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "");
case Identifier::windows: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "") || true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "WindowsStore");
case Identifier::linux: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "Linux");
case Identifier::osx: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "Darwin");
case Identifier::uwp: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "WindowsStore");
Expand Down