From 8e79ad9f544d1c4a0476e0d96aef0496ca7fc741 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:46:56 +0200 Subject: Adding upstream version 0.85.6. Signed-off-by: Daniel Baumann --- db/build.sql | 245 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 db/build.sql (limited to 'db/build.sql') diff --git a/db/build.sql b/db/build.sql new file mode 100644 index 0000000..0aa204c --- /dev/null +++ b/db/build.sql @@ -0,0 +1,245 @@ +--- Debian Source Builder: Database Schema for PostgreSQL -*- sql -*- +--- +--- Copyright © 2008-2009 Roger Leigh +--- Copyright © 2008-2009 Marc 'HE' Brockschmidt +--- Copyright © 2008-2009 Adeodato Simó +--- +--- This program is free software: you can redistribute it and/or modify +--- it under the terms of the GNU General Public License as published by +--- the Free Software Foundation, either version 2 of the License, or +--- (at your option) any later version. +--- +--- This program is distributed in the hope that it will be useful, but +--- WITHOUT ANY WARRANTY; without even the implied warranty of +--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +--- General Public License for more details. +--- +--- You should have received a copy of the GNU General Public License +--- along with this program. If not, see +--- . + +CREATE TABLE builders ( + builder text + CONSTRAINT builder_pkey PRIMARY KEY, + arch text + CONSTRAINT builder_arch_fkey REFERENCES architectures(arch) + NOT NULL, + address text + NOT NULL +); + +COMMENT ON TABLE builders IS 'buildd usernames (database users from _userinfo in old MLDBM db format)'; +COMMENT ON COLUMN builders.builder IS 'Username'; +COMMENT ON COLUMN builders.arch IS 'Buildd architecture'; +COMMENT ON COLUMN builders.address IS 'Remote e-mail address of the buildd user'; + +CREATE TABLE package_states ( + name text + CONSTRAINT state_pkey PRIMARY KEY +); + +COMMENT ON TABLE package_states IS 'Package states'; +COMMENT ON COLUMN package_states.name IS 'State name'; + +CREATE TABLE build_status ( + source text + NOT NULL, + source_version debversion + NOT NULL, + arch text + CONSTRAINT build_status_arch_fkey REFERENCES architectures(arch) + ON DELETE CASCADE + NOT NULL, + suite text + CONSTRAINT build_status_suite_fkey REFERENCES suites(suite) + ON DELETE CASCADE + NOT NULL, + bin_nmu integer, + user_name text + NOT NULL + DEFAULT CURRENT_USER, + builder text + -- Can be NULL in case of states set up manually by people. + CONSTRAINT build_status_builder_fkey REFERENCES builders(builder), + status text + CONSTRAINT build_status_status_fkey REFERENCES package_states(name) + NOT NULL, + ctime timestamp with time zone + NOT NULL + DEFAULT 'epoch'::timestamp, + CONSTRAINT build_status_pkey PRIMARY KEY (source, arch, suite), + CONSTRAINT build_status_src_fkey FOREIGN KEY(source, source_version) + REFERENCES sources(source, source_version) + ON DELETE CASCADE, + CONSTRAINT suite_bin_suite_arch_fkey FOREIGN KEY (suite, arch) + REFERENCES suite_arches (suite, arch) + ON DELETE CASCADE +); + +CREATE INDEX build_status_source ON build_status (source); + +COMMENT ON TABLE build_status IS 'Build status for each package'; +COMMENT ON COLUMN build_status.source IS 'Source package name'; +COMMENT ON COLUMN build_status.source_version IS 'Source package version number'; +COMMENT ON COLUMN build_status.arch IS 'Architecture name'; +COMMENT ON COLUMN build_status.suite IS 'Suite name'; +COMMENT ON COLUMN build_status.bin_nmu IS 'Scheduled binary NMU version, if any'; +COMMENT ON COLUMN build_status.user_name IS 'User making this change (username)'; +COMMENT ON COLUMN build_status.builder IS 'Build dæmon making this change (username)'; +COMMENT ON COLUMN build_status.status IS 'Status name'; +COMMENT ON COLUMN build_status.ctime IS 'Stage change time'; + +CREATE TABLE build_status_history ( + source text + NOT NULL, + source_version debversion + NOT NULL, + arch text + CONSTRAINT build_status_history_arch_fkey REFERENCES architectures(arch) + ON DELETE CASCADE + NOT NULL, + suite text + CONSTRAINT build_status_history_suite_fkey REFERENCES suites(suite) + ON DELETE CASCADE + NOT NULL, + bin_nmu integer, + user_name text + NOT NULL + DEFAULT CURRENT_USER, + builder text + CONSTRAINT build_status_history_builder_fkey REFERENCES builders(builder), + status text + CONSTRAINT build_status_history_status_fkey REFERENCES package_states(name) + NOT NULL, + ctime timestamp with time zone + NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX build_status_history_source ON build_status_history (source); +CREATE INDEX build_status_history_ctime ON build_status_history (ctime); + +COMMENT ON TABLE build_status_history IS 'Build status history for each package'; +COMMENT ON COLUMN build_status_history.source IS 'Source package name'; +COMMENT ON COLUMN build_status_history.source_version IS 'Source package version number'; +COMMENT ON COLUMN build_status_history.arch IS 'Architecture name'; +COMMENT ON COLUMN build_status_history.suite IS 'Suite name'; +COMMENT ON COLUMN build_status_history.bin_nmu IS 'Scheduled binary NMU version, if any'; +COMMENT ON COLUMN build_status_history.user_name IS 'User making this change (username)'; +COMMENT ON COLUMN build_status_history.builder IS 'Build dæmon making this change (username)'; +COMMENT ON COLUMN build_status_history.status IS 'Status name'; +COMMENT ON COLUMN build_status_history.ctime IS 'Stage change time'; + +CREATE TABLE build_status_properties ( + source text NOT NULL, + arch text NOT NULL, + source suite NOT NULL, + prop_name text NOT NULL, + prop_value text NOT NULL, + CONSTRAINT build_status_properties_fkey + FOREIGN KEY(source, arch) + REFERENCES build_status(id) + ON DELETE CASCADE, + CONSTRAINT build_status_properties_unique + UNIQUE (source, arch, prop_name) +); + +COMMENT ON TABLE build_status_properties IS 'Additional package-specific properties (e.g. For PermBuildPri/BuildPri/Binary-NMU-(Version|ChangeLog)/Notes)'; +COMMENT ON COLUMN build_status_properties.source IS 'Source package name'; +COMMENT ON COLUMN build_status_properties.arch IS 'Architecture name'; +COMMENT ON COLUMN build_status_properties.suite IS 'Suite name'; +COMMENT ON COLUMN build_status_properties.prop_name IS 'Property name'; +COMMENT ON COLUMN build_status_properties.prop_value IS 'Property value'; + +-- Make this a table because in the future we may have more fine-grained +-- result states. +CREATE TABLE build_log_result ( + result text + CONSTRAINT build_log_result_pkey PRIMARY KEY, + is_success boolean + DEFAULT 'f' +); + +COMMENT ON TABLE build_log_result IS 'Possible results states of a build log'; +COMMENT ON COLUMN build_log_result.result IS 'Meaningful and short name for the result'; +COMMENT ON COLUMN build_log_result.is_success IS 'Whether the result of the build is successful'; + +CREATE TABLE build_logs ( + source text + NOT NULL, + source_version debversion + NOT NULL, + arch text + CONSTRAINT build_logs_arch_fkey REFERENCES architectures(arch) + NOT NULL, + suite text + CONSTRAINT build_logs_suite_fkey REFERENCES suites(suite) + NOT NULL, + date timestamp with time zone + NOT NULL, + result text + CONSTRAINT build_logs_result_fkey REFERENCES build_log_result(result) + NOT NULL, + build_time interval, + used_space integer, + path text + CONSTRAINT build_logs_pkey PRIMARY KEY +); +CREATE INDEX build_logs_source_idx ON build_logs (source); + +COMMENT ON TABLE build_logs IS 'Available build logs'; +COMMENT ON COLUMN build_logs.source IS 'Source package name'; +COMMENT ON COLUMN build_logs.source_version IS 'Source package version'; +COMMENT ON COLUMN build_logs.arch IS 'Architecture name'; +COMMENT ON COLUMN build_logs.suite IS 'Suite name'; +COMMENT ON COLUMN build_logs.date IS 'Date of the log'; +COMMENT ON COLUMN build_logs.result IS 'Result state'; +COMMENT ON COLUMN build_logs.build_time IS 'Time needed by the build'; +COMMENT ON COLUMN build_logs.used_space IS 'Space needed by the build'; +COMMENT ON COLUMN build_logs.path IS 'Relative path to the log file'; + +CREATE TABLE log ( + time timestamp with time zone + NOT NULL DEFAULT CURRENT_TIMESTAMP, + username text NOT NULL DEFAULT CURRENT_USER, + message text NOT NULL +); + +CREATE INDEX log_idx ON log (time); + +COMMENT ON TABLE log IS 'Log messages'; +COMMENT ON COLUMN log.time IS 'Log entry time'; +COMMENT ON COLUMN log.username IS 'Log user name'; +COMMENT ON COLUMN log.message IS 'Log entry message'; + +CREATE TABLE people ( + login text + CONSTRAINT people_pkey PRIMARY KEY, + full_name text + NOT NULL, + address text + NOT NULL +); + +COMMENT ON TABLE people IS 'People wanna-build should know about'; +COMMENT ON COLUMN people.login IS 'Debian login'; +COMMENT ON COLUMN people.full_name IS 'Full name'; +COMMENT ON COLUMN people.address IS 'E-mail address'; + +CREATE TABLE buildd_admins ( + builder text + CONSTRAINT buildd_admin_builder_fkey REFERENCES builders(builder) + ON DELETE CASCADE + NOT NULL, + admin text + CONSTRAINT buildd_admin_admin_fkey REFERENCES people(login) + ON DELETE CASCADE + NOT NULL, + backup boolean + DEFAULT 'f', + UNIQUE (builder, admin) +); + +COMMENT ON TABLE buildd_admins IS 'Admins for each buildd'; +COMMENT ON COLUMN buildd_admins.builder IS 'The buildd'; +COMMENT ON COLUMN buildd_admins.admin IS 'The admin login'; +COMMENT ON COLUMN buildd_admins.backup IS 'Whether this is only a backup admin'; -- cgit v1.2.3