Repository navigation
CI: select members by package identity, not by substring - #573
Merged
Merged
Conversation
…dentity The select step searched each member's manifest for a descriptor's short name as a substring: pkgs/o/os.lua selected 113 of 205 members, and members reaching compat.openssl through asio or curl were never selected. tests/select_members.py reads members' dependencies as mcpp does, follows descriptors' deps and the manifests inside packages' archives (cached by actions/cache, the archives being pinned), and selects by identity. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The select step of
validate.ymlchose the members affected by a descriptor by searching every member'smcpp.tomlfor the descriptor's short name as a substring.pkgs/o/os.lua(mcpplibs os 0.1.0 #572) selected 113 of 205 members (boost-*,macos,cfg(os = ...), the wordexistsin comments), about 10 hours of runner time for a package two members name.boost-ext.utselected 84 members;compat.xiselected 15 members whose only match was a comment.compat.opensslselected 6 members and missed the 21 that reach it through asio, curl, httplib, websocket and others.tests/select_members.pyreads each side as what it declares and matches by identity:deps, throughtests/descriptor_identities.lua;pathdependencies are followed to other manifests in the same archive.A member is selected when the transitive closure of its declared graph holds a changed identity. Archives are pinned by sha256, so
actions/cachekeeps what was read before. A cold run reads about 400 manifests in ~12 s; a warm run takes ~2 s. A manifest that cannot be read is reported as a warning and left to the weekly full run.Across all 269 descriptors the old rule made 632 selections and the new one 934. Every selection the new rule drops is a substring match in a comment or another word; every selection it adds is a transitive consumer.
tests/test_select_members.py(8 tests) covers manifest nesting, the resolution of spellings, tables opened twice, raw and asset archives,pathfollowing, optional manifests, and this repository's own descriptors. The select job runs these tests before it selects.