From: Romain Naour <romain.naour@openwide.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/7] linux: use the package infrastructure to download patches
Date: Sun, 15 Mar 2015 17:44:17 +0100 [thread overview]
Message-ID: <5505B6E1.1010504@openwide.fr> (raw)
In-Reply-To: <1425147313-17380-2-git-send-email-thomas.petazzoni@free-electrons.com>
Hi Thomas,
Le 28/02/2015 19:15, Thomas Petazzoni a ?crit :
> The linux package has a special handling of patches, with quite a bit
> of legacy in it. A problem caused by this special handling is that the
> linux package calls directly the DOWNLOAD_WGET macro, which means that
> the package infrastructure isn't aware of which patches get
> downloaded, and it prevents doing changes inside the package download
> infrastructure.
>
> This commit changes the handling of patches in the linux package in
> the following way:
>
> * The LINUX_PATCHES variable is kept as is: it lists all the patches
> mentionned in the Config.in option BR2_LINUX_KERNEL_PATCH. This
mentionned -> mentioned
> option can contain http://, ftp://, https:// URLs, path to local
> files or local directories.
>
> This variable is *not* used by the generic package infrastructure,
> so it is purely internal to the Linux package.
>
> * The LINUX_PATCH variable is now filled in with the list of patches
> that should be downloaded. It is derived from LINUX_PATCHES by
> filtering the patches that have http://, ftp:// or https:// in
> their path. Since <pkg>_PATCH is handled by the package
> infrastructure, it means that those patches are now automatically
> downloaded and applied by the package infrastructure.
>
> * The LINUX_APPLY_PATCHES hook is renamed to
> LINUX_APPLY_LOCAL_PATCHES, because it is now only responsible of
> applying local patches: remote patches are handled by
> LINUX_PATCH. The implementation of the hook is changed to filter
> out the patches that have already taken care of by LINUX_PATCH, so
> that we only iterate through the list of local patches or local
> patch directories.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
Reviewed-by: Romain Naour <romain.naour@openwide.fr>
Partially tested with BR2_LINUX_KERNEL_PATCH which point to a directory that
contains all patches for the kernel to be build.
> linux/linux.mk | 25 +++++++++----------------
> 1 file changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/linux/linux.mk b/linux/linux.mk
> index fc90fc5..d591e1e 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -40,6 +40,11 @@ endif
>
> LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
>
> +# We really on the generic package infrastructure to download and
really -> rely (as noted by Baruch)
> +# apply remote patches (downloaded from ftp, http or https). For local
> +# patches, we have a custom post-patch hook below.
> +LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES))
> +
> LINUX_INSTALL_IMAGES = YES
> LINUX_DEPENDENCIES += host-kmod host-lzop
>
> @@ -144,20 +149,9 @@ else
> LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME)
> endif # BR2_LINUX_KERNEL_VMLINUX
>
> -define LINUX_DOWNLOAD_PATCHES
> - $(if $(LINUX_PATCHES),
> - @$(call MESSAGE,"Download additional patches"))
> - $(foreach patch,$(filter ftp://% http://% https://%,$(LINUX_PATCHES)),\
> - $(call DOWNLOAD_WGET,$(patch),$(notdir $(patch)))$(sep))
> -endef
> -
> -LINUX_POST_DOWNLOAD_HOOKS += LINUX_DOWNLOAD_PATCHES
> -
> -define LINUX_APPLY_PATCHES
> - for p in $(LINUX_PATCHES) ; do \
> - if echo $$p | grep -q -E "^ftp://|^http://|^https://" ; then \
> - $(APPLY_PATCHES) $(@D) $(DL_DIR) `basename $$p` ; \
> - elif test -d $$p ; then \
> +define LINUX_APPLY_LOCAL_PATCHES
> + for p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \
> + if test -d $$p ; then \
> $(APPLY_PATCHES) $(@D) $$p linux-\*.patch ; \
> else \
> $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` ; \
> @@ -165,8 +159,7 @@ define LINUX_APPLY_PATCHES
> done
> endef
>
> -LINUX_POST_PATCH_HOOKS += LINUX_APPLY_PATCHES
> -
> +LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES
>
> ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
> KERNEL_SOURCE_CONFIG = $(KERNEL_ARCH_PATH)/configs/$(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig
>
next prev parent reply other threads:[~2015-03-15 16:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-28 18:15 [Buildroot] [PATCH 0/7] Improvements to the download logic Thomas Petazzoni
2015-02-28 18:15 ` [Buildroot] [PATCH 1/7] linux: use the package infrastructure to download patches Thomas Petazzoni
2015-02-28 19:54 ` Baruch Siach
2015-03-15 14:59 ` Romain Naour
2015-03-15 15:14 ` Thomas Petazzoni
2015-03-15 15:58 ` Romain Naour
2015-03-22 15:15 ` Arnout Vandecappelle
2015-03-15 16:44 ` Romain Naour [this message]
2015-03-22 15:16 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 2/7] pkg-generic: fix the logic showing the "Downloading" message Thomas Petazzoni
2015-03-15 16:44 ` Romain Naour
2015-03-22 15:19 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 3/7] pkg-generic: take into account <pkg>_EXTRA_DOWNLOADS to display " Thomas Petazzoni
2015-03-15 16:44 ` Romain Naour
2015-03-22 15:20 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 4/7] pkg-generic: refactor the "Downloading" message logic Thomas Petazzoni
2015-03-15 16:44 ` Romain Naour
2015-03-22 15:29 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 5/7] pkg-generic: allow full URLs for <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-15 16:45 ` Romain Naour
2015-03-22 15:33 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 6/7] docs/manual: update documentation about <pkg>_SOURCE, <pkg>_PATCH and <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-15 16:45 ` Romain Naour
2015-03-22 15:58 ` Arnout Vandecappelle
2015-02-28 18:15 ` [Buildroot] [PATCH 7/7] perl: use <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-15 16:46 ` Romain Naour
2015-03-22 15:59 ` 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=5505B6E1.1010504@openwide.fr \
--to=romain.naour@openwide.fr \
--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.