Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 403071 - www-client/firefox-10.0 has hardcoded CFLAGS and GCC dependency
Summary: www-client/firefox-10.0 has hardcoded CFLAGS and GCC dependency
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal QA (vote)
Assignee: Richard Yao (RETIRED)
URL:
Whiteboard:
Keywords: Goal, PATCH
Depends on:
Blocks: systemwide-clang
  Show dependency tree
 
Reported: 2012-02-11 03:03 UTC by Richard Yao (RETIRED)
Modified: 2012-12-16 06:01 UTC (History)
2 users (show)

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


Attachments
Build failure demonstrating that gcc is hard coded, custom-cflags is respected, but custom-optimization is ignored (build.log,236.51 KB, text/plain)
2012-02-11 03:12 UTC, Richard Yao (RETIRED)
Details
Initial patch to remove hard coded GCC references (firefox-13.0-do-not-hardcode-gcc.patch,1.01 KB, patch)
2012-06-09 02:00 UTC, Richard Yao (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Yao (RETIRED) gentoo-dev 2012-02-11 03:03:23 UTC
I tried compiling firefox with ICC and I discovered very early in the build process that gcc is being explicitly invoked with -O3:

c++ -o host_jskwgen.i_o -c -mno-avx -I/usr/lib64/libffi-3.0.10/include   -I.  -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src -I. -I./../../dist/include -I./../../dist/include/nsprpub  -I/usr/include/nspr  -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/assembler -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/yarr -I/usr/include/nspr /var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/jskwgen.cpp                                                                                                                                                                                                                                                                
nsinstall.c                                                                                                                                                                                                                                                                    
gcc -o host_nsinstall.i_o -c -mno-avx -DXP_UNIX -O3 -DUNICODE -D_UNICODE  -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/config -I. -I../../../dist/include -I../../../dist/include/nsprpub  -I/usr/include/nspr  -I/usr/include/nspr /var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/config/nsinstall.c                                                                                                                                                                                                         
pathsub.c                                                                                                                                                                                                                                                                      
gcc -o host_pathsub.i_o -c -mno-avx -DXP_UNIX -O3 -DUNICODE -D_UNICODE  -I/var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/config -I. -I../../../dist/include -I../../../dist/include/nsprpub  -I/usr/include/nspr  -I/usr/include/nspr /var/tmp/portage/www-client/firefox-10.0/work/mozilla-release/js/src/config/pathsub.c

This should be invoking $CC and while stripping CFLAGS is fine, this probably should be patched to obey the user set optimization level when custom-optimization is specified, as it is in my case.

Here is my system information:

# emerge --info firefox                                                                                                                                                                                                                       
Portage 2.1.10.45 (default/linux/amd64/10.0/desktop/kde, gcc-4.5.3, glibc-2.13-r4, 3.2.5 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.2.5-x86_64-Intel-R-_Core-TM-2_Quad_CPU_Q9550_@_2.83GHz-with-gentoo-2.1
Timestamp of tree: Sat, 11 Feb 2012 01:45:01 +0000
ccache version 3.1.7 [enabled]
app-shells/bash:          4.2_p20
dev-java/java-config:     2.1.11-r3
dev-lang/python:          2.7.2-r3, 3.2.2
dev-util/ccache:          3.1.7
dev-util/cmake:           2.8.7-r3
dev-util/pkgconfig:       0.26
sys-apps/baselayout:      2.1
sys-apps/openrc:          0.9.8.4
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.68
sys-devel/automake:       1.11.3
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.4.6-r1, 4.5.3-r2
sys-devel/gcc-config:     1.5-r2
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r3
sys-kernel/linux-headers: 3.2 (virtual/os-headers)
sys-libs/glibc:           2.13-r4
Repositories: gentoo local_overlay mythtv sunrise vmware bitcoin science sabayon x-gentoofan
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -mtune=core2 -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/openvpn/easy-rsa"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.4/ext-active/ /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="-march=core2 -mtune=core2 -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs buildpkg ccache distlocks ebuild-locks fixlafiles multilib-strict news parallel-fetch parallel-install protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-march=core2 -mtune=core2 -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -O2 -pipe"
GENTOO_MIRRORS="http://mirror.lug.udel.edu/pub/gentoo/ http://gentoo.osuosl.org/ ftp://mirrors.rit.edu/gentoo/"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--sort-common"
LINGUAS="en"
MAKEOPTS="-j5"
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="/usr/local/portage /usr/local/mythtv_portage/Gentoo /var/lib/layman/sunrise /var/lib/layman/vmware /var/lib/layman/bitcoin /var/lib/layman/science /var/lib/layman/sabayon /var/lib/layman/gentoofan"
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"
USE="X a52 aac acpi alsa amd64 bash-completion berkdb branding bzip2 cairo cdda cdr cjk cli consolekit cracklib crypt cups cxx dbus declarative dri dts dvd dvdr emboss encode exif fam ffmpeg fftw firefox flac fontconfig fortran gdbm gdu gif gles gnutls gpm iconv ipv6 java jpeg kde kipi lcms libnotify lzma mad mmap mmx mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl nptlonly nsplugin ogg opengl openmp pam pango pcre pdf phonon plasma png policykit ppds pppd qt3support qt4 readline sdl session spell sse sse2 sse3 ssl ssse3 startup-notification svg sysfs tcpd theora tiff truetype udev unicode usb vdpau vorbis x264 xcb xcomposite xinerama xml xorg xscreensaver xulrunner xv xvid xvmc zlib zsh-completion" ALSA_CARDS="hda-intel hpet hrtimer" 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 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" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="*" 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="evdev synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" PHP_TARGETS="php5-3" QEMU_SOFTMMU_TARGETS="mips mips64 mips64el mipsel x86_64" QEMU_USER_TARGETS="mips mipsel x86_64" RUBY_TARGETS="ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia" 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, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
                        Package Settings
=================================================================

www-client/firefox-10.0 was built with the following:
USE="alsa (consolekit) crashreporter custom-optimization dbus ipc libnotify (multilib) pgo (policykit) startup-notification webm -bindist -custom-cflags -debug -system-sqlite -wifi" LINGUAS="-af -ak -ar -as -ast -be -bg -bn_BD -bn_IN -br -bs -ca -cs -csb -cy -da -de -el -en_GB -en_ZA -eo -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fr -fy_NL -ga_IE -gd -gl -gu_IN -he -hi_IN -hr -hu -hy_AM -id -is -it -ja -kk -kn -ko -ku -lg -lt -lv -mai -mk -ml -mr -nb_NO -nl -nn_NO -nso -or -pa_IN -pl -pt_BR -pt_PT -rm -ro -ru -si -sk -sl -son -sq -sr -sv_SE -ta -ta_LK -te -th -tr -uk -vi -zh_CN -zh_TW -zu"
CFLAGS="-march=core2 -mtune=core2 -pipe -mno-avx"
CXXFLAGS="-march=core2 -mtune=core2 -pipe -mno-avx"
Comment 1 Richard Yao (RETIRED) gentoo-dev 2012-02-11 03:12:08 UTC
Created attachment 301525 [details]
Build failure demonstrating that gcc is hard coded, custom-cflags is respected, but custom-optimization is ignored

As an addendum, I would like to state that this does obey custom-cflags, but not custom-optimization. I just tried compiling with custom-cflags to test it and it failed because GCC was passed flags meant for ICC.
Comment 2 Jory A. Pratt gentoo-dev 2012-02-11 04:03:48 UTC
ping me when you have something you would like me to review.
Comment 3 Richard Yao (RETIRED) gentoo-dev 2012-06-09 02:00:48 UTC
Created attachment 314751 [details, diff]
Initial patch to remove hard coded GCC references

This is a patch that I wrote on Gentoo FreeBSD when trying to compile Firefox with Clang. I am not passing any flags that Clang accepts that GCC does not, so I have not yet verified that I have caught all hard coded references.

I do not anticipate pushing forward very far with this right now, but I am posting it in advance so people can comment for the future me (or someone else) that finishes this.
Comment 4 Richard Yao (RETIRED) gentoo-dev 2012-12-16 06:01:17 UTC
(In reply to comment #3)
> Created attachment 314751 [details, diff] [details, diff]
> Initial patch to remove hard coded GCC references
> 
> This is a patch that I wrote on Gentoo FreeBSD when trying to compile
> Firefox with Clang. I am not passing any flags that Clang accepts that GCC
> does not, so I have not yet verified that I have caught all hard coded
> references.
> 
> I do not anticipate pushing forward very far with this right now, but I am
> posting it in advance so people can comment for the future me (or someone
> else) that finishes this.

If I recall correctly, Firefox 14 resolved the issues compiling Firefox with Clang. Closing as fixed.