[R] [FORGED] Re: tcltk problems
Berwin A Turlach
berwin.turlach at gmail.com
Mon Nov 20 11:36:03 CET 2017
G'day Peter,
On Sat, 18 Nov 2017 23:20:25 +0100
peter dalgaard <pdalgd at gmail.com> wrote:
> Hum, missed that bit. Looking at the configure script, the only way I
> can see it failing to look in /usr/lib/tcl8.6 is if ${LIBnn} is not
> "lib". Any chance it might be set to lib64?
Well, yes, in an earlier e-mail Rolf said:
Then I scanned through BldDir/config.log and found:
LIBnn='lib64'
(on line 19901 !!!)
But that seems to be the output of the configuration as determined
by ./configure.
The question is why ${LIBnn} is set to this value. If not through some
environment variable or config.site, the only way I can see that the relevant
code snippet[1] (lines 3788-3806 of R 3.4.2's configure, quoted below) sets
${LIBnn} to 'lib64' is if /usr/lib64 exist.
This should not be the case on a 64bit Ubuntu machine. My machine
has /usr/lib, /usr/lib32 and /usr/libx32. As far as I know, Ubuntu
(and also Debian? But I have not used Debian for a long time) has always
placed its 64bit libraries into /lib and the 32bit libraries
into e.g. /lib32. And nowadays, one has also /usr/lib/i386-linux-gnu for
32bit libraries and /usr/lib/x86_64-linux-gnu for 64bit libraries.
As far as I can tell, RedHat used /lib for the 32bit libraries
and /lib64 for the 64bit libraries. And I believe that most (all?) of
R core that were using linux were using RedHat. But I could be wrong.
Definitely remember that I always found the multiple-architecture part
in "R Installation and Administration" confusing to read as my linux
system had no /lib64 directories. :)
Finally, if ${LIBnn} is set to 'lib' then the relevant code snippet[2]
(lines 39527-39543 of R 3.4.2's configure, quoted below), would find
tclConfig.sh; regardless on whether it is in /usr/lib
or /usr/lib/tcl8.6. Of course, if ${LIBnn} is set to 'lib64',
then ./configure will not find tclConfig.sh on an Ubuntu machine.
So Rolf should probably check whether there is a /usr/lib64 directory
on his machine. If so, why is it there? Perhaps some other software
installed from source created it? The contents of the directory might give
some clues. If a /usr/lib64 exist on Rolf's machine, he should probably use
config.site to set ${LIBnn} to 'lib' (line 146 in R 3.4.2's
config.site) so that ./configure can automagically find tclConfig.sh
again......
Cheers,
Berwin
PS: Who is now wondering whether his 32bit compile of R is actually
using the 64bit version of TCL/TK on his system.... One day I might
find out... :)
[1]
## We need to establish suitable defaults for a 64-bit OS
libnn=lib
case "${host_os}" in
linux*)
## Not all distros use this: some choose to march out of step
## Allow for ppc64le (Debian calls ppc64el), powerpc64le ...
case "${host_cpu}" in
x86_64|mips64|ppc64*|powerpc64*|sparc64|s390x)
if test -d /usr/lib64; then
libnn=lib64
fi
;;
esac
;;
solaris*)
## libnn=lib/sparcv9 ## on 64-bit only, but that's compiler-specific
;;
esac
: ${LIBnn=$libnn}
[2]
if test -z "${TCL_CONFIG}"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tclConfig.sh in library (sub)directories" >&5
$as_echo_n "checking for tclConfig.sh in library (sub)directories... " >&6; }
if ${r_cv_path_TCL_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
for ldir in /usr/local/${LIBnn} /usr/${LIBnn} /${LIBnn} /opt/lib /sw/lib /opt/csw/lib /usr/sfw/lib /opt/freeware/lib; do
for dir in \
${ldir} \
`ls -d ${ldir}/tcl[8-9].[0-9]* 2>/dev/null | sort -r`; do
if test -f ${dir}/tclConfig.sh; then
r_cv_path_TCL_CONFIG="${dir}/tclConfig.sh"
break 2
fi
done
done
fi
More information about the R-help
mailing list