[Buildroot] [PATCH 3/4] br-reproduce-build: fix URL of gitid

Yann E. MORIN yann.morin.1998 at free.fr
Sat Feb 14 21:58:38 UTC 2015


Thomas, All,

On 2015-02-14 22:10 +0100, Thomas Petazzoni spake thusly:
> On Sat, 14 Feb 2015 11:52:05 +0100, Yann E. MORIN wrote:
> > Reported-by: Fabio Porcedda <fabio.porcedda at gmail.com>
> > Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> > ---
> >  utils/br-reproduce-build | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/utils/br-reproduce-build b/utils/br-reproduce-build
> > index c0dc530..9987684 100755
> > --- a/utils/br-reproduce-build
> > +++ b/utils/br-reproduce-build
> > @@ -16,9 +16,11 @@ if [ $# -ne 1 ] ; then
> >      exit 1 ;
> >  fi
> >  
> > -BUILD_ID=$1
> > +# BUILD_ID must be in the form xxx/xxxyyyyyyyyyy (xxxyyyyy... being the sha1)
> > +BUILD_ID="${1#*/}"
> > +BUILD_ID="${BUILD_ID%${BUILD_ID#???}}/${BUILD_ID}"
> >  
> > -BUILD_DIR=${OUTPUT_DIR}/${BUILD_ID}
> > +BUILD_DIR="${OUTPUT_DIR}/${BUILD_ID#*/}"
> 
> This shell stuff is so complicated that I don't even understand what is
> the behavior.

Ah, sorry, that's indeed not completely trivial (eveb though I can read
it quite clearly! ;-) )

What this does is:

  - BUILD_ID="${1#*/}"
    get rid of anything before a '/', included

  - ${BUILD_ID#???}
    get rid of the first three chars

  - ${BUILD_ID%foo}
    get rid of the trailing string 'foo', so:

  - ${BUILD_ID%${BUILD_ID#???}}
    get rid of all but the first three chars

Thus, what the code above does is:

  - if the user passes a sha1 xxxyyyyyy transform it to xxx/xxxyyyyy
    (since that the way results are organised on the website

  - if the user already passes xxx/xxxyyyyyyy we simply get rid of the
    leading xxx/ (even though it is the correct form) to keep the
    xxxyyyyyy form, and we are back to the first case, above.

> When you say "BUILD_ID must be in the form
> xxx/xxxyyyyyyyyyy", does it mean that the user is supposed to pass as
> argument to the script a value in the form "xxx/xxxyyyyyyyyyyy" ? If
> so, then it's clearly not the intended behavior: the full hash should
> be sufficient.

Yes, that's exactly the point of all the above: a sha1 should be enough.
However, if the user is smart enough to pass the xxx/xxxyyyyy form, we
still accept it.

> Maybe a few more comments would be useful to understand the magic.

Yes, obviously. Sorry, it seemed clear enough to me (but I'm very well
used to using shell tricks that in retrospect are not so obvious).

Thanks!

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'



More information about the buildroot mailing list