Possible problem with mpfr sources built in-tree which attempt to "auto patch" ?

Dennis Clarke dclarke@blastwave.org
Fri Nov 4 22:51:00 GMT 2016


Dear GCC folks :


     This is an oddball problem that surprised me somewhat. I generally
extract the entire GCC source tree into a directory which is not able to
be modified by the userid that performs the build/test etc in yet
another separate directory. This is, I think, the recommended safe way
to proceed in that I have a source tree directory which can not be
changed and is quite static along with the build directory area that is
entirely owned by the userid doing the compile. However, with the 5.4.0
sources and recent mpfr the whole process came to an abrupt halt when,
and this is a guess, the MPFR sources inside the source tree directory
attempted to change something?  Thus :

/usr/local/bin/bash ../libtool  --tag=CC   --mode=compile gcc -m64 
-DTIME_WITH_SYS_TIME=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 
-DHAVE_LOCALE_H=1 -DHAVE_WCHAR_H=1 -DHAVE_STDARG=1 -DHAVE_SYS_TIME_H=1 
-DHAVE_STRUCT_LCONV_DECIMAL_POINT=1 -DHAVE_STRUCT_LCONV_THOUSANDS_SEP=1 
-DHAVE_ALLOCA_H=1 -DHAVE_STDINT_H=1 -DHAVE_VA_COPY=1 -DHAVE_SETLOCALE=1 
-DHAVE_GETTIMEOFDAY=1 -DHAVE_LONG_LONG=1 -DHAVE_INTMAX_T=1 
-DMPFR_HAVE_INTMAX_MAX=1 -DMPFR_HAVE_FESETROUND=1 -DHAVE_DENORMS=1 
-DHAVE_SIGNEDZ=1 -DHAVE_ROUND=1 -DHAVE_TRUNC=1 -DHAVE_FLOOR=1 
-DHAVE_CEIL=1 -DHAVE_NEARBYINT=1 -DHAVE_LDOUBLE_IEEE_QUAD_BIG=1 
-DMPFR_USE_THREAD_SAFE=1 -DHAVE_CLOCK_GETTIME=1 -DLT_OBJDIR=\".libs/\" 
-DHAVE_ATTRIBUTE_MODE=1 -DHAVE___GMPN_ROOTREM=1 
-DHAVE___GMPN_SBPI1_DIVAPPR_Q=1 -I. -I../../../gcc-5.4.0/mpfr/src 
-I/usr/local/include -I/usr/local/gcc4/include 
-I/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001/./gmp  -g -MT rem1.lo 
-MD -MP -MF .deps/rem1.Tpo -c -o rem1.lo ../../../gcc-5.4.0/mpfr/src/rem1.c
libtool: compile:  gcc -m64 -DTIME_WITH_SYS_TIME=1 -DHAVE_INTTYPES_H=1 
-DHAVE_STDINT_H=1 -DHAVE_LOCALE_H=1 -DHAVE_WCHAR_H=1 -DHAVE_STDARG=1 
-DHAVE_SYS_TIME_H=1 -DHAVE_STRUCT_LCONV_DECIMAL_POINT=1 
-DHAVE_STRUCT_LCONV_THOUSANDS_SEP=1 -DHAVE_ALLOCA_H=1 -DHAVE_STDINT_H=1 
-DHAVE_VA_COPY=1 -DHAVE_SETLOCALE=1 -DHAVE_GETTIMEOFDAY=1 
-DHAVE_LONG_LONG=1 -DHAVE_INTMAX_T=1 -DMPFR_HAVE_INTMAX_MAX=1 
-DMPFR_HAVE_FESETROUND=1 -DHAVE_DENORMS=1 -DHAVE_SIGNEDZ=1 
-DHAVE_ROUND=1 -DHAVE_TRUNC=1 -DHAVE_FLOOR=1 -DHAVE_CEIL=1 
-DHAVE_NEARBYINT=1 -DHAVE_LDOUBLE_IEEE_QUAD_BIG=1 
-DMPFR_USE_THREAD_SAFE=1 -DHAVE_CLOCK_GETTIME=1 -DLT_OBJDIR=\".libs/\" 
-DHAVE_ATTRIBUTE_MODE=1 -DHAVE___GMPN_ROOTREM=1 
-DHAVE___GMPN_SBPI1_DIVAPPR_Q=1 -I. -I../../../gcc-5.4.0/mpfr/src 
-I/usr/local/include -I/usr/local/gcc4/include 
-I/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001/./gmp -g -MT rem1.lo 
-MD -MP -MF .deps/rem1.Tpo -c ../../../gcc-5.4.0/mpfr/src/rem1.c -o rem1.o
mv -f .deps/rem1.Tpo .deps/rem1.Plo
(cd ../../../gcc-5.4.0/mpfr && ./tools/get_patches.sh) > 
../../../gcc-5.4.0/mpfr/src/get_patches.c || rm -f 
../../../gcc-5.4.0/mpfr/src/get_patches.c
/usr/local/bin/bash: ../../../gcc-5.4.0/mpfr/src/get_patches.c: 
Permission denied
rm: ../../../gcc-5.4.0/mpfr/src/get_patches.c not removed: Permission denied
gmake[5]: *** [../../../gcc-5.4.0/mpfr/src/get_patches.c] Error 2
gmake[5]: Leaving directory 
`/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001/mpfr/src'
gmake[4]: *** [all] Error 2
gmake[4]: Leaving directory 
`/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001/mpfr/src'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory 
`/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001/mpfr'
gmake[2]: *** [all-stage1-mpfr] Error 2
gmake[2]: Leaving directory 
`/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001'
gmake[1]: *** [stage1-bubble] Error 2
gmake[1]: Leaving directory 
`/usr/local/build/gcc-5.4.0_SunOS5.10_sparcv9.001'
gmake: *** [all] Error 2


So there I see (cd ../../../gcc-5.4.0/mpfr && ./tools/get_patches.sh)
which will fail for sure if that script attempts to change anything in
the source tree.

# pwd
/usr/local/build/gcc-5.4.0/mpfr-3.1.3

# find . -ls |  grep "patch"
541637    2 -rw-r--r--   1 1000     1000         1074 Jun 19  2015 
./src/get_patches.c
541786    2 -rwxr-xr-x   1 1000     1000         1129 Jun 19  2015 
./tools/get_patches.sh

So this just seems oddball to me.

So should the userid that is performing the build inside the separate
build directory be allowed to modify the contents inside the source tree
directory ?

Dennis



More information about the Gcc-help mailing list