Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 287329 - tk-8.5.7 picks up wrong tcl.h
Summary: tk-8.5.7 picks up wrong tcl.h
Status: RESOLVED WONTFIX
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: AMD64 Linux
: High normal
Assignee: Gentoo Linux bug wranglers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-10-02 09:39 UTC by Klaas Decanniere
Modified: 2009-10-02 11:06 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Klaas Decanniere 2009-10-02 09:39:22 UTC
I have problems emerging tk-8.5.7.

The system tcl is 8.5.7, but I also have a tcl/tk living in /usr/local (needed for a specific program which is vital to my work and which needs a specific 8.4 version).

when emerging tk-8.5.7, it picks up the wrong tcl version 

How can I exclude /usr/local from anything e-build related?
I have tried adding
SEARCH_DIRS_MASK="/usr/local"
to /etc/make.conf (bug 59803), but this does not help

Reproducible: Always

Actual Results:  
make -j1
x86_64-pc-linux-gnu-gcc -c -O2 -march=nocona -O2 -pipe -pipe  -Wall -fPIC -I/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../unix -I/var/tmp/portag
e/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic -I/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../bitmaps -I/usr/lib64/tcl8.5/include/generic -I/
usr/lib64/tcl8.5/include/unix  -DPACKAGE_NAME=\"tk\" -DPACKAGE_TARNAME=\"tk\" -DPACKAGE_VERSION=\"8.5\" -DPACKAGE_STRING=\"tk\ 8.5\" -DPACKAGE_BUGREPORT=\
"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHR
EAD_GETATTR_NP=1 -DGETATTRNP_NOT_DECLARED=1 -DTCL_THREADS=1 -DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DTCL_SHLIB_EXT=\".so
\" -DTCL_CFG_OPTIMIZED=1 -DTCL_CFG_DEBUG=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_INTPTR_T=1 -
DHAVE_UINTPTR_T=1 -DHAVE_PW_GECOS=1 -DHAVE_XSS=1     -DTCL_NO_DEPRECATED  -DUSE_TCL_STUBS  /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic
/tk3d.c
In file included from /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tkInt.h:21,
                 from /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tk3d.c:16:
/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tk.h:23:3: error: #error Tk 8.5 must be compiled with tcl.h from Tcl 8.5
make: *** [tk3d.o] Error 1

Expected Results:  
I would like the e-build to ignore anything in /usr/local and to use the system version of tcl

build log file:

 *
 * PLEASE NOTE: You are compiling tk-8.5.7 with
 * threading enabled.
 * Threading is not supported by all applications
 * that compile against tcl. You use threading at
 * your own discretion.
 *
>>> Unpacking source...
>>> Unpacking tk8.5.7-src.tar.gz to /var/tmp/portage/dev-lang/tk-8.5.7/work
 * Applying tk-8.4.11-multilib.patch ...                                                                                                            [ ok ]
 * Applying tk-8.5_alpha6-tclm4-soname.patch ...                                                                                                    [ ok ]
 * Running eautoreconf in '/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix' ...
 * Running autoconf ...                                                                                                                             [ ok ]
>>> Source unpacked in /var/tmp/portage/dev-lang/tk-8.5.7/work
>>> Compiling source in /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7 ...
./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --
sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --with-tcl=/usr/lib64 --enable-threads --disable-xft --disable-symbols
checking for Tcl configuration... found /usr/lib64/tclConfig.sh
checking for existence of /usr/lib64/tclConfig.sh... loading
checking for tclsh... /usr/local/bin/tclsh8.4
checking for tclsh in Tcl build directory... /usr/lib64/tclsh
checking whether to use symlinks for manpages... no
checking whether to compress the manpages... no
checking whether to add a package name suffix for the manpages... no
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdlib.h... (cached) yes
checking if the compiler understands -pipe... yes
checking for pthread_mutex_init in -lpthread... yes
checking for pthread_attr_setstacksize... yes
checking for pthread_attr_get_np... no
checking for pthread_getattr_np... yes
checking for pthread_getattr_np declaration... missing
checking for building with threads... yes (threaded core)
checking how to build libraries... shared
checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib
checking if 64bit support is requested... no
checking if 64bit Sparc VIS support is requested... no
checking if compiler supports visibility "hidden"... yes
checking if rpath support is requested... yes
checking system version... Linux-2.6.27-gentoo-r7
checking for dlopen in -ldl... yes
checking for ar... ar
checking for build with symbols... no
checking for required early compiler flags...  _LARGEFILE64_SOURCE
checking for 64-bit integer type... using long
checking whether byte ordering is bigendian... no
checking for fd_set in sys/types... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking whether time.h and sys/time.h may both be included... yes
checking for strtod... yes
checking for Solaris2.4/Tru64 strtod bugs... ok
checking for mode_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for uid_t in sys/types.h... yes
checking for intptr_t... yes
checking for uintptr_t... yes
checking pw_gecos in struct pwd... yes
checking for X... libraries , headers
checking for X11 header files... checking for main in -lXbsd... no
checking for X11/extensions/scrnsaver.h... yes
checking for XScreenSaverQueryInfo... no
checking for XScreenSaverQueryInfo in -lXext... no
checking for XScreenSaverQueryInfo in -lXss... yes
checking whether to use xft... no
checking whether char is unsigned... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating tkConfig.sh
make -j1
x86_64-pc-linux-gnu-gcc -c -O2 -march=nocona -O2 -pipe -pipe  -Wall -fPIC -I/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../unix -I/var/tmp/portag
e/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic -I/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../bitmaps -I/usr/lib64/tcl8.5/include/generic -I/
usr/lib64/tcl8.5/include/unix  -DPACKAGE_NAME=\"tk\" -DPACKAGE_TARNAME=\"tk\" -DPACKAGE_VERSION=\"8.5\" -DPACKAGE_STRING=\"tk\ 8.5\" -DPACKAGE_BUGREPORT=\
"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHR
EAD_GETATTR_NP=1 -DGETATTRNP_NOT_DECLARED=1 -DTCL_THREADS=1 -DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DTCL_SHLIB_EXT=\".so
\" -DTCL_CFG_OPTIMIZED=1 -DTCL_CFG_DEBUG=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_INTPTR_T=1 -
DHAVE_UINTPTR_T=1 -DHAVE_PW_GECOS=1 -DHAVE_XSS=1     -DTCL_NO_DEPRECATED  -DUSE_TCL_STUBS  /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic
/tk3d.c
In file included from /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tkInt.h:21,
                 from /var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tk3d.c:16:
