From f11d8c32c01ab1ac13268484b9e85732176a47d9 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 1 Apr 2020 21:50:16 +0300 Subject: Add support for test-exclude task manifest value --- libbrep/package.hxx | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'libbrep/package.hxx') diff --git a/libbrep/package.hxx b/libbrep/package.hxx index 07bd2a0..59ee589 100644 --- a/libbrep/package.hxx +++ b/libbrep/package.hxx @@ -20,7 +20,7 @@ // #define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 17 -#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 17, closed) +#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 18, closed) namespace brep { @@ -362,8 +362,7 @@ namespace brep using requirements_type = brep::requirements; using build_constraints_type = brep::build_constraints; - // Create internal package object. Note that for stubs the build - // constraints are meaningless, and so not saved. + // Create internal package object. // package (package_name, version_type, @@ -400,12 +399,22 @@ namespace brep // Create external package object. // - // External repository packages can appear on the WEB interface only in - // dependency list in the form of a link to the corresponding WEB page. - // The only package information required to compose such a link is the - // package name, version, and repository location. + // External package can appear on the WEB interface only in dependency + // list in the form of a link to the corresponding WEB page. The only + // package information required to compose such a link is the package name, + // version, and repository location. // - package (package_name name, version_type, shared_ptr); + // External package can also be a separate test for some primary package + // (and belong to a complement but yet external repository), and so we may + // need its build class expressions and constraints to decide if to build + // it together with the primary package or not (see test-exclude task + // manifest value for details). + // + package (package_name name, + version_type, + build_class_exprs, + build_constraints_type, + shared_ptr); bool internal () const noexcept {return internal_repository != nullptr;} @@ -451,9 +460,9 @@ namespace brep optional build_error_email; dependencies_type dependencies; requirements_type requirements; - small_vector tests; - small_vector examples; - small_vector benchmarks; + small_vector tests; // Note: foreign-mapped in build. + small_vector examples; // Note: foreign-mapped in build. + small_vector benchmarks; // Note: foreign-mapped in build. build_class_exprs builds; // Note: foreign-mapped in build. build_constraints_type build_constraints; // Note: foreign-mapped in build. @@ -478,16 +487,14 @@ namespace brep vector> other_repositories; - // Whether the package is buildable by the build bot controller service. - // Can only be true for non-stubs that belong to at least one buildable - // (internal) repository. + // Whether the package is buildable by the build bot controller service + // and the reason if it's not. // // While we could potentially calculate this flag on the fly, that would // complicate the database queries significantly. // - // Note: foreign-mapped in build. - // - bool buildable; + bool buildable; // Note: foreign-mapped in build. + optional unbuildable_reason; // Database mapping. // -- cgit v1.1