Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 01/35] linux: use the package infrastructure to download patches
Date: Sun, 29 Mar 2015 22:47:25 +0200	[thread overview]
Message-ID: <20150329204725.GB4093@free.fr> (raw)
In-Reply-To: <1427650429-9293-2-git-send-email-thomas.petazzoni@free-electrons.com>

Thomas, All,

On 2015-03-29 19:33 +0200, Thomas Petazzoni spake thusly:
> 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
>    mentioned in the Config.in option BR2_LINUX_KERNEL_PATCH. This
>    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.

I was wondering why this special-casing of local patches, since our
download and patch infras can deal with local files.

But that's because, for Linux, there can be directories in the list,
and this is what our download and patch infras can't deal with. This
should have been mentioned somewhere in the commit log, and commented
on in the code, below ...

> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Reviewed-by: Romain Naour <romain.naour@openwide.fr>
> ---
>  linux/linux.mk | 27 ++++++++++-----------------
>  1 file changed, 10 insertions(+), 17 deletions(-)
> 
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 5a0ba01..c25d106 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -42,6 +42,11 @@ endif
>  
>  LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
>  
> +# We rely on the generic package infrastructure to download and apply
> +# remote patches (downloaded from ftp, http or https). For local
> +# patches, we have a custom post-patch hook below.

... here, something like:

    # We rely on the generic package infrastructure to download and
    # apply remote patches (downloaded from ftp, http or https). For
    # local patches, we can't rely on that infr, because there might be
    # directories in the patch list (unlike for other packages).

Otherwise, looks sane to me...

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[tested with a local patch, then a remote patch]
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> +LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES))
> +
>  LINUX_INSTALL_IMAGES = YES
>  LINUX_DEPENDENCIES += host-kmod host-lzop
>  
> @@ -150,29 +155,17 @@ 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` || exit 1; \
> -		elif test -d $$p ; then \
> -			$(APPLY_PATCHES) $(@D) $$p linux-\*.patch || exit 1; \
> +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 || exit 1 ; \
>  		else \
>  			$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \
>  		fi \
>  	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
> -- 
> 2.1.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2015-03-29 20:47 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-29 17:33 [Buildroot] [PATCH 00/35] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 01/35] linux: use the package infrastructure to download patches Thomas Petazzoni
2015-03-29 20:47   ` Yann E. MORIN [this message]
2015-03-29 17:33 ` [Buildroot] [PATCH 02/35] pkg-generic: fix the logic showing the "Downloading" message Thomas Petazzoni
2015-03-29 20:48   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 03/35] pkg-generic: take into account <pkg>_EXTRA_DOWNLOADS to display " Thomas Petazzoni
2015-03-29 20:49   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 04/35] pkg-generic: refactor the "Downloading" message logic Thomas Petazzoni
2015-03-29 20:50   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 05/35] pkg-generic: allow full URLs for <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-29 21:08   ` Yann E. MORIN
2015-03-30  7:26     ` Thomas Petazzoni
2015-05-10 18:42   ` Bernd Kuhls
2015-03-29 17:33 ` [Buildroot] [PATCH 06/35] docs/manual: update documentation about <pkg>_SOURCE, <pkg>_PATCH and <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-29 21:10   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 07/35] perl: use <pkg>_EXTRA_DOWNLOADS Thomas Petazzoni
2015-03-29 21:15   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 08/35] packages: apply custom patches using *.patch instead of <pkg>-*.patch Thomas Petazzoni
2015-03-29 21:35   ` Yann E. MORIN
2015-03-30  7:29     ` Thomas Petazzoni
2015-03-30 16:22       ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 09/35] docs/manual: update documentation about applying patches Thomas Petazzoni
2015-03-29 21:40   ` Yann E. MORIN
2015-04-06  9:06     ` Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 10/35] pkg-generic: implement a <pkg>-external-deps target Thomas Petazzoni
2015-03-29 21:44   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 11/35] pkg-generic: implement <pkg>-all-{source, legal-info, external-deps} targets Thomas Petazzoni
2015-03-29 21:47   ` Yann E. MORIN
2015-03-30 17:45     ` Yann E. MORIN
2015-03-30 18:56       ` Thomas Petazzoni
2015-04-06  9:14       ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 12/35] Makefile: remove dubious comment Thomas Petazzoni
2015-03-29 21:50   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 13/35] Makefile: directories are not PHONY targets Thomas Petazzoni
2015-03-29 21:56   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 14/35] pkg-generic: declare phony targets as such Thomas Petazzoni
2015-03-29 22:05   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 15/35] pkg-kconfig: " Thomas Petazzoni
2015-03-29 22:08   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 16/35] fs: " Thomas Petazzoni
2015-03-29 22:16   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 17/35] Makefile: targets are now declared phony by the appropriate infrastructures Thomas Petazzoni
2015-03-29 22:22   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 18/35] Makefile: rename TARGETS to PACKAGES Thomas Petazzoni
2015-03-30 16:31   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 19/35] fs: add rootfs dependencies " Thomas Petazzoni
2015-03-30 16:33   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 20/35] Makefile: use <pkg>-all-legal-info to implement the legal-info target Thomas Petazzoni
2015-03-30 20:59   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 21/35] Makefile: simplify show-targets Thomas Petazzoni
2015-03-30 21:21   ` Yann E. MORIN
2015-03-30 21:40     ` Yann E. MORIN
2015-04-06  9:40     ` Thomas Petazzoni
2015-04-06  9:44   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 22/35] Makefile: use the package infra based external-deps Thomas Petazzoni
2015-03-30 21:43   ` Yann E. MORIN
2015-03-29 17:33 ` [Buildroot] [PATCH 23/35] pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 24/35] Makefile: move source-check outside of noconfig_targets Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 25/35] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 26/35] pkg-generic: implement source-check targets Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 27/35] Makefile: implement a package based source-check target Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 28/35] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 29/35] pkg-generic: don't use DL_MODE in .stamp_downloaded Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 30/35] pkg-download: get rid of DL_MODE Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 31/35] pkg-download: fix indentation for SOURCE_CHECK_* macros Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 32/35] pkg-generic: propagate <pkg>_EXTRA_DOWNLOADS from target to host package Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 33/35] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 34/35] Makefile: implement the 'source' target using the package infrastructure Thomas Petazzoni
2015-03-29 17:33 ` [Buildroot] [PATCH 35/35] Makefile: remove unneeded variables Thomas Petazzoni
2015-03-29 22:28 ` [Buildroot] [PATCH 00/35] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Yann E. MORIN
2015-03-30  7:23   ` Thomas Petazzoni
2015-03-30 21:42 ` Thomas Petazzoni
2015-04-06  9:33 ` Thomas Petazzoni

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=20150329204725.GB4093@free.fr \
    --to=yann.morin.1998@free.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox