aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-03-14 10:30:27 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-03-20 19:12:35 -0700
commiteab1d5c531695c2a644276832578e5550dd9abf6 (patch)
tree7ca96851f8a52ba7e60b7a50a396a72c12abbfa4 /toolsrc/include
parent39c63d227615d407ebc4c6f5b57bb30c4c053acc (diff)
downloadvcpkg-eab1d5c531695c2a644276832578e5550dd9abf6.tar.gz
vcpkg-eab1d5c531695c2a644276832578e5550dd9abf6.zip
[vcpkg-ci] Do not rebuild libraries that were previously successful or failed
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/base/cache.h21
-rw-r--r--toolsrc/include/vcpkg/base/util.h6
-rw-r--r--toolsrc/include/vcpkg/build.h17
-rw-r--r--toolsrc/include/vcpkg/commands.h12
-rw-r--r--toolsrc/include/vcpkg/dependencies.h5
-rw-r--r--toolsrc/include/vcpkg/install.h1
-rw-r--r--toolsrc/include/vcpkg/sourceparagraph.h2
7 files changed, 60 insertions, 4 deletions
diff --git a/toolsrc/include/vcpkg/base/cache.h b/toolsrc/include/vcpkg/base/cache.h
new file mode 100644
index 000000000..dfc7565b8
--- /dev/null
+++ b/toolsrc/include/vcpkg/base/cache.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <map>
+
+namespace vcpkg
+{
+ template<class Key, class Value>
+ struct Cache
+ {
+ template<class F>
+ Value const& get_lazy(const Key& k, const F& f) const
+ {
+ auto it = m_cache.find(k);
+ if (it != m_cache.end()) return it->second;
+ return m_cache.emplace(k, f()).first->second;
+ }
+
+ private:
+ mutable std::map<Key, Value> m_cache;
+ };
+}
diff --git a/toolsrc/include/vcpkg/base/util.h b/toolsrc/include/vcpkg/base/util.h
index 5e07b240a..b12919951 100644
--- a/toolsrc/include/vcpkg/base/util.h
+++ b/toolsrc/include/vcpkg/base/util.h
@@ -24,10 +24,10 @@ namespace vcpkg::Util
namespace Sets
{
- template<class Container>
- bool contains(const Container& container, const ElementT<Container>& item)
+ template<class Container, class Key>
+ bool contains(const Container& container, const Key& item)
{
- return container.find(item) != container.cend();
+ return container.find(item) != container.end();
}
}
diff --git a/toolsrc/include/vcpkg/build.h b/toolsrc/include/vcpkg/build.h
index ea81c4dbe..8c4d7b575 100644
--- a/toolsrc/include/vcpkg/build.h
+++ b/toolsrc/include/vcpkg/build.h
@@ -204,4 +204,21 @@ namespace vcpkg::Build
};
BuildInfo read_build_info(const Files::Filesystem& fs, const fs::path& filepath);
+
+ struct AbiEntry
+ {
+ std::string key;
+ std::string value;
+ };
+
+ struct AbiTagAndFile
+ {
+ std::string tag;
+ fs::path tag_file;
+ };
+
+ Optional<AbiTagAndFile> compute_abi_tag(const VcpkgPaths& paths,
+ const BuildPackageConfig& config,
+ const PreBuildInfo& pre_build_info,
+ Span<const AbiEntry> dependency_abis);
}
diff --git a/toolsrc/include/vcpkg/commands.h b/toolsrc/include/vcpkg/commands.h
index b6b1c56ab..7369b8206 100644
--- a/toolsrc/include/vcpkg/commands.h
+++ b/toolsrc/include/vcpkg/commands.h
@@ -7,6 +7,8 @@
#include <vcpkg/vcpkgpaths.h>
#include <array>
+#include <map>
+#include <vector>
namespace vcpkg::Commands
{
@@ -23,7 +25,17 @@ namespace vcpkg::Commands
namespace CI
{
+ struct UnknownCIPortsResults
+ {
+ std::vector<PackageSpec> unknown;
+ std::map<PackageSpec, Build::BuildResult> known;
+ };
+
extern const CommandStructure COMMAND_STRUCTURE;
+ UnknownCIPortsResults find_unknown_ports_for_ci(const VcpkgPaths& paths,
+ const std::set<std::string>& exclusions,
+ const Dependencies::PortFileProvider& provider,
+ const std::vector<FeatureSpec>& fspecs);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
diff --git a/toolsrc/include/vcpkg/dependencies.h b/toolsrc/include/vcpkg/dependencies.h
index fadb8cc7e..33af6c4f5 100644
--- a/toolsrc/include/vcpkg/dependencies.h
+++ b/toolsrc/include/vcpkg/dependencies.h
@@ -45,7 +45,8 @@ namespace vcpkg::Dependencies
InstallPlanAction(const PackageSpec& spec,
const SourceControlFile& scf,
const std::set<std::string>& features,
- const RequestType& request_type);
+ const RequestType& request_type,
+ std::vector<PackageSpec>&& dependencies);
std::string displayname() const;
@@ -58,6 +59,8 @@ namespace vcpkg::Dependencies
RequestType request_type;
Build::BuildPackageOptions build_options;
std::set<std::string> feature_list;
+
+ std::vector<PackageSpec> computed_dependencies;
};
enum class RemovePlanType
diff --git a/toolsrc/include/vcpkg/install.h b/toolsrc/include/vcpkg/install.h
index 2e92764dc..b7acbf15f 100644
--- a/toolsrc/include/vcpkg/install.h
+++ b/toolsrc/include/vcpkg/install.h
@@ -37,6 +37,7 @@ namespace vcpkg::Install
std::string total_elapsed_time;
void print() const;
+ static std::string xunit_result(const PackageSpec& spec, Chrono::ElapsedTime time, Build::BuildResult code);
std::string xunit_results() const;
};
diff --git a/toolsrc/include/vcpkg/sourceparagraph.h b/toolsrc/include/vcpkg/sourceparagraph.h
index ea8e27a94..ae5812ea7 100644
--- a/toolsrc/include/vcpkg/sourceparagraph.h
+++ b/toolsrc/include/vcpkg/sourceparagraph.h
@@ -63,6 +63,8 @@ namespace vcpkg
std::unique_ptr<SourceParagraph> core_paragraph;
std::vector<std::unique_ptr<FeatureParagraph>> feature_paragraphs;
+
+ Optional<const FeatureParagraph&> find_feature(const std::string& featurename) const;
};
void print_error_message(Span<const std::unique_ptr<Parse::ParseControlErrorInfo>> error_info_list);