Parallel make problem with git master - Mailing list pgsql-hackers
From | Bruce Momjian |
---|---|
Subject | Parallel make problem with git master |
Date | |
Msg-id | 201103052333.p25NXqd21689@momjian.us Whole thread Raw |
Responses |
Re: Parallel make problem with git master
|
List | pgsql-hackers |
I am seeing the following compile problem with gmake -j2: /bin/sh ../../../config/install-sh -c -d '/usr/local/pgsql/lib' /bin/sh ../../../../config/install-sh -c -m 644 ./plpgsql.control '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -m 644 ./plperl.control '/usr/local/pgsql/share/extension' /bin/sh ../../../../config/install-sh -c -m 644 ./plpgsql--1.0.sql '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -m 644 ./plperl--1.0.sql '/usr/local/pgsql/share/extension' /bin/sh ../../../../config/install-sh -c -m 644 ./plpgsql--unpackaged--1.0.sql '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -m 644 ./plperl--unpackaged--1.0.sql '/usr/local/pgsql/share/extension' /bin/sh ../../../../config/install-sh -c -d '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -m 644 ./plperlu.control '/usr/local/pgsql/share/extension' mkdir: /usr/local/pgsql/share/extension: File exists /bin/sh ../../../config/install-sh -c -m 644 ./plperlu--1.0.sql '/usr/local/pgsql/share/extension' mkdir: /usr/local/pgsql/share/extension: File exists gmake[3]: *** [installdirs] Error 1 gmake[3]: Leaving directory `/usr/var/local/src/gen/pgsql/postgresql/src/pl/plpgsql/src' gmake[2]: *** [install] Error 2 gmake[2]: Leaving directory `/usr/var/local/src/gen/pgsql/postgresql/src/pl/plpgsql' gmake[1]: *** [install-plpgsql-recurse] Error 2 gmake[1]: *** Waiting for unfinished jobs.... /bin/sh ../../../config/install-sh -c -m 644 ./plperlu--unpackaged--1.0.sql '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -d '/usr/local/pgsql/share/extension' /bin/sh ../../../config/install-sh -c -m 755 plperl.so '/usr/local/pgsql/lib/plperl.so' mkdir: /usr/local/pgsql/share/extension: File exists mkdir: /usr/local/pgsql/share/extension: File exists gmake[2]: *** [installdirs] Error 1 gmake[2]: Leaving directory `/usr/var/local/src/gen/pgsql/postgresql/src/pl/plperl' gmake[1]: *** [install-plperl-recurse] Error 2 gmake[1]: Leaving directory `/usr/var/local/src/gen/pgsql/postgresql/src/pl' gmake: *** [install-pl-recurse] Error 2 This only happens with parallel gmake and I think is caused by the assumption that "mkdir extension" will happen before any files are installed, which doesn't happen with parallel gmake. I have fixed the bug with the attached, applied patch which moves 'installdirs' to a dependency of the extension directory file install, rather than a more top-level target so the parallel gmake always creates the directory first. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index 71e2cef..155b60f 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -74,14 +74,14 @@ Util.c: Util.xs $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ -install: all installdirs install-lib install-data +install: all install-lib install-data installdirs: installdirs-lib $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' uninstall: uninstall-lib uninstall-data -install-data: +install-data: installdirs @for file in $(addprefix $(srcdir)/, $(DATA)); do \ echo "$(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'"; \ $(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'; \ diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile index d748ef6..52fbc1c 100644 --- a/src/pl/plpgsql/src/Makefile +++ b/src/pl/plpgsql/src/Makefile @@ -27,14 +27,14 @@ all: all-lib include $(top_srcdir)/src/Makefile.shlib -install: all installdirs install-lib install-data +install: all install-lib install-data installdirs: installdirs-lib $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' uninstall: uninstall-lib uninstall-data -install-data: +install-data: installdirs @for file in $(addprefix $(srcdir)/, $(DATA)); do \ echo "$(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'"; \ $(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'; \ diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index baf22f3..86d8741 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -106,14 +106,14 @@ all: all-lib distprep: spiexceptions.h -install: all installdirs install-lib install-data +install: all install-lib install-data installdirs: installdirs-lib $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' uninstall: uninstall-lib uninstall-data -install-data: +install-data: installdirs @for file in $(addprefix $(srcdir)/, $(DATA)); do \ echo "$(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'"; \ $(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'; \ diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile index c7797c6..faffd09 100644 --- a/src/pl/tcl/Makefile +++ b/src/pl/tcl/Makefile @@ -54,7 +54,7 @@ all: all-lib $(MAKE) -C modules $@ -install: all installdirs install-lib install-data +install: all install-lib install-data $(MAKE) -C modules $@ installdirs: installdirs-lib @@ -64,7 +64,7 @@ installdirs: installdirs-lib uninstall: uninstall-lib uninstall-data $(MAKE) -C modules $@ -install-data: +install-data: installdirs @for file in $(addprefix $(srcdir)/, $(DATA)); do \ echo "$(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'"; \ $(INSTALL_DATA) $$file '$(DESTDIR)$(datadir)/extension'; \
pgsql-hackers by date: