Message ID | alpine.DEB.2.00.1608112247430.4471@tp.orcam.me.uk |
---|---|
State | Accepted |
Headers | show |
On 08/12/16, Maciej W. Rozycki wrote: > Hi, > > Commit 235763 removed support for versions of MPFR below 3.1.0 which have > a flat directory structure, however it did not introduce any safety check > for such an unhandled library version present in the tree. Consequently > the system-installed version is silently chosen, which if too old, causes > a confusing configuration failure in mpc/ stating a misleading version > requirement: > > checking for MPFR... yes > checking for recent GMP... yes > checking for recent MPFR... no > configure: error: MPFR version >= 2.4.2 required > make[1]: *** [configure-mpc] Error 1 > > I propose the check below to make people's life just a little bit easier > and indicate right away that an incorrect version of MPFR has been found > in the source tree. This is especially helpful when you just sync your > build tree from upstream and may easily miss the updated requirement. I > carefully chose to use "handled" rather than "supported" in the message as > the commit referred clearly indicates you are on your own with versions of > the libraries different from those stated in `download_prerequisites'. > > + # MPFR v3.1.0 moved the sources into a src sub-directory. > + if ! test -d ${srcdir}/mpfr/src; then > + as_fn_error "Building GCC with MPFR in the source tree is only handled for MPFR 3.1.0+." "$LINENO" 5 > + fi I think it is a good idea to detect this situation, but you should advise the user that he has to use exactly the same version(s) that contrib/download_prerequisites installs. Bernd.
On 08/11/2016 05:20 PM, Maciej W. Rozycki wrote: > Hi, > > Commit 235763 removed support for versions of MPFR below 3.1.0 which have > a flat directory structure, however it did not introduce any safety check > for such an unhandled library version present in the tree. Consequently > the system-installed version is silently chosen, which if too old, causes > a confusing configuration failure in mpc/ stating a misleading version > requirement: > > checking for MPFR... yes > checking for recent GMP... yes > checking for recent MPFR... no > configure: error: MPFR version >= 2.4.2 required > make[1]: *** [configure-mpc] Error 1 > > I propose the check below to make people's life just a little bit easier > and indicate right away that an incorrect version of MPFR has been found > in the source tree. This is especially helpful when you just sync your > build tree from upstream and may easily miss the updated requirement. I > carefully chose to use "handled" rather than "supported" in the message as > the commit referred clearly indicates you are on your own with versions of > the libraries different from those stated in `download_prerequisites'. > > 2016-08-12 Maciej W. Rozycki <macro@imgtec.com> > > * configure.ac: Check for the minimum in-tree MPFR version > handled. > * configure: Regenerate. > > OK to apply? OK. jeff
On Tue, 16 Aug 2016, Jeff Law wrote: > > 2016-08-12 Maciej W. Rozycki <macro@imgtec.com> > > > > * configure.ac: Check for the minimum in-tree MPFR version > > handled. > > * configure: Regenerate. > > > > OK to apply? > OK. Applied now, thanks for your review and apologies for the delay. Maciej
On Fri, 12 Aug 2016, Bernd Edlinger wrote: > > + # MPFR v3.1.0 moved the sources into a src sub-directory. > > + if ! test -d ${srcdir}/mpfr/src; then > > + as_fn_error "Building GCC with MPFR in the source tree is only handled for MPFR 3.1.0+." "$LINENO" 5 > > + fi > > I think it is a good idea to detect this situation, but you should advise the user > that he has to use exactly the same version(s) that contrib/download_prerequisites > installs. We're not doing an exhaustive check for the GMP/MPFR/MPC dependencies here, so I think it's enough to point out the outright incompatibility. It might make sense though to have an additional check in the component requiring these libraries and issue a warning if a mismatch is detected with in-tree versions. Maciej
Index: gcc/configure =================================================================== --- gcc.orig/configure 2016-08-11 23:23:44.104635061 +0100 +++ gcc/configure 2016-08-11 23:24:02.933019031 +0100 @@ -5566,6 +5566,10 @@ if test "x$with_mpfr_lib" != x; then gmplibs="-L$with_mpfr_lib $gmplibs" fi if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then + # MPFR v3.1.0 moved the sources into a src sub-directory. + if ! test -d ${srcdir}/mpfr/src; then + as_fn_error "Building GCC with MPFR in the source tree is only handled for MPFR 3.1.0+." "$LINENO" 5 + fi gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/src/'"$lt_cv_objdir $gmplibs" gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr/src -I$$s/mpfr/src '"$gmpinc" extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr/src --with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr/src/'"$lt_cv_objdir" Index: gcc/configure.ac =================================================================== --- gcc.orig/configure.ac 2016-08-11 23:23:44.117834819 +0100 +++ gcc/configure.ac 2016-08-11 23:24:00.198745307 +0100 @@ -1546,6 +1546,11 @@ if test "x$with_mpfr_lib" != x; then gmplibs="-L$with_mpfr_lib $gmplibs" fi if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then + # MPFR v3.1.0 moved the sources into a src sub-directory. + if ! test -d ${srcdir}/mpfr/src; then + AC_MSG_ERROR([dnl +Building GCC with MPFR in the source tree is only handled for MPFR 3.1.0+.]) + fi gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/src/'"$lt_cv_objdir $gmplibs" gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr/src -I$$s/mpfr/src '"$gmpinc" extra_mpc_mpfr_configure_flags='--with-mpfr-include=$$s/mpfr/src --with-mpfr-lib=$$r/$(HOST_SUBDIR)/mpfr/src/'"$lt_cv_objdir"