Skip to contentSkip to conversation

Makefile: fix error when gen TAGS

PATCH In review Yang Bai 2 participants 6 messages Mar 12, 2012

lore
Share & tools
lore

Yang Bai

author
#0 lore raw

PATCH 1/1 Makefile: fix error when gen TAGS

scripts/tags.sh has a problem that it does not
test which kind of tags we are generating and
assumes tags. So when gen TAGS it shows:
GEN TAGS
sed: can't read tags: No such file or directory
make: *** [TAGS] Error 2

---
 scripts/tags.sh |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
scripts/tags.sh +5 -1
index 833813a..ce94e34 100755
@@ -168,7 +168,11 @@ exuberant()
 	--regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'
 
 	# Remove structure forward declarations.
-	LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+	if [[ -e tags ]]; then
+	    LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+	else
+	    LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' TAGS
+	fi
 }
 
 emacs()
Signature · 1 line
1.7.9.1
#1 lore raw
Quoted 18 lines · Yang Bai

scripts/tags.sh has a problem that it does not test which kind of tags we are generating and assumes tags. So when gen TAGS it shows:
GEN TAGS
sed: can't read tags: No such file or directory
make: *** [TAGS] Error 2

---
  scripts/tags.sh |    6 +++++-
  1 files changed, 5 insertions(+), 1 deletions(-)
scripts/tags.sh +0 -0
index 833813a..ce94e34 100755
@@ -168,7 +168,11 @@ exuberant()
  	--regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'

scripts/tags.sh exuberant() · line 177

Quoted 10 lines
scripts/tags.sh +5 -1
 
  	# Remove structure forward declarations.
-	LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+	if [[ -e tags ]]; then
+	    LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+	else
+	    LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' TAGS
+	fi
  }
 

What does ctags --version print out for you? I'm not aware of exuberant tags outputting files called TAGS (although etags would do that and then this patch wouldn't make sense).

It would be nice if etags was updated to take care of this forward declaration removal. Care to send that patch?

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
author
#2 lore raw
Quoted 5 lines · Stephen Boyd

What does ctags --version print out for you? I'm not aware of exuberant tags outputting files called TAGS (although etags would do that and then this patch wouldn't make sense).

hamo@trinity ~ $ ctags --version
Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Nov 9 2011, 03:17:31
Addresses: <[email protected]>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex

hamo@trinity ~ $ etags --version
Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Nov 9 2011, 03:17:31
Addresses: <[email protected]>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex

hamo@trinity ~ $ ls -l /usr/bin/etags
lrwxrwxrwx 1 root root 23 Feb 8 17:48 /usr/bin/etags -> /etc/alternatives/etags hamo@trinity ~ $ ls -l /etc/alternatives/etags
lrwxrwxrwx 1 root root 24 Feb 15 10:06 /etc/alternatives/etags -> /usr/bin/ctags-exuberant

So I think which kind of name Exuberant Ctags generates depends on argv[0].

Quoted 4 lines

It would be nice if etags was updated to take care of this forward declaration removal. Care to send that patch?

Yes. I will send this patch soon.

#3 lore raw
Quoted 17 lines · Yang Bai
Quoted 4 lines · Stephen Boyd

What does ctags --version print out for you? I'm not aware of exuberant tags outputting files called TAGS (although etags would do that and then this patch wouldn't make sense).

hamo@trinity ~ $ ctags --version
Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Nov 9 2011, 03:17:31 Addresses:<[email protected]>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex

hamo@trinity ~ $ etags --version
Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Nov 9 2011, 03:17:31 Addresses:<[email protected]>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex

Quoted 8 lines

hamo@trinity ~ $ ls -l /usr/bin/etags
lrwxrwxrwx 1 root root 23 Feb 8 17:48 /usr/bin/etags -> /etc/alternatives/etags hamo@trinity ~ $ ls -l /etc/alternatives/etags
lrwxrwxrwx 1 root root 24 Feb 15 10:06 /etc/alternatives/etags -> /usr/bin/ctags-exuberant

