[vcpkg-cmake-validate,vcpkg-maintainer-options] New ports#22258
[vcpkg-cmake-validate,vcpkg-maintainer-options] New ports#22258dg0yt wants to merge 29 commits intomicrosoft:masterfrom
Conversation
|
Can I draft this PR until it's ready for review? |
It was meant to be a draft. |
89853a9 to
d6b670c
Compare
There was a problem hiding this comment.
This is a new experimental fast check for PR issues. Please let us know if this bot is helpful!
After committing all other changes, the version database must be updated
git add -u && git commit
git checkout 1085a57da0725c19e19586025438e8c16f34c890 -- versions
./vcpkg x-add-version --allDiff
diff --git a/versions/baseline.json b/versions/baseline.json
index 31ade38..6387f62 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -1702,7 +1702,7 @@
},
"curl": {
"baseline": "7.80.0",
- "port-version": 0
+ "port-version": 1
},
"curlpp": {
"baseline": "2018-06-15",
@@ -5034,7 +5034,7 @@
},
"openssl": {
"baseline": "1.1.1l",
- "port-version": 4
+ "port-version": 5
},
"openssl-unix": {
"baseline": "1.1.1h",
@@ -7140,6 +7140,10 @@
"baseline": "2021-12-28",
"port-version": 0
},
+ "vcpkg-cmake-validate": {
+ "baseline": "2021-12-02",
+ "port-version": 0
+ },
"vcpkg-gfortran": {
"baseline": "3",
"port-version": 1
@@ -7148,6 +7152,10 @@
"baseline": "2021-11-16",
"port-version": 0
},
+ "vcpkg-maintainer-options": {
+ "baseline": "2021-12-29",
+ "port-version": 0
+ },
"vcpkg-pkgconfig-get-modules": {
"baseline": "2021-04-02",
"port-version": 1
diff --git a/versions/c-/curl.json b/versions/c-/curl.json
index a73767c..09e1e78 100644
--- a/versions/c-/curl.json
+++ b/versions/c-/curl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "da35490368ff0d8e12aa8f385c053fd3e5221e1c",
+ "version": "7.80.0",
+ "port-version": 1
+ },
{
"git-tree": "8e13da05c975cb6f5bed6cf3b8054a817a00b45d",
"version": "7.80.0",
diff --git a/versions/o-/openssl.json b/versions/o-/openssl.json
index a7dd4f8..d3566e5 100644
--- a/versions/o-/openssl.json
+++ b/versions/o-/openssl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "178eddd136a9e2ffe94d1cff3d7ed7a0a58a4bb6",
+ "version-string": "1.1.1l",
+ "port-version": 5
+ },
{
"git-tree": "d25384246619019a1e44f018546cdfcaf1800174",
"version-string": "1.1.1l",759d0d5 to
db1fc5a
Compare
There was a problem hiding this comment.
This is a new experimental fast check for PR issues. Please let us know if this bot is helpful!
After committing all other changes, the version database must be updated
git add -u && git commit
git checkout 1085a57da0725c19e19586025438e8c16f34c890 -- versions
./vcpkg x-add-version --allDiff
diff --git a/versions/baseline.json b/versions/baseline.json
index 31ade38..6387f62 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -1702,7 +1702,7 @@
},
"curl": {
"baseline": "7.80.0",
- "port-version": 0
+ "port-version": 1
},
"curlpp": {
"baseline": "2018-06-15",
@@ -5034,7 +5034,7 @@
},
"openssl": {
"baseline": "1.1.1l",
- "port-version": 4
+ "port-version": 5
},
"openssl-unix": {
"baseline": "1.1.1h",
@@ -7140,6 +7140,10 @@
"baseline": "2021-12-28",
"port-version": 0
},
+ "vcpkg-cmake-validate": {
+ "baseline": "2021-12-02",
+ "port-version": 0
+ },
"vcpkg-gfortran": {
"baseline": "3",
"port-version": 1
@@ -7148,6 +7152,10 @@
"baseline": "2021-11-16",
"port-version": 0
},
+ "vcpkg-maintainer-options": {
+ "baseline": "2021-12-29",
+ "port-version": 0
+ },
"vcpkg-pkgconfig-get-modules": {
"baseline": "2021-04-02",
"port-version": 1
diff --git a/versions/c-/curl.json b/versions/c-/curl.json
index a73767c..c15fe7c 100644
--- a/versions/c-/curl.json
+++ b/versions/c-/curl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "8d41292fb66c7e4a4c1fe61886d7bd30b1a49f4d",
+ "version": "7.80.0",
+ "port-version": 1
+ },
{
"git-tree": "8e13da05c975cb6f5bed6cf3b8054a817a00b45d",
"version": "7.80.0",
diff --git a/versions/o-/openssl.json b/versions/o-/openssl.json
index a7dd4f8..62fbb93 100644
--- a/versions/o-/openssl.json
+++ b/versions/o-/openssl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "1580f7f42dd99b73bfce23cead602ebaa492e8d1",
+ "version-string": "1.1.1l",
+ "port-version": 5
+ },
{
"git-tree": "d25384246619019a1e44f018546cdfcaf1800174",
"version-string": "1.1.1l",db1fc5a to
904be60
Compare
There was a problem hiding this comment.
This is a new experimental fast check for PR issues. Please let us know if this bot is helpful!
After committing all other changes, the version database must be updated
git add -u && git commit
git checkout 1085a57da0725c19e19586025438e8c16f34c890 -- versions
./vcpkg x-add-version --allDiff
diff --git a/versions/baseline.json b/versions/baseline.json
index 31ade38..6387f62 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -1702,7 +1702,7 @@
},
"curl": {
"baseline": "7.80.0",
- "port-version": 0
+ "port-version": 1
},
"curlpp": {
"baseline": "2018-06-15",
@@ -5034,7 +5034,7 @@
},
"openssl": {
"baseline": "1.1.1l",
- "port-version": 4
+ "port-version": 5
},
"openssl-unix": {
"baseline": "1.1.1h",
@@ -7140,6 +7140,10 @@
"baseline": "2021-12-28",
"port-version": 0
},
+ "vcpkg-cmake-validate": {
+ "baseline": "2021-12-02",
+ "port-version": 0
+ },
"vcpkg-gfortran": {
"baseline": "3",
"port-version": 1
@@ -7148,6 +7152,10 @@
"baseline": "2021-11-16",
"port-version": 0
},
+ "vcpkg-maintainer-options": {
+ "baseline": "2021-12-29",
+ "port-version": 0
+ },
"vcpkg-pkgconfig-get-modules": {
"baseline": "2021-04-02",
"port-version": 1
diff --git a/versions/c-/curl.json b/versions/c-/curl.json
index a73767c..17d3f20 100644
--- a/versions/c-/curl.json
+++ b/versions/c-/curl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "f1a78a5dfdf00b48b0fbc23e360a9aca7aa74de2",
+ "version": "7.80.0",
+ "port-version": 1
+ },
{
"git-tree": "8e13da05c975cb6f5bed6cf3b8054a817a00b45d",
"version": "7.80.0",
diff --git a/versions/o-/openssl.json b/versions/o-/openssl.json
index a7dd4f8..872c527 100644
--- a/versions/o-/openssl.json
+++ b/versions/o-/openssl.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "059bb4b4a8077e03d1d3d3fedd4bbe159b59ae20",
+ "version-string": "1.1.1l",
+ "port-version": 5
+ },
{
"git-tree": "d25384246619019a1e44f018546cdfcaf1800174",
"version-string": "1.1.1l",3a4d8fe to
24855d1
Compare
24855d1 to
6bd2667
Compare
|
I would really like to use this now for every port I update. |
c902928 to
9e208fc
Compare
There was a problem hiding this comment.
This is a new experimental fast check for PR issues. Please let us know if this bot is helpful!
PRs must add only one version and must not modify any published versions
When making any changes to a library, the version or port-version in vcpkg.json or CONTROL must be modified.
Error: Local changes detected for fontconfig but no changes to version or port version.
-- Version: 2.13.94#5
-- Old SHA: 2f32046747209c234e60dc297b48d5bdc7ee4494
-- New SHA: d1a4dec7c64cc70a279af594ac53e9497cec3482
-- Did you remember to update the version or port version?
-- Pass `--overwrite-version` to bypass this check.
***No files were updated.***
After committing all other changes, the version database must be updated
git add -u && git commit
git checkout 7e7dad5fe20cdc085731343e0e197a7ae655555b -- versions
./vcpkg x-add-version --allDiff
diff --git a/versions/f-/fontconfig.json b/versions/f-/fontconfig.json
index c0f06ce..c5d5a8d 100644
--- a/versions/f-/fontconfig.json
+++ b/versions/f-/fontconfig.json
@@ -1,7 +1,7 @@
{
"versions": [
{
- "git-tree": "d1a4dec7c64cc70a279af594ac53e9497cec3482",
+ "git-tree": "2f32046747209c234e60dc297b48d5bdc7ee4494",
"version": "2.13.94",
"port-version": 5
},You have modified or added at least one vcpkg.json where a "license" field is missing.
If you feel able to do so, please consider adding a "license" field to the following files:
ports/bzip2/vcpkg.jsonports/fontconfig/vcpkg.jsonports/freetype/vcpkg.jsonports/vcpkg-cmake-validate/vcpkg.jsonports/vcpkg-maintainer-options/vcpkg.json
Valid values for the license field are listed at https://spdx.org/licenses/
|
PING @BillyONeal @ras0219-msft @strega-nil-ms I really don't want to submit more PRs without tested usage so help define at least the interface. |
Last we looked at this I think we were still worried about this issue. Because this has been added and removed before we are nervous about opening this can of worms. =================== Looking again if the interface is really "if this other port is installed first then additional checks happen" then that makes install path dependent which I don't think is OK. We can hook up an additional tool parameter akin to our prohibit-backcompat-features stuff if necessary, pretty cheaply. I would like people who understand those dragons to be happy before dropping everything to unblock you on that though. |
In general I do agree. However, the check is not a fixup. It has no side-effect on the package content and dependencies. It just adds extra conditions for the build result to be accepted. In particular, given expected frequent usage, I would very much like to decouple the testing facility from the package ABI hash, to not trigger mandatory world rebuilds from check improvements. This may need more work, and it could use a different interface, completely avoiding the port dependency.
The current can of worms is that package quality is a lottery. No option to force validation of cmake or pkg-config usage. No option to run the tests provided by the packages themselves. There is vcpkg's whole-universe CI, but this isn't a sufficient substitute for valdiating the usage contract of individual packages. The wrappers may break without notice when a CMake update brings an updated Find module. |
Sure, neither does
Right, the interface I'm arguing for is a command line parameter.
Yes, I agree that the lack of testing situation is a problem. |
The downside of a parameter, apart from requiring changes in the tool, is that I would have to add it permanently. Unless I missed a configuration file which is always read. FTR I could also use |
We could give it an environment variable? |
Okay, I could add it to my |
|
We do need to add these test functions to ensure the correctness of the port, but the extra time cost should not be borne by the user. |
Everybody agrees, and nobody proposes something different.
|
I mean both of them, we may need to add an extra cmake flag in vcpkg-tool to enable those tests, such as |
|
@ras0219 @ras0219-msft indicates that if we're going to make this optional that it is likely a good idea to separate this from @vicroms Is taking point to make sure you have the feedback you need otherwise regarding our hesitancy due to history with |
I feel like there is still a gap between rejecting this PR and defining the interface of what could be submitted as the next PR with a reasonable chance of acceptance. So let me give you some options. The key aspect is the entry point for port usage tests. Some ideas:
FTR regular post-build checks run on the staged port (in Another aspect mentioned in the comments is running ports' unit tests. This must happen while building the package, from
|
Right, the bits @vicroms is on the hook to verify is making sure how the actual validation works works; after that's OK we can relatively easily hook it up to any interface. No desire to "reject" the PR. |
|
I will merge master ASAP.
Does the validation work? It verifies some working cases, but we cannot prove that it detects all broken cases. Ideally, the tests would run after installation to |
|
Can you please merge to master first? |
This is the same conclusion the team has reached. We would like to change CI to insert the CMake validation step after everything is laid out in |
|
I really like this PR but I think there are a few issues that have not been discussed yet: Feel free to correct me if any of my points is wrong.
|
|
@Thomas1664 I can't correct you if you ask questions. Regarding the magic bug scanning tool: vcpkg even fails to derive quality usage hints. I'm not worried by CI time. I'm worried about how many ports turn out to be unusable despite hundreds of CI runs, and no way to protect my voluntary work (read: my time!) against regressions. I would prefer to have half the number of ports but twice the quality. Cross-platform. |
You could put them on CI baseline if there are too many regressions. The problem with this approach is that it doesn't scale well because you have to explicitly add tests and I'm afraid only a few people actually would use this. Like there are many ports that use I think it would be easier to implement this check inside the vcpkg-tool via C++ and automate which symbols/ headers are used for testing. The only tricky part would be to find symbols to use for testing. The tool nm (installed by default on Linux) can help with this. With nm we can get the symbol table of a .a/ .lib/.so/.dll/.dylib file: |
We have code review for this. |
|
Checking up on this again because it was tagged requires vcpkg-team-review:
|
|
FWIW I added CI test ports to cover critical port and feature configurations, after installation. As long as this isn't blocked, I can arrange with that state. |
What does your PR fix?
This PR is a variation of [vcpkg_cmake_config_test] Add function to test the exported cmake configurations #15173 (CC @JackBoosY) which also covers
It would eventually replace the
cmake-userport.This PR adds a
vcpkg-maintainer-optionsport which can be used to control expensive tests throughvcpkg installcommands. It intentionally avoids a hard (ABI-affecting) dependency on certain parameters of the testing environment (active tests, minimum cmake versions).As test cases, this PR updates
opensslandcurlwrappers to work with CMake 3.4, and to support curl components.Which triplets are supported/not supported? Have you updated the CI baseline?
all, no
Does your PR follow the maintainer guide?
yes
If you have added/updated a port: Have you run
./vcpkg x-add-version --alland committed the result?I am still working on this PR, but it is ready for feedback.yes