G'day Peter, On Sat, 18 Nov 2017 23:20:25 +0100 peter dalgaard <pda...@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 ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.