8.1 'make check' fails

Started by Wesover 20 years ago6 messagesgeneral
Jump to latest
#1Wes
wespvp@syntegra.com

System: Mac OS X 10.4.2
PostgreSQL: 8.1 b2

Running 'make check', I get the following failure:

rm -rf ./testtablespace
mkdir ./testtablespace
/bin/sh ./pg_regress --temp-install --top-builddir=../../..
--temp-port=55432 --schedule=./parallel_schedule --multibyte=SQL_ASCII
--load-language=plpgsql
============== creating temporary installation ==============

pg_regress: installation failed
Examine ./log/install.log for the reason.

make[2]: *** [check] Error 2
make[1]: *** [check] Error 2
make: *** [check] Error 2

Looking at the install log, I see it apparently does not handle directories
that contain blanks - the paths are not being quoted:

gzip -d -c ./postgres.tar.gz | ( cd /Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/doc/html && /usr/bin/tar xf - )
for file in man1/*.1 man7/*.7 ; do \
/bin/sh ../config/install-sh -c -m 644 $file /Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/man/$file || exit; \
done
cp: /Volumes/G4 is a directory (not copied).
make[4]: *** [install] Error 1
make[3]: *** [install] Error 2

#2William ZHANG
uniware@zedware.org
In reply to: Wes (#1)
Re: 8.1 'make check' fails

Yes, the Makefiles cannot deal with spaces correctly.
Seems we should avoid use the `complicated' path.

"Wes" <wespvp@syntegra.com> wrote

System: Mac OS X 10.4.2
PostgreSQL: 8.1 b2

Running 'make check', I get the following failure:

rm -rf ./testtablespace
mkdir ./testtablespace
/bin/sh ./pg_regress --temp-install --top-builddir=../../..
--temp-port=55432 --schedule=./parallel_schedule --multibyte=SQL_ASCII
--load-language=plpgsql
============== creating temporary installation ==============

pg_regress: installation failed
Examine ./log/install.log for the reason.

make[2]: *** [check] Error 2
make[1]: *** [check] Error 2
make: *** [check] Error 2

Looking at the install log, I see it apparently does not handle

directories

that contain blanks - the paths are not being quoted:

gzip -d -c ./postgres.tar.gz | ( cd /Volumes/G4

Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che

ck/install/usr/local/pgsql8.1b2/doc/html && /usr/bin/tar xf - )
for file in man1/*.1 man7/*.7 ; do \
/bin/sh ../config/install-sh -c -m 644 $file /Volumes/G4

Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che

Show quoted text

ck/install/usr/local/pgsql8.1b2/man/$file || exit; \
done
cp: /Volumes/G4 is a directory (not copied).
make[4]: *** [install] Error 1
make[3]: *** [install] Error 2

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

#3Wes
wespvp@syntegra.com
In reply to: William ZHANG (#2)
Re: 8.1 'make check' fails

On 10/2/05 7:48 AM, "William ZHANG" <uniware@zedware.org> wrote:

Yes, the Makefiles cannot deal with spaces correctly.
Seems we should avoid use the `complicated' path.

Such paths are normal on systems with a GUI interface. They are not out of
the ordinary nor complicated.

Wes

#4Martijn van Oosterhout
kleptog@svana.org
In reply to: Wes (#3)
Re: 8.1 'make check' fails

On Sun, Oct 02, 2005 at 12:15:05PM -0500, Wes wrote:

On 10/2/05 7:48 AM, "William ZHANG" <uniware@zedware.org> wrote:

Yes, the Makefiles cannot deal with spaces correctly.
Seems we should avoid use the `complicated' path.

Such paths are normal on systems with a GUI interface. They are not out of
the ordinary nor complicated.

Problem is, the space is also the word seperator. So if you have a
space seperated list of words (ie normal for make), names with spaces
are a pain.

It occurred to me that you might be able to replace the spaces in the
paths with question marks. Then any invokation of the shell will expand
the question mark back to a space as part of parameter expansion.

Alternativly, replace the spaces with some utf-8 sequence that looks
like a space but isn't an ASCII space. Windows is case-insensetive so
it may map the different "spaces" together, but they'd be distinct for
make.

Good luck...
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#5Wes
wespvp@syntegra.com
In reply to: Martijn van Oosterhout (#4)
Re: 8.1 'make check' fails

On 10/2/05 4:13 PM, "Martijn van Oosterhout" <kleptog@svana.org> wrote:

Problem is, the space is also the word seperator. So if you have a
space seperated list of words (ie normal for make), names with spaces
are a pain.

It occurred to me that you might be able to replace the spaces in the
paths with question marks. Then any invokation of the shell will expand
the question mark back to a space as part of parameter expansion.

The normal build seems to work, as does 'make install' (although the install
/path is /usr/local).

I would have thought it was just a matter of quoting file paths in all the
makefiles. Instead of

gzip -d -c $(srcdir)/postgres.tar.gz | ( cd $(DESTDIR)$(docdir)/html...

It should be

gzip -d -c "$(srcdir)/postgres.tar.gz" | ( cd "$(DESTDIR)$(docdir)/html"...

But it's not quite that simple. See below. To resolve my immediate
problem, I can just temporarily rename my hard drive. I'm just reporting
this as a problem that should be fixed.

Wes

install.log has:

make -C doc install
make[4]: Nothing to be done for `install'.
make -C src install
/bin/sh ../config/mkinstalldirs "/Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib/pgxs/src"
mkdir /Volumes/G4/Boot
mkdir /Volumes/G4/Boot/Users
mkdir /Volumes/G4/Boot/Users/pgsql
mkdir /Volumes/G4/Boot/Users/pgsql/src
mkdir /Volumes/G4/Boot/Users/pgsql/src/postgres
mkdir /Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2
mkdir /Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src
mkdir /Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr/local
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr/local/pgsql8.1b2
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr/local/pgsql8.1b2/lib
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr/local/pgsql8.1b2/lib/pgxs
mkdir
/Volumes/G4/Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regre
ss/./tmp_check/install/usr/local/pgsql8.1b2/lib/pgxs/src
/bin/sh ../config/install-sh -c -m 644 Makefile.global "/Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib/pgxs/src/Makefile.global"
/bin/sh ../config/install-sh -c -m 644 Makefile.port "/Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib/pgxs/src/Makefile.port"
/bin/sh ../config/install-sh -c -m 644 "./Makefile.shlib" "/Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib/pgxs/src/Makefile.shlib"
/bin/sh ../config/install-sh -c -m 644 "./nls-global.mk" "/Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib/pgxs/src/nls-global.mk"
make -C port install
/bin/sh ../../config/install-sh -c -m 644 libpgport.a /Volumes/G4
Boot/Users/pgsql/src/postgres/postgresql-8.1beta2/src/test/regress/./tmp_che
ck/install/usr/local/pgsql8.1b2/lib
cp: /Volumes/G4 is a directory (not copied).
make[5]: *** [install] Error 1
make[4]: *** [install] Error 2
make[3]: *** [install] Error 2

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Wes (#3)
Re: 8.1 'make check' fails

Wes <wespvp@syntegra.com> writes:

On 10/2/05 7:48 AM, "William ZHANG" <uniware@zedware.org> wrote:

Yes, the Makefiles cannot deal with spaces correctly.
Seems we should avoid use the `complicated' path.

Such paths are normal on systems with a GUI interface. They are not out of
the ordinary nor complicated.

Feel free to submit a patch to make it work.

regards, tom lane