From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Sat, 14 Feb 2015 22:58:38 +0100 Subject: [Buildroot] [PATCH 3/4] br-reproduce-build: fix URL of gitid In-Reply-To: <20150214221014.4643c5cd@free-electrons.com> References: <20150214221014.4643c5cd@free-electrons.com> Message-ID: <20150214215838.GF3886@free.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net 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 > > Signed-off-by: "Yann E. MORIN" > > --- > > 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. | '------------------------------^-------^------------------^--------------------'