From patchwork Mon Oct 7 20:03:13 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 2998971 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 0FEA69F245 for ; Mon, 7 Oct 2013 20:03:23 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 566FC20211 for ; Mon, 7 Oct 2013 20:03:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BB7FD2020F for ; Mon, 7 Oct 2013 20:03:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756238Ab3JGUDP (ORCPT ); Mon, 7 Oct 2013 16:03:15 -0400 Received: from smtp.codeaurora.org ([198.145.11.231]:59464 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751995Ab3JGUDO (ORCPT ); Mon, 7 Oct 2013 16:03:14 -0400 Received: from smtp.codeaurora.org (localhost [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id 479DF13EF6B; Mon, 7 Oct 2013 20:03:14 +0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 486) id 3788F13F28D; Mon, 7 Oct 2013 20:03:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from [10.46.166.8] (i-global252.qualcomm.com [199.106.103.252]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: sboyd@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id A74AA13EF6B; Mon, 7 Oct 2013 20:03:13 +0000 (UTC) Message-ID: <52531381.8070607@codeaurora.org> Date: Mon, 07 Oct 2013 13:03:13 -0700 From: Stephen Boyd User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: Russell King - ARM Linux CC: linux-arm-kernel@lists.infradead.org, linux-kbuild@vger.kernel.org Subject: Re: Bug: kbuild always rebuilds compressed images on ARM References: <20131005131706.GY12758@n2100.arm.linux.org.uk> In-Reply-To: <20131005131706.GY12758@n2100.arm.linux.org.uk> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 10/05/13 06:17, Russell King - ARM Linux wrote: > Hi, > > I've noticed that kbuild always rebuilds the compressed piggy image > on ARM. Here's the output from running make with V=2: > > CALL /home/rmk/git/linux-rmk/scripts/checksyscalls.sh - due to target missing > CHK include/generated/compile.h > Kernel: arch/arm/boot/Image is ready > Building modules, stage 2. > LZO arch/arm/boot/compressed/piggy.lzo - due to command line change > MODPOST 17 modules - due to target is PHONY > AS arch/arm/boot/compressed/piggy.lzo.o - due to: arch/arm/boot/compressed/piggy.lzo > LD arch/arm/boot/compressed/vmlinux - due to: arch/arm/boot/compressed/piggy.lzo.o > OBJCOPY arch/arm/boot/zImage - due to: arch/arm/boot/compressed/vmlinux > Kernel: arch/arm/boot/zImage is ready > > and with V=1: > > ... > make -f /home/rmk/git/linux-rmk/scripts/Makefile.build obj=arch/arm/boot/compressed arch/arm/boot/compressed/vmlinux > make -f /home/rmk/git/linux-rmk/scripts/Makefile.modpost > find .tmp_versions -name '*.mod' | xargs -r grep -h '\.ko$' | sort -u | sed 's/\.ko$/.o/' | scripts/mod/modpost -m -a -o /home/rmk/git/build/imx6/Module.symvers -S -s -T - > (cat arch/arm/boot/compressed/../Image | lzop -9 && printf \\010\\224\\034\\002) > arch/arm/boot/compressed/piggy.lzo || (rm -f arch/arm/boot/compressed/piggy.lzo ; false) There are double slashes here '\\' > make -f /home/rmk/git/linux-rmk/scripts/Makefile.fwinst obj=firmware __fw_modbuild > ... > > The arch/arm/boot/compressed/.piggy.lzo.cmd file contains this: > > cmd_arch/arm/boot/compressed/piggy.lzo := (cat arch/arm/boot/compressed/../Image | lzop -9 && printf \\\\010\\\\224\\\\034\\\\002) > arch/arm/boot/compressed/piggy.lzo || (rm -f arch/arm/boot/compressed/piggy.lzo ; false) But then there are quadruple slashes here '\\\\'. That seems to be causing kbuild to rebuild each time. > > Any ideas why it thinks that the command has changed? This hack seems to work, but I'm not convinced it's the right solution. diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 547e15d..bfc0b79 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -209,7 +209,7 @@ endif # >$< substitution to preserve $ when reloading .cmd file # note: when using inline perl scripts [perl -e '...$$t=1;...'] # in $(cmd_xxx) double $$ your perl vars -make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))) +make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))) # Find any prerequisites that is newer than target or that does not exist. # PHONY targets skipped in both cases.