From: | Jason Tishler <Jason(dot)Tishler(at)dothill(dot)com> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | Pgsql-Patches <pgsql-patches(at)postgresql(dot)org> |
Subject: | Re: src/backend/Makefile CDPATH Patch |
Date: | 2001-04-23 20:05:54 |
Message-ID: | 20010423160554.T169@dothill.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
Bruce,
On Mon, Apr 23, 2001 at 03:25:38PM -0400, Bruce Momjian wrote:
> > The above is due to the following:
> >
> > $ export CDPATH=.:/home/jt:/home/jt/src:/home/jt/lib
> > $ echo `cd parser/ && pwd`
> > /home/jt/src/pgsql/src/backend/parser /home/jt/src/pgsql/src/backend/parser
>
> Basically, you are telling me that if there are two matching parser
> directories, pwd gets set to _both_ of them. Sorry, I don't think we
> want to work around a bug like that, should we?
I guess that I was not explicit enough, so I will try again...
The extra directory name comes from bash's builtin cd echoing the
directory name when a match is found in the user's CDPATH. It is *not*
coming from pwd.
So, I still content that this is a bug in the Makefile. The construct
that is suspect is the following:
prereqdir=`cd $(dir $<) && pwd`
The above implicitly assumes that the "cd $(dir $<)" part does *not*
write to stdout. If it does then, prereqdir will end up as the
concatenation of "cd $(dir $<)" and "pwd".
Under bash, I get the following:
$ prereqdir=`cd parser/ && pwd`
$ echo "$prereqdir"
/home/jt/src/pgsql/src/backend/parser
/home/jt/src/pgsql/src/backend/parser
Under sh, I get the following:
$ prereqdir=`cd parser/ && pwd`
$ echo "$prereqdir"
/home/jt/src/pgsql/src/backend/parser
Hence, when the PostgreSQL build is run (where sh == bash), the ln
command generated by the Makefile:
ln -s $prereqdir/parse.h .
becomes the following:
ln -s /home/jt/src/pgsql/src/backend/parser # *** new line here ***
/home/jt/src/pgsql/src/backend/parser/parse.h .
which confuses ln and causes the make to fail.
Note this problem only occurs on our Red Hat Linux boxes because /bin/sh
is a symlink to /bin/bash. We do not have this problem under Cygwin or
Solaris.
Thanks,
Jason
--
Jason Tishler
Director, Software Engineering Phone: +1 (732) 264-8770 x235
Dot Hill Systems Corp. Fax: +1 (732) 264-8798
82 Bethany Road, Suite 7 Email: Jason(dot)Tishler(at)dothill(dot)com
Hazlet, NJ 07730 USA WWW: http://www.dothill.com
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-04-23 20:10:17 | Re: src/backend/Makefile CDPATH Patch |
Previous Message | Bruce Momjian | 2001-04-23 19:25:38 | Re: src/backend/Makefile CDPATH Patch |