Subject: Build problem with square brackets in build path

From: Nikolay Shaplov <[email-masked]>
Date: Fri, 28 Apr 2023 14:09:59 +0300

I am not sure it is really a bug, but nevertheless

If you do

mkdir [source]
git clone git://git.postgresql.org/git/postgresql.git [source]
mkdir build; cd build
../\[source\]/configure 
make

you will get

make[1]: *** No rule to make target 'generated-headers'.  Stop.

If there are no "[]" in the path to the source, everything is OK.

It would be OK for me, if it still does not work. But I would appreciate at 
least proper error message there (or at configure step), this would save time, 
for figuring out, why it suddenly stopped working.

-- 
Nikolay Shaplov aka Nataraj
Fuzzing Engineer at Postgres Professional
Matrix IM: @dhyan:nataraj.su

---

From: Tom Lane <[email-masked]>
Date: Fri, 28 Apr 2023 14:06:37 -0400

> If there are no "[]" in the path to the source, everything is OK.

It's generally quite unwise to use shell meta-characters in
file or directory names.  I give you one example:

$ ls ../[source]
COPYRIGHT               README.git              contrib/
GNUmakefile.in          aclocal.m4              doc/
HISTORY                 config/                 meson.build
Makefile                configure*              meson_options.txt
README                  configure.ac            src/
$ ls ../[source]/*.ac
ls: ../[source]/*.ac: No such file or directory

This is expected behavior (I leave it as an exercise for the
student to figure out why).

While it might be possible to make the Postgres build scripts
proof against funny characters in the build paths, the effort
required would be far out of proportion to the value.  Not least
because manual operations in such a file tree would misbehave
often enough to convince you to change, even if the scripts were
all water-tight.

			regards, tom lane