libada: Remove racy duplicate gnatlib installation
For some reason, presumably historical, the `install-gnatlib' target for the default multilib is invoked twice, once via the `ada.install-common' target in `gcc/ada/gcc-interface/Make-lang.in' invoked from gcc/ and again via the `install-libada' target in libada/. Apart from doing the same twice this is actually harmful in sufficiently parallelized `make' invocation, as the removal of old files performed within the `install-gnatlib' recipe in the former case actually races with the installation of new files done in the latter case, causing the recipe to fail and abort, however non-fatally, having not completed the installation of all the built files needed for the newly-built compiler to work correctly. This can be observed with a native `x86_64-linux-gnu' bootstrap: make[4]: Entering directory '.../gcc/ada' rm -rf .../lib/gcc/x86_64-linux-gnu/10.0.0/adalib rm: cannot remove '.../lib/gcc/x86_64-linux-gnu/10.0.0/adalib': Directory not empty make[4]: *** [gcc-interface/Makefile:512: install-gnatlib] Error 1 make[4]: Leaving directory '.../gcc/ada' make[3]: *** [.../gcc/ada/gcc-interface/Make-lang.in:853: install-gnatlib] Error 2 make[2]: [.../gcc/ada/gcc-interface/Make-lang.in:829: ada.install-common] Error 2 (ignored) which then causes missing files to be reported when an attempt is made to use the newly-installed non-functional compiler to build a `riscv-linux-gnu' cross-compiler: (cd ada/bldtools/sinfo; gnatmake -q xsinfo ; ./xsinfo sinfo.h ) error: "ada.ali" not found, "ada.ads" must be compiled error: "s-memory.ali" not found, "s-memory.adb" must be compiled gnatmake: *** bind failed. /bin/sh: ./xsinfo: No such file or directory make[2]: *** [.../gcc/ada/Make-generated.in:45: ada/sinfo.h] Error 127 make[2]: Leaving directory '.../gcc' make[1]: *** [Makefile:4369: all-gcc] Error 2 make[1]: Leaving directory '...' make: *** [Makefile:965: all] Error 2 Depending on timing `.../lib/gcc/x86_64-linux-gnu/10.0.0/adainclude' may cause an installation failure instead and the resulting compiler may be non-functional in a different way. Only invoke `install-gnatlib' from within gcc/ then if a legacy build process is being used with libada disabled and gnatlib built manually with `make -C gcc gnatlib'. gcc/ * Makefile.in (gnat_install_lib): New variable. * configure.ac: Substitute it. * configure: Regenerate. gcc/ada/ * gcc-interface/Make-lang.in (ada.install-common): Split into... (gnat-install-tools, gnat-install-lib): ... these. From-SVN: r276422
This commit is contained in:
parent
56f1a16cae
commit
8951374df1
@ -1,3 +1,9 @@
|
||||
2019-10-01 Maciej W. Rozycki <macro@wdc.com>
|
||||
|
||||
* Makefile.in (gnat_install_lib): New variable.
|
||||
* configure.ac: Substitute it.
|
||||
* configure: Regenerate.
|
||||
|
||||
2019-10-01 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
PR lto/91222
|
||||
|
@ -1706,6 +1706,10 @@ $(FULL_DRIVER_NAME): ./xgcc
|
||||
# language hooks, generated by configure
|
||||
@language_hooks@
|
||||
|
||||
# Wire in install-gnatlib invocation with `make install' for a configuration
|
||||
# with top-level libada disabled.
|
||||
gnat_install_lib = @gnat_install_lib@
|
||||
|
||||
# per-language makefile fragments
|
||||
ifneq ($(LANG_MAKEFRAGS),)
|
||||
include $(LANG_MAKEFRAGS)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-10-01 Maciej W. Rozycki <macro@wdc.com>
|
||||
|
||||
* gcc-interface/Make-lang.in (ada.install-common): Split into...
|
||||
(gnat-install-tools, gnat-install-lib): ... these.
|
||||
|
||||
2019-09-26 Alexandre Oliva <oliva@adacore.com>
|
||||
|
||||
* gcc-interface/decl.c (components_to_record): Set
|
||||
|
@ -822,7 +822,9 @@ doc/gnat-style.pdf: ada/gnat-style.texi $(gcc_docdir)/include/fdl.texi
|
||||
# gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gnatfind,
|
||||
# gnatclean).
|
||||
# gnatdll is only used on Windows.
|
||||
ada.install-common:
|
||||
ada.install-common: $(gnat_install_lib) gnat-install-tools
|
||||
|
||||
gnat-install-tools:
|
||||
$(MKDIR) $(DESTDIR)$(bindir)
|
||||
-if [ -f gnat1$(exeext) ] ; \
|
||||
then \
|
||||
@ -843,6 +845,7 @@ ada.install-common:
|
||||
#
|
||||
# Finally, install the library
|
||||
#
|
||||
gnat-install-lib: | gnat-install-tools
|
||||
-if [ -f gnat1$(exeext) ] ; \
|
||||
then \
|
||||
$(MAKE) $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib; \
|
||||
|
15
gcc/configure
vendored
15
gcc/configure
vendored
@ -814,6 +814,7 @@ SET_MAKE
|
||||
accel_dir_suffix
|
||||
real_target_noncanonical
|
||||
enable_as_accelerator
|
||||
gnat_install_lib
|
||||
REPORT_BUGS_TEXI
|
||||
REPORT_BUGS_TO
|
||||
PKGVERSION
|
||||
@ -7826,6 +7827,16 @@ else
|
||||
fi
|
||||
|
||||
|
||||
# If top-level libada has been disabled, then wire in install-gnatlib
|
||||
# invocation with `make install', so that one can build and install
|
||||
# the library manually with `make -C gcc all gnatlib gnattools install'.
|
||||
if test x"$enable_libada" = xno; then
|
||||
gnat_install_lib=gnat-install-lib
|
||||
else
|
||||
gnat_install_lib=
|
||||
fi
|
||||
|
||||
|
||||
if test x"$enable_as_accelerator_for" != x; then
|
||||
|
||||
$as_echo "#define ACCEL_COMPILER 1" >>confdefs.h
|
||||
@ -18819,7 +18830,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 18822 "configure"
|
||||
#line 18833 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -18925,7 +18936,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 18928 "configure"
|
||||
#line 18939 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -982,6 +982,16 @@ AC_ARG_ENABLE(languages,
|
||||
esac],
|
||||
[enable_languages=c])
|
||||
|
||||
# If top-level libada has been disabled, then wire in install-gnatlib
|
||||
# invocation with `make install', so that one can build and install
|
||||
# the library manually with `make -C gcc all gnatlib gnattools install'.
|
||||
if test x"$enable_libada" = xno; then
|
||||
gnat_install_lib=gnat-install-lib
|
||||
else
|
||||
gnat_install_lib=
|
||||
fi
|
||||
AC_SUBST(gnat_install_lib)
|
||||
|
||||
if test x"$enable_as_accelerator_for" != x; then
|
||||
AC_DEFINE(ACCEL_COMPILER, 1,
|
||||
[Define if this compiler should be built as the offload target compiler.])
|
||||
|
Loading…
Reference in New Issue
Block a user