From a8a0e3292863b7eb74b196e31db3cdae944c593a Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 2 Feb 2018 16:19:20 +0100 Subject: web-scripts/build-list.php new --- web-scripts/build-list.php | 159 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 web-scripts/build-list.php (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php new file mode 100644 index 0000000..1b5c359 --- /dev/null +++ b/web-scripts/build-list.php @@ -0,0 +1,159 @@ + + +List of scheduled package builds + + + +build logs
+connect_error) { + die("Connection failed: " . $mysql->connect_error); +} + +$result = $mysql -> query( + "SELECT DISTINCT " . + "`build_assignments`.`id`," . + "`build_assignments`.`is_blocked`," . + "`package_sources`.`pkgbase`," . + "`package_sources`.`git_revision`," . + "`package_sources`.`mod_git_revision`," . + "`package_sources`.`uses_upstream`," . + "`package_sources`.`uses_modification`," . + "`upstream_repositories`.`name` AS `package_repository`," . + "`git_repositories`.`name` AS `git_repository`," . + "`architectures`.`name` AS `arch`," . + "EXISTS (SELECT * " . + "FROM `binary_packages` `broken_bin` " . + "JOIN `dependencies` ON `dependencies`.`dependent` = `broken_bin`.`id` " . + "JOIN `install_target_providers` ON `install_target_providers`.`install_target` = `dependencies`.`depending_on` " . + "JOIN `binary_packages` `to_be_built` ON `to_be_built`.`id` = `install_target_providers`.`package` " . + "JOIN `repositories` ON `to_be_built`.`repository` = `repositories`.`id` " . + "WHERE `broken_bin`.`build_assignment`=`build_assignments`.`id` ". + "AND `repositories`.`name`=\"build-list\" " . + "AND `to_be_built`.`build_assignment`!=`build_assignments`.`id`" . + ") AS `dependencies_pending`," . + "(SELECT count(*) " . + "FROM `build_dependency_loops` " . + "WHERE `build_dependency_loops`.`build_assignment`=`build_assignments`.`id`" . + ") AS `loops` " . + "FROM `build_assignments` " . + "JOIN `architectures` ON `build_assignments`.`architecture` = `architectures`.`id` " . + "JOIN `package_sources` ON `build_assignments`.`package_source` = `package_sources`.`id` " . + "JOIN `upstream_repositories` ON `package_sources`.`upstream_package_repository` = `upstream_repositories`.`id` " . + "JOIN `git_repositories` ON `upstream_repositories`.`git_repository`=`git_repositories`.`id` " . + "JOIN `binary_packages` ON `binary_packages`.`build_assignment` = `build_assignments`.`id` " . + "JOIN `repositories` ON `binary_packages`.`repository` = `repositories`.`id` " . + "WHERE `repositories`.`name`=\"build-list\"" +); +if ($result -> num_rows > 0) { + + $count = 0; + + while($row = $result->fetch_assoc()) { + + $fail_result = $mysql -> query( + "SELECT " . + "`failed_builds`.`id` " . + "FROM `failed_builds` " . + "WHERE `failed_builds`.`build_assignment`=".$row["id"] + ); + + $rows[$count]["trials"] = $fail_result -> num_rows; + + $rows[$count]["loops"] = $row["loops"]; + $rows[$count]["pkgbase"] = $row["pkgbase"]; + if ($row["dependencies_pending"]=="0") + $rows[$count]["pkgbase_print"] = $rows[$count]["pkgbase"]; + else + $rows[$count]["pkgbase_print"] = "(" . $rows[$count]["pkgbase"] . ")"; + if ($row["uses_upstream"]) { + $rows[$count]["git_revision"] = + "" . + $row["git_revision"] . ""; + } else + $rows[$count]["git_revision"] = $row["git_revision"]; + if ($row["uses_modification"]) + $rows[$count]["mod_git_revision"] = + "" . + $row["mod_git_revision"] . ""; + else + $rows[$count]["mod_git_revision"] = $row["mod_git_revision"]; + $rows[$count]["package_repository"] = $row["package_repository"]; + if ($row["is_blocked"]=="") { + $rows[$count]["is_blocked"]=" "; + } + else { + $rows[$count]["is_blocked"] = preg_replace( + array ( + "/FS32#(\\d+)/", + "/FS#(\\d+)/" + ), + array ( + "$0", + "$0" + ), + $row["is_blocked"] + ); + } + $count++; + } + + usort( + $rows, + function (array $a, array $b) { + if ($a["trials"] < $b["trials"]) + return -1; + if ($a["trials"] > $b["trials"]) + return 1; + return strcmp($a["pkgbase"],$b["pkgbase"]); + } + ); + + print "\n"; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print "\n"; + + foreach($rows as $row) { + + print ""; + + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + + print "\n"; + } + + print "
packagegit revisionmodification git revisionpackage repositorycompilationsloopsblocked
".$row["pkgbase_print"]."

".$row["git_revision"]."

".$row["mod_git_revision"]."

".$row["package_repository"]."".$row["trials"]."".$row["loops"]."".$row["is_blocked"]."
\n"; +} + +?> + + -- cgit v1.2.3-70-g09d2 From 1658d4718631b4186a405602596e344e0ab5cb05 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 9 Mar 2018 14:09:51 +0100 Subject: unify web-scripts/broken-packages.php and web-scripts/build-list.php --- web-scripts/broken-packages.php | 194 ---------------------------------------- web-scripts/build-list.php | 54 +++++++++-- 2 files changed, 48 insertions(+), 200 deletions(-) delete mode 100644 web-scripts/broken-packages.php (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/broken-packages.php b/web-scripts/broken-packages.php deleted file mode 100644 index 4dabf5c..0000000 --- a/web-scripts/broken-packages.php +++ /dev/null @@ -1,194 +0,0 @@ - - -List of broken package builds - - - -build logs
-connect_error) { - die("Connection failed: " . $mysql->connect_error); -} - -$result = $mysql -> query( - "SELECT DISTINCT " . - "`build_assignments`.`id`," . - "`build_assignments`.`is_blocked`," . - "`package_sources`.`pkgbase`," . - "`package_sources`.`git_revision`," . - "`package_sources`.`mod_git_revision`," . - "`package_sources`.`uses_upstream`," . - "`package_sources`.`uses_modification`," . - "`upstream_repositories`.`name` AS `package_repository`," . - "`git_repositories`.`name` AS `git_repository`," . - "`architectures`.`name` AS `arch`," . - "EXISTS (SELECT * " . - "FROM `binary_packages` `broken_bin` " . - "JOIN `dependencies` ON `dependencies`.`dependent` = `broken_bin`.`id` " . - "JOIN `install_target_providers` ON `install_target_providers`.`install_target` = `dependencies`.`depending_on` " . - "JOIN `binary_packages` `to_be_built` ON `to_be_built`.`id` = `install_target_providers`.`package` " . - "JOIN `repositories` ON `to_be_built`.`repository` = `repositories`.`id` " . - "WHERE `broken_bin`.`build_assignment`=`build_assignments`.`id` ". - "AND `repositories`.`name`=\"build-list\" " . - "AND `to_be_built`.`build_assignment`!=`build_assignments`.`id`" . - ") AS `dependencies_pending`," . - "(SELECT count(*) " . - "FROM `build_dependency_loops` " . - "WHERE `build_dependency_loops`.`build_assignment`=`build_assignments`.`id`" . - ") AS `loops` " . - "FROM `build_assignments` " . - "JOIN `architectures` ON `build_assignments`.`architecture` = `architectures`.`id` " . - "JOIN `package_sources` ON `build_assignments`.`package_source` = `package_sources`.`id` " . - "JOIN `upstream_repositories` ON `package_sources`.`upstream_package_repository` = `upstream_repositories`.`id` " . - "JOIN `git_repositories` ON `upstream_repositories`.`git_repository`=`git_repositories`.`id` " . - "JOIN `binary_packages` ON `binary_packages`.`build_assignment` = `build_assignments`.`id` " . - "JOIN `repositories` ON `binary_packages`.`repository` = `repositories`.`id` " . - "WHERE (`build_assignments`.`is_broken` OR `build_assignments`.`is_blocked` IS NOT NULL) AND `repositories`.`name`=\"build-list\"" -); -if ($result -> num_rows > 0) { - - $count = 0; - - while($row = $result->fetch_assoc()) { - - $fail_result = $mysql -> query( - "SELECT " . - "`fail_reasons`.`name`, " . - "`failed_builds`.`log_file` " . - "FROM `failed_builds` " . - "JOIN `build_assignments` ON `failed_builds`.`build_assignment`=`build_assignments`.`id` ". - "JOIN `fail_reasons` ON `failed_builds`.`reason`=`fail_reasons`.`id` ". - "WHERE `build_assignments`.`id`=".$row["id"]." " . - "ORDER BY `failed_builds`.`date`" - ); - - unset($reasons); - $rows[$count]["trials"] = $fail_result -> num_rows; - if ($rows[$count]["trials"] > 0) { - while($fail_row = $fail_result->fetch_assoc()) { - $reasons[$fail_row["name"]] = $fail_row["log_file"]; - } - } - if (isset($reasons)) { - $to_print=""; - foreach ($reasons as $reason => $last_log) { - if (file_exists("/srv/http/build-logs/error/".$last_log)) { - $to_print= $to_print . - ", " . - $reason . - ""; - } else { - $to_print= $to_print . ", " . $reason; - } - } - $rows[$count]["fail_reasons"]=substr($to_print,2); - } else { - $rows[$count]["fail_reasons"]=" "; - } - - $rows[$count]["loops"] = $row["loops"]; - $rows[$count]["pkgbase"] = $row["pkgbase"]; - if ($row["dependencies_pending"]=="0") - $rows[$count]["pkgbase_print"] = $rows[$count]["pkgbase"]; - else - $rows[$count]["pkgbase_print"] = "(" . $rows[$count]["pkgbase"] . ")"; - if ($row["uses_upstream"]) { - $rows[$count]["git_revision"] = - "" . - $row["git_revision"] . ""; - } else - $rows[$count]["git_revision"] = $row["git_revision"]; - if ($row["uses_modification"]) - $rows[$count]["mod_git_revision"] = - "" . - $row["mod_git_revision"] . ""; - else - $rows[$count]["mod_git_revision"] = $row["mod_git_revision"]; - $rows[$count]["package_repository"] = $row["package_repository"]; - if ($row["is_blocked"]=="") { - $rows[$count]["is_blocked"]=" "; - } - else { - $rows[$count]["is_blocked"] = preg_replace( - array ( - "/FS32#(\\d+)/", - "/FS#(\\d+)/" - ), - array ( - "$0", - "$0" - ), - $row["is_blocked"] - ); - } - $count++; - } - - usort( - $rows, - function (array $a, array $b) { - if ($a["trials"] < $b["trials"]) - return -1; - if ($a["trials"] > $b["trials"]) - return 1; - return strcmp($a["pkgbase"],$b["pkgbase"]); - } - ); - - print "\n"; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; -// print ""; - print ""; - print ""; - print "\n"; - - foreach($rows as $row) { - - print ""; - - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; -// - print ""; - print ""; - - print "\n"; - } - - print "
packagegit revisionmodification git revisionpackage repositorycompilationsloopsdependentbuild errorblocked
".$row["pkgbase_print"]."

".$row["git_revision"]."

".$row["mod_git_revision"]."

".$row["package_repository"]."".$row["trials"]."".$row["loops"]."0".$row["fail_reasons"]."".$row["is_blocked"]."
\n"; -} - -?> - - diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index 1b5c359..0ca36b8 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -1,6 +1,11 @@ -List of scheduled package builds +List of scheduled package builds\n"; + else + print "List of broken package builds\n"; +?> @@ -12,6 +17,11 @@ if ($mysql->connect_error) { die("Connection failed: " . $mysql->connect_error); } +if (isset($_GET["all"])) + $match_broken = ""; +else + $match_broken = "AND (`build_assignments`.`is_broken` OR `build_assignments`.`is_blocked` IS NOT NULL)"; + $result = $mysql -> query( "SELECT DISTINCT " . "`build_assignments`.`id`," . @@ -45,7 +55,7 @@ $result = $mysql -> query( "JOIN `git_repositories` ON `upstream_repositories`.`git_repository`=`git_repositories`.`id` " . "JOIN `binary_packages` ON `binary_packages`.`build_assignment` = `build_assignments`.`id` " . "JOIN `repositories` ON `binary_packages`.`repository` = `repositories`.`id` " . - "WHERE `repositories`.`name`=\"build-list\"" + "WHERE `repositories`.`name`=\"build-list\"" . $match_broken ); if ($result -> num_rows > 0) { @@ -55,12 +65,39 @@ if ($result -> num_rows > 0) { $fail_result = $mysql -> query( "SELECT " . - "`failed_builds`.`id` " . + "`fail_reasons`.`name`, " . + "`failed_builds`.`log_file` " . "FROM `failed_builds` " . - "WHERE `failed_builds`.`build_assignment`=".$row["id"] + "JOIN `fail_reasons` ON `failed_builds`.`reason`=`fail_reasons`.`id` " . + "WHERE `failed_builds`.`build_assignment`=".$row["id"]." " . + "ORDER BY `failed_builds`.`date`" ); + unset($reasons); $rows[$count]["trials"] = $fail_result -> num_rows; + if ($rows[$count]["trials"] > 0) { + while($fail_row = $fail_result->fetch_assoc()) { + $reasons[$fail_row["name"]] = $fail_row["log_file"]; + } + } + if (isset($reasons)) { + $to_print=""; + foreach ($reasons as $reason => $last_log) { + if (file_exists("/srv/http/build-logs/error/".$last_log)) { + $to_print= $to_print . + ", " . + $reason . + ""; + } else { + $to_print= $to_print . ", " . $reason; + } + } + $rows[$count]["fail_reasons"]=substr($to_print,2); + } else { + $rows[$count]["fail_reasons"]=" "; + } $rows[$count]["loops"] = $row["loops"]; $rows[$count]["pkgbase"] = $row["pkgbase"]; @@ -81,7 +118,10 @@ if ($result -> num_rows > 0) { $rows[$count]["git_revision"] = $rows[$count]["git_revision"] . "x86_64"; $rows[$count]["git_revision"] = - $rows[$count]["git_revision"] . "/\">" . + $rows[$count]["git_revision"] . "?id=" . + $row["git_revision"]; + $rows[$count]["git_revision"] = + $rows[$count]["git_revision"] . "\">" . $row["git_revision"] . ""; } else $rows[$count]["git_revision"] = $row["git_revision"]; @@ -133,6 +173,7 @@ if ($result -> num_rows > 0) { print "package repository"; print "compilations"; print "loops"; + print "build error"; print "blocked"; print "\n"; @@ -140,12 +181,13 @@ if ($result -> num_rows > 0) { print ""; - print "".$row["pkgbase_print"].""; + print "".$row["pkgbase_print"].""; print "

".$row["git_revision"]."

"; print "

".$row["mod_git_revision"]."

"; print "".$row["package_repository"].""; print "".$row["trials"].""; print "".$row["loops"].""; + print "".$row["fail_reasons"].""; print "".$row["is_blocked"].""; print "\n"; -- cgit v1.2.3-70-g09d2 From 8a298d36658f1f34a3107c40dec9373edbf7171c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 9 Mar 2018 14:13:22 +0100 Subject: web-scripts/build-list.php: "all" <-> "broken" --- web-scripts/build-list.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index 0ca36b8..1bb985d 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -1,10 +1,10 @@ List of scheduled package builds\n"; - else + if (isset($_GET["broken"])) print "List of broken package builds\n"; + else + print "List of scheduled package builds\n"; ?> @@ -17,10 +17,10 @@ if ($mysql->connect_error) { die("Connection failed: " . $mysql->connect_error); } -if (isset($_GET["all"])) - $match_broken = ""; -else +if (isset($_GET["broken"])) $match_broken = "AND (`build_assignments`.`is_broken` OR `build_assignments`.`is_blocked` IS NOT NULL)"; +else + $match_broken = ""; $result = $mysql -> query( "SELECT DISTINCT " . -- cgit v1.2.3-70-g09d2 From 08f69a1eb1f6a71751cda4df67213fa086eeae53 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 9 Mar 2018 20:32:43 +0100 Subject: web-scripts/build-list.php: "?show=next" new --- web-scripts/build-list.php | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index 1bb985d..98217de 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -1,27 +1,32 @@ List of broken package builds\n"; - else - print "List of scheduled package builds\n"; -?> - - - -build logs
-List of " . $to_show . " package builds\n"; +print "\n"; +print "\n"; +print "\n"; +print "build logs
\n"; $mysql = new mysqli("localhost", "webserver", "empty", "buildmaster"); if ($mysql->connect_error) { die("Connection failed: " . $mysql->connect_error); } -if (isset($_GET["broken"])) - $match_broken = "AND (`build_assignments`.`is_broken` OR `build_assignments`.`is_blocked` IS NOT NULL)"; -else - $match_broken = ""; - $result = $mysql -> query( "SELECT DISTINCT " . "`build_assignments`.`id`," . @@ -55,7 +60,7 @@ $result = $mysql -> query( "JOIN `git_repositories` ON `upstream_repositories`.`git_repository`=`git_repositories`.`id` " . "JOIN `binary_packages` ON `binary_packages`.`build_assignment` = `build_assignments`.`id` " . "JOIN `repositories` ON `binary_packages`.`repository` = `repositories`.`id` " . - "WHERE `repositories`.`name`=\"build-list\"" . $match_broken + "WHERE `repositories`.`name`=\"build-list\"" . $match ); if ($result -> num_rows > 0) { @@ -63,6 +68,11 @@ if ($result -> num_rows > 0) { while($row = $result->fetch_assoc()) { + if (($to_show == "next") && + ($row["loops"]==0) && + ($row["dependencies_pending"]==1)) + continue; + $fail_result = $mysql -> query( "SELECT " . "`fail_reasons`.`name`, " . -- cgit v1.2.3-70-g09d2 From 30e05f52359521ccc4fd387e14c4147a413a2049 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 10 Mar 2018 14:30:04 +0100 Subject: web-scripts/build-list.php: add link to main page --- web-scripts/build-list.php | 1 + 1 file changed, 1 insertion(+) (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index 98217de..cd197eb 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -20,6 +20,7 @@ print "List of " . $to_show . " package builds\n"; print "\n"; print "\n"; print "\n"; +print "/\n"; print "build logs
\n"; $mysql = new mysqli("localhost", "webserver", "empty", "buildmaster"); -- cgit v1.2.3-70-g09d2 From e178be28f4219a3a65e3c1c41d882f5eeb400219 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 10 Mar 2018 14:31:19 +0100 Subject: web-scripts/build-list.php: link to start page should be the other way round :-/ --- web-scripts/build-list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index cd197eb..b94970b 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -20,7 +20,7 @@ print "List of " . $to_show . " package builds\n"; print "\n"; print "\n"; print "\n"; -print "/\n"; +print "Start page\n"; print "build logs
\n"; $mysql = new mysqli("localhost", "webserver", "empty", "buildmaster"); -- cgit v1.2.3-70-g09d2 From 919d396328617ad13ffe3665d64d83325e078d16 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 21 Mar 2018 09:24:31 +0100 Subject: web-scripts/build-list.php: display which build slaves works on which task --- web-scripts/build-list.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'web-scripts/build-list.php') diff --git a/web-scripts/build-list.php b/web-scripts/build-list.php index b94970b..5cc7a47 100644 --- a/web-scripts/build-list.php +++ b/web-scripts/build-list.php @@ -53,7 +53,8 @@ $result = $mysql -> query( "(SELECT count(*) " . "FROM `build_dependency_loops` " . "WHERE `build_dependency_loops`.`build_assignment`=`build_assignments`.`id`" . - ") AS `loops` " . + ") AS `loops`, " . + "`build_slaves`.`name` AS `build_slave` " . "FROM `build_assignments` " . "JOIN `architectures` ON `build_assignments`.`architecture` = `architectures`.`id` " . "JOIN `package_sources` ON `build_assignments`.`package_source` = `package_sources`.`id` " . @@ -61,6 +62,7 @@ $result = $mysql -> query( "JOIN `git_repositories` ON `upstream_repositories`.`git_repository`=`git_repositories`.`id` " . "JOIN `binary_packages` ON `binary_packages`.`build_assignment` = `build_assignments`.`id` " . "JOIN `repositories` ON `binary_packages`.`repository` = `repositories`.`id` " . + "LEFT JOIN `build_slaves` ON `build_slaves`.`currently_building`=`build_assignments`.`id` " . "WHERE `repositories`.`name`=\"build-list\"" . $match ); if ($result -> num_rows > 0) { @@ -162,6 +164,10 @@ if ($result -> num_rows > 0) { $row["is_blocked"] ); } + if (isset($row["build_slave"])) + $rows[$count]["build_slave"] = $row["build_slave"]; + else + $rows[$count]["build_slave"] = " "; $count++; } @@ -186,6 +192,7 @@ if ($result -> num_rows > 0) { print "loops"; print "build error"; print "blocked"; + print "handed out to"; print "\n"; foreach($rows as $row) { @@ -200,6 +207,7 @@ if ($result -> num_rows > 0) { print "".$row["loops"].""; print "".$row["fail_reasons"].""; print "".$row["is_blocked"].""; + print "".$row["build_slave"].""; print "\n"; } -- cgit v1.2.3-70-g09d2