Fix compilation of R 3.6.1 and below due to changes in GCC 10
This commit is contained in:
parent
3d3918230c
commit
74c19bc1a0
1 changed files with 22 additions and 0 deletions
|
|
@ -65,6 +65,22 @@ compile_r() {
|
||||||
build_flag=''
|
build_flag=''
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# R 3.6.1 and below require additional compiler flags for GCC 10 and above
|
||||||
|
# (e.g., on Debian 11). Add -fcommon to CFLAGS to work around issues with new
|
||||||
|
# default of -fno-common for C (fixed in R 3.6.2). Add -fallow-argument-mismatch
|
||||||
|
# to FFLAGS to work around issues with changes to argument mismatch checking
|
||||||
|
# in Fortran (fixed in R 3.6.2, but not mentioned in NEWS).
|
||||||
|
# https://cran.r-project.org/doc/manuals/r-release/NEWS.3.html
|
||||||
|
# https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Using-Fortran
|
||||||
|
# https://gcc.gnu.org/gcc-10/porting_to.html
|
||||||
|
gcc_major_version=$(gcc -dumpversion | cut -d '.' -f 1)
|
||||||
|
if _version_is_less_than "${R_VERSION}" 3.6.2 && _version_is_greater_than "${gcc_major_version}" 9; then
|
||||||
|
extra_cflags='-fcommon'
|
||||||
|
extra_fflags='-fallow-argument-mismatch'
|
||||||
|
echo "Adding extra CFLAGS: ${extra_cflags}"
|
||||||
|
echo "Adding extra FFLAGS: ${extra_fflags}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Avoid a PCRE2 dependency for R 3.5 and 3.6. R 3.x uses PCRE1, but R 3.5+
|
# Avoid a PCRE2 dependency for R 3.5 and 3.6. R 3.x uses PCRE1, but R 3.5+
|
||||||
# will link against PCRE2 if present, although it is not actually used.
|
# will link against PCRE2 if present, although it is not actually used.
|
||||||
# Since there's no way to disable this in the configure script, and we need
|
# Since there's no way to disable this in the configure script, and we need
|
||||||
|
|
@ -105,6 +121,8 @@ compile_r() {
|
||||||
R_PRINTCMD=/usr/bin/lpr \
|
R_PRINTCMD=/usr/bin/lpr \
|
||||||
R_UNZIPCMD=/usr/bin/unzip \
|
R_UNZIPCMD=/usr/bin/unzip \
|
||||||
R_ZIPCMD=/usr/bin/zip \
|
R_ZIPCMD=/usr/bin/zip \
|
||||||
|
SHLIB_CFLAGS="${extra_cflags}" \
|
||||||
|
SHLIB_FFLAGS="${extra_fflags}" \
|
||||||
./configure \
|
./configure \
|
||||||
--prefix=/opt/R/${1} \
|
--prefix=/opt/R/${1} \
|
||||||
${CONFIGURE_OPTIONS} \
|
${CONFIGURE_OPTIONS} \
|
||||||
|
|
@ -150,6 +168,10 @@ _version_is_greater_than() {
|
||||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_version_is_less_than() {
|
||||||
|
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$2"
|
||||||
|
}
|
||||||
|
|
||||||
###### RUN R COMPILE PROCEDURE ######
|
###### RUN R COMPILE PROCEDURE ######
|
||||||
set_up_environment
|
set_up_environment
|
||||||
fetch_r_source $R_VERSION
|
fetch_r_source $R_VERSION
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue