Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3828826ybz; Tue, 28 Apr 2020 00:55:10 -0700 (PDT) X-Google-Smtp-Source: APiQypKkpeUzSjLgqqKIkpehZL2CXbhAbYaunb5c+Fe8yapb1JqERGMgdJdaKiz3u81mOXxMqEIR X-Received: by 2002:aa7:cc03:: with SMTP id q3mr22044187edt.131.1588060510654; Tue, 28 Apr 2020 00:55:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588060510; cv=none; d=google.com; s=arc-20160816; b=jD6rGeK50YAYmQuPCAAfczU7lw7ittpKVHNKTjhE1I4cunNHF3AfqeHjzIHst9DaFB 1HcfwNtw5S3Tqdfu2RpVnbYHqGqemvEdranYGgTHpHac07kMbQT4JQNqVthwjxjhrKSp pOFR++Uog9gR4yU1NdaZisHbFpX511998FB1HgSzM4bQvKg7pBirS1FH0ji5I2+SpFG6 p0bLSgBhkH7dhpvepwgv7PkNm+uNLlV7SXjs/TQlJ0QKXxOhg/MCt2Dnbx4mQWce+MZm fpXBMxAasDUQlALHdEEMzA+oVULT9nsHDP7kjGXvC8W4YustBm1SnGjFKLZLJMHXkbPq F/OQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature:dkim-filter; bh=QPAQvrairyv/g99zYJPMQ7WDBrdaFd2bW853qF/5aXc=; b=aF8Mdjj5M0EUU28LX9c4fXU8dpg1qfkFmp4ayFpr895SJFcKrCk2+/Mdel50zgnPG5 HvoGvCunEEM9n+BllV1nyPrmyEJes5Mgc8eSRc5ziVZftLPUBt16obTbUtjHW+hxcNb9 U4tLSgpRS8nFgsyoGG8HmH73yZZQGqF1syYs3d4QtDieMh2IErOi4PAkMtByVALqQB7j OOtv6FeZApLrTqeno1Fu9adbqOpNBD3vvnKcoo9kEn2tGrnJWnecd7NrI9SgprXgHbPY eOnhysNxFYUFxJfjMcfBSTgHC8OZaitgPaVq98BNPSPMzOKHW0T6g7oZaoHPmJRQzHdi YuWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=weNGx2Z6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b61si1049149edf.322.2020.04.28.00.54.47; Tue, 28 Apr 2020 00:55:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nifty.com header.s=dec2015msa header.b=weNGx2Z6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726744AbgD1Hw4 (ORCPT + 99 others); Tue, 28 Apr 2020 03:52:56 -0400 Received: from conssluserg-04.nifty.com ([210.131.2.83]:25769 "EHLO conssluserg-04.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726291AbgD1Hwy (ORCPT ); Tue, 28 Apr 2020 03:52:54 -0400 Received: from mail-ua1-f49.google.com (mail-ua1-f49.google.com [209.85.222.49]) (authenticated) by conssluserg-04.nifty.com with ESMTP id 03S7qc6L011853 for ; Tue, 28 Apr 2020 16:52:39 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-04.nifty.com 03S7qc6L011853 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1588060359; bh=QPAQvrairyv/g99zYJPMQ7WDBrdaFd2bW853qF/5aXc=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=weNGx2Z6XS22im/pq2oCo5m4ZGkjz8I6CaacYx34oPH/F0fcfs4tQmQg0YKNLqQy0 E3jeQgZrr+7lp8hJ7D0A1s2fBFDrfO3C696AmbP7raL6yn3Elj9cPJNL0eOwR/ohM4 9Ku3EZj2XI5yPnj2zzYnXLSazlNklCTtH5Q8/WrPOIqRQB16cz0Rolto0tWmqisGBy VyIJWJ4Qr6UivZSvpHdj9FEKM/4i2TNbpDks/VBcW2T5FKoZJs2SbOle6eez2idkt2 TL0vpcH0B2aIWM/B9nHbqLcZ+359ObscbHcnVMX/+1fCi5W7qfwktuetTP5QVOVO3i /3w1Tk6RuZQpQ== X-Nifty-SrcIP: [209.85.222.49] Received: by mail-ua1-f49.google.com with SMTP id b6so6609399uak.6 for ; Tue, 28 Apr 2020 00:52:38 -0700 (PDT) X-Gm-Message-State: AGi0PuaH7mxTv9T7KIMEXjwzLG8mUJR/blGXTa9LjaBreV+7w0RYNAxl yV7KoOQAFm1Yf/EdzkDk/wIqshgz8wRXtWB+8Tw= X-Received: by 2002:ab0:cd:: with SMTP id 71mr18483445uaj.109.1588060357644; Tue, 28 Apr 2020 00:52:37 -0700 (PDT) MIME-Version: 1.0 References: <20200425080343.GA2048673@kroah.com> <20200426024436.7534-1-xujialu@vimux.org> In-Reply-To: <20200426024436.7534-1-xujialu@vimux.org> From: Masahiro Yamada Date: Tue, 28 Apr 2020 16:52:01 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] scripts: gtags_files_generator.sh To: xujialu Cc: Greg Kroah-Hartman , Jonathan Corbet , Linux Kernel Mailing List , Andrew Morton , Mauro Carvalho Chehab Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Apr 26, 2020 at 11:48 AM xujialu wrote: > > Add a script to generate a more precise gtags.files from *.cmd files. > > For navigating linux sources, it will be more efficient if gtags/cscope > just collects source files that needed for compilation. The kernel > makefiles already create *.cmd files that contain the files we needed, > then just extracts files list from them and into gtags.files cause it's > the the default name list file for gtags. This is unneeded. scripts/tags.sh supports COMPILED_SOURCE=1 to collect tags only from compiled sources. Please do not reinvent the wheel to achieve similar things. $ time make COMPILED_SOURCE=1 gtags GEN gtags real 0m7.623s user 0m7.459s sys 0m1.124s is fine for me. If the existing code is problematic, we need to improve it, not add the second one. > > make defconfig > make > scripts/gtags_files_generator.sh > gtags [-f gtags.files] > > Enjoy with vim+gtags. :) > > Here is a log for comparison with 'make gtags': > > $ time make ARCH=arm cscope > GEN cscope > > real 1m20.600s > user 1m36.004s > sys 0m8.192s > $ wc -l cscope.files > 31201 cscope.files #collected too many files we don't care > > $ time ./scripts/gtags_files_generator.sh > > Succeed, 3716 gtags.files listed! > > real 0m1.593s #collected files only we care > user 0m1.704s > sys 0m0.256s > #collected also dts and dtsi Why do you need to collect dts and dtsi? > $ grep dts gtags.files > arch/arm/boot/dts/xxxxxx-clocks.dtsi > arch/arm/boot/dts/xxxxxx.dtsi > arch/arm/boot/dts/xxxxxxxx.dts > arch/arm/boot/dts/xxxxxxxx.dtsi > > Signed-off-by: xujialu > --- > scripts/gtags_files_generator.sh | 48 ++++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > create mode 100755 scripts/gtags_files_generator.sh > > diff --git a/scripts/gtags_files_generator.sh b/scripts/gtags_files_generator.sh > new file mode 100755 > index 000000000000..04698d9234a7 > --- /dev/null > +++ b/scripts/gtags_files_generator.sh > @@ -0,0 +1,48 @@ > +#!/bin/bash -e > +# SPDX-License-Identifier: GPL-2.0 > +# > +# Author: xujialu > +# > +# A script for generating gtags.files after compilation. > +# > +# Usage: > +# make defconfig > +# make > +# scripts/gtags_files_generator.sh > +# gtags [-f gtags.files] > + > + > +gtags_files_list() > +{ > + ls ${AUTOCONF_H} $(realpath -e --relative-to=. \ > + $(find ${KBUILD_OUTPUT} -name "*$1.cmd" -exec \ > + grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ | > + awk '!a[$0]++' | sed "s,^,${KBUILD_OUTPUT},") | > + sed -e '/\.\./d' | awk '!a[$0]++' > + ) > +} > + > +gtags_files_generator() > +{ > + GTAGS_FILES=$PWD/gtags.files > + > + echo && [ $# = 1 ] && cd $1 > + > + SYSTEM_MAP=$(find -name System.map -print -quit) > + > + [ -z "${SYSTEM_MAP}" ] && echo "Failed, please compile first!" && exit 1 > + > + KBUILD_OUTPUT=${SYSTEM_MAP%/*}/ > + KBUILD_OUTPUT=${KBUILD_OUTPUT#*/} > + > + AUTOCONF_H=${KBUILD_OUTPUT}include/generated/autoconf.h > + > + grep Configuration ${AUTOCONF_H} | sed 's/ \* //' > + gtags_files_list > ${GTAGS_FILES} > + > + echo && [ $# = 1 ] && sed -i "s|^|$1|" ${GTAGS_FILES} > + > + echo "Succeed, $(wc -l ${GTAGS_FILES}) listed!" > +} > + > +gtags_files_generator $1 2>/dev/null > -- > 2.20.1 > -- Best Regards Masahiro Yamada