Re: pg_regress: stat correct paths - Mailing list pgsql-patches
| From | Jorgen Austvik |
|---|---|
| Subject | Re: pg_regress: stat correct paths |
| Date | |
| Msg-id | 474B0201.4040405@sun.com Whole thread Raw |
| In response to | Re: pg_regress: stat correct paths (Tom Lane <tgl@sss.pgh.pa.us>) |
| Responses |
Re: pg_regress: stat correct paths
|
| List | pgsql-patches |
Tom Lane wrote:
> Jorgen Austvik <Jorgen.Austvik@Sun.COM> writes:
>> Tom Lane wrote:
>>> Actually, it looks to me like the patch is wrong specifically because
>>> it does not do the right thing in the VPATH case.
>
>> Are you thinking about "failing if the folders are missing" as "not the
>> right thing in the VPATH case", or are you thinking about something else?
>
> The point is that in VPATH you are running in a build tree, and should
> copy the source files from the source tree, but *not* modify the source
> tree. Thus, fetching relative to $srcdir but writing relative to .
> is in fact the correct behavior.
Ah, I understand.
It is this part you don't like:
---8<--------------8<--------------8<--------------8<--------------8<-----------
+ snprintf(destdir, MAXPGPATH, "%s/%s", abs_srcdir, dest);
<snip>
! snprintf(destfile, MAXPGPATH, "%s/%s.%s", destdir, prefix, suffix);
---8<--------------8<--------------8<--------------8<--------------8<-----------
Thanks for the guidance, I'll try come up with a better alternative.
Should outputdir be used instead of current working directory (cwd) if
it is set?
> There has not previously been any complaint that pg_regress was broken
> in this regard, so maybe you should take two steps back and explain what
> problem you think needs fixing, rather than just dropping a patch on us.
I tried to explain it in the mail, but let me try again, this time
showing some code.
Here we stat <cwd>/input:
---8<--------------8<--------------8<--------------8<--------------8<-----------
static void
convert_sourcefiles(void)
{
struct stat st;
int ret;
ret = stat("input", &st);
if (ret == 0 && S_ISDIR(st.st_mode))
convert_sourcefiles_in("input", "sql", "sql");
---8<--------------8<--------------8<--------------8<--------------8<-----------
But if we have set srcdir, the directory we are stat'ing, is not the
same directory that we are reading the files from:
---8<--------------8<--------------8<--------------8<--------------8<-----------
static void
convert_sourcefiles_in(char *source, char *dest, char *suffix)
<snip>
if (srcdir)
strcpy(abs_srcdir, srcdir);
else
strcpy(abs_srcdir, abs_builddir);
snprintf(indir, MAXPGPATH, "%s/%s", abs_srcdir, source);
names = pgfnames(indir);
---8<--------------8<--------------8<--------------8<--------------8<-----------
So I wanted to provide a patch that ran stat on the folder that we were
reading the files from.
-J
--
Jørgen Austvik, Software Engineering
Database Technology Group
pgsql-patches by date: