I have ccache in the FEATURES list in /etc/make.conf. When I tried to compile nmap-3.95 I got the following error: checking for ccache g++... MISSING configure: error: Could not locate a C++ compiler. If it exists, add it to your PATH or give configure the CXX=path_to_compiler argument. Otherwise, install a C++ compiler such as g++ or install a binary package of Nmap (see http://www.insecure.org/nmap/nmap_download.html )) After taking ccache out of the FEATURES list nmap-3.95 compiled fine
please show output of # emerge info # gcc-config --list # emerge -pv nmap
emerge info: ---------------------------------------------------------------------------------- Portage 2.1_pre3-r1 (hardened/x86/2.6, gcc-3.4.5, glibc-2.3.5-r3, 2.6.14-gentoo-r3n i686) ================================================================= System uname: 2.6.14-gentoo-r3n i686 Intel(R) Pentium(R) 4 CPU 1.70GHz Gentoo Base System version 1.12.0_pre13 ccache version 2.4 [enabled] dev-lang/python: 2.3.5, 2.4.2 sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.59-r7 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1 sys-devel/binutils: 2.16.1-r1 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.11-r3 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -mcpu=pentium4 -fomit-frame-pointer -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d" CXXFLAGS="-O2 -mcpu=pentium4 -fomit-frame-pointer -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig ccache distlocks sandbox sfperms strict" GENTOO_MIRRORS="http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ http://mirror.etf.bg.ac.yu/gentoo http://gentoo.inode.at/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/" LC_ALL="en_US.utf8" MAKEOPTS="-j2" PKGDIR="/usr/portage//packages/x86/" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage/" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="X aalib adns alsa aqt audiofile avi berkdb bzip2 cdr cmucl crypt cups curl directfb dlloader dvd emacs ethereal exif expat fam flac foomaticdb gd gdbm gif glut gmp gpm gtk gtk2 hardened idn imlib ipv6 java jpeg junit lcms libcaca libwww lua mad mikmod mmx mng mysql nas ncurses nls ogg openal opengl pam pcre perl php pic png python qt readline samba sdl sqlite sse ssl svga tcltk tcpd tetex tiff truetype udev unicode usb userlocales vorbis x86 xemacs xml xml2 xmms xvid zlib elibc_glibc kernel_linux userland_GNU video_cards_radeon" Unset: ASFLAGS, CTARGET, LANG, LDFLAGS, LINGUAS ------------------------------------------------------------------------------- gcc-config -l: ------------------------------------------------------------------------------- [1] i686-pc-linux-gnu-3.3.4 [2] i686-pc-linux-gnu-3.4.5 * [3] i686-pc-linux-gnu-3.4.5-hardenednopie [4] i686-pc-linux-gnu-3.4.5-hardenednopiessp [5] i686-pc-linux-gnu-3.4.5-hardenednossp [6] i686-pc-linux-gnu-3.4.5-vanilla ------------------------------------------------------------------------------- emerge -pv nmap: ------------------------------------------------------------------------------- [ebuild R ] net-analyzer/nmap-3.95 USE="gtk ssl" 0 kB -------------------------------------------------------------------------------
Could you please try to temporarily switch to i686-pc-linux-gnu-3.3.4 and see whether nmap compiles when this gcc profile is used?
sorry for the delay, but here comes the result: 1) # gcc-config 1 2) # gcc-config -l [1] i686-pc-linux-gnu-3.3.4 * [2] i686-pc-linux-gnu-3.4.5 [3] i686-pc-linux-gnu-3.4.5-hardenednopie [4] i686-pc-linux-gnu-3.4.5-hardenednopiessp [5] i686-pc-linux-gnu-3.4.5-hardenednossp [6] i686-pc-linux-gnu-3.4.5-vanilla 3) # emerge -av nmap These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] net-analyzer/nmap-3.95 USE="gtk ssl" 0 kB Total size of downloads: 0 kB Do you want me to merge these packages? [Yes/No] >>> emerge (1 of 1) net-analyzer/nmap-3.95 to / >>> checksums files ;-) nmap-3.93.ebuild >>> checksums files ;-) nmap-3.95.ebuild >>> checksums files ;-) nmap-3.90.ebuild >>> checksums files ;-) nmap-3.81.ebuild >>> checksums files ;-) nmap-3.83.ebuild >>> checksums files ;-) files/digest-nmap-3.81 >>> checksums files ;-) files/digest-nmap-3.83 >>> checksums files ;-) files/digest-nmap-3.90 >>> checksums files ;-) files/digest-nmap-3.93 >>> checksums files ;-) files/digest-nmap-3.95 >>> checksums files ;-) files/nmap-logo-64.png >>> checksums files ;-) files/nmap-3.93-gcc41.patch >>> checksums src_uri ;-) nmap-3.95.tar.bz2 >>> Unpacking source... >>> Unpacking nmap-3.95.tar.bz2 to /var/tmp/portage/nmap-3.95/work >>> Source unpacked. >>> Compiling source in /var/tmp/portage/nmap-3.95/work/nmap-3.95 ... * econf: updating nmap-3.95/nsock/src/config.guess with /usr/share/gnuconfig/config.guess * econf: updating nmap-3.95/nsock/src/config.sub with /usr/share/gnuconfig/config.sub * econf: updating nmap-3.95/libpcap/config.guess with /usr/share/gnuconfig/config.guess * econf: updating nmap-3.95/libpcap/config.sub with /usr/share/gnuconfig/config.sub * econf: updating nmap-3.95/libpcre/config.guess with /usr/share/gnuconfig/config.guess * econf: updating nmap-3.95/libpcre/config.sub with /usr/share/gnuconfig/config.sub * econf: updating nmap-3.95/config.guess with /usr/share/gnuconfig/config.guess * econf: updating nmap-3.95/config.sub with /usr/share/gnuconfig/config.sub * econf: updating nmap-3.95/libdnet-stripped/config/config.guess with /usr/share/gnuconfig/config.guess * econf: updating nmap-3.95/libdnet-stripped/config/config.sub with /usr/share/gnuconfig/config.sub ./configure --prefix=/usr --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --with-nmapfe --with-openssl --build=i686-pc-linux-gnu checking for i686-pc-linux-gnu-gcc... ccache cc 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 ccache cc accepts -g... yes checking for ccache cc option to accept ANSI C... none needed checking for i686-pc-linux-gnu-g++... ccache g++ checking whether we are using the GNU C++ compiler... yes checking whether ccache g++ accepts -g... yes checking for ccache g++... MISSING configure: error: Could not locate a C++ compiler. If it exists, add it to your PATH or give configure the CXX=path_to_compiler argument. Otherwise, install a C++ compiler such as g++ or install a binary package of Nmap (see http://www.insecure.org/nmap/nmap_download.html )) !!! Please attach the following file when filing a report to bugs.gentoo.org: !!! /var/tmp/portage/nmap-3.95/work/nmap-3.95/config.log !!! ERROR: net-analyzer/nmap-3.95 failed. !!! Function econf, Line 489, Exitcode 0 !!! econf failed !!! If you need support, post the topmost build error, NOT this status message.
Please follow the on-screen instructions displayed by the ebuild: !!! Please attach the following file when filing a report to bugs.gentoo.org: !!! /var/tmp/portage/nmap-3.95/work/nmap-3.95/config.log and attach the config.log file to this bug :)
Created attachment 77128 [details] config.log output for compilation of nmap-3.95 with gcc-3.4.5 Here is the file /var/tmp/portage/nmap-3.95/work/nmap-3.95/config.log . I used gcc 3.4.5 for compilation.
I think you might have set some env. variables that are causing the problem. Please try doing: # unset CC CXX # emerge nmap
After unsetting CC and CXX nmap compiles fine. > I think you might have set some env. variables that are causing the problem. But my intention was to compile nmap with support of ccache thus ccache is listed in the FEATURES list in /etc/make.conf . And therefore it is correct if CC is set to "ccache cc". And my reason for submitting this as a bug was that nmap can't be compiled with support of ccache so that it can be handled in the ebuild. If this is wrong please correct me :-)
First of all, nmap *can* be compiled with 'ccache' in FEATURES. I'm able to do so as long as the CC and CXX variables are not set. If I set them, things start to break. I was always under the impression, that one only needs to put 'ccache' in FEATURES to activate ccache support in Portage and that no playing with env variables is required. If you think this is not the case, please give me a link to the docs describing how ccache should be used with Portage.
Ok, now I figured out, why CC was set to "ccache cc". In the portage guide I read that I should modify the PATH variable in /etc/env.d/00basic if I wanted to use ccache for other users as default. But after doing this nothing changed and the cache directory was still empty. So I decided to set the CC variable in my users profile. And this was inherited after changing to root with su. Now I have modified the PATH variable in my profile to include the ccache bin directory before /usr/bin and it now works without changing CC. Now my only remaining question is if the ebuild could/should deal with env-variables that are set but prevent the program from compiling. I have learned my lesson and my next bug report will be better.
I don't think the ebuild is the proper place to deal with this kind of problems. I imagine nmap isn't the only package that can be 'broken' by having wrong settings in env. variables. If it is to be handled at all, I think it would be Portage's job (as in the core emerge program, not the ebuilds) to sanitize the environment.