All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 2/7] pkg-infra: assign BR_NO_CHECK_HASH_FOR so it is recursively-expanded
Date: Fri, 01 May 2015 17:45:43 +0200	[thread overview]
Message-ID: <55439FA7.1010807@mind.be> (raw)
In-Reply-To: <20150501152648.GA4206@free.fr>

On 01/05/15 17:26, Yann E. MORIN wrote:
> arnout, All,
> 
> On 2015-05-01 15:07 +0200, Arnout Vandecappelle spake thusly:
>> On 29/04/15 00:39, Yann E. MORIN wrote:
>>> Currently, assigning to BR_NO_CHECK_HASH_FOR in conditionals, but
>>> referencing vairaible assigned to later, fails. Here's a failing
>>               variable
>>
>>> test-case, which is the reduced test-case of how we handle
>>> BR_NO_CHECK_HASH_FOR for now:
>>>
>>>     export FOO
>>>
>>>     ifeq ($(BAR_V),)
>>>     BAR_V=1
>>>     else
>>>     FOO += $(BAR_S)
>>>     endif
>>
>>  I think the test case is too complicated - in fact the conditional construct
>> has nothing to do with it.
> 
> Yup, right, I know. However, I wanted a reduced test-case that still
> ressembled our current code base.
> 
>> The culprit is appending to it, which means we never
>> explicitly set it to recursively expanded. Exported variables that are not
>> defined explicitly for some reason default to be immediately expanded rather
>> than recursively.
> 
> Exactly. However, there's nothing like so explained in the make manual.

 So patch the make manual :-)

> 
>> export FOO
>> FOO += $(BAR)
>> $(warning FOO='$(FOO)' BAR='$(BAR)')
>> BAR = BAR
>> $(warning FOO='$(FOO)' BAR='$(BAR)')
>> default:
>>
>> Will give
>>
>> /tmp/Makefile:3: FOO=' ' BAR=''
>> /tmp/Makefile:5: FOO=' ' BAR='BAR'
>>
>> while explicitly setting FOO to be recursively expanded:
>>
>> export FOO =
>>
>> will give
>>
>> /tmp/Makefile:3: FOO=' ' BAR=''
>> /tmp/Makefile:5: FOO=' BAR' BAR='BAR'
> 
> Do you prefere I use your even-more-simplified test-case, or may I keep
> the reduced test-case I provided that ressemble our current code-path?

 Well, the relevant part of our current code path (taking your example) is:

export FOO
FOO += $(BAR_S)
BAR_S = bar.tar

 Whether or not BAR_V and FOO are defined in two separate conditional branches
and whether or not BAR_S contains a reference to BAR_V is really irrelevant.

 If you want to make it resemble our code path more, then just use the real
variable names:

export BR_NO_CHECK_HASH_FOR
BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE)
XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2

[snip]
>>>  # Expressly do not check hashes for those files
>>> -export BR_NO_CHECK_HASH_FOR
>>> +# It needs to be assigned so as to be a recursively-expanded variable, and
>>> +# so that it can be assigned inside conditionals.
>>
>> # Exported variables default to immediately expanded,
> 
> I would avoid stating that. That's the behaviour we observed, but
> nothing is said about that in the make manual. If a future version of
> make changes that behaviour, the comment would be wrong.

 Then say "in some versions of make".

 Regards,
 Arnout

> 
> However, I'll ditch the comment about conditionals.
> 
>> # but we need it to be
>> # recursively-epxanded, so explicitly define it.
>>
>>
>>  With all that,
>>
>>   Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> 
> Regards,
> Yann E. MORIN.
> 


-- 
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:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

  reply	other threads:[~2015-05-01 15:45 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-28 22:39 [Buildroot] [PATCH 0/7] hashes: add more custom versions to the exclusion list (branch yem/no-hash-custom) Yann E. MORIN
2015-04-28 22:39 ` [Buildroot] [PATCH 1/7] boot/gummiboot: switch to http for git clone Yann E. MORIN
2015-05-01  8:32   ` Thomas Petazzoni
2015-04-28 22:39 ` [Buildroot] [PATCH 2/7] pkg-infra: assign BR_NO_CHECK_HASH_FOR so it is recursively-expanded Yann E. MORIN
2015-05-01 13:07   ` Arnout Vandecappelle
2015-05-01 15:26     ` Yann E. MORIN
2015-05-01 15:45       ` Arnout Vandecappelle [this message]
2015-05-01 16:22         ` Yann E. MORIN
2015-04-28 22:40 ` [Buildroot] [PATCH 3/7] boot/uboot: do not check hash for custom versions Yann E. MORIN
2015-04-29  5:49   ` Vincent Stehlé
2015-05-01 13:14   ` Arnout Vandecappelle
2015-05-01 15:31     ` Yann E. MORIN
2015-05-01 15:48       ` Arnout Vandecappelle
2015-05-01 16:21         ` Yann E. MORIN
2015-04-28 22:40 ` [Buildroot] [PATCH 4/7] boot/barebox: " Yann E. MORIN
2015-05-01 13:15   ` Arnout Vandecappelle
2015-05-01 15:32     ` Yann E. MORIN
2015-05-01 15:52       ` Arnout Vandecappelle
2015-04-28 22:40 ` [Buildroot] [PATCH 5/7] boot/mxs-bootlets: do not check hash of custom tarball Yann E. MORIN
2015-05-01 13:25   ` Arnout Vandecappelle
2015-04-28 22:40 ` [Buildroot] [PATCH 6/7] linux: do not check hashes for custom versions and tarballs Yann E. MORIN
2015-05-01 13:34   ` Arnout Vandecappelle
2015-05-01 15:38     ` Yann E. MORIN
2015-05-01 15:50       ` Arnout Vandecappelle
2015-05-01 21:35     ` Yann E. MORIN
2015-04-28 22:40 ` [Buildroot] [PATCH 7/7] package/xenomai: ignore custom versions Yann E. MORIN
2015-05-01 13:37   ` Arnout Vandecappelle
2015-04-28 22:46 ` [Buildroot] [PATCH 8/7] package/xenomai: add hash file Yann E. MORIN
2015-04-29  4:16   ` Baruch Siach
2015-04-29  6:33     ` Yann E. MORIN
2015-05-01 13:54   ` Arnout Vandecappelle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55439FA7.1010807@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.