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