[Buildroot] [PATCH] Makefile: target-purgelocales: add dependencies
Arnout Vandecappelle
arnout at mind.be
Mon Apr 28 05:49:32 UTC 2014
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.
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: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
More information about the buildroot
mailing list