From patchwork Sat Feb 28 18:15:07 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 444656 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id 6F56614012A for ; Sun, 1 Mar 2015 05:15:32 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 97FE091B08; Sat, 28 Feb 2015 18:15:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lp+Davcb5o70; Sat, 28 Feb 2015 18:15:29 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 463269190B; Sat, 28 Feb 2015 18:15:29 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 95D911BF978 for ; Sat, 28 Feb 2015 18:15:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 9276EA2913 for ; Sat, 28 Feb 2015 18:15:24 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id j1NjkDivGnV8 for ; Sat, 28 Feb 2015 18:15:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.free-electrons.com (down.free-electrons.com [37.187.137.238]) by fraxinus.osuosl.org (Postfix) with ESMTP id 4CC3CA28D7 for ; Sat, 28 Feb 2015 18:15:23 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 106) id A0BC15E5; Sat, 28 Feb 2015 19:15:28 +0100 (CET) Received: from localhost (unknown [37.162.115.79]) by mail.free-electrons.com (Postfix) with ESMTPSA id 5AF4177; Sat, 28 Feb 2015 19:15:28 +0100 (CET) From: Thomas Petazzoni To: buildroot@uclibc.org Date: Sat, 28 Feb 2015 19:15:07 +0100 Message-Id: <1425147313-17380-2-git-send-email-thomas.petazzoni@free-electrons.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1425147313-17380-1-git-send-email-thomas.petazzoni@free-electrons.com> References: <1425147313-17380-1-git-send-email-thomas.petazzoni@free-electrons.com> Cc: Thomas Petazzoni Subject: [Buildroot] [PATCH 1/7] linux: use the package infrastructure to download patches X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" 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 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 _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 Reviewed-by: Romain Naour Acked-by: Arnout Vandecappelle (Essensium/Mind) --- 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 +# 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