/var/tmp/portage/dev-lang/tk-8.5.7/work/tk8.5.7/unix/../generic/tk.h:23:3: error: #error Tk 8.5 must be compiled with tcl.h from Tcl 8.5
make: *** [tk3d.o] Error 1
 *
 * ERROR: dev-lang/tk-8.5.7 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 2774:  Called die
 * The specific snippet of code:
 *       emake || die
 *  The die message:
 *   (no error message)
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/dev-lang/tk-8.5.7/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/tk-8.5.7/temp/environment'.


and emerge --info:


Portage 2.1.6.13 (default/linux/amd64/2008.0, gcc-4.1.2, glibc-2.9_p20081201-r2, 2.6.27-gentoo-r7 x86_64)
=================================================================
System uname: Linux-2.6.27-gentoo-r7-x86_64-Intel-R-_Xeon-R-_CPU_E5410_@_2.33GHz-with-gentoo-1.12.11.1
Timestamp of tree: Thu, 01 Oct 2009 14:15:02 +0000
app-shells/bash:     4.0_p28
dev-java/java-config: 1.3.7-r1, 2.1.8-r1
dev-lang/python:     2.4.6, 2.5.4-r3, 2.6.2-r1
dev-python/pycrypto: 2.0.1-r8
dev-util/cmake:      2.6.2-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.13, 2.63-r1
sys-devel/automake:  1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-march=nocona -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ http://mirror.netcologne.de/gentoo/ "
LDFLAGS="-Wl,-O1"
LINGUAS="en"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X aac acl acpi alsa amd64 automount berkdb bzip2 cairo cli cracklib crypt cups dbus dri emacs fortran gdbm gif gimp gpm hal iconv imagemagick ipv6 isdnlog java jpeg kde kerberos latex ldap mmx modules mp3 mudflap multilib ncurses nls nptl nptlonly nsplugin nvidia opengl openmp pam pcre pdf perl png pppd python qt3support quicktime readline reflection samba session spl sse sse2 ssl svg sysfs tcl tcpd threads tiff tk truetype-fonts type1-fonts unicode usb xinerama xorg zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" USERLAND="GNU" VIDEO_CARDS="nv vesa"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Comment 1 Justin Lecher (RETIRED) gentoo-dev 2009-10-02 10:19:47 UTC
If you have such things like libs installed outside the portage system it is your problem to handle all paths correctly. Therefor we cannot help you.
You can use our mailing lists as well as our irc channels to get help with that, but this is no bug which we handle.
I would tarball your /usr/local stuff and remove it. upgrade tcl and unpack it again.
Comment 2 Sebastian Luther (few) 2009-10-02 11:06:52 UTC
(In reply to comment #1)
> If you have such things like libs installed outside the portage system it is
> your problem to handle all paths correctly. Therefor we cannot help you.
> You can use our mailing lists as well as our irc channels to get help with
> that, but this is no bug which we handle.
> I would tarball your /usr/local stuff and remove it. upgrade tcl and unpack it
> again.
> 

Or even better. Never install things without the package manager. You could modify the ebuilds to suit your needs (and when you are at submit them). Older versions can be found at [1] by selecting "Show dead files". Having the same package in /usr /usr/local calls for breakage. For example, doing this with python leads to a totally borked system. If you really don't see another option you could install it in some path that isn't in the default search path, like your home directory. Those you could tell the package that needs this special version where it is and all other packages wouldn't notice.

[1] http://sources.gentoo.org/viewcvs.py/gentoo-x86/

>I would like the e-build to ignore anything in /usr/local and to use the system
>version of tcl

That's mostly out of the control of the package manager. You would need to adjust the default search path for include files. Even this might be not enough since some broken build systems hardcode stuff that might circumvent your changes. By default /usr/local shadows /usr.