Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 243396 - eix-0.14.1 fails to compile on IRIX
Summary: eix-0.14.1 fails to compile on IRIX
Status: RESOLVED FIXED
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All IRIX
: High normal
Assignee: Gentoo non-Linux Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-10-23 14:48 UTC by Stuart Shelton
Modified: 2008-11-09 06:13 UTC (History)
2 users (show)

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


Attachments
Fix various compilation issues (eix-0.14.1-compilation.patch,3.35 KB, patch)
2008-10-23 18:10 UTC, Martin Väth
Details | Diff
Previous patch with a stupid typo fixed (eix-0.14.1-compilation.patch,3.36 KB, patch)
2008-10-24 04:35 UTC, Martin Väth
Details | Diff
The hopefully now working patch for eix-0.14.1 and eix-0.14.2 (eix-0.14.1-compilation.patch,3.36 KB, patch)
2008-10-24 15:49 UTC, Martin Väth
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Stuart Shelton 2008-10-23 14:48:48 UTC
I currently have eix-0.14.0 installed, which built correctly.

With 0.14.1, however, I get:

source='eix.cc' object='eix.o' libtool=no \
        DEPDIR=.deps depmode=sgi /opt/portage/bin/bash ../config/depcomp \
        CC -DHAVE_CONFIG_H -I. -I..   -I/opt/portage/usr/include -DSYSCONFDIR=\"/opt/portage/etc\" -J2 -O2 -n32 -mips4 -r14000 -float_const -use_readonly_const -TARG:isa=mips4:platform=ip35:processor=r14000 -TENV:zeroinit_in_bss=ON -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -diag_error 1035 -FE:eliminate_duplicate_inline_copies:template_in_elf_section -woff 1174,1183,1185,1552,3968,3970  -c -o eix.o eix.cc
cc-1460 CC: WARNING File = ./eixTk/formated.h, Line = 145
  Function function "eix::format::goto_next_spec" is redeclared "inline" after
          being called.

    inline void format::goto_next_spec()
                        ^

cc-1020 CC: ERROR File = ./portage/packagesets.h, Line = 40
  The identifier "find" is undefined.

                { return (find(begin(), end(), i) != end()); }
                          ^

cc-1209 CC: WARNING File = ./eixTk/formated.h, Line = 139
  The controlling expression is constant.

                assert(! "unknown specifier");
                ^
          A template was detected during header processing.
            instantiation of "eix::format &eix::format::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 52 of
                      "./eixTk/exceptions.h"
            instantiation of "ExBasic &ExBasic::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 181 of
                      "./eixTk/ansicolor.h"

