Re: [Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-18 Thread Andres Gomez
On Tue, 2018-12-18 at 10:47 +, Emil Velikov wrote:
> On Mon, 17 Dec 2018 at 22:35, Andres Gomez  wrote:
> > 
> > On Mon, 2018-12-17 at 18:36 +, Emil Velikov wrote:
> > > On Mon, 17 Dec 2018 at 18:14, Andres Gomez  wrote:
> > > > 
> > > > On Mon, 2018-12-17 at 16:43 +, Emil Velikov wrote:
> > > > > Currently our is_sha_nomination does:
> > > > >  - folds any whitespace, attempting to extract sha-like information
> > > > >  - checks that at least one of the shas has landed
> > > > > 
> > > > > Split it in two and do sha-like validation first.
> > > > > 
> > > > > This way, commits with mesa-stable and sha nominations will feature 
> > > > > the
> > > > > fixes/revert/etc instead of stable (a) or will be omitted if not
> > > > > applicable for the respective branch (b).
> > > > > 
> > > > > Misc examples from 18.3
> > > > > 
> > > > > (a)
> > > > > -[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > > > rendering
> > > > > +[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > > > rendering
> > > > > 
> > > > > (b)
> > > > > -[   stable ] 9a7b3199037 anv/query: flush render target before 
> > > > > copying results
> > > > > 
> > > > > CC: Andres Gomez 
> > > > > CC: Juan A. Suarez 
> > > > > CC: Dylan Baker 
> > > > > CC: mesa-sta...@lists.freedesktop.org
> > > > > Signed-off-by: Emil Velikov 
> > > > > ---
> > > > > Juan I've noticed that you've been experiencing the above annoyance 
> > > > > for
> > > > > a while. Having less false-positives should ease things up a bit :-)
> > > > > ---
> > > > >  bin/get-pick-list.sh | 46 
> > > > > +---
> > > > >  1 file changed, 30 insertions(+), 16 deletions(-)
> > > > > 
> > > > > diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
> > > > > index 9f9cbc44026..08a783f35a8 100755
> > > > > --- a/bin/get-pick-list.sh
> > > > > +++ b/bin/get-pick-list.sh
> > > > > @@ -21,32 +21,36 @@ is_typod_nomination()
> > > > >   git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
> > > > >  }
> > > > > 
> > > > > +fixes=
> > > > > +
> > > > 
> > > > Splitting in 2 functions for which we need now a global variable is not
> > > > very nice. Anyway, let's not make this more complicated than needed.
> > > > 
> > > 
> > > Wasn't too happy about it either. As you said - I've decided to go
> > > with the simpler solution.
> > > 
> > > > >  # Helper to handle various mistypos of the fixes tag.
> > > > >  # The tag string itself is passed as argument and normalised within.
> > > > > +#
> > > > > +# Resulting string in the global variable "fixes" and contains 
> > > > > entries
> > > > > +# in the form "fixes:$sha"
> > > > >  is_sha_nomination()
> > > > >  {
> > > > >   fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
> > > > >   sed -e 's/'"$2"'/\nfixes:/Ig' | \
> > > > >   grep -Eo 'fixes:[a-f0-9]{8,40}'`
> > > > > 
> > > > > - fixes_count=`echo "$fixes" | wc -l`
> > > > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > > > 
> > > > Why is the extra "grep" needed here?
> > > > 
> > > 
> > > Commits that include "fixes $some_test" will result in fixes="".
> > > Thus wc -l will return 1
> > 
> > Argh!
> > 
> > Well, this is more a consequence of wc counting newline characters and
> > echo adding a new one at the end, even when not printing anything.
> > Let's grep again, then ☹
> > 
> > > > >   if test $fixes_count -eq 0; then
> > > > > - return 0
> > > > > + return 1
> > > > 
> > > > Ugh! Right.
> > > > 
> > > > >   fi
> > > > > + return 0
> > > > > +}
> > > > > +
> > > > > +# Checks if at least one of offending commits, listed in the global
> > > > > +# "fixes", is in branch.
> > > > > +sha_in_range()
> > > > > +{
> > > > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > > > 
> > > > Ditto.
> > > > 
> > > > >   while test $fixes_count -gt 0; do
> > > > >   # Treat only the current line
> > > > >   id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | 
> > > > > cut -d : -f 2`
> > > > >   fixes_count=$(($fixes_count-1))
> > > > > 
> > > > > - # Bail out if we cannot find suitable id.
> > > > > - # Any specific validation the $id is valid and not some 
> > > > > junk, is
> > > > > - # implied with the follow up code
> > > > > - if test "x$id" = x; then
> > > > > - continue
> > > > > - fi
> > > > > -
> > > > > - #Check if the offending commit is in branch.
> > > > > -
> > > > 
> > > > Was this never needed in the first place? Feels right to remove it
> > > > since $fixes should have some content by now, but I wonder how this got
> > > > here in the first place.
> > > > 
> > > 
> > > Left-over from the old standalone script. Copied a bit too much :-(
> > > 
> > > > >   # Be that cherry-picked ...
> > > > >   # ... or landed before 

Re: [Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-18 Thread Emil Velikov
On Mon, 17 Dec 2018 at 22:35, Andres Gomez  wrote:
>
> On Mon, 2018-12-17 at 18:36 +, Emil Velikov wrote:
> > On Mon, 17 Dec 2018 at 18:14, Andres Gomez  wrote:
> > >
> > > On Mon, 2018-12-17 at 16:43 +, Emil Velikov wrote:
> > > > Currently our is_sha_nomination does:
> > > >  - folds any whitespace, attempting to extract sha-like information
> > > >  - checks that at least one of the shas has landed
> > > >
> > > > Split it in two and do sha-like validation first.
> > > >
> > > > This way, commits with mesa-stable and sha nominations will feature the
> > > > fixes/revert/etc instead of stable (a) or will be omitted if not
> > > > applicable for the respective branch (b).
> > > >
> > > > Misc examples from 18.3
> > > >
> > > > (a)
> > > > -[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > > rendering
> > > > +[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > > rendering
> > > >
> > > > (b)
> > > > -[   stable ] 9a7b3199037 anv/query: flush render target before copying 
> > > > results
> > > >
> > > > CC: Andres Gomez 
> > > > CC: Juan A. Suarez 
> > > > CC: Dylan Baker 
> > > > CC: mesa-sta...@lists.freedesktop.org
> > > > Signed-off-by: Emil Velikov 
> > > > ---
> > > > Juan I've noticed that you've been experiencing the above annoyance for
> > > > a while. Having less false-positives should ease things up a bit :-)
> > > > ---
> > > >  bin/get-pick-list.sh | 46 +---
> > > >  1 file changed, 30 insertions(+), 16 deletions(-)
> > > >
> > > > diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
> > > > index 9f9cbc44026..08a783f35a8 100755
> > > > --- a/bin/get-pick-list.sh
> > > > +++ b/bin/get-pick-list.sh
> > > > @@ -21,32 +21,36 @@ is_typod_nomination()
> > > >   git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
> > > >  }
> > > >
> > > > +fixes=
> > > > +
> > >
> > > Splitting in 2 functions for which we need now a global variable is not
> > > very nice. Anyway, let's not make this more complicated than needed.
> > >
> >
> > Wasn't too happy about it either. As you said - I've decided to go
> > with the simpler solution.
> >
> > > >  # Helper to handle various mistypos of the fixes tag.
> > > >  # The tag string itself is passed as argument and normalised within.
> > > > +#
> > > > +# Resulting string in the global variable "fixes" and contains entries
> > > > +# in the form "fixes:$sha"
> > > >  is_sha_nomination()
> > > >  {
> > > >   fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
> > > >   sed -e 's/'"$2"'/\nfixes:/Ig' | \
> > > >   grep -Eo 'fixes:[a-f0-9]{8,40}'`
> > > >
> > > > - fixes_count=`echo "$fixes" | wc -l`
> > > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > >
> > > Why is the extra "grep" needed here?
> > >
> >
> > Commits that include "fixes $some_test" will result in fixes="".
> > Thus wc -l will return 1
>
> Argh!
>
> Well, this is more a consequence of wc counting newline characters and
> echo adding a new one at the end, even when not printing anything.
> Let's grep again, then ☹
>
> > > >   if test $fixes_count -eq 0; then
> > > > - return 0
> > > > + return 1
> > >
> > > Ugh! Right.
> > >
> > > >   fi
> > > > + return 0
> > > > +}
> > > > +
> > > > +# Checks if at least one of offending commits, listed in the global
> > > > +# "fixes", is in branch.
> > > > +sha_in_range()
> > > > +{
> > > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > >
> > > Ditto.
> > >
> > > >   while test $fixes_count -gt 0; do
> > > >   # Treat only the current line
> > > >   id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | 
> > > > cut -d : -f 2`
> > > >   fixes_count=$(($fixes_count-1))
> > > >
> > > > - # Bail out if we cannot find suitable id.
> > > > - # Any specific validation the $id is valid and not some 
> > > > junk, is
> > > > - # implied with the follow up code
> > > > - if test "x$id" = x; then
> > > > - continue
> > > > - fi
> > > > -
> > > > - #Check if the offending commit is in branch.
> > > > -
> > >
> > > Was this never needed in the first place? Feels right to remove it
> > > since $fixes should have some content by now, but I wonder how this got
> > > here in the first place.
> > >
> >
> > Left-over from the old standalone script. Copied a bit too much :-(
> >
> > > >   # Be that cherry-picked ...
> > > >   # ... or landed before the branchpoint.
> > > >   if grep -q ^$id already_picked ||
> > > > @@ -103,20 +107,30 @@ do
> > > >   continue
> > > >   fi
> > > >
> > > > - if is_stable_nomination "$sha"; then
> > > > - tag=stable
> > > > - elif is_typod_nomination "$sha"; then
> > > > - tag=typod
> > > > - elif is_fixes_nomination "$sha"; then
> > 

Re: [Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-17 Thread Andres Gomez
On Mon, 2018-12-17 at 18:36 +, Emil Velikov wrote:
> On Mon, 17 Dec 2018 at 18:14, Andres Gomez  wrote:
> > 
> > On Mon, 2018-12-17 at 16:43 +, Emil Velikov wrote:
> > > Currently our is_sha_nomination does:
> > >  - folds any whitespace, attempting to extract sha-like information
> > >  - checks that at least one of the shas has landed
> > > 
> > > Split it in two and do sha-like validation first.
> > > 
> > > This way, commits with mesa-stable and sha nominations will feature the
> > > fixes/revert/etc instead of stable (a) or will be omitted if not
> > > applicable for the respective branch (b).
> > > 
> > > Misc examples from 18.3
> > > 
> > > (a)
> > > -[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > rendering
> > > +[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > > rendering
> > > 
> > > (b)
> > > -[   stable ] 9a7b3199037 anv/query: flush render target before copying 
> > > results
> > > 
> > > CC: Andres Gomez 
> > > CC: Juan A. Suarez 
> > > CC: Dylan Baker 
> > > CC: mesa-sta...@lists.freedesktop.org
> > > Signed-off-by: Emil Velikov 
> > > ---
> > > Juan I've noticed that you've been experiencing the above annoyance for
> > > a while. Having less false-positives should ease things up a bit :-)
> > > ---
> > >  bin/get-pick-list.sh | 46 +---
> > >  1 file changed, 30 insertions(+), 16 deletions(-)
> > > 
> > > diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
> > > index 9f9cbc44026..08a783f35a8 100755
> > > --- a/bin/get-pick-list.sh
> > > +++ b/bin/get-pick-list.sh
> > > @@ -21,32 +21,36 @@ is_typod_nomination()
> > >   git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
> > >  }
> > > 
> > > +fixes=
> > > +
> > 
> > Splitting in 2 functions for which we need now a global variable is not
> > very nice. Anyway, let's not make this more complicated than needed.
> > 
> 
> Wasn't too happy about it either. As you said - I've decided to go
> with the simpler solution.
> 
> > >  # Helper to handle various mistypos of the fixes tag.
> > >  # The tag string itself is passed as argument and normalised within.
> > > +#
> > > +# Resulting string in the global variable "fixes" and contains entries
> > > +# in the form "fixes:$sha"
> > >  is_sha_nomination()
> > >  {
> > >   fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
> > >   sed -e 's/'"$2"'/\nfixes:/Ig' | \
> > >   grep -Eo 'fixes:[a-f0-9]{8,40}'`
> > > 
> > > - fixes_count=`echo "$fixes" | wc -l`
> > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > 
> > Why is the extra "grep" needed here?
> > 
> 
> Commits that include "fixes $some_test" will result in fixes="".
> Thus wc -l will return 1

Argh!

Well, this is more a consequence of wc counting newline characters and
echo adding a new one at the end, even when not printing anything.
Let's grep again, then ☹

> > >   if test $fixes_count -eq 0; then
> > > - return 0
> > > + return 1
> > 
> > Ugh! Right.
> > 
> > >   fi
> > > + return 0
> > > +}
> > > +
> > > +# Checks if at least one of offending commits, listed in the global
> > > +# "fixes", is in branch.
> > > +sha_in_range()
> > > +{
> > > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
> > 
> > Ditto.
> > 
> > >   while test $fixes_count -gt 0; do
> > >   # Treat only the current line
> > >   id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut 
> > > -d : -f 2`
> > >   fixes_count=$(($fixes_count-1))
> > > 
> > > - # Bail out if we cannot find suitable id.
> > > - # Any specific validation the $id is valid and not some 
> > > junk, is
> > > - # implied with the follow up code
> > > - if test "x$id" = x; then
> > > - continue
> > > - fi
> > > -
> > > - #Check if the offending commit is in branch.
> > > -
> > 
> > Was this never needed in the first place? Feels right to remove it
> > since $fixes should have some content by now, but I wonder how this got
> > here in the first place.
> > 
> 
> Left-over from the old standalone script. Copied a bit too much :-(
> 
> > >   # Be that cherry-picked ...
> > >   # ... or landed before the branchpoint.
> > >   if grep -q ^$id already_picked ||
> > > @@ -103,20 +107,30 @@ do
> > >   continue
> > >   fi
> > > 
> > > - if is_stable_nomination "$sha"; then
> > > - tag=stable
> > > - elif is_typod_nomination "$sha"; then
> > > - tag=typod
> > > - elif is_fixes_nomination "$sha"; then
> > > + if is_fixes_nomination "$sha"; then
> > >   tag=fixes
> > >   elif is_brokenby_nomination "$sha"; then
> > >   tag=brokenby
> > >   elif is_revert_nomination "$sha"; then
> > >   tag=revert
> > > + elif is_stable_nomination "$sha"; then
> 

Re: [Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-17 Thread Emil Velikov
On Mon, 17 Dec 2018 at 18:14, Andres Gomez  wrote:
>
> On Mon, 2018-12-17 at 16:43 +, Emil Velikov wrote:
> > Currently our is_sha_nomination does:
> >  - folds any whitespace, attempting to extract sha-like information
> >  - checks that at least one of the shas has landed
> >
> > Split it in two and do sha-like validation first.
> >
> > This way, commits with mesa-stable and sha nominations will feature the
> > fixes/revert/etc instead of stable (a) or will be omitted if not
> > applicable for the respective branch (b).
> >
> > Misc examples from 18.3
> >
> > (a)
> > -[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > rendering
> > +[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct 
> > rendering
> >
> > (b)
> > -[   stable ] 9a7b3199037 anv/query: flush render target before copying 
> > results
> >
> > CC: Andres Gomez 
> > CC: Juan A. Suarez 
> > CC: Dylan Baker 
> > CC: mesa-sta...@lists.freedesktop.org
> > Signed-off-by: Emil Velikov 
> > ---
> > Juan I've noticed that you've been experiencing the above annoyance for
> > a while. Having less false-positives should ease things up a bit :-)
> > ---
> >  bin/get-pick-list.sh | 46 +---
> >  1 file changed, 30 insertions(+), 16 deletions(-)
> >
> > diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
> > index 9f9cbc44026..08a783f35a8 100755
> > --- a/bin/get-pick-list.sh
> > +++ b/bin/get-pick-list.sh
> > @@ -21,32 +21,36 @@ is_typod_nomination()
> >   git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
> >  }
> >
> > +fixes=
> > +
>
> Splitting in 2 functions for which we need now a global variable is not
> very nice. Anyway, let's not make this more complicated than needed.
>
Wasn't too happy about it either. As you said - I've decided to go
with the simpler solution.

> >  # Helper to handle various mistypos of the fixes tag.
> >  # The tag string itself is passed as argument and normalised within.
> > +#
> > +# Resulting string in the global variable "fixes" and contains entries
> > +# in the form "fixes:$sha"
> >  is_sha_nomination()
> >  {
> >   fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
> >   sed -e 's/'"$2"'/\nfixes:/Ig' | \
> >   grep -Eo 'fixes:[a-f0-9]{8,40}'`
> >
> > - fixes_count=`echo "$fixes" | wc -l`
> > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
>
> Why is the extra "grep" needed here?
>
Commits that include "fixes $some_test" will result in fixes="".
Thus wc -l will return 1

> >   if test $fixes_count -eq 0; then
> > - return 0
> > + return 1
>
> Ugh! Right.
>
> >   fi
> > + return 0
> > +}
> > +
> > +# Checks if at least one of offending commits, listed in the global
> > +# "fixes", is in branch.
> > +sha_in_range()
> > +{
> > + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
>
> Ditto.
>
> >   while test $fixes_count -gt 0; do
> >   # Treat only the current line
> >   id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d 
> > : -f 2`
> >   fixes_count=$(($fixes_count-1))
> >
> > - # Bail out if we cannot find suitable id.
> > - # Any specific validation the $id is valid and not some junk, 
> > is
> > - # implied with the follow up code
> > - if test "x$id" = x; then
> > - continue
> > - fi
> > -
> > - #Check if the offending commit is in branch.
> > -
>
> Was this never needed in the first place? Feels right to remove it
> since $fixes should have some content by now, but I wonder how this got
> here in the first place.
>
Left-over from the old standalone script. Copied a bit too much :-(

> >   # Be that cherry-picked ...
> >   # ... or landed before the branchpoint.
> >   if grep -q ^$id already_picked ||
> > @@ -103,20 +107,30 @@ do
> >   continue
> >   fi
> >
> > - if is_stable_nomination "$sha"; then
> > - tag=stable
> > - elif is_typod_nomination "$sha"; then
> > - tag=typod
> > - elif is_fixes_nomination "$sha"; then
> > + if is_fixes_nomination "$sha"; then
> >   tag=fixes
> >   elif is_brokenby_nomination "$sha"; then
> >   tag=brokenby
> >   elif is_revert_nomination "$sha"; then
> >   tag=revert
> > + elif is_stable_nomination "$sha"; then
> > + tag=stable
> > + elif is_typod_nomination "$sha"; then
> > + tag=typod
> >   else
> >   continue
> >   fi
> >
> > + case "$tag" in
> > + fixes | brokenby | revert )
> > + if ! sha_in_range; then
> > + continue
> > + fi
> > + ;;
> > + * )
> > + ;;
> > + esac
> > +
> >   printf "[ %8s ] " "$tag"
> >   git --no-pager show --summary --oneline $sha
> >  done
>
> I'm not sure we 

Re: [Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-17 Thread Andres Gomez
On Mon, 2018-12-17 at 16:43 +, Emil Velikov wrote:
> Currently our is_sha_nomination does:
>  - folds any whitespace, attempting to extract sha-like information
>  - checks that at least one of the shas has landed
> 
> Split it in two and do sha-like validation first.
> 
> This way, commits with mesa-stable and sha nominations will feature the
> fixes/revert/etc instead of stable (a) or will be omitted if not
> applicable for the respective branch (b).
> 
> Misc examples from 18.3
> 
> (a)
> -[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct rendering
> +[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct rendering
> 
> (b)
> -[   stable ] 9a7b3199037 anv/query: flush render target before copying 
> results
> 
> CC: Andres Gomez 
> CC: Juan A. Suarez 
> CC: Dylan Baker 
> CC: mesa-sta...@lists.freedesktop.org
> Signed-off-by: Emil Velikov 
> ---
> Juan I've noticed that you've been experiencing the above annoyance for
> a while. Having less false-positives should ease things up a bit :-)
> ---
>  bin/get-pick-list.sh | 46 +---
>  1 file changed, 30 insertions(+), 16 deletions(-)
> 
> diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
> index 9f9cbc44026..08a783f35a8 100755
> --- a/bin/get-pick-list.sh
> +++ b/bin/get-pick-list.sh
> @@ -21,32 +21,36 @@ is_typod_nomination()
>   git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
>  }
>  
> +fixes=
> +

Splitting in 2 functions for which we need now a global variable is not
very nice. Anyway, let's not make this more complicated than needed.

>  # Helper to handle various mistypos of the fixes tag.
>  # The tag string itself is passed as argument and normalised within.
> +#
> +# Resulting string in the global variable "fixes" and contains entries
> +# in the form "fixes:$sha"
>  is_sha_nomination()
>  {
>   fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
>   sed -e 's/'"$2"'/\nfixes:/Ig' | \
>   grep -Eo 'fixes:[a-f0-9]{8,40}'`
>  
> - fixes_count=`echo "$fixes" | wc -l`
> + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`

Why is the extra "grep" needed here?

>   if test $fixes_count -eq 0; then
> - return 0
> + return 1

Ugh! Right.

>   fi
> + return 0
> +}
> +
> +# Checks if at least one of offending commits, listed in the global
> +# "fixes", is in branch.
> +sha_in_range()
> +{
> + fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`

Ditto.

>   while test $fixes_count -gt 0; do
>   # Treat only the current line
>   id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : 
> -f 2`
>   fixes_count=$(($fixes_count-1))
>  
> - # Bail out if we cannot find suitable id.
> - # Any specific validation the $id is valid and not some junk, is
> - # implied with the follow up code
> - if test "x$id" = x; then
> - continue
> - fi
> -
> - #Check if the offending commit is in branch.
> -

Was this never needed in the first place? Feels right to remove it
since $fixes should have some content by now, but I wonder how this got
here in the first place.

>   # Be that cherry-picked ...
>   # ... or landed before the branchpoint.
>   if grep -q ^$id already_picked ||
> @@ -103,20 +107,30 @@ do
>   continue
>   fi
>  
> - if is_stable_nomination "$sha"; then
> - tag=stable
> - elif is_typod_nomination "$sha"; then
> - tag=typod
> - elif is_fixes_nomination "$sha"; then
> + if is_fixes_nomination "$sha"; then
>   tag=fixes
>   elif is_brokenby_nomination "$sha"; then
>   tag=brokenby
>   elif is_revert_nomination "$sha"; then
>   tag=revert
> + elif is_stable_nomination "$sha"; then
> + tag=stable
> + elif is_typod_nomination "$sha"; then
> + tag=typod
>   else
>   continue
>   fi
>  
> + case "$tag" in
> + fixes | brokenby | revert )
> + if ! sha_in_range; then
> + continue
> + fi
> + ;;
> + * )
> + ;;
> + esac
> +
>   printf "[ %8s ] " "$tag"
>   git --no-pager show --summary --oneline $sha
>  done

I'm not sure we are gaining something with the splitting.

Maybe I'm not understanding correctly the patch but it seems to me that
every successful "is_sha_nomination" is followed by a "sha_in_range"
call. Hence, we are only trading splitting into 2 functions by having a
global variable (!)

Additionally, in the second patch of the series we are adding a warning
that, in case of having a single function, could be placed in the same
while loop, instead of having now 2 loops (?)

-- 
Br,

Andres
___
mesa-dev mailing list

[Mesa-dev] [PATCH 1/2] bin/get-pick-list.sh: rework handing of sha nominations

2018-12-17 Thread Emil Velikov
Currently our is_sha_nomination does:
 - folds any whitespace, attempting to extract sha-like information
 - checks that at least one of the shas has landed

Split it in two and do sha-like validation first.

This way, commits with mesa-stable and sha nominations will feature the
fixes/revert/etc instead of stable (a) or will be omitted if not
applicable for the respective branch (b).

Misc examples from 18.3

(a)
-[   stable ] 5bc509363b6 glx: make xf86vidmode mandatory for direct rendering
+[fixes ] 5bc509363b6 glx: make xf86vidmode mandatory for direct rendering

(b)
-[   stable ] 9a7b3199037 anv/query: flush render target before copying results

CC: Andres Gomez 
CC: Juan A. Suarez 
CC: Dylan Baker 
CC: mesa-sta...@lists.freedesktop.org
Signed-off-by: Emil Velikov 
---
Juan I've noticed that you've been experiencing the above annoyance for
a while. Having less false-positives should ease things up a bit :-)
---
 bin/get-pick-list.sh | 46 +---
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/bin/get-pick-list.sh b/bin/get-pick-list.sh
index 9f9cbc44026..08a783f35a8 100755
--- a/bin/get-pick-list.sh
+++ b/bin/get-pick-list.sh
@@ -21,32 +21,36 @@ is_typod_nomination()
git show --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
 }
 
+fixes=
+
 # Helper to handle various mistypos of the fixes tag.
 # The tag string itself is passed as argument and normalised within.
+#
+# Resulting string in the global variable "fixes" and contains entries
+# in the form "fixes:$sha"
 is_sha_nomination()
 {
fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
sed -e 's/'"$2"'/\nfixes:/Ig' | \
grep -Eo 'fixes:[a-f0-9]{8,40}'`
 
-   fixes_count=`echo "$fixes" | wc -l`
+   fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
if test $fixes_count -eq 0; then
-   return 0
+   return 1
fi
+   return 0
+}
+
+# Checks if at least one of offending commits, listed in the global
+# "fixes", is in branch.
+sha_in_range()
+{
+   fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
while test $fixes_count -gt 0; do
# Treat only the current line
id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : 
-f 2`
fixes_count=$(($fixes_count-1))
 
-   # Bail out if we cannot find suitable id.
-   # Any specific validation the $id is valid and not some junk, is
-   # implied with the follow up code
-   if test "x$id" = x; then
-   continue
-   fi
-
-   #Check if the offending commit is in branch.
-
# Be that cherry-picked ...
# ... or landed before the branchpoint.
if grep -q ^$id already_picked ||
@@ -103,20 +107,30 @@ do
continue
fi
 
-   if is_stable_nomination "$sha"; then
-   tag=stable
-   elif is_typod_nomination "$sha"; then
-   tag=typod
-   elif is_fixes_nomination "$sha"; then
+   if is_fixes_nomination "$sha"; then
tag=fixes
elif is_brokenby_nomination "$sha"; then
tag=brokenby
elif is_revert_nomination "$sha"; then
tag=revert
+   elif is_stable_nomination "$sha"; then
+   tag=stable
+   elif is_typod_nomination "$sha"; then
+   tag=typod
else
continue
fi
 
+   case "$tag" in
+   fixes | brokenby | revert )
+   if ! sha_in_range; then
+   continue
+   fi
+   ;;
+   * )
+   ;;
+   esac
+
printf "[ %8s ] " "$tag"
git --no-pager show --summary --oneline $sha
 done
-- 
2.19.2

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev