diff options
| author | Curtis.Bezault <curtbezault@gmail.com> | 2019-07-18 13:24:31 -0700 |
|---|---|---|
| committer | Curtis.Bezault <curtbezault@gmail.com> | 2019-07-18 13:24:31 -0700 |
| commit | d39bd70d533c64e929d4399cb9a1bdbfe0efaecd (patch) | |
| tree | 0255b19a2837c67d6c400374517acf3c74b66254 /toolsrc/src | |
| parent | f18ffe996877a058da9e0208f92331c83517f6a0 (diff) | |
| download | vcpkg-d39bd70d533c64e929d4399cb9a1bdbfe0efaecd.tar.gz vcpkg-d39bd70d533c64e929d4399cb9a1bdbfe0efaecd.zip | |
add needs_rebuild, should probably be moved to somewhere else
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/statusparagraphs.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg/statusparagraphs.cpp b/toolsrc/src/vcpkg/statusparagraphs.cpp index c642af59b..f204ed568 100644 --- a/toolsrc/src/vcpkg/statusparagraphs.cpp +++ b/toolsrc/src/vcpkg/statusparagraphs.cpp @@ -118,6 +118,31 @@ namespace vcpkg return it != end() && (*it)->is_installed(); } + bool vcpkg::StatusParagraphs::needs_rebuild(const PackageSpec& spec) + { + auto it = find(spec); + if (it != end()) + { + for (const std::string& dep : (*it)->package.depends) + { + PackageSpec dep_spec = + PackageSpec::from_name_and_triplet( + dep, + spec.triplet()).value_or_exit(VCPKG_LINE_INFO); + + if (needs_rebuild(dep_spec)) + { + (*it)->state = InstallState::NEEDS_REBUILD; + return true; + } + } + + return (*it)->needs_rebuild(); + } + + return false; + } + StatusParagraphs::iterator StatusParagraphs::insert(std::unique_ptr<StatusParagraph> pgh) { Checks::check_exit(VCPKG_LINE_INFO, pgh != nullptr, "Inserted null paragraph"); |