So I think which kind of name Exuberant Ctags generates depends on argv[0].

Ah ok. How about this patch instead? Then we don't duplicate the sed statement.

---->8-------

scripts/tags.sh +5 -5
index 833813a..b390096 100755
@@ -168,7 +168,7 @@ exuberant()
        --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'
 
        # Remove structure forward declarations.
-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $2
 }
 
 emacs()
@@ -213,9 +213,9 @@ emacs()
 xtags()
 {
        if $1 --version 2>&1 | grep -iq exuberant; then
-               exuberant $1
+               exuberant $1 $2
        elif $1 --version 2>&1 | grep -iq emacs; then
-               emacs $1
+               emacs $1 $2
        else
                all_sources | xargs $1 -a
         fi
@@ -244,11 +244,11 @@ case "$1" in
 
        "tags")
                rm -f tags
-               xtags ctags
+               xtags ctags $1
                ;;
 
        "TAGS")
                rm -f TAGS
-               xtags etags
+               xtags etags $1
                ;;
 esac

But then with your next patch maybe it would be better to just have a flag?

----8<-----

scripts/tags.sh +10 -5
index 833813a..4b1755d 100755
@@ -166,9 +166,6 @@ exuberant()
        all_defconfigs | xargs -r $1 -a                         \
        --langdef=dotconfig --language-force=dotconfig          \
        --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'
-
-       # Remove structure forward declarations.
-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
 }
 
 emacs()
@@ -233,6 +230,7 @@ if [ "${ARCH}" = "um" ]; then
        fi
 fi
 
+remove_structs=
 case "$1" in
        "cscope")
                docscope
@@ -244,11 +242,18 @@ case "$1" in
 
        "tags")
                rm -f tags
-               xtags ctags
+               xtags ctags $1
+               remove_structs=y
                ;;
 
        "TAGS")
                rm -f TAGS
-               xtags etags
+               xtags etags $1
+               remove_structs=y
                ;;
 esac
+
+# Remove structure forward declarations.
+if [ -n $remove_structs ]; then
+       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $1
+fi
Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
author
#4 lore raw
Quoted 82 lines · Stephen Boyd

Ah ok. How about this patch instead? Then we don't duplicate the sed statement.

---->8-------

scripts/tags.sh +0 -0
index 833813a..b390096 100755
@@ -168,7 +168,7 @@ exuberant()
 

       --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'

       # Remove structure forward declarations.
-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
+       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' $2
 }

 emacs()

scripts/tags.sh +0 -0
@@ -213,9 +213,9 @@ emacs()
  xtags()
  {

       if $1 --version 2>&1 | grep -iq exuberant; then
-               exuberant $1
+               exuberant $1 $2
       elif $1 --version 2>&1 | grep -iq emacs; then
-               emacs $1
+               emacs $1 $2
       else
               all_sources | xargs $1 -a
        fi

scripts/tags.sh +0 -0
@@ -244,11 +244,11 @@ case "$1" in
 
        "tags")

               rm -f tags
-               xtags ctags
+               xtags ctags $1
               ;;

       "TAGS")
               rm -f TAGS
-               xtags etags
+               xtags etags $1
               ;;
 esac

But then with your next patch maybe it would be better to just have a flag?

----8<-----

scripts/tags.sh +0 -0
index 833813a..4b1755d 100755
@@ -166,9 +166,6 @@ exuberant()
        all_defconfigs | xargs -r $1 -a                         \
        --langdef=dotconfig --language-force=dotconfig          \
 

       --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/' -
-       # Remove structure forward declarations.

-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct \1;.*\$\/;"\tx$/d' tags
 }

 emacs()

scripts/tags.sh +0 -0
@@ -233,6 +230,7 @@ if [ "${ARCH}" = "um" ]; then

       fi
 fi

