From 75277311ac03ac25e68aee4e0afcd949f262c894 Mon Sep 17 00:00:00 2001 From: Rob Vermaas Date: Fri, 25 May 2012 04:14:36 +0200 Subject: [PATCH] Different icons (darker red) for cancelled builds. Fixes #25. --- src/lib/Hydra/Controller/Jobset.pm | 5 +++-- src/root/common.tt | 16 +++++++++------- src/root/static/images/cancelled_128.png | Bin 0 -> 11969 bytes src/root/static/images/cancelled_16.png | Bin 0 -> 753 bytes src/root/static/images/cancelled_32.png | Bin 0 -> 1742 bytes src/root/static/images/cancelled_64.png | Bin 0 -> 4641 bytes 6 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 src/root/static/images/cancelled_128.png create mode 100644 src/root/static/images/cancelled_16.png create mode 100644 src/root/static/images/cancelled_32.png create mode 100644 src/root/static/images/cancelled_64.png diff --git a/src/lib/Hydra/Controller/Jobset.pm b/src/lib/Hydra/Controller/Jobset.pm index fa968ef3..ef633201 100644 --- a/src/lib/Hydra/Controller/Jobset.pm +++ b/src/lib/Hydra/Controller/Jobset.pm @@ -353,7 +353,7 @@ sub getEvals { # Compute what inputs changed between each eval. my $curInputs = [ $cur->jobsetevalinputs->search( - { uri => { '!=' => undef }, revision => { '!=' => undef }, altNr => 0 }, + { -or => [ -and => [ uri => { '!=' => undef }, revision => { '!=' => undef }], dependency => { '!=' => undef }], altNr => 0 }, { order_by => "name" }) ]; my @changedInputs; my %prevInputsHash; @@ -361,7 +361,8 @@ sub getEvals { foreach my $input (@{$curInputs}) { my $p = $prevInputsHash{$input->name}; push @changedInputs, $input - if !defined $p || $input->revision ne $p->revision || $input->type ne $p->type || $input->uri ne $p->uri; + if !defined $p || $input->revision ne $p->revision || $input->type ne $p->type || $input->uri ne $p->uri || + ( defined $input->dependency && defined $p->dependency && $input->dependency->id ne $p->dependency->id); } $prevInputs = $curInputs; diff --git a/src/root/common.tt b/src/root/common.tt index 1c89a7ff..b160b348 100644 --- a/src/root/common.tt +++ b/src/root/common.tt @@ -246,7 +246,7 @@ [%- ELSIF buildstatus == 2 -%] Dependency failed [%- ELSIF buildstatus == 4 -%] - Failed + Cancelled [%- ELSIF buildstatus == 5 -%] Failed [%- ELSIF buildstatus == 6 -%] @@ -416,13 +416,15 @@ [% END %] -[% BLOCK renderShortRev -%] - [%- IF type == "svn" || type == "svn-checkout" || type == "bzr" || type == "bzr-checkout" -%] +[% BLOCK renderShortEval -%] + [%- IF input.type == "svn" || input.type == "svn-checkout" || input.type == "bzr" || input.type == "bzr-checkout" -%] r[%- revision -%] - [%- ELSIF type == "git" -%] - [% revision.substr(0, 7) %] + [%- ELSIF input.type == "git" -%] + [% input.revision.substr(0, 7) %] + [%- ELSIF input.type == "build" || input.type == "sysbuild" -%] + [% input.dependency.id %] [%- ELSE -%] - [%- revision -%] + [%- input.revision -%] [%- END -%] [%- END %] @@ -446,7 +448,7 @@ [%- IF e.changedInputs.size > 0 -%] [%- sep=''; FOREACH input IN e.changedInputs -%] - [%- sep %] [% input.name %] → [% INCLUDE renderShortRev type=input.type revision=input.revision %] + [%- sep %] [% input.name %] → [% INCLUDE renderShortEval input=input %] [%- sep=','; END -%] [%- ELSE -%] - diff --git a/src/root/static/images/cancelled_128.png b/src/root/static/images/cancelled_128.png new file mode 100644 index 0000000000000000000000000000000000000000..1f21130901951445598bca6b93da52a5009eaabe GIT binary patch literal 11969 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 literal 0 HcmV?d00001 diff --git a/src/root/static/images/cancelled_16.png b/src/root/static/images/cancelled_16.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6fca4619ca2cb3537b7fc629e15cfda9e170af GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4(TIr6#$zB%HU^!`x-qS%QJ)vwO_C6x>8_FiUZlliNi zyX}~~@vk#I%lH4fwy*zLiD-#x$)kU#Uh7{m)3TUjxz~7OdAd`4@4<OA~H85 zzp^ZN_tCblrl{O|*+IqCs=SY^7CxE%+`QUAIHh*xvt?Yi*`@LRpPr?>k)T6iW} z^8K_Ui>}@kQ0nl^e&;;dxp?Q!+iHU6!q4?AvGbMmY$NFQg<@oX+3A_Hh^&r_q+h$&Yi^OqR)xIJ#@vE!98VD&bF0u3eNM$-uzC;OXk; Jvd$@?2>^+PTyp>b literal 0 HcmV?d00001 diff --git a/src/root/static/images/cancelled_32.png b/src/root/static/images/cancelled_32.png new file mode 100644 index 0000000000000000000000000000000000000000..1f40160ab84a85fcda0e9b04e047058663d25ad4 GIT binary patch literal 1742 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 D58mWZ literal 0 HcmV?d00001