* [Buildroot] [PATCH] core: enhance printvars
@ 2017-01-28 22:19 Yann E. MORIN
2017-01-31 10:12 ` Thomas De Schampheleire
2017-03-26 21:42 ` Thomas Petazzoni
0 siblings, 2 replies; 5+ messages in thread
From: Yann E. MORIN @ 2017-01-28 22:19 UTC (permalink / raw)
To: buildroot
Currently, the output of printvars copntains the name of the variable,
its expanded value and its un-expanded value.
However, most of the time, we need the actual, expanded value, so it can
be re-used from a (non-Buildroot) infrastructure script, like a
post-build script, or a build-farm driver (e.g. a Jenkins job...)
Add two options that a user may set to change the output of printvars:
- RAW_VARS, if set, will drop the unexpanded value
- QUOTED_VARS, if set, will quote the expanded value
So that it can be used as such:
$ make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1
BUSYBOX_VERSION='1.26.2'
And it is even possible to directly evaluate it in a shell script:
eval $(make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1)
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 5e4bc92..67a9b5d 100644
--- a/Makefile
+++ b/Makefile
@@ -934,7 +934,7 @@ printvars:
$(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
$(if $(filter-out environment% default automatic, \
$(origin $V)), \
- $(info $V=$($V) ($(value $V)))))
+ $(info $V=$(if $(QUOTED_VARS),')$($V)$(if $(QUOTED_VARS),')$(if $(RAW_VARS),, ($(value $V))))))
clean:
rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] core: enhance printvars
2017-01-28 22:19 [Buildroot] [PATCH] core: enhance printvars Yann E. MORIN
@ 2017-01-31 10:12 ` Thomas De Schampheleire
2017-01-31 17:31 ` Yann E. MORIN
2017-03-26 21:42 ` Thomas Petazzoni
1 sibling, 1 reply; 5+ messages in thread
From: Thomas De Schampheleire @ 2017-01-31 10:12 UTC (permalink / raw)
To: buildroot
On Sat, Jan 28, 2017 at 11:19 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Currently, the output of printvars copntains the name of the variable,
> its expanded value and its un-expanded value.
>
> However, most of the time, we need the actual, expanded value, so it can
> be re-used from a (non-Buildroot) infrastructure script, like a
> post-build script, or a build-farm driver (e.g. a Jenkins job...)
>
> Add two options that a user may set to change the output of printvars:
> - RAW_VARS, if set, will drop the unexpanded value
> - QUOTED_VARS, if set, will quote the expanded value
>
> So that it can be used as such:
>
> $ make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1
> BUSYBOX_VERSION='1.26.2'
>
> And it is even possible to directly evaluate it in a shell script:
>
> eval $(make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1)
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
> Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 5e4bc92..67a9b5d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -934,7 +934,7 @@ printvars:
> $(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
> $(if $(filter-out environment% default automatic, \
> $(origin $V)), \
> - $(info $V=$($V) ($(value $V)))))
> + $(info $V=$(if $(QUOTED_VARS),')$($V)$(if $(QUOTED_VARS),')$(if $(RAW_VARS),, ($(value $V))))))
>
> clean:
> rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
> --
> 2.7.4
Very nice, I've been needing this a few times before too.
I do think we should document the new flags QUOTED_VARS and RAW_VARS
somewhere (and in general 'printvars' itself). Perhaps here:
http://buildroot.uclibc.org/downloads/manual/manual.html#make-tips ?
Regarding naming (I realize, these are nits): RAW sounds like somehow
opposite of QUOTED. What about using PLAIN rather than RAW ?
An alternative is to change the default behavior to be raw/plain, and
add a VERBOSE option to display also the unexpanded value.
/Thomas
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] core: enhance printvars
2017-01-31 10:12 ` Thomas De Schampheleire
@ 2017-01-31 17:31 ` Yann E. MORIN
2017-02-02 21:41 ` Arnout Vandecappelle
0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2017-01-31 17:31 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2017-01-31 11:12 +0100, Thomas De Schampheleire spake thusly:
> On Sat, Jan 28, 2017 at 11:19 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > Currently, the output of printvars copntains the name of the variable,
> > its expanded value and its un-expanded value.
> >
> > However, most of the time, we need the actual, expanded value, so it can
> > be re-used from a (non-Buildroot) infrastructure script, like a
> > post-build script, or a build-farm driver (e.g. a Jenkins job...)
> >
> > Add two options that a user may set to change the output of printvars:
> > - RAW_VARS, if set, will drop the unexpanded value
> > - QUOTED_VARS, if set, will quote the expanded value
> >
> > So that it can be used as such:
> >
> > $ make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1
> > BUSYBOX_VERSION='1.26.2'
> >
> > And it is even possible to directly evaluate it in a shell script:
> >
> > eval $(make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1)
> >
> > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> > ---
> > Makefile | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/Makefile b/Makefile
> > index 5e4bc92..67a9b5d 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -934,7 +934,7 @@ printvars:
> > $(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
> > $(if $(filter-out environment% default automatic, \
> > $(origin $V)), \
> > - $(info $V=$($V) ($(value $V)))))
> > + $(info $V=$(if $(QUOTED_VARS),')$($V)$(if $(QUOTED_VARS),')$(if $(RAW_VARS),, ($(value $V))))))
> >
> > clean:
> > rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
> > --
> > 2.7.4
>
>
> Very nice, I've been needing this a few times before too.
>
> I do think we should document the new flags QUOTED_VARS and RAW_VARS
> somewhere (and in general 'printvars' itself). Perhaps here:
> http://buildroot.uclibc.org/downloads/manual/manual.html#make-tips ?
Damned, I forgot to document it, indeed...
I was instead thinking of documenting it in the output of 'make help'.
But both there and in the manual seems OK for me. I'll do.
> Regarding naming (I realize, these are nits): RAW sounds like somehow
> opposite of QUOTED. What about using PLAIN rather than RAW ?
> An alternative is to change the default behavior to be raw/plain, and
> add a VERBOSE option to display also the unexpanded value.
Well, I prefer not to change the current behaviour.
If others prefer we change the current behaviour, so be it. I'll wait
for more feedback.
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. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] core: enhance printvars
2017-01-31 17:31 ` Yann E. MORIN
@ 2017-02-02 21:41 ` Arnout Vandecappelle
0 siblings, 0 replies; 5+ messages in thread
From: Arnout Vandecappelle @ 2017-02-02 21:41 UTC (permalink / raw)
To: buildroot
On 31-01-17 18:31, Yann E. MORIN wrote:
> Thomas, All,
>
> On 2017-01-31 11:12 +0100, Thomas De Schampheleire spake thusly:
>> On Sat, Jan 28, 2017 at 11:19 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>>> Currently, the output of printvars copntains the name of the variable,
>>> its expanded value and its un-expanded value.
>>>
>>> However, most of the time, we need the actual, expanded value, so it can
>>> be re-used from a (non-Buildroot) infrastructure script, like a
>>> post-build script, or a build-farm driver (e.g. a Jenkins job...)
>>>
>>> Add two options that a user may set to change the output of printvars:
>>> - RAW_VARS, if set, will drop the unexpanded value
>>> - QUOTED_VARS, if set, will quote the expanded value
>>>
>>> So that it can be used as such:
>>>
>>> $ make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1
>>> BUSYBOX_VERSION='1.26.2'
>>>
>>> And it is even possible to directly evaluate it in a shell script:
>>>
>>> eval $(make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1)
That one would be nice to add to the documentation! However, I think you should
document it as XXX_VARS=YES to stay consistent with the rest of Buildroot.
>>>
>>> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
>>> ---
>>> Makefile | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index 5e4bc92..67a9b5d 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -934,7 +934,7 @@ printvars:
>>> $(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
>>> $(if $(filter-out environment% default automatic, \
>>> $(origin $V)), \
>>> - $(info $V=$($V) ($(value $V)))))
>>> + $(info $V=$(if $(QUOTED_VARS),')$($V)$(if $(QUOTED_VARS),')$(if $(RAW_VARS),, ($(value $V))))))
>>>
>>> clean:
>>> rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
>>> --
>>> 2.7.4
>>
>>
>> Very nice, I've been needing this a few times before too.
>>
>> I do think we should document the new flags QUOTED_VARS and RAW_VARS
>> somewhere (and in general 'printvars' itself). Perhaps here:
>> http://buildroot.uclibc.org/downloads/manual/manual.html#make-tips ?
>
> Damned, I forgot to document it, indeed...
>
> I was instead thinking of documenting it in the output of 'make help'.
>
> But both there and in the manual seems OK for me. I'll do.
IMHO 'make help' should be rather limited, the real explanation should be in
the manual.
>> Regarding naming (I realize, these are nits): RAW sounds like somehow
>> opposite of QUOTED. What about using PLAIN rather than RAW ?
Or say it like it is: NO_UNEXPANDED_VARS.
>> An alternative is to change the default behavior to be raw/plain, and
>> add a VERBOSE option to display also the unexpanded value.
>
> Well, I prefer not to change the current behaviour.
>
> If others prefer we change the current behaviour, so be it. I'll wait
> for more feedback.
I'd normally indeed prefer to not change current behaviour. However, making the
verbose one optional does make a whole lot more sense. Also, the reson to not
change current behaviour is not to break existing scripts. But using the current
output in scripts would be extremely fragile; it would require a filter that
most likely will still match (e.g. "make printvars | cut -d ' ' -f 1").
So I'm inclined indeed to change to expanded only by default.
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] core: enhance printvars
2017-01-28 22:19 [Buildroot] [PATCH] core: enhance printvars Yann E. MORIN
2017-01-31 10:12 ` Thomas De Schampheleire
@ 2017-03-26 21:42 ` Thomas Petazzoni
1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2017-03-26 21:42 UTC (permalink / raw)
To: buildroot
Hello,
On Sat, 28 Jan 2017 23:19:31 +0100, Yann E. MORIN wrote:
> Currently, the output of printvars copntains the name of the variable,
> its expanded value and its un-expanded value.
>
> However, most of the time, we need the actual, expanded value, so it can
> be re-used from a (non-Buildroot) infrastructure script, like a
> post-build script, or a build-farm driver (e.g. a Jenkins job...)
>
> Add two options that a user may set to change the output of printvars:
> - RAW_VARS, if set, will drop the unexpanded value
> - QUOTED_VARS, if set, will quote the expanded value
>
> So that it can be used as such:
>
> $ make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1
> BUSYBOX_VERSION='1.26.2'
>
> And it is even possible to directly evaluate it in a shell script:
>
> eval $(make -s printvars VARS=BUSYBOX_VERSION RAW_VARS=1 QUOTED_VARS=1)
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
> Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Seeing the feedback from Thomas DS and Arnout, I've marked the patch as
"Changes Requested". Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-03-26 21:42 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-28 22:19 [Buildroot] [PATCH] core: enhance printvars Yann E. MORIN
2017-01-31 10:12 ` Thomas De Schampheleire
2017-01-31 17:31 ` Yann E. MORIN
2017-02-02 21:41 ` Arnout Vandecappelle
2017-03-26 21:42 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox