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:

Previous
From: Andres Freund
Date:
Subject: Re: Alpha4 release blockers (was Re: wrapping up this CommitFest)
Next
From: Bruce Momjian
Date:
Subject: fix for pg_upgrade