[Buildroot] [PATCH] Makefile: target-purgelocales: add dependencies

Fabio Porcedda fabio.porcedda at gmail.com
Mon Apr 28 07:58:06 UTC 2014


On Mon, Apr 28, 2014 at 7:49 AM, Arnout Vandecappelle <arnout at mind.be> wrote:
> On 25/04/14 23:50, Fabio Porcedda wrote:
>> On Thu, Apr 24, 2014 at 6:41 PM, Thomas Petazzoni
>> <thomas.petazzoni at free-electrons.com> wrote:
>>> Dear Fabio Porcedda,
>>>
>>> On Thu, 24 Apr 2014 18:24:39 +0200, Fabio Porcedda wrote:
>>>
>>>> -target-purgelocales:
>>>> +target-purgelocales: $(filter-out target-purgelocales,$(TARGETS))
>>>>       rm -f $(LOCALE_WHITELIST)
>>>>       for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
>>>
>>> Don't we have several other targets that need to be executed only after
>>> all packages have been built and installed? Wouldn't it make sense to
>>> have a common solution for these? Like maybe a dedicated target?
>>
>> Can you please give some examples? I know only tatget-purgelocales and
>> target-finalize.
>>
>> About the common solution, i see two possible solutions of the problem:
>>
>> 1) all those targets must be listed in a variable like
>> TARGETS_PRE_ROOTFS, but those targets must be able to be executed in
>> parallel without a specific order.
>>
>> 2) all those targets must be converted in hooks and added to a
>> variable like PRE_ROOTFS_HOOKS, so those steps are going to be
>> executed in serial observing a specific order.
>>
>> What is the more appropriate solution? The easiest and fastest one is
>> the first, but i'm not sure if those targets can be executed in
>> parallel.
>
>  My personal preference is to have a single rule (e.g. target-finalize)
> that performs everything that is post-targets and pre-rootfs. There isn't
> much that needs to be done so parallelisation doesn't make sense. And I
> think it's much easier to understand which steps are executed and in
> which order if they are all put together in a single rule rather than
> spread out over several.
>
>  To make things more readable, we can put the commands into separate
> variables. For instance:
>
> define TARGET_PURGE_LOCALES
>         rm -f $(LOCALE_WHITELIST)
>         ...
> endef
>
> define TARGET_PURGE_DEVFILES
>         rm -rf $(TARGET_DIR)/usr/include ...
> ...
> endef
>
> ifneq ($(BR2_PACKAGE_GDB),y)
> define TARGET_PURGE_GDB
>         rm -rf $(TARGET_DIR)/usr/share/gdb
> endef
> endif
>
> target-finalize: $(TARGETS)
>         $(TARGET_PURGE_LOCALES)
>         $(TARGET_PURGE_DEVFILES)
>         $(TARGET_PURGE_GDB)
>         $(TARGET_PURGE_DOC)
> ...
>
>
>  I'm giving the content of target-finalize as an example here, but it's
> not immediately needed to convert those into variables. The different
> target-* steps that are currently added to TARGETS are rather more important.

It's fine for me.
So you prefer to list those variables inside the target instead of
adding them to a hook variable? like e.g. PRE_ROOTFS_HOOK?

Regards
-- 
Fabio Porcedda


More information about the buildroot mailing list