Summary: | setools failing to compile because of bad Python environment | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | J.C. Wren <jcwren> |
Component: | SELinux | Assignee: | Sven Vermeulen (RETIRED) <swift> |
Status: | VERIFIED FIXED | ||
Severity: | normal | CC: | selinux |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | selinux-utils | ||
Package list: | Runtime testing required: | --- | |
Attachments: |
build.log from emerge -q setools
config.log from emerge -q setools configure script from /var/tmp/portage/app-admin/setools-3.3.7-r3/work/setools-3.3.7 Updated ebuild Updated ebuild |
Description
J.C. Wren
2012-07-03 17:03:58 UTC
# emerge --info '=app-admin/setools-3.3.7-r3' Portage 2.1.11.4 (hardened/linux/x86/selinux, gcc-4.6.3, glibc-2.15-r2, 3.4.3-hardened-r1-raid i686) ================================================================= System Settings ================================================================= System uname: Linux-3.4.3-hardened-r1-raid-i686-Intel-R-_Pentium-R-_4_CPU_2.80GHz-with-gentoo-2.1 Timestamp of tree: Tue, 03 Jul 2012 04:45:01 +0000 app-shells/bash: 4.2_p29 dev-java/java-config: 2.1.12 dev-lang/python: 2.7.3-r2 dev-util/cmake: 2.8.8-r3 dev-util/pkgconfig: 0.26 sys-apps/baselayout: 2.1-r1 sys-apps/openrc: 0.10.4 sys-apps/sandbox: 2.5 sys-devel/autoconf: 2.69 sys-devel/automake: 1.11.5, 1.12.1 sys-devel/binutils: 2.22-r1 sys-devel/gcc: 4.6.3 sys-devel/gcc-config: 1.7.3 sys-devel/libtool: 2.4.2 sys-devel/make: 3.82-r3 sys-kernel/linux-headers: 3.4 (virtual/os-headers) sys-libs/glibc: 2.15-r2 Repositories: gentoo hardened-dev x-portage ACCEPT_KEYWORDS="x86 ~x86" ACCEPT_LICENSE="*" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/init.d /etc/php/apache2-php5.3/ext-active/ /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/rc.d /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FCFLAGS="-march=i686 -O2 -pipe" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles news parallel-fetch parse-eapi-ebuild-head protect-owned sandbox selinux sesandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="-march=i686 -O2 -pipe" GENTOO_MIRRORS="http://gentoo.mirrors.pair.com/ ftp://ftp.gtlib.cc.gatech.edu/pub/gentoo http://mirror.espri.arizona.edu/gentoo/" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/hardened-development /usr/local/portage" SYNC="rsync://portage.private.com/gentoo-portage" USE="aac apache2 berkdb bzip2 caps cli cracklib crypt ctype cups curl cxx dlz dri enscript gd gdbm hardened iconv imagemagick jbig jpeg jpeg2k lame mailwrapper mime modules mp3 mpm-prefork mudflap mysql mysqli ncurses netboot nfsv3 nls nptl nptlonly ogg open_perms openmp pam pax_kernel pcre perl php pic png readline rle sasl selinux sendmail sensord server session ssl subversion svnserve tcpd threads tiff truetype twolame unicode unzip urandom usb vhosts vim-syntax vorbis webdav x86 xml xmlreader xpm zip zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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 auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" 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 evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" PHP_TARGETS="php5-3 php5-4" PYTHON_TARGETS="python3_2 python2_7" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 intel mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa via vmware nouveau" 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, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON Created attachment 317053 [details]
build.log from emerge -q setools
# emerge -pqv '=app-admin/setools-3.3.7-r3' [ebuild U ] app-admin/setools-3.3.7-r3 [3.3.7-r1] USE="python -X -debug -java" Do you happen to have the configure.log file in /var/tmp/portage/app-admin/setools somewhere? As this is a configure check failure, this log file might give a clue why it is happening. I don't have this on arch nor ~arch here for the moment. Created attachment 317061 [details]
config.log from emerge -q setools
There wasn't a configure.log, but config.log does exist (and this is it)
configure:17519: checking for python configure:17537: found /usr/bin/python configure:17549: result: /usr/bin/python configure:17583: checking for Python include path configure:17593: result: -I/usr/include/python2.7 configure:17600: checking for Python library path configure:17620: result: ('-L/usr/lib/python2.7', '-lpython2.7') configure:17627: checking for Python site-packages path configure:17633: result: /usr/lib/python2.7/site-packages configure:17640: checking python extra libraries configure:17647: result: ('', '-lpthread -ldl -lutil') configure:17694: i686-pc-linux-gnu-gcc -std=gnu99 -o conftest -O2 -march=pentium4 -pipe -fomit-frame-pointer -I/usr/include/python2.7 -Wl,-O1 -Wl,--as-needed conftest.c ('-L/usr/lib/python2.7', '-lpython2.7') >&5 i686-pc-linux-gnu-gcc: error: ('-L/usr/lib/python2.7',: No such file or directory i686-pc-linux-gnu-gcc: error: '-lpython2.7'): No such file or directory This is rather odd, please re-emerge python:2.7 and retest, also verify that the path is actually valid i.e /usr/lib/python2.7. Re-emerge'd python, same thing. What's it trying to find, specifically? /usr/lib/python2.7 exists. There's a bunch of .so files in /usr/lib/python2.7/lib-dynload and /usr/lib/python2.7/site-packages. I have two systems that this is occurring on. There's only one version of python installed. # eselect python list Available Python interpreters: [1] python2.7 * # locate libpython /usr/lib/libpython2.7.a /usr/lib/libpython2.7.so /usr/lib/libpython2.7.so.1.0 # locate libdl /lib/libdl-2.15.so /lib/libdl.so.2 /usr/lib/libdl.a /usr/lib/libdl.so # locate libpthread /lib/libpthread-2.15.so /lib/libpthread.so.0 /usr/lib/libpthread.a /usr/lib/libpthread.so /usr/lib/libpthread_nonshared.a locate doesn't show what you have on your system, only what was on your system the moment the database was created. What is the output of "ls -lZ /usr/lib*/libpython*" ? Actually, 'locate' *does* show you what you have on your system if you run 'updatedb' prior to using it. Which I did. At any rate, the output for "ls -lZ /usr/lib*/libpython*" is # ls -lZ /usr/lib*/libpython* -rw-r--r-- 1 root root ? 2371710 Jul 1 22:28 /usr/lib/libpython2.7.a lrwxrwxrwx 1 root root ? 19 Jul 1 22:28 /usr/lib/libpython2.7.so -> libpython2.7.so.1.0 -r-xr-xr-x 1 root root ? 1592176 Jul 1 22:28 /usr/lib/libpython2.7.so.1.0 Is SELinux already enabled on your system (sestatus)? If so, then it might be a permission issue. In your output, the "?" means that there is no label assigned to the files (yet). If SELinux is enabled, then portage would not have access to read those files. In that case, relabel your file system and retry (rlpkg -a -r). # sestatus -v SELinux status: disabled # Should I try relabeling anyway? I'm not sure what the implications of that might be. No, relabeling won't help if SELinux wasn't active yet... but it seems I was looking in the wrong direction. """ configure:17694: i686-pc-linux-gnu-gcc -std=gnu99 -o conftest -O2 -march=pentium4 -pipe -fomit-frame-pointer -I/usr/include/python2.7 -Wl,-O1 -Wl,--as-needed conftest.c ('-L/usr/lib/python2.7', '-lpython2.7') >&5 i686-pc-linux-gnu-gcc: error: ('-L/usr/lib/python2.7',: No such file or directory i686-pc-linux-gnu-gcc: error: '-lpython2.7'): No such file or directory configure:17694: $? = 1 """ What happens here is that the configure script is adding ('-L/usr/lib/python2.7', '-lpython2.7') as an argument, which is incorrect. Could you upload the configure script? We'll need to figure out why it is doing that. The configure script is probably at /var/tmp/portage/app-admin/setools/setools-3.3.7-r3/configure Created attachment 318354 [details]
configure script from /var/tmp/portage/app-admin/setools-3.3.7-r3/work/setools-3.3.7
Ok so your build sais you don't have pkgconfig or doesn't detect it. Because of that, it tries to deduce the PYTHON_LDFLAGS itself using some python code (which isn't correct). If you don't have pkgconfig installed, does the problem go away the moment it is installed? If so, i'll probably have it depend on pkgconfig for this, because the python code is auto-generated and probably made for Python 3.x. If you don't see that as an option, does it help to provide PYTHON_LDFLAGS yourself (export PYTHON_LDFLAGS="-L/usr/lib/python2.7 -lpython2.7")? pkgconfig-0.27 is installed. Using the "export PYTHON_LDFLAGS="-L/usr/lib/python2.7 -lpython2.7", I get make[2]: Leaving directory `/var/tmp/portage/app-admin/setools-3.3.7-r3/work/setools-3.3.7' make[1]: Leaving directory `/var/tmp/portage/app-admin/setools-3.3.7-r3/work/setools-3.3.7' * ERROR: app-admin/setools-3.3.7-r3 failed (compile phase): * PYTHON_LDFLAGS should be indexed array * ... /usr/lib/portage/bin/isolated-functions.sh: line 214: wait: `PYTHON_LDFLAGS should be indexed array': not a pid or valid job spec * The complete build log is located at '/var/tmp/portage/app-admin/setools-3.3.7-r3/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/app-admin/setools-3.3.7-r3/temp/environment'. Hm, I'll check the differences between your config.log and mine when I get back home. If pkg-config is installed, it should detect it (I can remember my config.log showing "has_pkg_config='yes'" whereas yours says "has_pkg_config=''" Do you have python 3.x on your system as well? If you have a python-3 as the default Python, does that work? It seems like python2.7 prints out the library information differently than 3.x. # eselect python list Available Python interpreters: [1] python2.7 * # 2.7 only. Hmm, okay, seems like I'll need to patch m4/ac_python_devel.m4 to properly export the PYTHON_LIBS variable to make it an indexed array rather than a string that looks like an array. Problem is that the syntax for python 2.x (I think 2.5 and earlier) supported that, and 2.7 doesn't anymore as it tries to be somewhat compatible with the print() function of Python 3. You can probably work around this for now using: """ ~# export PYTHON_LDFLAGS=("-L/usr/lib/python2.7", "-lpython2.7") ~# emerge setools """ Created attachment 318476 [details]
Updated ebuild
This ebuild marks the PYTHON_LDFLAGS in the m4/ac_python_devel.m4 as an array. Not sure if that's a proper fix, but early tests here show that it doesn't hurt on systems with python 3 already available.
Can you test this ebuild out (without the workaround then)?
OK, trying the revised ebuild gives me the original error. checking consistency of all components of python development environment... no configure: error: Could not link test program to Python. Maybe the main Python library has been installed in some non-standard library path. If so, pass it to configure, via the LDFLAGS environment variable. Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" And trying the export of PYTHON_LDFLAGS as an array does the same thing :( Grmbl... Okay, is it an option to install python-3 on the system? Python 2.7 and 3.x can coexist next to each other. If that's okay for you (and it works) I'll probably depend on python 3 (for building). Run-time, python-2 and python-3 should both be supported. I may be able to install Python-3. I had it installed at one point, but ended up masking it because other ebuilds were getting confused. This was a couple months ago, and that may have been resolved. Were you able to test it with python-3 installed? I did emerge python-3, but have not eselect'ed it to be active (should I? That seems like massive breakage for everything else. I do not have good luck where python is involved), and it still failed the compile. Created attachment 321396 [details]
Updated ebuild
This ebuild pulls in a new fix that resets the PYTHON_LDFLAGS variable if the used Python version is 2.7. Can you give this one a go?
I tried it on a stable system where python-3* was fully unmerged (so it wouldn't be used) and I could first reproduce your problem, and then with this ebuild the problem was gone. Also tried on a stable system with python-3* installed to make sure I'm not introducing other build problems, which wasn't the case.
setools-3.3.7-r5 in hardened-dev overlay In main tree, ~arch 3.3.7-r6 is stable |