[Qa-jenkins-scm] [Git][qa/jenkins.debian.net][master] 7 commits: rblib: get_status_icon(): fail when looking up an unknown status
Mattia Rizzolo
gitlab at salsa.debian.org
Mon Jun 18 22:27:39 BST 2018
Mattia Rizzolo pushed to branch master at Debian QA / jenkins.debian.net
Commits:
457b5456 by Mattia Rizzolo at 2018-06-18T19:40:57+02:00
rblib: get_status_icon(): fail when looking up an unknown status
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
26739d90 by Mattia Rizzolo at 2018-06-18T20:07:00+02:00
reproducible: _db_maintenance: fix typo in function name
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
cb6b2f90 by Mattia Rizzolo at 2018-06-18T20:32:59+02:00
reproducible: _db_maintenance: run the update queries in a single
transaction
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
01ac367e by Mattia Rizzolo at 2018-06-18T23:17:43+02:00
reproducible: _db_maintenance: automatically bump the value in rb_schema without having to specify the query at each update
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
09012516 by Mattia Rizzolo at 2018-06-18T23:18:20+02:00
reproducible: rename the inconsistent 'not for us' and 'not_for_us' to NFU
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
ccc94fcf by Mattia Rizzolo at 2018-06-18T23:18:21+02:00
reproducible: normalize 'unreproducible' to 'FTBR' in computer-oriented strings
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
ca3416d7 by Mattia Rizzolo at 2018-06-18T23:18:21+02:00
reproducible: rename status '404' to 'E404' to make a future planned change easier
Signed-off-by: Mattia Rizzolo <mattia at debian.org>
- - - - -
14 changed files:
- bin/rblib/__init__.py
- bin/reproducible_build.sh
- bin/reproducible_common.sh
- bin/reproducible_db_maintenance.py
- bin/reproducible_html_breakages.py
- bin/reproducible_html_dashboard.sh
- bin/reproducible_html_dd_list.py
- bin/reproducible_html_indexes.py
- bin/reproducible_html_live_status.py
- bin/reproducible_html_notes.py
- bin/reproducible_html_packages.py
- bin/reproducible_html_pkg_sets.py
- bin/reproducible_json.py
- bin/reproducible_scheduler.py
Changes:
=====================================
bin/rblib/__init__.py
=====================================
--- a/bin/rblib/__init__.py
+++ b/bin/rblib/__init__.py
@@ -57,22 +57,21 @@ def get_status_icon(status):
table = {'reproducible': 'weather-clear.png',
'FTBFS': 'weather-storm.png',
'FTBR': 'weather-showers-scattered.png',
- '404': 'weather-severe-alert.png',
+ 'E404': 'weather-severe-alert.png',
'depwait': 'weather-snow.png',
- 'not for us': 'weather-few-clouds-night.png',
- 'not_for_us': 'weather-few-clouds-night.png',
+ 'NFU': 'weather-few-clouds-night.png',
'untested': 'weather-clear-night.png',
'blacklisted': 'error.png'}
spokenstatus = status
if status == 'unreproducible':
status = 'FTBR'
- elif status == 'not for us':
- status = 'not_for_us'
+ elif status in ('not for us', 'not_for_us'):
+ status = 'NFU'
try:
return (status, table[status], spokenstatus)
except KeyError:
- log.error('Status ' + status + ' not recognized')
- return (status, '', spokenstatus)
+ log.exception('Status %s not recognized', status)
+ raise
def get_trailing_bug_icon(bug, bugs, package=None):
=====================================
bin/reproducible_build.sh
=====================================
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -133,15 +133,15 @@ update_db_and_html() {
query_db "SELECT status FROM results WHERE package_id='${SRCPKGID}'")
# irc+mail notifications for changing status in unstable and experimental
if [ "$SUITE" = "unstable" ] || [ "$SUITE" = "experimental" ] ; then
- if ([ "$OLD_STATUS" = "reproducible" ] && ( [ "$STATUS" = "unreproducible" ] || [ "$STATUS" = "FTBFS" ] )) || \
- ([ "$OLD_STATUS" = "unreproducible" ] && [ "$STATUS" = "FTBFS" ] ); then
+ if ([ "$OLD_STATUS" = "reproducible" ] && ( [ "$STATUS" = "FTBR" ] || [ "$STATUS" = "FTBFS" ] )) || \
+ ([ "$OLD_STATUS" = "FTBR" ] && [ "$STATUS" = "FTBFS" ] ); then
MESSAGE="${DEBIAN_URL}/${SUITE}/${ARCH}/${SRCPACKAGE} : ${OLD_STATUS} ➤ ${STATUS}"
log_info "$MESSAGE"
irc_message debian-reproducible-changes "$MESSAGE"
fi
if [ "$OLD_STATUS" != "$STATUS" ] && [ "$NOTIFY_MAINTAINER" -eq 1 ] && \
[ "$OLD_STATUS" != "depwait" ] && [ "$STATUS" != "depwait" ] && \
- [ "$OLD_STATUS" != "404" ] && [ "$STATUS" != "404" ]; then
+ [ "$OLD_STATUS" != "E404" ] && [ "$STATUS" != "E404" ]; then
# spool notifications and mail them once a day
mkdir -p /srv/reproducible-results/notification-emails
echo "$(date -u +'%Y-%m-%d %H:%M') $DEBIAN_URL/$SUITE/$ARCH/$SRCPACKAGE changed from $OLD_STATUS -> $STATUS" >> /srv/reproducible-results/notification-emails/$SRCPACKAGE
@@ -156,7 +156,7 @@ update_db_and_html() {
query_db "INSERT INTO results (package_id, version, status, build_date, build_duration, node1, node2, job) VALUES ('$SRCPKGID', '$VERSION', '$STATUS', '$DATE', '$DURATION', '$NODE1', '$NODE2', '$JOB')" || \
query_db "INSERT INTO results (package_id, version, status, build_date, build_duration, node1, node2, job) VALUES ('$SRCPKGID', '$VERSION', '$STATUS', '$DATE', '$DURATION', '$NODE1', '$NODE2', '$JOB')"
fi
- if [ ! -z "$DURATION" ] ; then # this happens when not 404 and not_for_us
+ if [ ! -z "$DURATION" ] ; then # this happens when not E404 and NFU
query_db "INSERT INTO stats_build (name, version, suite, architecture, status, build_date, build_duration, node1, node2, job) VALUES ('$SRCPACKAGE', '$VERSION', '$SUITE', '$ARCH', '$STATUS', '$DATE', '$DURATION', '$NODE1', '$NODE2', '$JOB')" || \
query_db "INSERT INTO stats_build (name, version, suite, architecture, status, build_date, build_duration, node1, node2, job) VALUES ('$SRCPACKAGE', '$VERSION', '$SUITE', '$ARCH', '$STATUS', '$DATE', '$DURATION', '$NODE1', '$NODE2', '$JOB')"
fi
@@ -203,13 +203,13 @@ diff_copy_buildlogs() {
fi
}
-handle_404() {
+handle_E404() {
log_warning "Download of ${SRCPACKAGE} sources from ${SUITE} failed."
ls -l ${SRCPACKAGE}* | log_file -
log_warning "Maybe there was a network problem, or ${SRCPACKAGE} is not a source package in ${SUITE}, or it was removed or renamed. Please investigate. Sleeping 30m as this should not happen."
DURATION=0
update_rbuildlog
- update_db_and_html "404"
+ update_db_and_html "E404"
if [ $SAVE_ARTIFACTS -eq 1 ] ; then SAVE_ARTIFACTS=0 ; fi
if [ ! -z "$NOTIFY" ] ; then NOTIFY="failure" ; fi
sleep 30m
@@ -226,12 +226,12 @@ handle_depwait() {
if [ -n "$NOTIFY" ] ; then NOTIFY="depwait" ; fi
}
-handle_not_for_us() {
+handle_NFU() {
# a list of valid architecture for this package should be passed to this function
log_info "Package ${SRCPACKAGE} (${VERSION}) shall only be build on \"$(echo "$@" | xargs echo )\" and thus was skipped."
DURATION=0
update_rbuildlog
- update_db_and_html "not for us"
+ update_db_and_html "NFU"
if [ $SAVE_ARTIFACTS -eq 1 ] ; then SAVE_ARTIFACTS=0 ; fi
if [ ! -z "$NOTIFY" ] ; then NOTIFY="failure" ; fi
exit 0 # RBUILDLOG and SAVE_ARTIFACTS and NOTIFY are used in cleanup_all called at exit
@@ -302,7 +302,7 @@ handle_ftbr() {
gzip -9n $DEBIAN_BASE/dbdtxt/$SUITE/$ARCH/$DBDTXT
fi
calculate_build_duration
- update_db_and_html "unreproducible"
+ update_db_and_html "FTBR"
}
handle_reproducible() {
@@ -550,9 +550,9 @@ get_source_package() {
download_again_if_needed # yes, this is called three times. this should really not happen
if [ "$(ls ${SRCPACKAGE}_${EVERSION}.dsc 2> /dev/null)" = "" ] || [ ! -z "$PARSED_RESULT" ] ; then
if [ "$MODE" = "master" ] ; then
- handle_404
+ handle_E404
else
- exit 404
+ exit E404
fi
fi
}
@@ -580,7 +580,7 @@ check_suitability() {
fi
done
- if ! $SUITABLE ; then handle_not_for_us $ARCHITECTURES ; fi
+ if ! $SUITABLE ; then handle_NFU $ARCHITECTURES ; fi
}
first_build() {
@@ -739,7 +739,7 @@ remote_build() {
RESULT=$?
# 404-256=148... (ssh 'really' only 'supports' exit codes below 255...)
if [ $RESULT -eq 148 ] ; then
- handle_404
+ handle_E404
elif [ $RESULT -eq 100 ] ; then
log_error "Version mismatch between main node and build $BUILDNR, aborting. Please upgrade the schroots..."
# reschedule the package for later and quit the build without saving anything
=====================================
bin/reproducible_common.sh
=====================================
--- a/bin/reproducible_common.sh
+++ b/bin/reproducible_common.sh
@@ -140,17 +140,17 @@ set_icon() {
case "$1" in
reproducible) ICON=weather-clear.png
;;
- unreproducible|FTBR) ICON=weather-showers-scattered.png
+ FTBR) ICON=weather-showers-scattered.png
STATE_TARGET_NAME="FTBR"
;;
FTBFS) ICON=weather-storm.png
;;
depwait) ICON=weather-snow.png
;;
- 404) ICON=weather-severe-alert.png
+ E404) ICON=weather-severe-alert.png
;;
- not_for_us|"not for us") ICON=weather-few-clouds-night.png
- STATE_TARGET_NAME="not_for_us"
+ NFU|not_for_us|"not for us") ICON=weather-few-clouds-night.png
+ STATE_TARGET_NAME="NFU"
;;
blacklisted) ICON=error.png
;;
@@ -278,7 +278,7 @@ write_page_header() {
write_page " <a href=\"$JENKINS_URL/userContent/about.html#_reproducible_builds_jobs\">jenkins.debian.net</a>."
write_page " Thanks to <a href=\"https://www.profitbricks.co.uk\">Profitbricks</a> for donating the virtual machines this is running on!"
write_page "</ul>"
- LATEST=$(query_db "SELECT s.name FROM results AS r JOIN sources AS s ON r.package_id = s.id WHERE r.status IN ('unreproducible') AND s.suite = 'unstable' AND s.architecture = 'amd64' AND s.id NOT IN (SELECT package_id FROM notes) ORDER BY build_date DESC LIMIT 23"|sort -R|head -1)
+ LATEST=$(query_db "SELECT s.name FROM results AS r JOIN sources AS s ON r.package_id = s.id WHERE r.status = 'FTBR' AND s.suite = 'unstable' AND s.architecture = 'amd64' AND s.id NOT IN (SELECT package_id FROM notes) ORDER BY build_date DESC LIMIT 23"|sort -R|head -1)
write_page "<form action=\"$REPRODUCIBLE_URL/redirect\" method=\"GET\">$REPRODUCIBLE_URL/"
write_page "<input type=\"text\" name=\"SrcPkg\" placeholder=\"Type my friend..\" value=\"$LATEST\" />"
write_page "<input type=\"submit\" value=\"submit source package name\" />"
@@ -723,10 +723,10 @@ create_png_from_table() {
COALESCE(reproducible_buster,0) AS reproducible_buster,
COALESCE(reproducible_unstable,0) AS reproducible_unstable,
COALESCE(reproducible_experimental,0) AS reproducible_experimental,
- COALESCE(unreproducible_stretch,0) AS unreproducible_stretch,
- COALESCE(unreproducible_buster,0) AS unreproducible_buster,
- COALESCE(unreproducible_unstable,0) AS unreproducible_unstable,
- COALESCE(unreproducible_experimental,0) AS unreproducible_experimental,
+ COALESCE(FTBR_stretch,0) AS FTBR_stretch,
+ COALESCE(FTBR_buster,0) AS FTBR_buster,
+ COALESCE(FTBR_unstable,0) AS FTBR_unstable,
+ COALESCE(FTBR_experimental,0) AS FTBR_experimental,
COALESCE(FTBFS_stretch,0) AS FTBFS_stretch,
COALESCE(FTBFS_buster,0) AS FTBFS_buster,
COALESCE(FTBFS_unstable,0) AS FTBFS_unstable,
@@ -740,10 +740,10 @@ create_png_from_table() {
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA),0) AS reproducible_buster,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA),0) AS reproducible_unstable,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA),0) AS reproducible_experimental,
- (SELECT e.unreproducible FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS unreproducible_stretch,
- (SELECT e.unreproducible FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS unreproducible_buster,
- (SELECT e.unreproducible FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS unreproducible_unstable,
- (SELECT e.unreproducible FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS unreproducible_experimental,
+ (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBR_stretch,
+ (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBR_buster,
+ (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBR_unstable,
+ (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS FTBR_experimental,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBFS_stretch,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBFS_buster,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBFS_unstable,
@@ -755,7 +755,7 @@ create_png_from_table() {
FROM stats_builds_per_day AS s $WHERE2_EXTRA GROUP BY s.datum) as stats
ORDER BY datum" >> ${TABLE[$1]}.csv
elif [ $1 -eq 2 ] ; then
- # just make a graph of the oldest reproducible build (ignore FTBFS and unreproducible)
+ # just make a graph of the oldest reproducible build (ignore FTBFS and FTBR)
query_to_csv "SELECT datum, oldest_reproducible FROM ${TABLE[$1]} ${WHERE_EXTRA} ORDER BY datum" >> ${TABLE[$1]}.csv
elif [ $1 -eq 7 ] ; then
query_to_csv "SELECT datum, $SUM_DONE, $SUM_OPEN from ${TABLE[3]} ORDER BY datum" >> ${TABLE[$1]}.csv
=====================================
bin/reproducible_db_maintenance.py
=====================================
--- a/bin/reproducible_db_maintenance.py
+++ b/bin/reproducible_db_maintenance.py
@@ -14,11 +14,12 @@
import re
import sys
from datetime import datetime
+from sqlalchemy.orm import sessionmaker
from rblib import query_db
from rblib.confparse import log
-from rblib.const import DB_METADATA
-from rblib.utils import print_critiacal_message
+from rblib.const import DB_ENGINE, DB_METADATA
+from rblib.utils import print_critical_message
now = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
@@ -157,7 +158,7 @@ db_schema = [
# and here are some queries, split by update, that can be used to
# update the live schema
schema_updates = {
- 1: ["INSERT INTO rb_schema (version, date) VALUES (1, '" + now + "')"],
+ 1: [],
2: [ # do a funny dance to add an id, suite and architecture values to
# the `suites` table
'''CREATE TABLE sources_new_tmp
@@ -220,11 +221,11 @@ schema_updates = {
build_date TEXT NOT NULL,
build_duration TEXT NOT NULL,
UNIQUE (name, version, suite, architecture, build_date))''',
- "INSERT INTO rb_schema (version, date) VALUES (2, '" + now + "')"],
+ ],
3: [ # add columns to stats_bugs for new usertag umask
'''ALTER TABLE stats_bugs ADD COLUMN open_umask INTEGER''',
'''ALTER TABLE stats_bugs ADD COLUMN done_umask INTEGER''',
- "INSERT INTO rb_schema (version, date) VALUES (3, '" + now + "')"],
+ ],
4: [ # stats_pkg_state needs (datum, suite) as primary key
'''CREATE TABLE stats_pkg_state_tmp
(datum TEXT NOT NULL,
@@ -241,7 +242,7 @@ schema_updates = {
FTBFS, other FROM stats_pkg_state;''',
'''DROP TABLE stats_pkg_state;''',
'''ALTER TABLE stats_pkg_state_tmp RENAME TO stats_pkg_state;''',
- "INSERT INTO rb_schema (version, date) VALUES (4, '" + now + "')"],
+ ],
5: [ # stats_builds_per_day needs (datum, suite) as primary key
'''CREATE TABLE stats_builds_per_day_tmp
(datum TEXT NOT NULL,
@@ -257,7 +258,7 @@ schema_updates = {
FTBFS, other FROM stats_builds_per_day;''',
'''DROP TABLE stats_builds_per_day;''',
'''ALTER TABLE stats_builds_per_day_tmp RENAME TO stats_builds_per_day;''',
- "INSERT INTO rb_schema (version, date) VALUES (5, '" + now + "')"],
+ ],
6: [ # stats_builds_age needs (datum, suite) as primary key
'''CREATE TABLE stats_builds_age_tmp
(datum TEXT NOT NULL,
@@ -272,7 +273,7 @@ schema_updates = {
oldest_FTBFS FROM stats_builds_age;''',
'''DROP TABLE stats_builds_age;''',
'''ALTER TABLE stats_builds_age_tmp RENAME TO stats_builds_age;''',
- "INSERT INTO rb_schema (version, date) VALUES (6, '" + now + "')"],
+ ],
7: [ # change build_duration field in results and stats_build from str to int
'''CREATE TABLE stats_build_tmp
(id INTEGER PRIMARY KEY,
@@ -303,7 +304,7 @@ schema_updates = {
build_date, CAST (build_duration AS INTEGER) FROM results''',
'DROP TABLE results',
'ALTER TABLE results_tmp RENAME TO results',
- "INSERT INTO rb_schema (version, date) VALUES (7, '" + now + "')"],
+ ],
8: [ # add default value to stats_bugs to get a full 'done vs open bugs' graph
'''CREATE TABLE stats_bugs_tmp
(datum TEXT NOT NULL,
@@ -339,7 +340,7 @@ schema_updates = {
'INSERT INTO stats_bugs_tmp SELECT * FROM stats_bugs',
'DROP TABLE stats_bugs',
'ALTER TABLE stats_bugs_tmp RENAME TO stats_bugs',
- "INSERT INTO rb_schema (version, date) VALUES (8, '" + now + "')"],
+ ],
9: [ # rename 'sid' to 'unstable'
"UPDATE sources SET suite = 'unstable' WHERE suite = 'sid'",
"UPDATE stats_build SET suite = 'unstable' WHERE suite = 'sid'",
@@ -347,7 +348,7 @@ schema_updates = {
"UPDATE stats_builds_per_day SET suite = 'unstable' WHERE suite = 'sid'",
"UPDATE stats_builds_age SET suite = 'unstable' WHERE suite = 'sid'",
"UPDATE stats_meta_pkg_state SET suite = 'unstable' WHERE suite = 'sid'",
- "INSERT INTO rb_schema (version, date) VALUES (9, '" + now + "')"],
+ ],
10: [ # add the notes and issues tables
'''CREATE TABLE notes (
package_id INTEGER,
@@ -362,18 +363,18 @@ schema_updates = {
description TEXT NOT NULL,
url TEXT,
PRIMARY KEY (name))''',
- "INSERT INTO rb_schema (version, date) VALUES (10, '" + now + "')"],
+ ],
11: [ # table with removed packages, to enable the maintenance job to do clean up
'''CREATE TABLE removed_packages (
name TEXT NOT NULL,
suite TEXT NOT NULL,
architecture TEXT NOT NULL,
PRIMARY KEY (name, suite, architecture))''',
- "INSERT INTO rb_schema (version, date) VALUES (11, '" + now + "')"],
+ ],
12: [ # refactor the artifacts handling, splitting artifacts saving from
# IRC notification
'ALTER TABLE schedule ADD COLUMN notify TEXT',
- "INSERT INTO rb_schema (version, date) VALUES (12, '" + now + "')"],
+ ],
13: [ # record manual scheduling done, to be able to limit people
'''CREATE TABLE manual_scheduler (
id INTEGER PRIMARY KEY,
@@ -381,14 +382,14 @@ schema_updates = {
requester TEXT NOT NULL,
date_request INTEGER NOT NULL)''',
'ALTER TABLE schedule ADD COLUMN scheduler TEXT',
- "INSERT INTO rb_schema (version, date) VALUES (13, '" + now + "')"],
+ ],
14: [ # column to enable mail notification to maintainers
'ALTER TABLE sources ADD COLUMN notify_maintainer INTEGER NOT NULL DEFAULT 0',
- "INSERT INTO rb_schema (version, date) VALUES (14, '" + now + "')"],
+ ],
15: [ # add columns to stats_bugs for new usertag ftbfs
'''ALTER TABLE stats_bugs ADD COLUMN open_ftbfs INTEGER''',
'''ALTER TABLE stats_bugs ADD COLUMN done_ftbfs INTEGER''',
- "INSERT INTO rb_schema (version, date) VALUES (15, '" + now + "')"],
+ ],
16: [ # add default value to stats_bugs.(open|done)_ftbfs to get a full 'done vs open bugs' graph
'''CREATE TABLE stats_bugs_tmp
(datum TEXT NOT NULL,
@@ -426,21 +427,21 @@ schema_updates = {
'INSERT INTO stats_bugs_tmp SELECT * FROM stats_bugs',
'DROP TABLE stats_bugs',
'ALTER TABLE stats_bugs_tmp RENAME TO stats_bugs',
- "INSERT INTO rb_schema (version, date) VALUES (16, '" + now + "')"],
+ ],
17: [ # add column to save which builders builds what
"ALTER TABLE schedule ADD COLUMN builder TEXT",
"ALTER TABLE results ADD COLUMN builder TEXT NOT NULL DEFAULT ''",
"ALTER TABLE stats_build ADD COLUMN builder TEXT NOT NULL DEFAULT ''",
- "INSERT INTO rb_schema (version, date) VALUES (17, '" + now + "')"],
+ ],
18: [ # add columns to stats_bugs for new usertag locale
'''ALTER TABLE stats_bugs ADD COLUMN open_locale INTEGER DEFAULT 0''',
'''ALTER TABLE stats_bugs ADD COLUMN done_locale INTEGER DEFAULT 0''',
- "INSERT INTO rb_schema (version, date) VALUES (18, '" + now + "')"],
+ ],
19: [ # add column architecture to stats_pkg_state, stats_builds_per_day and stats_builds_age tables and set previous values to amd64
"ALTER TABLE stats_pkg_state ADD COLUMN architecture TEXT NOT NULL DEFAULT 'amd64'",
"ALTER TABLE stats_builds_per_day ADD COLUMN architecture TEXT NOT NULL DEFAULT 'amd64'",
"ALTER TABLE stats_builds_age ADD COLUMN architecture TEXT NOT NULL DEFAULT 'amd64'",
- "INSERT INTO rb_schema (version, date) VALUES (19, '" + now + "')"],
+ ],
20: [ # use (datum, suite, architecture) as primary key for stats_pkg_state
'''CREATE TABLE stats_pkg_state_tmp
(datum TEXT NOT NULL,
@@ -458,7 +459,7 @@ schema_updates = {
FTBFS, other FROM stats_pkg_state;''',
'''DROP TABLE stats_pkg_state;''',
'''ALTER TABLE stats_pkg_state_tmp RENAME TO stats_pkg_state;''',
- "INSERT INTO rb_schema (version, date) VALUES (20, '" + now + "')"],
+ ],
21: [ # use (datum, suite, architecture) as primary key for stats_builds_per_day
'''CREATE TABLE stats_builds_per_day_tmp
(datum TEXT NOT NULL,
@@ -475,7 +476,7 @@ schema_updates = {
FTBFS, other FROM stats_builds_per_day;''',
'''DROP TABLE stats_builds_per_day;''',
'''ALTER TABLE stats_builds_per_day_tmp RENAME TO stats_builds_per_day;''',
- "INSERT INTO rb_schema (version, date) VALUES (21, '" + now + "')"],
+ ],
22: [ # use (datum, suite, architecture) as primary key for stats_builds_age
'''CREATE TABLE stats_builds_age_tmp
(datum TEXT NOT NULL,
@@ -491,7 +492,7 @@ schema_updates = {
oldest_FTBFS FROM stats_builds_age;''',
'''DROP TABLE stats_builds_age;''',
'''ALTER TABLE stats_builds_age_tmp RENAME TO stats_builds_age;''',
- "INSERT INTO rb_schema (version, date) VALUES (22, '" + now + "')"],
+ ],
23: [ # save which builders built a package and change the name of the
# field keeping the job name
'''CREATE TABLE stats_build_tmp
@@ -513,7 +514,7 @@ schema_updates = {
build_duration, builder FROM stats_build''',
'DROP TABLE stats_build',
'ALTER TABLE stats_build_tmp RENAME TO stats_build',
- "INSERT INTO rb_schema (version, date) VALUES (23, '" + now + "')"],
+ ],
24: [ # the same as #23 but for the results table
'''CREATE TABLE results_tmp
(id INTEGER PRIMARY KEY,
@@ -533,7 +534,7 @@ schema_updates = {
builder FROM results''',
'DROP TABLE results',
'ALTER TABLE results_tmp RENAME TO results',
- "INSERT INTO rb_schema (version, date) VALUES (24, '" + now + "')"],
+ ],
25: [ # rename the builder column also in the schedule table.
'''CREATE TABLE schedule_tmp
(id INTEGER PRIMARY KEY,
@@ -554,14 +555,14 @@ schema_updates = {
FROM schedule''',
'DROP TABLE schedule',
'ALTER TABLE schedule_tmp RENAME TO schedule',
- "INSERT INTO rb_schema (version, date) VALUES (25, '" + now + "')"],
+ ],
26: [ # add a column to the schedule table to save the schedule message
"ALTER TABLE schedule ADD COLUMN message TEXT",
"ALTER TABLE stats_build ADD COLUMN schedule_message TEXT NOT NULL DEFAULT ''",
- "INSERT INTO rb_schema (version, date) VALUES (26, '" + now + "')"],
+ ],
27: [ # add column architecture to stats_meta_pkg_state and set previous values to amd64
"ALTER TABLE stats_meta_pkg_state ADD COLUMN architecture TEXT NOT NULL DEFAULT 'amd64'",
- "INSERT INTO rb_schema (version, date) VALUES (27, '" + now + "')"],
+ ],
28: [ # use (datum, suite, architecture, meta_pkg) as primary key for stats_meta_pkg_state
'''CREATE TABLE stats_meta_pkg_state_tmp
(datum TEXT NOT NULL,
@@ -579,7 +580,7 @@ schema_updates = {
FTBFS, other FROM stats_meta_pkg_state;''',
'''DROP TABLE stats_meta_pkg_state;''',
'''ALTER TABLE stats_meta_pkg_state_tmp RENAME TO stats_meta_pkg_state;''',
- "INSERT INTO rb_schema (version, date) VALUES (28, '" + now + "')"],
+ ],
# THE FOLLOWING UPDATES CAN ONLY BE PREFORMED ON POSTGRES DATABASE
@@ -596,22 +597,18 @@ schema_updates = {
NEXTVAL('stats_build_id_seq')""",
"CREATE SEQUENCE results_id_seq",
"ALTER TABLE results ALTER id SET DEFAULT NEXTVAL('results_id_seq')",
- "INSERT INTO rb_schema (version, date) VALUES (29, '" + now + "')"
],
-
30: [ # Add new table to track diffoscope breake
'''CREATE TABLE stats_breakages
(datum TEXT,
diffoscope_timeouts INTEGER,
diffoscope_crashes INTEGER,
PRIMARY KEY (datum))''',
- "INSERT INTO rb_schema (version, date) VALUES (30, '" + now + "')"
],
- 31: # rename the 'testing' suite into 'stretch'
- [ "UPDATE {} SET suite='stretch' WHERE suite='testing'".format(t)
+ 31: [ # rename the 'testing' suite into 'stretch'
+ "UPDATE {} SET suite='stretch' WHERE suite='testing'".format(t)
for t in ("sources", "stats_pkg_state", "stats_builds_per_day",
- "stats_builds_age", "stats_meta_pkg_state", "stats_build")] + [
- "INSERT INTO rb_schema (version, date) VALUES (31, '" + now + "')"
+ "stats_builds_age", "stats_meta_pkg_state", "stats_build")
],
32: [ # copy stretch packages (includng results) in buster
"""INSERT INTO sources (name, version, suite, architecture, notify_maintainer)
@@ -632,12 +629,31 @@ schema_updates = {
sr.build_duration, sr.node1, sr.node2, sr.job
FROM buster AS b JOIN sr ON b.name=sr.name
AND b.architecture=sr.architecture""",
- "INSERT INTO rb_schema (version, date) VALUES (32, '" + now + "')"
],
33: [ # the message columns. They are not actually needed.
"ALTER TABLE schedule DROP COLUMN message",
"ALTER TABLE stats_build DROP COLUMN schedule_message",
- "INSERT INTO rb_schema (version, date) VALUES (33, '" + now + "')"],
+ ],
+ 34: [ # rename status "not for us" to "NFU"
+ "UPDATE results SET status='NFU' WHERE status='not for us'",
+ "UPDATE stats_build SET status='NFU' WHERE status='not for us'",
+ "INSERT INTO rb_schema (version, date) VALUES (34, CURRENT_TIMESTAMP)",
+ ],
+ 35: [ # rename status "unreproducible" to "FTBR"
+ "UPDATE results SET status='FTBR' WHERE status='unreproducible'",
+ "UPDATE stats_build SET status='FTBR' WHERE status='unreproducible'",
+ "ALTER TABLE stats_pkg_state RENAME COLUMN unreproducible to FTBR",
+ "ALTER TABLE stats_meta_pkg_state RENAME COLUMN unreproducible to FTBR",
+ "ALTER TABLE stats_builds_per_day RENAME COLUMN unreproducible to FTBR",
+ "ALTER TABLE stats_builds_age " + \
+ "RENAME COLUMN oldest_unreproducible to oldest_FTBR",
+ "INSERT INTO rb_schema (version, date) VALUES (35, CURRENT_TIMESTAMP)",
+ ],
+ 36: [ # rename status "404" to "E404"
+ "UPDATE results SET status='E404' WHERE status='404'",
+ "UPDATE stats_build SET status='E404' WHERE status='404'",
+ "INSERT INTO rb_schema (version, date) VALUES (36, CURRENT_TIMESTAMP)",
+ ],
}
@@ -682,16 +698,23 @@ def db_update():
if current == last:
return False
if current > last:
- print_critiacal_message('The active database schema is higher than' +
- ' the last update available.\nPlease check!')
+ print_critical_message('The active database schema is higher than' +
+ ' the last update available.\nPlease check!')
sys.exit(1)
log.info('Found schema updates.')
+ Session = sessionmaker(bind=DB_ENGINE, autocommit=True)
+ session = Session()
for update in range(current+1, last+1):
log.info('Applying database update #' + str(update) + '. Queries:')
startTime = datetime.now()
- for query in schema_updates[update]:
- log.info('\t' + query)
- query_db(query)
+ with session.begin():
+ for query in schema_updates[update]:
+ log.info('\t' + query)
+ session.execute(query)
+ session.execute(
+ "INSERT INTO rb_schema (version, date) "
+ "VALUES (:ver, CURRENT_TIMESTAMP)", {'ver': update}
+ )
log.info(str(len(schema_updates[update])) + ' queries executed in ' +
str(datetime.now() - startTime))
return True
=====================================
bin/reproducible_html_breakages.py
=====================================
--- a/bin/reproducible_html_breakages.py
+++ b/bin/reproducible_html_breakages.py
@@ -37,7 +37,7 @@ def unrep_with_dbd_issues():
sources_without_dbd = set()
query = '''SELECT s.name, r.version, s.suite, s.architecture
FROM sources AS s JOIN results AS r ON r.package_id=s.id
- WHERE r.status='unreproducible'
+ WHERE r.status='FTBR'
ORDER BY s.name ASC, s.suite DESC, s.architecture ASC'''
results = query_db(query)
for pkg, version, suite, arch in results:
@@ -48,7 +48,7 @@ def unrep_with_dbd_issues():
without_dbd.append((pkg, version, suite, arch))
sources_without_dbd.add(pkg)
log.warning(suite + '/' + arch + '/' + pkg + ' (' + version + ') is '
- 'unreproducible without diffoscope file.')
+ 'FTBR without diffoscope file.')
else:
log.debug(dbd + ' found.')
data = open(dbd, 'br').read(3)
@@ -72,7 +72,7 @@ def not_unrep_with_dbd_file():
bad_pkgs = []
query = '''SELECT s.name, r.version, s.suite, s.architecture
FROM sources AS s JOIN results AS r ON r.package_id=s.id
- WHERE r.status != 'unreproducible'
+ WHERE r.status != 'FTBR'
ORDER BY s.name ASC, s.suite DESC, s.architecture ASC'''
results = query_db(query)
for pkg, version, suite, arch in results:
@@ -82,7 +82,7 @@ def not_unrep_with_dbd_file():
if os.access(dbd, os.R_OK):
bad_pkgs.append((pkg, version, suite, arch))
log.warning(dbd + ' exists but ' + suite + '/' + arch + '/' + pkg + ' (' + version + ')'
- ' is not unreproducible.')
+ ' is not FTBR.')
return bad_pkgs
@@ -110,7 +110,7 @@ def lack_buildinfo():
query = '''SELECT s.name, r.version, s.suite, s.architecture
FROM sources AS s JOIN results AS r ON r.package_id=s.id
WHERE r.status NOT IN
- ('blacklisted', 'not for us', 'FTBFS', 'depwait', '404', '')
+ ('blacklisted', 'NFU', 'FTBFS', 'depwait', 'E404', '')
ORDER BY s.name ASC, s.suite DESC, s.architecture ASC'''
results = query_db(query)
for pkg, version, suite, arch in results:
@@ -206,7 +206,7 @@ def alien_buildinfo():
FROM sources AS s JOIN results AS r ON r.package_id=s.id
WHERE r.status != '' AND s.name='{pkg}' AND s.suite='{suite}'
AND s.architecture='{arch}'
- AND r.status IN ('reproducible', 'unreproducible')
+ AND r.status IN ('reproducible', 'FTBR')
ORDER BY s.name ASC, s.suite DESC, s.architecture ASC'''
bad_files = []
for root, dirs, files in os.walk(BUILDINFO_PATH):
@@ -382,10 +382,10 @@ def gen_html():
# link artifacts
html += '<br/> <a href="https://tests.reproducible-builds.org/debian/artifacts/">Artifacts diffoscope crashed</a> on are available for 48h for download.'
- html += _gen_packages_html('are marked as unreproducible, but there is no ' +
+ html += _gen_packages_html('are marked as FTBR, but there is no ' +
'diffoscope output - so probably diffoscope ' +
'crashed:', without_dbd)
- html += _gen_packages_html('are marked as unreproducible, but their ' +
+ html += _gen_packages_html('are marked as FTBR, but their ' +
'diffoscope output does not seem to be an html ' +
'file - so probably diffoscope ran into a ' +
'timeout:', bad_dbd)
@@ -402,7 +402,7 @@ def gen_html():
html += _gen_files_html('history pages that should not be there and thus have been removed:',
entries=alien_history())
# diffoscope reports where they shouldn't be
- html += _gen_packages_html('are not marked as unreproducible, but they ' +
+ html += _gen_packages_html('are not marked as FTBR, but they ' +
'have a diffoscope file:', not_unrep_with_dbd_file())
# missing files
html += _gen_packages_html('have been built but don\'t have a buildlog:',
=====================================
bin/reproducible_html_dashboard.sh
=====================================
--- a/bin/reproducible_html_dashboard.sh
+++ b/bin/reproducible_html_dashboard.sh
@@ -22,9 +22,9 @@ touch -d "$(date '+%Y-%m-%d') 00:00 UTC" $DUMMY_FILE
NOTES_GIT_PATH="/var/lib/jenkins/jobs/reproducible_html_notes/workspace"
# variables related to the stats we update
-FIELDS[0]="datum, reproducible, unreproducible, FTBFS, other, untested"
+FIELDS[0]="datum, reproducible, FTBR, FTBFS, other, untested"
FIELDS[1]="datum"
-for i in reproducible unreproducible FTBFS other ; do
+for i in reproducible FTBR FTBFS other ; do
for j in $SUITES ; do
FIELDS[1]="${FIELDS[1]}, ${i}_${j}"
done
@@ -110,14 +110,14 @@ update_suite_arch_stats() {
ALL=$(query_db "SELECT count(name) FROM sources WHERE suite='${SUITE}' AND architecture='$ARCH'")
GOOD=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'reproducible' AND date(r.build_date)<='$DATE';")
GOOAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'reproducible' AND date(r.build_date)='$DATE';")
- BAD=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'unreproducible' AND date(r.build_date)<='$DATE';")
- BAAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'unreproducible' AND date(r.build_date)='$DATE';")
+ BAD=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBR' AND date(r.build_date)<='$DATE';")
+ BAAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBR' AND date(r.build_date)='$DATE';")
UGLY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBFS' AND date(r.build_date)<='$DATE';")
UGLDAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBFS' AND date(r.build_date)='$DATE';")
- REST=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE (r.status != 'FTBFS' AND r.status != 'unreproducible' AND r.status != 'reproducible') AND s.suite='$SUITE' AND s.architecture='$ARCH' AND date(r.build_date)<='$DATE';")
- RESDAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE (r.status != 'FTBFS' AND r.status != 'unreproducible' AND r.status != 'reproducible') AND s.suite='$SUITE' AND s.architecture='$ARCH' AND date(r.build_date)='$DATE';")
+ REST=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE (r.status != 'FTBFS' AND r.status != 'FTBR' AND r.status != 'reproducible') AND s.suite='$SUITE' AND s.architecture='$ARCH' AND date(r.build_date)<='$DATE';")
+ RESDAY=$(query_db "SELECT count(r.status) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE (r.status != 'FTBFS' AND r.status != 'FTBR' AND r.status != 'reproducible') AND s.suite='$SUITE' AND s.architecture='$ARCH' AND date(r.build_date)='$DATE';")
OLDESTG=$(query_db "SELECT r.build_date FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE r.status = 'reproducible' AND s.suite='$SUITE' AND s.architecture='$ARCH' AND NOT date(r.build_date)>='$DATE' ORDER BY r.build_date LIMIT 1;")
- OLDESTB=$(query_db "SELECT r.build_date FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'unreproducible' AND NOT date(r.build_date)>='$DATE' ORDER BY r.build_date LIMIT 1;")
+ OLDESTB=$(query_db "SELECT r.build_date FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBR' AND NOT date(r.build_date)>='$DATE' ORDER BY r.build_date LIMIT 1;")
OLDESTU=$(query_db "SELECT r.build_date FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBFS' AND NOT date(r.build_date)>='$DATE' ORDER BY r.build_date LIMIT 1;")
# only if we have results…
if [ -n "$OLDESTG" ] ; then
@@ -192,10 +192,10 @@ gather_suite_arch_stats() {
AMOUNT=$(query_db "SELECT count(*) FROM sources WHERE suite='${SUITE}' AND architecture='$ARCH'")
COUNT_TOTAL=$(query_db "SELECT COUNT(*) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH'")
COUNT_GOOD=$(query_db "SELECT COUNT(*) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status='reproducible'")
- COUNT_BAD=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'unreproducible'")
+ COUNT_BAD=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBR'")
COUNT_UGLY=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'FTBFS'")
- COUNT_SOURCELESS=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = '404'")
- COUNT_NOTFORUS=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'not for us'")
+ COUNT_SOURCELESS=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'E404'")
+ COUNT_NOTFORUS=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'NFU'")
COUNT_BLACKLISTED=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'blacklisted'")
COUNT_DEPWAIT=$(query_db "SELECT COUNT(s.name) FROM results AS r JOIN sources AS s ON r.package_id=s.id WHERE s.suite='$SUITE' AND s.architecture='$ARCH' AND r.status = 'depwait'")
COUNT_OTHER=$(( $COUNT_SOURCELESS+$COUNT_NOTFORUS+$COUNT_BLACKLISTED+$COUNT_DEPWAIT ))
@@ -335,10 +335,10 @@ write_build_performance_stats() {
done
write_page "</tr><tr><td class=\"left\">oldest build result in stretch / buster / unstable / experimental</td>"
for ARCH in ${ARCHS} ; do
- AGE_UNSTABLE=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_unreproducible), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='unstable' AND architecture='$ARCH' AND datum='$DATE'")
- AGE_EXPERIMENTAL=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_unreproducible), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='experimental' AND architecture='$ARCH' AND datum='$DATE'")
- AGE_STRETCH=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_unreproducible), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='stretch' AND architecture='$ARCH' AND datum='$DATE'")
- AGE_BUSTER=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_unreproducible), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='buster' AND architecture='$ARCH' AND datum='$DATE'")
+ AGE_UNSTABLE=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='unstable' AND architecture='$ARCH' AND datum='$DATE'")
+ AGE_EXPERIMENTAL=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='experimental' AND architecture='$ARCH' AND datum='$DATE'")
+ AGE_STRETCH=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='stretch' AND architecture='$ARCH' AND datum='$DATE'")
+ AGE_BUSTER=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='buster' AND architecture='$ARCH' AND datum='$DATE'")
write_page "<td>$AGE_STRETCH / $AGE_BUSTER / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days</td>"
done
write_page "</tr><tr><td class=\"left\">Build jobs configured</td>"
@@ -414,7 +414,7 @@ write_suite_arch_table() {
set_icon reproducible
write_icon
write_page "reproducible packages</th><th class=\"center\">"
- set_icon unreproducible
+ set_icon FTBR
write_icon
write_page "unreproducible packages</th><th class=\"center\">"
set_icon FTBFS
@@ -460,7 +460,7 @@ create_suite_arch_stats_page() {
set_icon reproducible
write_icon
write_page "$COUNT_GOOD packages ($PERCENT_GOOD%) successfully built reproducibly in $SUITE/$ARCH.<br />"
- set_icon unreproducible
+ set_icon FTBR
write_icon
write_page "$COUNT_BAD packages ($PERCENT_BAD%) failed to build reproducibly.<br />"
set_icon FTBFS
@@ -472,7 +472,7 @@ create_suite_arch_stats_page() {
write_page "$COUNT_DEPWAIT ($PERCENT_DEPWAIT%) source packages had build-depends which could not be satisfied.<br />"
fi
if [ $COUNT_SOURCELESS -gt 0 ] ; then
- set_icon 404
+ set_icon E404
write_icon
write_page "$COUNT_SOURCELESS ($PERCENT_SOURCELESS%) source packages could not be downloaded.<br />"
fi
@@ -567,9 +567,9 @@ create_dashboard_page() {
gather_suite_arch_stats
TD_PKG_SID_ISSUES="$TD_PKG_SID_ISSUES<td>$(echo $COUNT_BAD + $COUNT_UGLY |bc) / $(echo $PERCENT_BAD + $PERCENT_UGLY|bc)%</td>"
- RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('unreproducible', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
+ RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('FTBR', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_SID_NOISSUES="$TD_PKG_SID_NOISSUES<td><a href=\"/debian/$SUITE/$ARCH/index_no_notes.html\">$RESULT</a> / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
- RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='unreproducible' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
+ RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='FTBR' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_SID_FTBR="$TD_PKG_SID_FTBR<td>$RESULT / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='FTBFS' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_SID_FTBFS="$TD_PKG_SID_FTBFS<td>$RESULT / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
@@ -577,9 +577,9 @@ create_dashboard_page() {
SUITE="buster"
gather_suite_arch_stats
TD_PKG_BUSTER_ISSUES="$TD_PKG_BUSTER_ISSUES<td>$(echo $COUNT_BAD + $COUNT_UGLY |bc) / $(echo $PERCENT_BAD + $PERCENT_UGLY|bc)%</td>"
- RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('unreproducible', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
+ RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('FTBR', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_BUSTER_NOISSUES="$TD_PKG_BUSTER_NOISSUES<td><a href=\"/debian/$SUITE/$ARCH/index_no_notes.html\">$RESULT</a> / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
- RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='unreproducible' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
+ RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='FTBR' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_BUSTER_FTBR="$TD_PKG_BUSTER_FTBR<td>$RESULT / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='FTBFS' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_BUSTER_FTBFS="$TD_PKG_BUSTER_FTBFS<td>$RESULT / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
=====================================
bin/reproducible_html_dd_list.py
=====================================
--- a/bin/reproducible_html_dd_list.py
+++ b/bin/reproducible_html_dd_list.py
@@ -40,7 +40,7 @@ for suite in SUITES:
continue
query = "SELECT s.name " + \
"FROM results AS r JOIN sources AS s ON r.package_id=s.id " + \
- "WHERE r.status='unreproducible' AND s.suite='{suite}'"
+ "WHERE r.status='FTBR' AND s.suite='{suite}'"
try:
pkgs = [x[0] for x in query_db(query.format(suite=suite))]
except IndexError:
=====================================
bin/reproducible_html_indexes.py
=====================================
--- a/bin/reproducible_html_indexes.py
+++ b/bin/reproducible_html_indexes.py
@@ -143,14 +143,14 @@ queries = {
),
"FTBR_all":
select_sources.where(
- results.c.status == 'unreproducible',
+ results.c.status == 'FTBR',
).order_by(
desc(results.c.build_date)
),
"FTBR_last24h":
select_sources.where(
and_(
- results.c.status == 'unreproducible',
+ results.c.status == 'FTBR',
results.c.build_date > timespan_date_map[24],
)
).order_by(
@@ -159,7 +159,7 @@ queries = {
"FTBR_last48h":
select_sources.where(
and_(
- results.c.status == 'unreproducible',
+ results.c.status == 'FTBR',
results.c.build_date > timespan_date_map[48],
)
).order_by(
@@ -167,7 +167,7 @@ queries = {
),
"FTBR_all_abc":
select_sources.where(
- results.c.status == 'unreproducible',
+ results.c.status == 'FTBR',
).order_by(
sources.c.name
),
@@ -235,15 +235,15 @@ queries = {
).order_by(
desc(results.c.build_date)
),
- "404_all":
+ "E404_all":
select_sources.where(
- results.c.status == '404',
+ results.c.status == 'E404',
).order_by(
desc(results.c.build_date)
),
- "404_all_abc":
+ "E404_all_abc":
select_sources.where(
- results.c.status == '404',
+ results.c.status == 'E404',
).order_by(
sources.c.name
),
@@ -281,7 +281,7 @@ queries = {
"not_for_us_all":
select_sources.where(
and_(
- results.c.status == 'not for us',
+ results.c.status == 'NFU',
)
).order_by(
@@ -368,8 +368,8 @@ pages = {
'title': 'Packages in {suite}/{arch} where the sources failed to download',
'body': [
{
- 'icon_status': '404',
- 'query': '404_all',
+ 'icon_status': 'E404',
+ 'query': 'E404_all',
'text': Template('$tot ($percent%) packages where the sources failed to download in $suite/$arch:')
}
]
@@ -388,7 +388,7 @@ pages = {
'title': 'Packages in {suite}/{arch} which should not be build on "{arch}"',
'body': [
{
- 'icon_status': 'not_for_us',
+ 'icon_status': 'NFU',
'query': 'not_for_us_all',
'text': Template('$tot ($percent%) packages which should not be build in $suite/$arch:')
}
@@ -420,15 +420,15 @@ pages = {
'text': Template('$tot packages ($percent%) failed to build from source in total $suite/$arch:')
},
{
- 'icon_status': 'not_for_us',
+ 'icon_status': 'NFU',
'icon_link': '/index_not_for_us.html',
'query': 'not_for_us_all',
'text': Template('$tot ($percent%) packages which should not be build in $suite/$arch:')
},
{
- 'icon_status': '404',
+ 'icon_status': 'E404',
'icon_link': '/index_404.html',
- 'query': '404_all_abc',
+ 'query': 'E404_all_abc',
'text': Template('$tot ($percent%) source packages could not be downloaded in $suite/$arch:')
},
{
@@ -541,7 +541,7 @@ pages = {
'body': [
{
'icon_status': 'FTBR',
- 'db_status': 'unreproducible',
+ 'db_status': 'FTBR',
'icon_link': '/index_FTBR.html',
'query': 'notes',
'nosuite': True,
@@ -563,8 +563,8 @@ pages = {
'text': Template('$tot ($percent%) source packages failed to satisfy their build-dependencies, ordered by build date:')
},
{
- 'icon_status': 'not_for_us',
- 'db_status': 'not for us',
+ 'icon_status': 'NFU',
+ 'db_status': 'NFU',
'icon_link': '/index_not_for_us.html',
'query': 'notes',
'nosuite': True,
@@ -593,11 +593,11 @@ pages = {
'notes_hint': True,
'title': 'Packages without notes',
'header': '<p>There are {tot} faulty packages without notes in {suite}/{arch}.{hint}</p>',
- 'header_query': "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('unreproducible', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='{suite}' AND s.architecture='{arch}') AS tmp",
+ 'header_query': "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('FTBR', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='{suite}' AND s.architecture='{arch}') AS tmp",
'body': [
{
'icon_status': 'FTBR',
- 'db_status': 'unreproducible',
+ 'db_status': 'FTBR',
'icon_link': '/index_FTBR.html',
'query': 'no_notes',
'text': Template('$tot unreproducible packages in $suite/$arch, ordered by build date:')
@@ -628,7 +628,7 @@ pages = {
'body': [
{
'icon_status': 'FTBR',
- 'db_status': 'unreproducible',
+ 'db_status': 'FTBR',
'icon_link': '/index_FTBR.html',
'query': 'notification',
'text': Template('$tot unreproducible packages in $suite/$arch:'),
=====================================
bin/reproducible_html_live_status.py
=====================================
--- a/bin/reproducible_html_live_status.py
+++ b/bin/reproducible_html_live_status.py
@@ -49,7 +49,7 @@ def generate_schedule(arch):
func.coalesce(func.avg(cast(stats_build.c.build_duration, Integer)), 0)
]).where(
and_(
- stats_build.c.status.in_(('reproducible', 'unreproducible')),
+ stats_build.c.status.in_(('reproducible', 'FTBR')),
stats_build.c.name == sources.c.name,
stats_build.c.suite == sources.c.suite,
stats_build.c.architecture == sources.c.architecture,
@@ -108,7 +108,7 @@ def generate_live_status_table(arch):
func.coalesce(func.avg(cast(stats_build.c.build_duration, Integer)), 0)
]).where(
and_(
- stats_build.c.status.in_(('reproducible', 'unreproducible')),
+ stats_build.c.status.in_(('reproducible', 'FTBR')),
stats_build.c.name == sources.c.name,
stats_build.c.suite == sources.c.suite,
stats_build.c.architecture == sources.c.architecture,
=====================================
bin/reproducible_html_notes.py
=====================================
--- a/bin/reproducible_html_notes.py
+++ b/bin/reproducible_html_notes.py
@@ -188,7 +188,7 @@ def load_notes():
"FROM results AS r JOIN sources AS s ON r.package_id=s.id " + \
"WHERE s.name='{pkg}' AND r.status != ''"
query = query.format(pkg=package)
- result = query_db(query)[0]
+ query_db(query)[0] # just discard this result, we only care of its success
except IndexError:
log.warning("This query produces no results: " + query)
log.warning("This means there is no tested package with the name " + package + ".")
@@ -314,7 +314,7 @@ def gen_html_issue(issue, suite):
)
try:
arch = 'amd64'
- for status in ['unreproducible', 'FTBFS', 'not for us', 'blacklisted', 'reproducible', 'depwait']:
+ for status in ['FTBR', 'FTBFS', 'NFU', 'blacklisted', 'reproducible', 'depwait']:
pkgs = query_db(sql.where(sources.c.name.in_(issues_count[issue]))\
.params({'suite': suite, 'arch': arch, 'status': status}))
pkgs = [p[0] for p in pkgs]
@@ -327,8 +327,8 @@ def gen_html_issue(issue, suite):
affected += tab*5 + '<code>\n'
pkgs_popcon = issues_popcon_annotate(pkgs)
try:
- for pkg, popcon, is_popular in sorted(pkgs_popcon, key=lambda x: x[0] in bugs):
- affected += tab*6 + Package(pkg).html_link(suite, arch, bugs, popcon, is_popular)
+ for pkg, popc_num, is_popular in sorted(pkgs_popcon, key=lambda x: x[0] in bugs):
+ affected += tab*6 + Package(pkg).html_link(suite, arch, bugs, popc_num, is_popular)
except ValueError:
pass
affected += tab*5 + '</code>\n'
=====================================
bin/reproducible_html_packages.py
=====================================
--- a/bin/reproducible_html_packages.py
+++ b/bin/reproducible_html_packages.py
@@ -112,7 +112,7 @@ def get_and_clean_dbd_links(package, eversion, suite, arch, status):
'dbd_uri': links['dbd_uri'],
}
else:
- if status == 'unreproducible' and not args.ignore_missing_files:
+ if status == 'FTBR' and not args.ignore_missing_files:
log.critical(DISTRO_URL + '/' + suite + '/' + arch + '/' + package +
' is unreproducible, but without diffoscope output.')
# if there are no diffoscope results, we want to remove the old package
@@ -158,7 +158,7 @@ def gen_suitearch_details(package, version, suite, arch, status, spokenstatus,
context['buildinfo_uri'] = build.buildinfo.url
default_view = default_view if default_view else build.buildinfo.url
elif not args.ignore_missing_files and status not in \
- ('untested', 'blacklisted', 'FTBFS', 'not_for_us', 'depwait', '404'):
+ ('untested', 'blacklisted', 'FTBFS', 'NFU', 'depwait', '404'):
log.critical('buildinfo not detected at ' + build.buildinfo.path)
# Get rbuild, build2 and build diffs context
=====================================
bin/reproducible_html_pkg_sets.py
=====================================
--- a/bin/reproducible_html_pkg_sets.py
+++ b/bin/reproducible_html_pkg_sets.py
@@ -83,7 +83,7 @@ def gather_meta_stats(suite, arch, pkgset_name):
stats['good'] = [t[0] for t in good]
stats['count_good'] = len(stats['good'])
- bad = query_db(root_query + "AND r.status = 'unreproducible'" +
+ bad = query_db(root_query + "AND r.status = 'FTBR'" +
"ORDER BY r.build_date;")
stats['bad'] = [t[0] for t in bad]
stats['count_bad'] = len(stats['bad'])
@@ -94,7 +94,7 @@ def gather_meta_stats(suite, arch, pkgset_name):
stats['count_ugly'] = len(stats['ugly'])
rest = query_db(root_query + "AND (r.status != 'FTBFS' AND " +
- "r.status != 'unreproducible' AND " +
+ "r.status != 'FTBR' AND " +
"r.status != 'reproducible') ORDER BY r.build_date;")
stats['rest'] = [t[0] for t in rest]
stats['count_rest'] = len(stats['rest'])
@@ -234,7 +234,7 @@ def create_pkgset_page_and_graphs(suite, arch, stats, pkgset_name):
pkgset_context['status_details'] = []
status_cutename_descriptions = [
- ('unreproducible', 'bad', 'failed to build reproducibly'),
+ ('FTBR', 'bad', 'failed to build reproducibly'),
('FTBFS', 'ugly', 'failed to build from source'),
('rest', 'rest',
'are either in depwait state, blacklisted, not for us, or cannot be downloaded'),
@@ -244,7 +244,7 @@ def create_pkgset_page_and_graphs(suite, arch, stats, pkgset_name):
for (status, cutename, description) in status_cutename_descriptions:
icon_html = ''
if status == 'rest':
- for s in ['depwait', 'blacklisted', 'not_for_us', '404']:
+ for s in ['depwait', 'blacklisted', 'NFU', 'E404']:
s, icon, spokenstatus = get_status_icon(s)
icon_html += gen_status_link_icon(s, None, icon, suite, arch)
else:
@@ -259,7 +259,7 @@ def create_pkgset_page_and_graphs(suite, arch, stats, pkgset_name):
'status_percent': stats["percent_" + cutename],
}
- if (status in ('reproducible', 'unreproducible') or
+ if (status in ('reproducible', 'FTBR') or
stats["count_" + cutename] != 0):
pkgset_context['status_details'].append(details_context)
@@ -284,7 +284,7 @@ def create_pkgset_page_and_graphs(suite, arch, stats, pkgset_name):
def create_pkgset_graph(png_file, suite, arch, pkgset_name):
table = "stats_meta_pkg_state"
- columns = ["datum", "reproducible", "unreproducible", "FTBFS", "other"]
+ columns = ["datum", "reproducible", "FTBR", "FTBFS", "other"]
where = "WHERE suite = '%s' AND architecture = '%s' AND meta_pkg = '%s'" % \
(suite, arch, pkgset_name)
if arch == 'i386':
=====================================
bin/reproducible_json.py
=====================================
--- a/bin/reproducible_json.py
+++ b/bin/reproducible_json.py
@@ -34,7 +34,7 @@ log.info('Creating json dump of current reproducible status')
# filter_query is defined in reproducible_common.py and excludes some FTBFS issues
query = "SELECT s.name, r.version, s.suite, s.architecture, r.status, r.build_date " + \
"FROM results AS r JOIN sources AS s ON r.package_id = s.id "+ \
- "WHERE status != '' AND status NOT IN ('not for us', '404', 'blacklisted' ) AND (( status != 'FTBFS' ) OR " \
+ "WHERE status != '' AND status NOT IN ('NFU', 'E404', 'blacklisted' ) AND (( status != 'FTBFS' ) OR " \
" ( status = 'FTBFS' and r.package_id NOT IN (SELECT n.package_id FROM NOTES AS n WHERE " + filter_query + " )))"
result = sorted(query_db(query))
@@ -88,8 +88,8 @@ for row in result:
else:
if 'FTBFS' in [status1, status2]:
newstatus = 'FTBFS'
- elif 'unreproducible' in [status1, status2]:
- newstatus = 'unreproducible'
+ elif 'FTBR' in [status1, status2]:
+ newstatus = 'FTBR'
elif 'reproducible' in [status1, status2]:
newstatus = 'reproducible'
else:
=====================================
bin/reproducible_scheduler.py
=====================================
--- a/bin/reproducible_scheduler.py
+++ b/bin/reproducible_scheduler.py
@@ -64,7 +64,7 @@ else:
So, the 3rd step happens only when there are more than 350 packages queued up.
-LIMITS_404 defines how many packages with status 404 are rescheduled at max.
+LIMITS_E404 defines how many packages with status E404 are rescheduled at max.
"""
# only old packages older than this will be rescheduled
@@ -204,8 +204,8 @@ LIMITS = {
}
}
}
-# maximum amount of packages with status 404 which will be rescheduled
-LIMIT_404 = 255
+# maximum amount of packages with status E404 which will be rescheduled
+LIMIT_E404 = 255
class Limit:
@@ -540,14 +540,14 @@ def query_old_versions(suite, arch, limit):
print_schedule_result(suite, arch, criteria, packages)
return packages
-def query_404_versions(suite, arch, limit):
- criteria = """tested at least 12h ago, status 404,
+def query_e404_versions(suite, arch, limit):
+ criteria = """tested at least 12h ago, status E404,
sorted by last build date"""
date = (datetime.now()-timedelta(days=0.5)).strftime('%Y-%m-%d %H:%M')
query = """SELECT s.id, s.name, max(r.build_date) max_date
FROM sources AS s JOIN results AS r ON s.id = r.package_id
WHERE s.suite='{suite}' AND s.architecture='{arch}'
- AND r.status = '404'
+ AND r.status = 'E404'
AND r.build_date < '{date}'
AND s.id NOT IN (SELECT schedule.package_id FROM schedule)
GROUP BY s.id, s.name
@@ -657,18 +657,18 @@ def schedule_old_versions(arch, total):
msg = ''
return packages, msg
-def schedule_404_versions(arch, total):
+def schedule_e404_versions(arch, total):
packages = {}
for suite in SUITES:
- log.info('Requesting 404 packages in %s/%s...',
+ log.info('Requesting E404 packages in %s/%s...',
suite, arch)
- packages[suite] = query_404_versions(suite, arch, LIMIT_404)
+ packages[suite] = query_e404_versions(suite, arch, LIMIT_E404)
log.info('Received ' + str(len(packages[suite])) +
- ' 404 packages in ' + suite + '/' + arch + ' to schedule.')
+ ' E404 packages in ' + suite + '/' + arch + ' to schedule.')
log.info('--------------------------------------------------------------')
msg = add_up_numbers(packages, arch)
if msg != '0':
- msg += ' with status \'404\''
+ msg += ' with status \'E404\''
else:
msg = ''
return packages, msg
@@ -692,7 +692,7 @@ def scheduler(arch):
old_ftbfs, msg_old_ftbfs = empty_pkgs, ''
old_depwait, msg_old_depwait = empty_pkgs, ''
old, msg_old = empty_pkgs, ''
- four04, msg_404 = empty_pkgs, ''
+ four04, msg_e404 = empty_pkgs, ''
else:
log.info(str(total) + ' packages already scheduled' +
', scheduling some more...')
@@ -700,7 +700,7 @@ def scheduler(arch):
new, msg_new = schedule_new_versions(arch, total+len(untested))
old_ftbfs, msg_old_ftbfs = schedule_old_ftbfs_versions(arch, total+len(untested)+len(new))
old_depwait, msg_old_depwait = schedule_old_depwait_versions(arch, total+len(untested)+len(new)+len(old_ftbfs))
- four04, msg_404 = schedule_404_versions(arch, total+len(untested)+len(new)+len(old_ftbfs)+len(old_depwait))
+ four04, msg_e404 = schedule_e404_versions(arch, total+len(untested)+len(new)+len(old_ftbfs)+len(old_depwait))
old, msg_old = schedule_old_versions(arch, total+len(untested)+len(new)+len(old_ftbfs)+len(old_depwait)+len(four04))
now_queued_here = {}
@@ -734,8 +734,8 @@ def scheduler(arch):
message += msg_untested + ', '
if msg_new:
message += msg_new + ', '
- if msg_404:
- message += msg_404 + ', '
+ if msg_e404:
+ message += msg_e404 + ', '
if msg_old_ftbfs:
message += msg_old_ftbfs + ', '
if msg_old_depwait:
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/compare/271e0b5fd7f62e18aeaa487aab462dbbb2c3b175...ca3416d7e3c570319058f78a2676725de20d6090
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/compare/271e0b5fd7f62e18aeaa487aab462dbbb2c3b175...ca3416d7e3c570319058f78a2676725de20d6090
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/qa-jenkins-scm/attachments/20180618/1647b15b/attachment-0001.html>
More information about the Qa-jenkins-scm
mailing list