aboutsummaryrefslogtreecommitdiff
path: root/libbrep
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-06-22 19:05:08 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2020-06-26 14:12:12 +0300
commit105524ed96f162b43c0735a65fea284d07356aa2 (patch)
treef083c65946faeb3654f9108112143ba46cee3656 /libbrep
parent8e54ae94ce44d57b49b35269f006fe2bf07ec13d (diff)
Adapt to merging of package external tests, examples, and benchmarks into typed tests
Diffstat (limited to 'libbrep')
-rw-r--r--libbrep/build-extra.sql64
-rw-r--r--libbrep/build-package.hxx16
-rw-r--r--libbrep/build.hxx2
-rw-r--r--libbrep/build.xml2
-rw-r--r--libbrep/package.cxx6
-rw-r--r--libbrep/package.hxx43
-rw-r--r--libbrep/package.xml74
7 files changed, 126 insertions, 81 deletions
diff --git a/libbrep/build-extra.sql b/libbrep/build-extra.sql
index b466382..a61f415 100644
--- a/libbrep/build-extra.sql
+++ b/libbrep/build-extra.sql
@@ -10,10 +10,6 @@ DROP FOREIGN TABLE IF EXISTS build_package_constraints;
DROP FOREIGN TABLE IF EXISTS build_package_builds;
-DROP FOREIGN TABLE IF EXISTS build_package_benchmarks;
-
-DROP FOREIGN TABLE IF EXISTS build_package_examples;
-
DROP FOREIGN TABLE IF EXISTS build_package_tests;
DROP FOREIGN TABLE IF EXISTS build_package;
@@ -22,6 +18,12 @@ DROP FOREIGN TABLE IF EXISTS build_repository;
DROP FOREIGN TABLE IF EXISTS build_tenant;
+-- @@ TMP Also drop tables that are removed in 12 schema version. Drop these
+-- statements after 0.13.0 is released.
+--
+DROP FOREIGN TABLE IF EXISTS build_package_benchmarks;
+DROP FOREIGN TABLE IF EXISTS build_package_examples;
+
-- The foreign table for build_tenant object.
--
CREATE FOREIGN TABLE build_tenant (
@@ -66,55 +68,15 @@ CREATE FOREIGN TABLE build_package_tests (
version_canonical_release TEXT NOT NULL COLLATE "C",
version_revision INTEGER NOT NULL,
index BIGINT NOT NULL,
- dep_name CITEXT NOT NULL,
- dep_package_tenant TEXT NULL,
- dep_package_name CITEXT NULL,
- dep_package_version_epoch INTEGER NULL,
- dep_package_version_canonical_upstream TEXT NULL,
- dep_package_version_canonical_release TEXT NULL COLLATE "C",
- dep_package_version_revision INTEGER NULL)
+ test_name CITEXT NOT NULL,
+ test_package_tenant TEXT NULL,
+ test_package_name CITEXT NULL,
+ test_package_version_epoch INTEGER NULL,
+ test_package_version_canonical_upstream TEXT NULL,
+ test_package_version_canonical_release TEXT NULL COLLATE "C",
+ test_package_version_revision INTEGER NULL)
SERVER package_server OPTIONS (table_name 'package_tests');
--- The foreign table for the build_package object examples member (that is of a
--- container type).
---
-CREATE FOREIGN TABLE build_package_examples (
- tenant TEXT NOT NULL,
- name CITEXT NOT NULL,
- version_epoch INTEGER NOT NULL,
- version_canonical_upstream TEXT NOT NULL,
- version_canonical_release TEXT NOT NULL COLLATE "C",
- version_revision INTEGER NOT NULL,
- index BIGINT NOT NULL,
- dep_name CITEXT NOT NULL,
- dep_package_tenant TEXT NULL,
- dep_package_name CITEXT NULL,
- dep_package_version_epoch INTEGER NULL,
- dep_package_version_canonical_upstream TEXT NULL,
- dep_package_version_canonical_release TEXT NULL COLLATE "C",
- dep_package_version_revision INTEGER NULL)
-SERVER package_server OPTIONS (table_name 'package_examples');
-
--- The foreign table for the build_package object benchmarks member (that is
--- of a container type).
---
-CREATE FOREIGN TABLE build_package_benchmarks (
- tenant TEXT NOT NULL,
- name CITEXT NOT NULL,
- version_epoch INTEGER NOT NULL,
- version_canonical_upstream TEXT NOT NULL,
- version_canonical_release TEXT NOT NULL COLLATE "C",
- version_revision INTEGER NOT NULL,
- index BIGINT NOT NULL,
- dep_name CITEXT NOT NULL,
- dep_package_tenant TEXT NULL,
- dep_package_name CITEXT NULL,
- dep_package_version_epoch INTEGER NULL,
- dep_package_version_canonical_upstream TEXT NULL,
- dep_package_version_canonical_release TEXT NULL COLLATE "C",
- dep_package_version_revision INTEGER NULL)
-SERVER package_server OPTIONS (table_name 'package_benchmarks');
-
-- The foreign table for the build_package object builds member (that is of a
-- container type).
--
diff --git a/libbrep/build-package.hxx b/libbrep/build-package.hxx
index 228c5c0..09ec41d 100644
--- a/libbrep/build-package.hxx
+++ b/libbrep/build-package.hxx
@@ -72,10 +72,10 @@ namespace brep
//
class build_package;
- // Build package test dependency.
+ // Build package external test dependency.
//
#pragma db value
- struct build_dependency
+ struct build_test_dependency
{
package_name name;
lazy_shared_ptr<build_package> package;
@@ -90,12 +90,10 @@ namespace brep
package_id id;
upstream_version version;
- // Mapped to the package object tests, examples, and benchmarks members
- // using the PostgreSQL foreign table mechanism.
+ // Mapped to the package object tests member using the PostgreSQL foreign
+ // table mechanism.
//
- small_vector<build_dependency, 1> tests;
- small_vector<build_dependency, 1> examples;
- small_vector<build_dependency, 1> benchmarks;
+ small_vector<build_test_dependency, 1> tests;
lazy_shared_ptr<build_repository> internal_repository;
bool buildable;
@@ -117,9 +115,7 @@ namespace brep
//
#pragma db member(id) id column("")
#pragma db member(version) set(this.version.init (this.id.version, (?)))
- #pragma db member(tests) id_column("") value_column("dep_")
- #pragma db member(examples) id_column("") value_column("dep_")
- #pragma db member(benchmarks) id_column("") value_column("dep_")
+ #pragma db member(tests) id_column("") value_column("test_")
#pragma db member(builds) id_column("") value_column("")
#pragma db member(constraints) id_column("") value_column("")
diff --git a/libbrep/build.hxx b/libbrep/build.hxx
index a883fa0..1041805 100644
--- a/libbrep/build.hxx
+++ b/libbrep/build.hxx
@@ -25,7 +25,7 @@
//
#define LIBBREP_BUILD_SCHEMA_VERSION_BASE 9
-#pragma db model version(LIBBREP_BUILD_SCHEMA_VERSION_BASE, 11, closed)
+#pragma db model version(LIBBREP_BUILD_SCHEMA_VERSION_BASE, 12, closed)
// We have to keep these mappings at the global scope instead of inside
// the brep namespace because they need to be also effective in the
diff --git a/libbrep/build.xml b/libbrep/build.xml
index f4ba6cb..03d60e7 100644
--- a/libbrep/build.xml
+++ b/libbrep/build.xml
@@ -1,4 +1,6 @@
<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" schema-name="build" version="1">
+ <changeset version="12"/>
+
<changeset version="11"/>
<changeset version="10">
diff --git a/libbrep/package.cxx b/libbrep/package.cxx
index 5ec1b69..564fec7 100644
--- a/libbrep/package.cxx
+++ b/libbrep/package.cxx
@@ -72,9 +72,7 @@ namespace brep
optional<email_type> bee,
dependencies_type dp,
requirements_type rq,
- small_vector<dependency, 1> ts,
- small_vector<dependency, 1> es,
- small_vector<dependency, 1> bms,
+ small_vector<test_dependency, 1> ts,
build_class_exprs bs,
build_constraints_type bc,
optional<path> lc,
@@ -107,8 +105,6 @@ namespace brep
dependencies (move (dp)),
requirements (move (rq)),
tests (move (ts)),
- examples (move (es)),
- benchmarks (move (bms)),
builds (move (bs)),
build_constraints (move (bc)),
internal_repository (move (rp)),
diff --git a/libbrep/package.hxx b/libbrep/package.hxx
index 0ab8413..e249573 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, 18, closed)
+#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 19, open)
namespace brep
{
@@ -181,6 +181,30 @@ namespace brep
#pragma db value(requirement_alternatives) definition
+ // tests
+ //
+ using bpkg::test_dependency_type;
+ using bpkg::to_test_dependency_type;
+
+ #pragma db map type(test_dependency_type) as(string) \
+ to(to_string (?)) \
+ from(brep::to_test_dependency_type (?))
+
+ #pragma db value
+ struct test_dependency: dependency
+ {
+ test_dependency_type type;
+
+ test_dependency () = default;
+ test_dependency (package_name n,
+ test_dependency_type t,
+ optional<version_constraint> c)
+ : dependency {std::move (n), std::move (c), nullptr /* package */},
+ type (t)
+ {
+ }
+ };
+
// certificate
//
#pragma db value
@@ -386,9 +410,7 @@ namespace brep
optional<email_type> build_error_email,
dependencies_type,
requirements_type,
- small_vector<dependency, 1> tests,
- small_vector<dependency, 1> examples,
- small_vector<dependency, 1> benchmarks,
+ small_vector<test_dependency, 1> tests,
build_class_exprs,
build_constraints_type,
optional<path> location,
@@ -459,9 +481,7 @@ namespace brep
optional<email_type> build_error_email;
dependencies_type dependencies;
requirements_type requirements;
- small_vector<dependency, 1> tests; // Note: foreign-mapped in build.
- small_vector<dependency, 1> examples; // Note: foreign-mapped in build.
- small_vector<dependency, 1> benchmarks; // Note: foreign-mapped in build.
+ small_vector<test_dependency, 1> tests; // Note: foreign-mapped in build.
build_class_exprs builds; // Note: foreign-mapped in build.
build_constraints_type build_constraints; // Note: foreign-mapped in build.
@@ -563,14 +583,9 @@ namespace brep
set(odb::nested_set (this.requirements, std::move (?))) \
id_column("") key_column("") value_column("id")
- // tests, examples, benchmarks
- //
- // Seeing that these reuse the dependency types, we are also going to
- // have identical database mapping.
+ // tests
//
- #pragma db member(tests) id_column("") value_column("dep_")
- #pragma db member(examples) id_column("") value_column("dep_")
- #pragma db member(benchmarks) id_column("") value_column("dep_")
+ #pragma db member(tests) id_column("") value_column("test_")
// builds
//
diff --git a/libbrep/package.xml b/libbrep/package.xml
index 12ae36e..e650555 100644
--- a/libbrep/package.xml
+++ b/libbrep/package.xml
@@ -1,4 +1,78 @@
<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" schema-name="package" version="1">
+ <changeset version="19">
+ <alter-table name="package_tests">
+ <add-column name="test_name" type="CITEXT" null="false"/>
+ <add-column name="test_min_version_epoch" type="INTEGER" null="true"/>
+ <add-column name="test_min_version_canonical_upstream" type="TEXT" null="true"/>
+ <add-column name="test_min_version_canonical_release" type="TEXT" null="true"/>
+ <add-column name="test_min_version_revision" type="INTEGER" null="true"/>
+ <add-column name="test_min_version_upstream" type="TEXT" null="true"/>
+ <add-column name="test_min_version_release" type="TEXT" null="true"/>
+ <add-column name="test_max_version_epoch" type="INTEGER" null="true"/>
+ <add-column name="test_max_version_canonical_upstream" type="TEXT" null="true"/>
+ <add-column name="test_max_version_canonical_release" type="TEXT" null="true"/>
+ <add-column name="test_max_version_revision" type="INTEGER" null="true"/>
+ <add-column name="test_max_version_upstream" type="TEXT" null="true"/>
+ <add-column name="test_max_version_release" type="TEXT" null="true"/>
+ <add-column name="test_min_open" type="BOOLEAN" null="true"/>
+ <add-column name="test_max_open" type="BOOLEAN" null="true"/>
+ <add-column name="test_package_tenant" type="TEXT" null="true"/>
+ <add-column name="test_package_name" type="CITEXT" null="true"/>
+ <add-column name="test_package_version_epoch" type="INTEGER" null="true"/>
+ <add-column name="test_package_version_canonical_upstream" type="TEXT" null="true"/>
+ <add-column name="test_package_version_canonical_release" type="TEXT" null="true" options="COLLATE &quot;C&quot;"/>
+ <add-column name="test_package_version_revision" type="INTEGER" null="true"/>
+ <add-column name="test_type" type="TEXT" null="false"/>
+ <add-foreign-key name="test_package_tenant_fk" deferrable="DEFERRED">
+ <column name="test_package_tenant"/>
+ <references table="tenant">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ <add-foreign-key name="test_package_fk" deferrable="DEFERRED">
+ <column name="test_package_tenant"/>
+ <column name="test_package_name"/>
+ <column name="test_package_version_epoch"/>
+ <column name="test_package_version_canonical_upstream"/>
+ <column name="test_package_version_canonical_release"/>
+ <column name="test_package_version_revision"/>
+ <references table="package">
+ <column name="tenant"/>
+ <column name="name"/>
+ <column name="version_epoch"/>
+ <column name="version_canonical_upstream"/>
+ <column name="version_canonical_release"/>
+ <column name="version_revision"/>
+ </references>
+ </add-foreign-key>
+ <drop-foreign-key name="dep_package_tenant_fk"/>
+ <drop-foreign-key name="dep_package_fk"/>
+ <drop-column name="dep_name"/>
+ <drop-column name="dep_min_version_epoch"/>
+ <drop-column name="dep_min_version_canonical_upstream"/>
+ <drop-column name="dep_min_version_canonical_release"/>
+ <drop-column name="dep_min_version_revision"/>
+ <drop-column name="dep_min_version_upstream"/>
+ <drop-column name="dep_min_version_release"/>
+ <drop-column name="dep_max_version_epoch"/>
+ <drop-column name="dep_max_version_canonical_upstream"/>
+ <drop-column name="dep_max_version_canonical_release"/>
+ <drop-column name="dep_max_version_revision"/>
+ <drop-column name="dep_max_version_upstream"/>
+ <drop-column name="dep_max_version_release"/>
+ <drop-column name="dep_min_open"/>
+ <drop-column name="dep_max_open"/>
+ <drop-column name="dep_package_tenant"/>
+ <drop-column name="dep_package_name"/>
+ <drop-column name="dep_package_version_epoch"/>
+ <drop-column name="dep_package_version_canonical_upstream"/>
+ <drop-column name="dep_package_version_canonical_release"/>
+ <drop-column name="dep_package_version_revision"/>
+ </alter-table>
+ <drop-table name="package_examples"/>
+ <drop-table name="package_benchmarks"/>
+ </changeset>
+
<changeset version="18">
<alter-table name="package">
<add-column name="unbuildable_reason" type="TEXT" null="true"/>