1 error detected in the compilation of "eix.cc".
make[2]: *** [eix.o] Error 2
make[2]: Leaving directory `/usr/opt/portage/var/tmp/portage/app-portage/eix-0.14.1/work/eix-0.14.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/opt/portage/var/tmp/portage/app-portage/eix-0.14.1/work/eix-0.14.1'
make: *** [all] Error 2
 * ERROR: app-portage/eix-0.14.1 failed:
 * emake failed
 * 
 * Call stack:
 * ebuild.sh: 49: <call src_compile>
 * environment: 92:     emake || die "emake failed"


emerge --info:

!!! No gcc found. You probably need to 'source /etc/profile'
!!! to update the environment of this terminal and possibly
!!! other terminals also.
Portage 2.2.00.11700-prefix (default-prefix/irix/6.5/mips, [unavailable], unavailable, 6.5 IP35)
=================================================================
System uname: IRIX-6.5-IP35-mips-32bit
Timestamp of tree: Thu, 23 Oct 2008 12:21:29 +0000
app-shells/bash:     3.2_p39
dev-lang/python:     2.5.2-r8
sys-devel/autoconf:  2.63
sys-devel/automake:  1.10.1-r1
sys-devel/libtool:   1.5.26
ACCEPT_KEYWORDS="mips-irix ppc-macos sparc-solaris x86-freebsd x86-solaris ~mips-irix ~ppc-macos ~sparc-solaris ~x86-freebsd ~x86-solaris"
CBUILD="mips-sgi-irix6.5"
CFLAGS="-c99 -O2 -n32 -mips4 -r14000 -float_const -use_readonly_const -TARG:isa=mips4:platform=ip35:processor=r14000 -TENV:zeroinit_in_bss=ON -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -diag_error 1035 -woff 1174,1183,1185,1552,3968,3970"
CHOST="mips-sgi-irix6.5"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/revdep-rebuild /etc/terminfo"
CPPFLAGS=" -I/opt/portage/usr/include"
CXXFLAGS="-J2 -O2 -n32 -mips4 -r14000 -float_const -use_readonly_const -TARG:isa=mips4:platform=ip35:processor=r14000 -TENV:zeroinit_in_bss=ON -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -diag_error 1035 -FE:eliminate_duplicate_inline_copies:template_in_elf_section -woff 1174,1183,1185,1552,3968,3970 "
DISTDIR="/opt/portage/usr/portage/distfiles"
EPREFIX="/opt/portage"
FEATURES="collision-protect distlocks fixpackages nostrip parallel-fetch preserve-libs protect-owned sfperms strict test unmerge-orphans userfetch userpriv"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LANG="en_GB"
LDFLAGS="-Wl,-s,-x,-n32,-mips4,-rdata_shared,-allow_jump_at_eop,-rpath,/opt/portage/usr/lib:/opt/portage/lib -L/opt/portage/usr/lib -L/opt/portage/lib"
LINGUAS="en en_GB"
PKGDIR="/opt/portage/usr/portage/packages"
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="/opt/portage/var/tmp"
PORTDIR="/opt/portage/usr/portage"
PORTDIR_OVERLAY="/opt/portage/usr/local/portage"
SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"
USE="X acl bash-completion berkdb bzip2 cracklib crypt cscope expat gdbm iconv ipv6 ithreads midi mips-irix ncurses nls openmp pcre perl png prefix python readline slang sqlite sqlite3 ssl tcl test threads unicode urandom vim-pager vim-syntax xprint zlib" 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="IRIX" INPUT_DEVICES="keyboard mouse" KERNEL="IRIX" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_GB" USERLAND="GNU"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Martin Väth 2008-10-23 18:10:11 UTC
Created attachment 169610 [details, diff]
Fix various compilation issues

I cannot understand why it compiled previously: In the corresponding code
passages nothing has changed. Maybe you have changed the compiler recently?

Please try whether the attached patch fixes the problems (and if not,
please post the new error messages).
Comment 2 Martin Väth 2008-10-24 04:35:08 UTC
Created attachment 169678 [details, diff]
Previous patch with a stupid typo fixed
Comment 3 Stuart Shelton 2008-10-24 07:35:57 UTC
I'm not aware of anything on the system having changed recently save prefix package updates.  To confirm this, I rebuild eix-0.14.0 which again it succeeded, albeit with very similar warnings - but it doesn't look as if a '-Wall' is creeping in, o I'm not sure why this is.

With the patch, the new error is:

cc-1020 CC: ERROR File = ./eixTk/formated.h, Line = 87
  The identifier "string" is undefined.

                assert(string(s) == "unknown specifier");
                ^
          A template was detected during header processing.
            instantiation of "eix::format &eix::format::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 52 of
                      "./eixTk/exceptions.h"
            instantiation of "ExBasic &ExBasic::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 181 of
                      "./eixTk/ansicolor.h"

1 error detected in the compilation of "eix.cc".

(I tried prefixing 'string' with 'std::', but this didn't help.  You can tell I'm not a C++ coder ;)
Comment 4 Stuart Shelton 2008-10-24 07:36:54 UTC
Ah! I was was right then :)

Unfortunately, it's still not happy:

cc-1262 CC: ERROR File = ./eixTk/formated.h, Line = 87
  No instance of constructor "std::basic_string<char, std::char_traits<char>,
          std::allocator<char>>::basic_string" matches the argument list.

            The argument types are:  (const std::basic_string<char,
                      std::char_traits<char>, std::allocator<char>>::value_type
                      ).
                assert(std::string(s) == "unknown specifier");
                ^
          A template was detected during header processing.
            instantiation of "eix::format &eix::format::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 52 of
                      "./eixTk/exceptions.h"
            instantiation of "ExBasic &ExBasic::operator%(const
                      std::basic_string<char, std::char_traits<char>,
                      std::allocator<char>>::value_type &)" at line 181 of
                      "./eixTk/ansicolor.h"

1 error detected in the compilation of "eix.cc".

Comment 5 Martin Väth 2008-10-24 08:14:03 UTC
Apparently I had tested this patch only with assign() disabled :(
Currently, I have no access to my system, but to my surprise a quick search
gave that there is indeed no string constructor for char but only for (int,char).
So the line should actually be
  assert(std::string(1, s) == "unknown specifier");
(yes, I know it's a silly line anyway - it is just to work around the compiler
message that constant expressions are not wanted in assert).
Comment 6 Stuart Shelton 2008-10-24 11:10:09 UTC
cc-1262 CC: ERROR File = ./eixTk/formated.h, Line = 87
  No instance of constructor "std::basic_string<char, std::char_traits<char>,
          std::allocator<char>>::basic_string" matches the argument list.

            The argument types are:  (int, const std::string).
                assert(std::string(1, s) == "unknown specifier");
                ^
          A template was detected during header processing.
            instantiation of "eix::format &eix::format::operator%(const
                      std::string &)" at line 52 of "./eixTk/exceptions.h"
            instantiation of "ExBasic &ExBasic::operator%(const std::string &)"
                      at line 120 of "search/packagetest.cc"

1 error detected in the compilation of "search/packagetest.cc".


... so I commented out the problematic line and the one immediately above, and it works without a single warning!
Comment 7 Emil Beinroth 2008-10-24 14:20:18 UTC
Just keep the assert the way it was in the original source. It's just a warning, not an actual error.
Comment 8 Martin Väth 2008-10-24 15:49:42 UTC
Created attachment 169722 [details, diff]
The hopefully now working patch for eix-0.14.1 and eix-0.14.2

(In reply to comment #7)
> Just keep the assert the way it was in the original source. It's just a
> warning, not an actual error.

Yes, but I prefer to avoid such warnings if possible.
I have now a new personal record: Three mistakes in one constructor call :)
The last mistake was to confuse the variable name (s instead of m_spec).

I attached the fix of the fix's fix so that people can use it without
reading though the whole thread. It should work for eix-0.14.1 and eix-0.14.2

In eix svn trunk (>=eix-0.14.3) there is now a different "solution" since
I cleaned/moved some code anyway. If you find time it would be nice if you
could test it on IRIX, too.
Comment 9 Stuart Shelton 2008-11-04 12:40:41 UTC
New problems with eix-0.14.2:

cc-1460 CC: WARNING File = ./eixTk/formated.h, Line = 145
  Function function "eix::format::goto_next_spec" is redeclared "inline" after
          being called.

    inline void format::goto_next_spec()
                        ^

cc-1209 CC: WARNING File = ./eixTk/formated.h, Line = 139
  The controlling expression is constant.

                assert(! "unknown specifier");
                ^
          detected during instantiation of
                    "eix::format &eix::format::operator%(const std::string &)"
                    at line 75 of "varsreader.cc"

cc-1209 CC: WARNING File = ./eixTk/formated.h, Line = 139
  The controlling expression is constant.

                assert(! "unknown specifier");
                ^
          A template was detected during header processing.
            instantiation of "eix::format &eix::format::operator%(const char
                      *const &)" at line 52 of "./eixTk/exceptions.h"
            instantiation of "ExBasic &ExBasic::operator%(const char *const &)"
                      at line 441 of "varsreader.cc"

source='database/io.cc' object='database/io.o' libtool=no \
        DEPDIR=.deps depmode=sgi /opt/portage/bin/bash ../config/depcomp \
        CC -DHAVE_CONFIG_H -I. -I..   -I/opt/portage/usr/include -DSYSCONFDIR=\"/opt/portage/etc\" -J2 -O2 -n32 -woff 1174,1183,1185,1552,3968,3970  -c -o database/io.o database/io.cc
cc-1460 CC: WARNING File = ./eixTk/formated.h, Line = 145
  Function function "eix::format::goto_next_spec" is redeclared "inline" after
          being called.

    inline void format::goto_next_spec()
                        ^

cc-1020 CC: ERROR File = ./portage/packagesets.h, Line = 40
  The identifier "find" is undefined.

                { return (find(begin(), end(), i) != end()); }
                          ^

1 error detected in the compilation of "database/io.cc".
make[2]: *** [database/io.o] Error 2
make[2]: Leaving directory `/usr/opt/portage/var/tmp/portage/app-portage/eix-0.14.2/work/eix-0.14.2/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/opt/portage/var/tmp/portage/app-portage/eix-0.14.2/work/eix-0.14.2'
make: *** [all] Error 2
 * ERROR: app-portage/eix-0.14.2 failed:
 * emake failed
 * 
 * Call stack:
 * ebuild.sh: 49: <call src_compile>
 * environment:743:     emake || die "emake failed"
Comment 10 Martin Väth 2008-11-04 19:15:00 UTC
(In reply to comment #9)
> New problems with eix-0.14.2:

No, it is is exactly the problem. eix-0.14.2 was released on the days this
bug was opened, so it does not contain the patch yet.
Comment 11 Stuart Shelton 2008-11-05 00:44:50 UTC
Sorry, so it is.  Long day ;)

/me gets coat...
Comment 12 Martin Väth 2008-11-09 06:13:27 UTC
Since eix-0.15.0 containing the patches has now entered the (x86) tree,
I am closing this bug.

If eix-0.15.0 has further compilation problems (which is quite possible
due to a lot of internal code changes), please open a new bug.