Thread: 8.1 'make check' fails
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
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 > 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 >
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
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/ > 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.
Attachment
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
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