Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 322361 - net-p2p/ghostwhitecrab fails to build with gcc 4.5
Summary: net-p2p/ghostwhitecrab fails to build with gcc 4.5
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo TreeCleaner Project
URL:
Whiteboard: Pending removal: 2011-06-22
Keywords: PMASKED
Depends on:
Blocks: gcc-4.5 gcc-4.5-stable
  Show dependency tree
 
Reported: 2010-06-01 11:47 UTC by Diego Elio Pettenò (RETIRED)
Modified: 2011-06-21 07:06 UTC (History)
0 users

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


Attachments
Build log (ghostwhitecrab-0.9.9:20100601-050141.log,9.28 KB, text/plain)
2010-06-01 11:47 UTC, Diego Elio Pettenò (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Diego Elio Pettenò (RETIRED) gentoo-dev 2010-06-01 11:47:15 UTC
Portage 2.1.8.3 (default/linux/x86/10.0, gcc-4.5.0-asneeded, glibc-2.11.1-r0, 2.6.34 i686)
=================================================================
System uname: Linux-2.6.34-i686-Quad-Core_AMD_Opteron-tm-_Processor_2350-with-gentoo-2.0.1
Timestamp of tree: Mon, 31 May 2010 13:00:01 +0000
ccache version 2.4 [disabled]
app-shells/bash:     4.1_p7
dev-java/java-config: 2.1.11
dev-lang/python:     2.6.5-r2, 3.1.2-r3
dev-python/pycrypto: 2.1.0
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.1-r1
sys-apps/sandbox:    2.2
sys-devel/autoconf:  2.13, 2.65
sys-devel/automake:  1.4_p6-r1, 1.5-r1, 1.6.3-r1, 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.5.0
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.7b
virtual/os-headers:  2.6.33
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="*"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/lib/tomoyo/conf /usr/share/X11/xkb /usr/share/bufrtables /usr/share/config /usr/share/qpsmtpd/plugins /var/bind /var/lib/hsqldb /var/phxd /var/qmail/alias /var/qmail/control /var/spool/torque /var/vpopmail/etc /var/yp/Makefile"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/games/angband/edit/ /etc/gconf /etc/gentoo-release /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"
CXXFLAGS="-O2 -pipe"
DISTDIR="/var/cache/distfiles"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms split-log strict test test-fail-continue unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.wheel.sk/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1"
MAKEOPTS="-j14"
PKGDIR="/var/spool/portage/packages"
PORTAGE_COMPRESS=""
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="/var/cache/portage/tree-tinderbox"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 java5 java6 modules mudflap ncurses nls nostatic nptl nptlonly openmp pam pcre perl pppd python qt3support readline reflection ruby session spl ssl sysfs tcpd unicode vhosts x86 xorg 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 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 auth_digest" ELIBC="glibc" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" RUBY_TARGETS="ruby18 jruby ruby19 ree18" 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"
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-06-01 11:47:48 UTC
Created attachment 233773 [details]
Build log
Comment 2 Markos Chandras (RETIRED) gentoo-dev 2010-06-19 17:52:56 UTC
I am trying to fix this bug 2 days ago without luck

I narrow down the error to this piece of code

#define STATIC_ASSERT_PLAIN(x) sizeof(char[{(x) ? 1 : -23}]

typedef struct {
   int x[ STATIC_ASSERT_PLAIN(SIZEOF_CHAR == sizeof(signed char))
...
...
...
];
};
If you replace the #define preprocessor with #define STATIC_ASSERT_PLAIN(x) 4 e.g it works as expected. While the MACRO seems fine to me somehow gcc-4.5 doesn't like that and complains about -> error: Variably modified 'x' at file scope

Diego, do you have any thoughts about this kind of error?
Comment 3 Kevin Pyle 2010-10-13 03:17:18 UTC
Based on the name, the macro is meant to perform a build time check that the argument passed to it meets some particular requirement.  If the requirement is not met, the package will fail to compile.  This is preferable to a runtime assert, where the user would need to execute the program before it failed.  The way in which it implements the check down inside a structure is a bit strange.  The typical implementation of a static assert is:

#define STATIC_ASSERT(X)	typedef char __static_assert[(X) ? 1 : -1];
STATIC_ASSERT(sizeof(long) == 4);	// works on i686, fails on x86_64

When this snippet is built for x86, it defines a useless but harmless typedef.  When it is built on amd64, it fails with the message:

error: size of array '__static_assert' is negative


It is likely that the ghostwhitecrab code could be rewritten to place the static assertion at global scope near the structure and give the structure member a simple definition, as you did when you defined the macro to a constant number.

[Thanks to Ryan for drawing attention to the tracker bug via the October 5th mail on gentoo-dev.  I would have missed this bug otherwise.]
Comment 4 Samuli Suominen (RETIRED) gentoo-dev 2011-04-06 16:18:59 UTC
CC treecleaners because this fails to build with gcc-4.5, and gcc-4.5 tracker is now closed. The time to fix the package is up. It's now targeted for removal as abandoned.
Comment 5 Markos Chandras (RETIRED) gentoo-dev 2011-06-21 07:06:36 UTC
gone