From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751695AbcFUVDr (ORCPT ); Tue, 21 Jun 2016 17:03:47 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:18658 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751524AbcFUVDp (ORCPT ); Tue, 21 Jun 2016 17:03:45 -0400 X-IronPort-AV: E=Sophos;i="5.26,506,1459807200"; d="scan'208";a="182057860" Date: Tue, 21 Jun 2016 23:02:49 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@localhost6.localdomain6 To: "Luis R. Rodriguez" cc: Julia Lawall , dmitry.torokhov@gmail.com, tiwai@suse.de, ming.lei@canonical.com, stephen.boyd@linaro.org, deepa.kernel@gmail.com, chunkeey@googlemail.com, cocci@systeme.lip6.fr, jwboyer@fedoraproject.org, jslaby@suse.com, zohar@linux.vnet.ibm.com, dwmw2@infradead.org, hauke@hauke-m.de, broonie@kernel.org, akpm@linux-foundation.org, gregkh@linuxfoundation.org, markivx@codeaurora.org, linux-kernel@vger.kernel.org, mmarek@suse.com, johannes@sipsolutions.net, torvalds@linux-foundation.org Subject: Re: [Cocci] [PATCH v3 0/8] coccicheck: modernize In-Reply-To: <20160621205100.GV25646@wotan.suse.de> Message-ID: References: <1466536893-23355-1-git-send-email-mcgrof@kernel.org> <20160621205100.GV25646@wotan.suse.de> User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 21 Jun 2016, Luis R. Rodriguez wrote: > On Tue, Jun 21, 2016 at 10:13:31PM +0200, Julia Lawall wrote: > > > > > > On Tue, 21 Jun 2016, Luis R. Rodriguez wrote: > > > > > This v3 series addresses the feedback from the last v2 series > > > on the coccicheck enhancements [0], namely: > > > > > > o it drops the indexing heuristics in favor for a .cocciconfig use > > > o drops glimpse support as its simply not well maintained, recommends > > > idutils instead. > > > o adds a Linux .cocciconfig -- the assumption is you'd run spatch when > > > you're at the top level of the kernel. This has not only the side effect > > > of picking up .cocciconfig, but also that the coccicheck use of the > > > make variables passed on are assumed to be correct given the base > > > directory as the current directory. > > > > I don't understand this point. Coccinelle picks up the .cocciconfig, if > > any, of the directory on which you want to work, not of the current one. > > The order of precedence for variables for .coccoconfig is as follows: > > o Your current user's home directory is processed first > o Your directory from which spatch is called is processed next > o The directory provided with the --dir option is processed last, if used > > Since coccicheck runs through make, it naturally runs from the kernel proper > dir, as such the second rule above would be implied for picking up a .cocciconfig. > That's part of the point I'm making. OK > Up next let us consider when M= is used or when it is not used, if used > it populates KBUILD_EXTMOD. > > if [ "$KBUILD_EXTMOD" = "" ] ; then > OPTIONS="--dir $srctree $COCCIINCLUDE" > else > OPTIONS="--dir $KBUILD_EXTMOD $COCCIINCLUDE" > fi > > Either way --dir is used, so the third rule applies and so your .cocciconfig > from there is also read if one is found. My other point was that $COCCIINCLUDE > has some useful tidbits of includes for coccinelle, and that also assumes > one is on the top level dir of the kernel. OK. > That is sanitized as follows: > > # spatch only allows include directories with the syntax "-I include" > # while gcc also allows "-Iinclude" and "-include include" > COCCIINCLUDE=${LINUXINCLUDE//-I/-I } > COCCIINCLUDE=${COCCIINCLUDE// -include/ --include} I don't get the second case. Is it to replace -include by --include? Coccinelle actually supports both, although it doesn't advertise that. Also, in LINUXINCLUDE, what is the meaning of -include? For Coccinelle, it is not the same as -I. It is for files that should be included that are not in the set of includes seen by whatever is the specified include strategy (--all-includes, etc). The argument is a specific file name, not a directory. It is a way of eg not bothering with --recursive-includes when there is one or a few key header files that each file will need. > So the point is to annotate that the .cocconfig is picked up first due > to the fact make is used and its issued from the top level makefile > and starts from the top level. The fact that --dir is used is important > but secondary to its introduction as well. OK, the original text seemed to me to imply that running from the kernel directory was essential to getting the kernels .cocciconfig, so I wanted to point out that this is not the case. julia