vcpkg ci: Parse ci.baseline.txt to determine regressions#345
vcpkg ci: Parse ci.baseline.txt to determine regressions#345BillyONeal merged 30 commits intomicrosoft:mainfrom
Conversation
|
Stop doing things on my todo list before I do them 😅 Thanks for the submission! Will take a look soon |
4936f38 to
a555645
Compare
|
My CRs are given in the patch above ^ |
a365c6d to
fc2cbb5
Compare
src/vcpkg/commands.ci.cpp
Outdated
| case Build::BuildResult::FILE_CONFLICTS: | ||
| if (expected_failures.find(port_result.spec) == expected_failures.end()) | ||
| { | ||
| std::cerr |
There was a problem hiding this comment.
I think this should also use print2, and we certainly should avoiding new use of iostreams if at all possible.
|
Sorry it has taken me so long to get to this; I didn't leave comments back at the time because I thought I was going to respond quickly with the bits I wanted fixed but that didn't work out. It looks like Nicole already commented about effectively everything I was going to say, except I would like to see a unit test put around If don't want to do that because you've been kept hanging too long I understand :) |
Are you interested in that? Otherwise I can push that into this branch. |
That would be cool. I am currently writing exams and don't have that much time :) |
|
OK I have to fix the bug where the "one liner" doesn't update correctly and this is next on my list. |
# Conflicts: # include/vcpkg/base/parse.h # src/vcpkg/versions.cpp
Extract exclusions / ci baseline infrastructure.
# Conflicts: # src/vcpkg/commands.ci.cpp
src/vcpkg/commands.ci.cpp
Outdated
| Checks::check_exit(VCPKG_LINE_INFO, equal_loc != std::string::npos, "Line '%s' must contain a '='", line); | ||
| parsed_line.triplet_name = | ||
| Strings::trim(StringView{line.data() + colon_loc + 1, line.data() + equal_loc}).to_string(); |
There was a problem hiding this comment.
FYI I'm changing this behavior because it fails, for example, with
catch-classic:arm64-windows = skip
catch-classic:arm-uwp = skip
catch-classic:x64-linux = skip
catch-classic:x64-osx = skip
catch-classic:x64-uwp = skip
catch-classic:x64-windows = skip
catch-classic:x64-windows-static = skip
catch-classic:x64-windows-static-md=skip
catch-classic:x86-windows = skip
…rs_or_warnings, merge match_zero_or_more and match_until as merge_while, delocalize locale-invariant FormattedParseMessageLocation, start implementing actual parsing with ParserBase.
BillyONeal
left a comment
There was a problem hiding this comment.
Whoops, I forgot to get rid of cerr
| "ChecksUnreachableCode": "unreachable code was reached", | ||
| "ChecksUpdateVcpkg": "updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.", | ||
| "CiBaselineRegression": "REGRESSION: {spec} failed with {build_result}. If expected, add {spec}=fail to {path}.", | ||
| "_CiBaselineRegression.comment": "example of {spec} is 'zlib:x64-windows'.\nexample of {build_result} is 'One of the BuildResultXxx messages (such as BuildResultSucceeded/SUCCEEDED)'.\nexample of {path} is '/foo/bar'.\n", |
There was a problem hiding this comment.
this should be {Locked}.
There was a problem hiding this comment.
I wasn't sure if it should be. The "spec=fail" part needs to be but there's no reason the rest of the message couldn't be localized.
src/vcpkg/binarycaching.cpp
Outdated
| for (;;) | ||
| { | ||
| auto n = match_until([](char32_t ch) { return ch == ',' || ch == '`' || ch == ';'; }); | ||
| auto n = match_while([](char32_t ch) { return ch != ',' && ch != '`' && ch != ';'; }); |
There was a problem hiding this comment.
To merge match_until and match_zero_or_more into one function.
In microsoft#345 (comment) Nicole indicated that the workaround here to support features with _ in their names is no longer relevant because the feature in question was already renamed before versioning. Since this is a change in the usable surface of the tool I extracted the change into its own more targeted PR.
In #345 (comment) Nicole indicated that the workaround here to support features with _ in their names is no longer relevant because the feature in question was already renamed before versioning. Since this is a change in the usable surface of the tool I extracted the change into its own more targeted PR.
# Conflicts: # locales/messages.en.json # locales/messages.json # src/vcpkg/export.prefab.cpp # src/vcpkg/packagespec.cpp
Extracted from microsoft#345 to make that PR easier to review.
|
I sucked out #447 "Delete Parse::" to make this easier to review if you want to land that one first. |
* Delete Parse::. Extracted from #345 to make that PR easier to review. * ... and IParseError, as requested by Nicole
# Conflicts: # include/vcpkg-test/util.h # include/vcpkg/base/fwd/parse.h # include/vcpkg/base/json.h # include/vcpkg/base/parse.h # src/vcpkg/base/json.cpp # src/vcpkg/base/parse.cpp # src/vcpkg/packagespec.cpp
strega-nil
left a comment
There was a problem hiding this comment.
Approved, but I still prefer to have match_until as well.
| "ChecksUnreachableCode": "unreachable code was reached", | ||
| "ChecksUpdateVcpkg": "updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.", | ||
| "CiBaselineRegression": "REGRESSION: {spec} failed with {build_result}. If expected, add {spec}=fail to {path}.", | ||
| "_CiBaselineRegression.comment": "example of {spec} is 'zlib:x64-windows'.\nexample of {build_result} is 'One of the BuildResultXxx messages (such as BuildResultSucceeded/SUCCEEDED)'.\nexample of {path} is '/foo/bar'.\n", |
I really don't want to do that because it gives SortedVector an Alternately, we can change the SortedVector design such that the caller always needs to pass the comparison functor every time they do something that needs it.... let me try that. |
strega-nil
left a comment
There was a problem hiding this comment.
The one I want changed is try_match_keyword.
…her than storing it." This reverts commit b99de1d.
… provided via --ci-baseline error.
|
Thanks @autoantwort :D |
* Update vcpkg-tool to 2022-03-24 * Hook up microsoft/vcpkg-tool#345 * Hook up microsoft/vcpkg-tool#442 * Update vcpkg-tool to 2022-03-25 * Analysis of failures. * [Most recent nightly build failed](https://dev.azure.com/vcpkg/public/_build/results?buildId=69427) * [Validation of this tool update failed](https://dev.azure.com/vcpkg/public/_build/results?buildId=69417) ## Common to both: PASSING, REMOVE FROM FAIL LIST: chartdir:x64-windows (.\scripts\ci.baseline.txt) PASSING, REMOVE FROM FAIL LIST: chartdir:x64-windows-static-md (.\scripts\ci.baseline.txt) PASSING, REMOVE FROM FAIL LIST: chartdir:x86-windows (.\scripts\ci.baseline.txt) Probably fixed by #23701 PASSING, REMOVE FROM FAIL LIST: gmp:x64-uwp (.\scripts\ci.baseline.txt) PASSING, REMOVE FROM FAIL LIST: gmp:x64-windows-static-md (.\scripts\ci.baseline.txt) Probably fixed by #23466 ? REGRESSION: colmap:x64-windows-static-md failed with BUILD_FAILED. If expected, add colmap:x64-windows-static-md=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. I don't know exactly what changed. I observe that * this thing depends on a *lot* of stuff * on March 14 we didn't even attempt to build this * the x64-windows ones are already in the baseline so I skipped it. REGRESSION: qtdeclarative:x64-windows. If expected, add qtdeclarative:x64-windows=fail to .\scripts\ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\1\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: qtdeclarative:x64-windows failed with BUILD_FAILED. If expected, add qtdeclarative:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. This is a reporting change: The new world order also includes host build failures which is why it's duplicated. See also #23714 See also #23490 I'm nervous about baslining this because it seems most of the qt world is built on top of this port I filed #23824 about this and @Neumann-A indicated this should be fixed by #23755 REGRESSION: nettle:x64-uwp. If expected, add nettle:x64-uwp=fail to .\scripts\ci.baseline.txt. REGRESSION: nettle:x64-windows-static-md. If expected, add nettle:x64-windows-static-md=fail to .\scripts\ci.baseline.txt. REGRESSION: nettle:x64-uwp failed with BUILD_FAILED. If expected, add nettle:x64-uwp=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. REGRESSION: nettle:x64-windows-static-md failed with POST_BUILD_CHECKS_FAILED. If expected, add nettle:x64-windows-static-md=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. Didn't analyze, probably fixed by #23519 ? REGRESSION: libgpg-error:x64-uwp. If expected, add libgpg-error:x64-uwp=fail to .\scripts\ci.baseline.txt. REGRESSION: libgpg-error:x64-uwp failed with BUILD_FAILED. If expected, add libgpg-error:x64-uwp=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. This was broken by VS2022 update: ``` C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VisualStudio\v17.0\AppxPackage\Microsoft.AppXPackage.Targets(892,25): error MSB4086: A numeric comparison was attempted on "$(TargetPlatformMinVersion)" that evaluates to "" instead of a number, in condition "'$(TargetPlatformMinVersion)' >= '10.0.17200.0'". [C:\Dev\vcpkg\buildtrees\libgpg-error\x64-uwp-rel\error-1.42-2324ddbc71.clean\SMP\libgpg-error_winrt.vcxproj] ``` REGRESSION: libmikmod:x64-osx. If expected, add libmikmod:x64-osx=fail to .\scripts\ci.baseline.txt. REGRESSION: libmikmod:x64-osx failed with BUILD_FAILED. If expected, add libmikmod:x64-osx=fail to /Users/vagrant/Data/work/2/s/scripts/azure-pipelines/../ci.baseline.txt. Broken between [2022-03-16](https://dev.azure.com/vcpkg/public/_build/results?buildId=68947) and [2022-03-18](https://dev.azure.com/vcpkg/public/_build/results?buildId=69051). Unfortunately I don't see obvious reasons why. Nothing else depends on this and nobody has noticed in 2 weeks, so I'm baslining it for now. (Will investigate shortly...) ## Only broken in tool update: REGRESSION: mesa:x64-windows failed with BUILD_FAILED. If expected, add mesa:x64-windows=fail to C:\a\2\s\scripts\azure-pipelines/../ci.baseline.txt. ``` -- Downloading https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-21.2.5/mesa-mesa-21.2.5.tar.gz -> mesa-mesa-mesa-21.2.5-1.tar.gz... -- Extracting source /Users/vagrant/Data/downloads/mesa-mesa-mesa-21.2.5-1.tar.gz -- Applying patch swravx512-post-static-link.patch -- Applying patch swr-msvc-2.patch -- Applying patch swr-llvm13.patch -- Applying patch radv-msvc-llvm13-2.patch -- Applying patch d3d10sw.patch -- Using source at /Users/vagrant/Data/buildtrees/mesa/src/esa-21.2.5-2df234d2b1.clean Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'mako' CMake Error at ports/mesa/portfile.cmake:85 (message): Python package 'mako' needs to be installed for port 'mesa'. Complete list of required python packages: setuptools;mako Call Stack (most recent call first): ports/mesa/portfile.cmake:91 (vcpkg_get_python_package) scripts/ports.cmake:145 (include) ``` Looks like this is being tracked by #23089 ; perhaps that we don't have as aggressive a recycling strategy for macos boxes as we do for the others has let different machines give different results? ## Only broken without tool update: REGRESSION: chromium-base:x64-osx. If expected, add chromium-base:x64-osx=fail to .\scripts\ci.baseline.txt. This one has been constantly flaky; I baselined it. REGRESSION: libxml2:x64-osx. If expected, add libxml2:x64-osx=fail to .\scripts\ci.baseline.txt. This port uses vcpkg_from_git and the upstream server was down during the build. * Restore chartdir to the baseline, I thought #23732 had been merged.
Probably you don't want to use iostreams. Should I add
write_unlocalized_text_to_stderrto write to stderr?This makes afaik the whole powershell parsing stuff in the ci obsolete