Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 349320 - dev-lang/python-2.7.1: USE=tk tries linking to X11 even when dev-lang/tk was built USE=aqua
Summary: dev-lang/python-2.7.1: USE=tk tries linking to X11 even when dev-lang/tk was ...
Status: VERIFIED FIXED
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All OS X
: High normal (vote)
Assignee: Gentoo Prefix
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-21 21:02 UTC by Charles Davis
Modified: 2011-01-08 20:00 UTC (History)
0 users

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


Attachments
Build log for dev-lang/python-2.7.1-r00.1 (build.log,236.61 KB, text/plain)
2010-12-21 21:04 UTC, Charles Davis
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Charles Davis 2010-12-21 21:02:59 UTC
During a build of dev-lang/python-2.7.1 (NOTE: this happens with r00.1, too) with USE=tk, when it attempts to build the _tkinter module (needed for Tk support), it always tries to link to libX11, even when dev-lang/tk was built USE=aqua. Of course, I don't have libX11 installed, so the build fails when it tries to link _tkinter (log attached).

A short term fix is to just make python-2.7.1 depend on x11-libs/libX11, but the right fix IMO is not to try linking libX11 at all if Tk was built USE=aqua.

Reproducible: Always

Steps to Reproduce:
1. USE=aqua emerge tk
2. emerge --unmerge libX11
3. USE=tk emerge =dev-lang/python-2.7.1-r00.1

Actual Results:  
Building the _tkinter module fails because there is no libX11 on the system.

Expected Results:  
Building the _tkinter module should succeed, even when there is no libX11 installed.

Portage 2.2.01.17409-prefix (prefix/darwin/macos/10.6/x86, gcc-4.2.1, unavailable, 10.5.0 i386)
=================================================================
System uname: Darwin-10.5.0-i386-32bit
Timestamp of tree: Tue, 21 Dec 2010 19:42:43 +0000
distcc 3.1-toolwhip.1 i386-apple-darwin10.0 [disabled]
app-shells/bash:     4.1_p7
dev-lang/python:     2.6.5-r2
dev-util/cmake:      2.8.1-r2
sys-devel/autoconf:  2.68
sys-devel/automake:  1.9.6-r3, 1.11.1
sys-devel/gcc-config: 1.4.1-r00.2
sys-devel/libtool:   2.4
sys-devel/make:      3.82
Repositories: gentoo_prefix
ACCEPT_KEYWORDS="~x86-macos"
ACCEPT_LICENSE="* -@EULA"
CBUILD="i686-apple-darwin10"
CFLAGS="-O2 -pipe -march=core2"
CHOST="i686-apple-darwin10"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/portage /etc/revdep-rebuild /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=core2"
DISTDIR="/Users/chip/Gentoo/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs collision-protect distlocks fixlafiles fixpackages news nostrip parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LDFLAGS="-Wl,-dead_strip_dylibs"
MAKEOPTS="-j4"
PKGDIR="/Users/chip/Gentoo/usr/portage/packages"
PORTAGE_CONFIGROOT="/Users/chip/Gentoo/"
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="/Users/chip/Gentoo/var/tmp"
PORTDIR="/Users/chip/Gentoo/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"
USE="aqua bash-completion berkdb bzip2 coreaudio cracklib crypt curl cxx dbus exceptions expat extensions gdbm gmp gnutls gpg gzip iconv icu ipv6 jbig jpeg libssh2 lzma lzo mmx mmxext mng modules mysql ncurses nls objc objc++ pch perl png prefix python qt3support readline ruby sql sqlite3 sse sse2 ssl subversion tcl threads tiff tk truetype unicode vim-syntax x86-macos xml zlib" 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 cgi cgid 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" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="Darwin" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse" KERNEL="Darwin" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" PHP_TARGETS="php5-2" RUBY_TARGETS="ruby18" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

[ebuild  NS   ] dev-lang/python-2.7.1-r00.1 [2.6.5-r2] USE="aqua gdbm ipv6 ncurses readline sqlite ssl threads tk (wide-unicode) xml (-berkdb) -build -doc -examples -wininst" 
[ebuild   R   ] dev-lang/tk-8.5.9-r1  USE="aqua threads truetype -debug -xscreensaver"
Comment 1 Charles Davis 2010-12-21 21:04:17 UTC
Created attachment 257708 [details]
Build log for dev-lang/python-2.7.1-r00.1
Comment 2 Charles Davis 2011-01-08 03:13:41 UTC
I think I've figured out the problem.

In Python's setup.py, there are two methods for detecting how to build the _tkinter module. The 'regular' method gets called on every other platform. Then there's the special Darwin method. It checks to see if there are Tcl and Tk frameworks to be found. Since there aren't, because Gentoo's Tcl and Tk are installed as plain ol' dylibs even on Mac OS, that check fails. So Python falls into the 'regular' method--which, unfortunately, assumes 'Unix' == 'X11'.

The question is now, what's the proper fix? In the long term, this needs to be fixed upstream (i.e. detect_tkinter_darwin() should detect Aqua-built dylibs as well as frameworks), but I'm looking for a short-term fix so I can get 2.7 built here.
Comment 3 Fabian Groffen gentoo-dev 2011-01-08 13:34:39 UTC
python's setup.py shouldn't do anything special for OSX on Prefix.  I'll try to patch it out.
Comment 4 Fabian Groffen gentoo-dev 2011-01-08 14:34:25 UTC
I added a patch to python-2.7.1-r00.1 not to blindly link against X11 when using tkinter.  Thanks for the research!
Comment 5 Charles Davis 2011-01-08 20:00:04 UTC
Thanks!