Received: by 2002:ac0:8c9a:0:0:0:0:0 with SMTP id r26csp2509827ima; Sun, 3 Feb 2019 00:51:58 -0800 (PST) X-Google-Smtp-Source: AHgI3IYoV5YIWyYIAzLNX/aGbxQlPM2XLhBCs6Azi03R0qJoAgPYUD+BSI9BbMXq28/f+J1fGIuc X-Received: by 2002:a65:62d9:: with SMTP id m25mr1903777pgv.168.1549183918380; Sun, 03 Feb 2019 00:51:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549183918; cv=none; d=google.com; s=arc-20160816; b=uDD3Z7rPtDnIUlWgeAcijeRTGTkb7+2UF2ofOCCXeVVze/cIE7yK/pL69AAfPg7ijQ iuRRUJclWIygvPyaQyl40L/77+YUNfKPwbXmVa5A9Mi8+Zssw6PK3aev0+iJP3tIsizI 4kpwOAxX8ypnbHSyfecKS8YPW4DaO+EwUQwyg8P9Ka1lLDal8s3/MXYe3JLgPsX80hqz K6tC9bdgRJ6MZoA2p0iPZZPqurycyXnjI1mrRhSEbRbIQyfUdNZiYJyBcru9hVMC2b3b WyTUK97g5lUUEEsHjYdYreKKyM0Ov16FctmY8aU7wBPSJdhyLELB7GBnJYPEzl1nS8FY WAIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=QHKWAFcUWouetYqDQ3nEL/oxWzLGaQnfuRiHT2/huxg=; b=qgWG4hc6eXpYQwAByzMhZzRRZo/gmRGK8nGgxagGUu5UNeTLeVPykjbgg2Q7pBIgWX /j2MYk4HqUJW89sgCJqqkjeDhjAfO3M+rJ3v2cx6ucZfi8Y7i/R6PiVOgZdjxkvZyMlN NAr/6Gp3beFXizW6zx7QPBtH79HSLkkWlttwAXzN8vZPR0VDeWC6rqS5xk3qc4OFV30d JqnY4llZkeXIvNX0x1DRlvihyMqqKAFAPPIq1ie9Xi224/8OvHU/EZQBTRCVDN9DQaWQ baISPOhetXJSmOWVHO1uHPF1fQYcPnaEuckfUOQv5/nPn5dWKl9zjqHyJhLk8vJemN/X iKEQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13si4679823pgq.404.2019.02.03.00.51.42; Sun, 03 Feb 2019 00:51:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727728AbfBCIvH (ORCPT + 99 others); Sun, 3 Feb 2019 03:51:07 -0500 Received: from mga01.intel.com ([192.55.52.88]:59924 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727362AbfBCIvB (ORCPT ); Sun, 3 Feb 2019 03:51:01 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Feb 2019 00:51:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,555,1539673200"; d="scan'208";a="114902348" Received: from cvg-ubt08.iil.intel.com (HELO [143.185.152.136]) ([143.185.152.136]) by orsmga008.jf.intel.com with ESMTP; 03 Feb 2019 00:50:59 -0800 Subject: Re: [PATCH] kbuild: gitignore output directory To: Masahiro Yamada Cc: Michal Marek , Linux Kbuild mailing list , Linux Kernel Mailing List References: <20190130111447.26032-1-vladimir.kondratiev@linux.intel.com> From: Vladimir Kondratiev Message-ID: <10f0f786-6d91-7eba-c057-96c6c00544e8@linux.intel.com> Date: Sun, 3 Feb 2019 10:50:58 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Agree; sending v2 On 2/1/19 6:18 AM, Masahiro Yamada wrote: > On Wed, Jan 30, 2019 at 8:15 PM Vladimir Kondratiev > wrote: >> >> When compiling into output directory using O=, many files >> created under KBUILD_OUTPUT that git considers >> as new ones; git clients, ex. "git gui" lists it, and it clutters >> file list making it difficult to see what was really changed >> >> Generate .gitignore in output directory that ignores all >> its content >> >> Signed-off-by: Vladimir Kondratiev >> --- >> Makefile | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/Makefile b/Makefile >> index 141653226f3c..ee66ea28869b 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -483,10 +483,13 @@ PHONY += outputmakefile >> # outputmakefile generates a Makefile in the output directory, if using a >> # separate output directory. This allows convenient use of make in the >> # output directory. >> +# At the same time when output Makefile generated, generate .gitignore to >> +# ignore whole output directory >> outputmakefile: >> ifneq ($(KBUILD_SRC),) >> $(Q)ln -fsn $(srctree) source >> $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) >> + echo "# this is build directory, ignore it\n*" > .gitignore >> endif >> >> ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) >> -- >> 2.19.1 >> > > > The idea looks OK to me. > The implementation must be improved. > > > You need to add $(Q) to suppress the annoying command echo. > > Also, this patch does not work for all distributions because > echo "\n" > is not portable. > > > > GNU Make runs recipes in /bin/sh (unless SHELL variable is changed), > but the implementation of /bin/sh depends on distributions. > > > This patch works on Ubuntu etc. > because /bin/sh is a symbolic link to dash. > > > But, in some distributions, > /bin/sh is a symbolic link to bash. > > > > Docker is useful for quick tests of > various distributions. :) > > See the result of echo "hello\nworld" > > > [Ubuntu] > > foo@8ad1275125c5:~$ cat /etc/lsb-release > DISTRIB_ID=Ubuntu > DISTRIB_RELEASE=18.10 > DISTRIB_CODENAME=cosmic > DISTRIB_DESCRIPTION="Ubuntu 18.10" > foo@8ad1275125c5:~$ ls -l /bin/sh > lrwxrwxrwx 1 root root 4 Nov 14 23:00 /bin/sh -> dash > foo@8ad1275125c5:~$ /bin/sh > $ type echo > echo is a shell builtin > $ echo "hello\nworld" > hello > world > > > > > [CentOS] > > > [foo@c3fbaa4b6f72 ~]$ cat /etc/redhat-release > CentOS Linux release 7.6.1810 (Core) > [foo@c3fbaa4b6f72 ~]$ ls -l /bin/sh > lrwxrwxrwx 1 root root 4 Dec 5 01:36 /bin/sh -> bash > [foo@c3fbaa4b6f72 ~]$ /bin/sh > sh-4.2$ type echo > echo is a shell builtin > sh-4.2$ echo "hello\nworld" > hello\nworld > > > > > > On example for workaround might be: > > diff --git a/Makefile b/Makefile > index ee66ea2..010c1c6 100644 > --- a/Makefile > +++ b/Makefile > @@ -489,7 +489,7 @@ outputmakefile: > ifneq ($(KBUILD_SRC),) > $(Q)ln -fsn $(srctree) source > $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree) > - echo "# this is build directory, ignore it\n*" > .gitignore > + $(Q){ echo "# this is build directory, ignore it"; echo "*"; } >> .gitignore > endif > > ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),) > > > > > >