This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/1711: `make -j3 install' fails when $(prefix) directory doesn't exist
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/1711: `make -j3 install' fails when $(prefix) directory doesn't exist
- From: jim at meyering dot net
- Date: Sat, 20 Jan 2001 10:31:38 +0100
>Number: 1711
>Category: c++
>Synopsis: `make -j3 install' fails when $(prefix) directory doesn't exist
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jan 20 01:36:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Jim Meyering
>Release: 2.97 20010119 (experimental)
>Organization:
>Environment:
System: Linux ixi.eng.ascend.com 2.2.17 #3 SMP Wed Sep 20 19:24:00 CEST 2000 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /mirror/d/egcs/configure --disable-nls --prefix=/p/p/gcc-2001-01-20.07h44
>Description:
A parallel install (a la `make -j3') fails when `--prefix'-specified
directory doesn't exist.
The problem is that the rules of the dependents of
Makefile.in(install-common), c++.install-common and installdirs,
would run in parallel, and at least on my dual-CPU system with
make -j3, the c++.install-common rules would consistently run
before the required directories had been created by installdirs.
>How-To-Repeat:
./configure --prefix=/tmp/no-such-dir && make && make -j3 install
>Fix:
gcc/:
2001-01-20 Jim Meyering <meyering@lucent.com>
* Makefile.in (install-common): Don't depend on installdirs here.
Instead, make each of the lang.install-common targets (e.g.,
c++.install-common in cp/Make-lang.in) depend on it.
gcc/cp:
2001-01-20 Jim Meyering <meyering@lucent.com>
* Make-lang.in (c++.install-common): Depend on installdirs.
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/Makefile.in,v
retrieving revision 1.589
diff -u -p -r1.589 Makefile.in
--- Makefile.in 2001/01/19 23:37:07 1.589
+++ Makefile.in 2001/01/20 09:08:42
@@ -2467,7 +2467,7 @@ installdirs:
-if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; chmod a+rx $(man1dir) ; fi
# Install the compiler executables built during cross compilation.
-install-common: native installdirs $(EXTRA_PARTS) lang.install-common
+install-common: native $(EXTRA_PARTS) lang.install-common
for file in $(COMPILERS); do \
if [ -f $$file ] ; then \
rm -f $(libsubdir)/$$file; \
Index: cp/Make-lang.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/Make-lang.in,v
retrieving revision 1.73
diff -u -p -r1.73 Make-lang.in
--- cp/Make-lang.in 2001/01/15 03:33:53 1.73
+++ cp/Make-lang.in 2001/01/20 09:08:44
@@ -144,7 +144,7 @@ c++.install-normal:
# Install the driver program as $(target)-g++
# and also as either g++ (if native) or $(tooldir)/bin/g++.
-c++.install-common:
+c++.install-common: installdirs
-if [ -f cc1plus$(exeext) ] ; then \
if [ -f g++-cross$(exeext) ] ; then \
rm -f $(bindir)/$(GXX_CROSS_NAME)$(exeext); \
>Release-Note:
>Audit-Trail:
>Unformatted: