issues with bsdgrep and lang/go

Alexander Best arundel at freebsd.org
Tue Aug 9 18:22:16 UTC 2011


On Tue Aug  9 11, Test Rat wrote:
> Alexander Best <arundel at freebsd.org> writes:
> 
> > On Tue Aug  9 11, Test Rat wrote:
> >> Alexander Best <arundel at freebsd.org> writes:
> >> 
> >> [...]
> >> > gmake -C 6g install
> >> > gmake[1]: Entering directory `/usr/ports/lang/go/work/go-20110515/src/cmd/6g'
> >> > quietgcc -I"/usr/ports/lang/go/work/go-20110515/include" -ggdb -O2 -c "/usr/ports/lang/go/work/go-20110515/src/cmd/6g/list.c"
> >> > egrep: : error: .Each undeclared identifier|: error: for each function
> >> > it appears|is dangerous, better use|is almost always misused|: In
> >> > function |: At top level: |In file included from| from: No such file
> >> > or directory
> >> 
> >> Do you use GREP_OPTIONS?
> >
> > otaku% type $GREP_OPTIONS
> > otaku% echo foo | env -i GREP_OPTIONS= bsdgrep foo
> > env: bsdgrep: No such file or directory
> > otaku%
> 
> Actually, it's lang/go that seems to set the environment variable.
> 
>   $ fgrep -r GREP_OPTIONS $(make -V WRKSRC)
>   .../src/cmd/gc/mkopnames:export GREP_OPTIONS=""
>   .../src/Make.inc:GREP_OPTIONS:=
>   .../src/Make.inc:export LANG LC_ALL LC_CTYPE GREP_OPTIONS GREP_COLORS
>   .../src/Make.inc: @echo export GREP_OPTIONS="$(GREP_OPTIONS)"
>   .../test/run:unset GREP_OPTIONS   # in case user has a non-standard set
>   .../doc/devel/weekly.html:* build: clear custom variables like GREP_OPTIONS,
> 
> Try below workaround. It also makes empty GREP_COLOR behave like gnugrep(1).

thanks a bunch. after applying your patch lang/go builds without any issues! :)

cheers.
alex

> 
> %%
> Index: usr.bin/grep/grep.c
> ===================================================================
> --- usr.bin/grep/grep.c	(revision 224705)
> +++ usr.bin/grep/grep.c	(working copy)
> @@ -304,7 +304,7 @@ init_color(const char *d)
>  	char *c;
>  
>  	c = getenv("GREP_COLOR");
> -	return (c != NULL ? c : d);
> +	return (c != NULL && c[0] != '\0' ? c : d);
>  }
>  
>  int
> @@ -360,7 +360,7 @@ main(int argc, char *argv[])
>  
>  	/* support for extra arguments in GREP_OPTIONS */
>  	eargc = 0;
> -	if (eopts != NULL) {
> +	if (eopts != NULL && eopts[0] != '\0') {
>  		char *str;
>  
>  		/* make an estimation of how many extra arguments we have */
> @@ -373,6 +373,7 @@ main(int argc, char *argv[])
>  		eargc = 0;
>  		/* parse extra arguments */
>  		while ((str = strsep(&eopts, " ")) != NULL)
> +			if(*str != '\0')
>  			eargv[eargc++] = grep_strdup(str);
>  
>  		aargv = (char **)grep_calloc(eargc + argc + 1,
> %%


More information about the freebsd-current mailing list