+remove_structs=
 case "$1" in
       "cscope")
               docscope

scripts/tags.sh +0 -0
@@ -244,11 +242,18 @@ case "$1" in
 
        "tags")
Quoted 3 lines

               rm -f tags
-               xtags ctags
+               xtags ctags $1

Why we need a $1 here??

Quoted 7 lines

+               remove_structs=y
               ;;

       "TAGS")
               rm -f TAGS
-               xtags etags
+               xtags etags $1

The same.

Quoted 10 lines

+               remove_structs=y
               ;;
 esac

scripts/tags.sh +4 -0
+
+# Remove structure forward declarations.
+if [ -n $remove_structs ]; then
+       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct

\1;.*\$\/;"\tx$/d' $1
+fi

This way is better but I don't understand why a $1 is there.
I think it is useless and if you agree with me, i will send a fine patch to you.

#5 lore raw
Quoted 94 lines · Yang Bai
Quoted 79 lines · Stephen Boyd

Ah ok. How about this patch instead? Then we don't duplicate the sed statement.

---->8-------

scripts/tags.sh +0 -1
index 833813a..b390096 100755
@@ -168,7 +168,7 @@ exuberant()
 
        --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'
 
        # Remove structure forward declarations.
-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct

\1;.*\$\/;"\tx$/d' tags
+ LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct
\1;.*\$\/;"\tx$/d' $2
}

emacs()

scripts/tags.sh +4 -4
@@ -213,9 +213,9 @@ emacs()
  xtags()
  {
        if $1 --version 2>&1 | grep -iq exuberant; then
-               exuberant $1
+               exuberant $1 $2
        elif $1 --version 2>&1 | grep -iq emacs; then
-               emacs $1
+               emacs $1 $2
        else
                all_sources | xargs $1 -a
         fi
@@ -244,11 +244,11 @@ case "$1" in
 
        "tags")
                rm -f tags
-               xtags ctags
+               xtags ctags $1
                ;;
 
        "TAGS")
                rm -f TAGS
-               xtags etags
+               xtags etags $1
                ;;
  esac

But then with your next patch maybe it would be better to just have a flag?

----8<-----

scripts/tags.sh +0 -3
index 833813a..4b1755d 100755
@@ -166,9 +166,6 @@ exuberant()
        all_defconfigs | xargs -r $1 -a                         \
        --langdef=dotconfig --language-force=dotconfig          \
 
        --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'
-
-       # Remove structure forward declarations.
 
-       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct

\1;.*\$\/;"\tx$/d' tags
}

emacs()

scripts/tags.sh +1 -0
@@ -233,6 +230,7 @@ if [ "${ARCH}" = "um" ]; then
        fi
  fi
 
+remove_structs=
  case "$1" in
        "cscope")
                docscope

scripts/tags.sh case "$1" in · line 245

Quoted 5 lines
scripts/tags.sh +1 -1
@@ -244,11 +242,18 @@ case "$1" in
 
        "tags")
                rm -f tags
-               xtags ctags
+               xtags ctags $1

Why we need a $1 here??

scripts/tags.sh case "$1" in · line 251

Quoted 7 lines
scripts/tags.sh +2 -1
+               remove_structs=y
                ;;
 
        "TAGS")
                rm -f TAGS
-               xtags etags
+               xtags etags $1

The same.

Quoted 12 lines
Quoted 10 lines
scripts/tags.sh +5 -0
+               remove_structs=y
                ;;
  esac
+
+# Remove structure forward declarations.
+if [ -n $remove_structs ]; then
+       LANG=C sed -i -e '/^\([a-zA-Z_][a-zA-Z0-9_]*\)\t.*\t\/\^struct

\1;.*\$\/;"\tx$/d' $1
+fi

This way is better but I don't understand why a $1 is there.
I think it is useless and if you agree with me, i will send a fine patch to you.

It's a holdover from the previous patch. Thanks for spotting/removing it.

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.