Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 465916 - sys-devel/icecream-1.0.0-r1 not usable for compilations with emerge
Summary: sys-devel/icecream-1.0.0-r1 not usable for compilations with emerge
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal with 1 vote (vote)
Assignee: Gentoo Cluster Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-04-14 17:37 UTC by Oliver Freyermuth
Modified: 2018-03-17 09:54 UTC (History)
5 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Freyermuth 2013-04-14 17:37:57 UTC
I just realized new icecream is not used anymore for any compilations triggered by emerge / portage. 
This is because the CHOST-named compiler is called (e.g. x86_64-pc-linux-gnu-g++) and not g++ directly. 
In the pre-1.0-ebuilds, this was worked around with the icecream-config-script, which generated the wrappers also for CHOST (but e.g. did not include clang{,++}). 

I can confirm that creating the appropriate symlinks in /usr/libexec/icecc/bin, portage uses icecc again and all works as expected. 

If this change makes it into the ebuild, a final message as was present in the older ebuilds might be nice (advising the user to add "/usr/libexec/icecc/bin" to PREROOTPATH in make.conf to allow portage to make use of icecream). 

Reproducible: Always
Comment 1 Tomáš Chvátal (RETIRED) gentoo-dev 2013-04-20 16:25:54 UTC
Would not be easier if you want to use the icecream just set CC=gcc and so on rather than create magic within the ebuild for symlinks?
Comment 2 Oliver Freyermuth 2013-04-20 16:42:43 UTC
(In reply to comment #1)
> Would not be easier if you want to use the icecream just set CC=gcc and so
> on rather than create magic within the ebuild for symlinks?
This might be easier, but is unsupported and discouraged if I am not mistaken. See e.g. http://www.gentoo.org/doc/en/distcc.xml , which states (concerning setting CC, CXX etc. to specific values): 
"Doing this explicitly redefines some behaviour of Portage and may have some weird results in the future. Only do this if you're mixing CHOSTs."

For that reason, the old icecream-ebuilds (pre 1.0.0) worked very similar to the ccache ebuild, which also generates the CHOST-symlinks from within the ebuild, using a ccache-config script. 
Before the 1.0.0-ebuild, icecream-ebuilds behaved very similar, the config-script was only missing support for clang{,++}. The 1.0.0 ebuild just dropped this script, which is also useful to support different CHOSTs for easy cross-compiling as explained in http://dev.gentoo.org/~rane/icecream.xml .
Comment 3 Eric Grüttefien 2013-05-16 14:28:42 UTC
have you looked in /usr/lib/icecc/bin/ this is my PREEROOTPATH in my make.conf

localhost bin # ls -ltr /usr/lib/icecc/bin/
insgesamt 0
lrwxrwxrwx 1 root root 14  3. Jan 22:22 gcc -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 cc -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 c++ -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 x86_64-pc-linux-gnu-gcc -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 g++ -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 x86_64-pc-linux-gnu-g++ -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14  3. Jan 22:22 x86_64-pc-linux-gnu-c++ -> /usr/bin/icecc

vs.

localhost bin # ls -ltr /usr/libexec/icecc/bin
insgesamt 0
lrwxrwxrwx 1 root root 14 16. Mai 14:54 gcc -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14 16. Mai 14:54 g++ -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14 16. Mai 14:54 clang++ -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14 16. Mai 14:54 clang -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14 16. Mai 14:54 cc -> /usr/bin/icecc
lrwxrwxrwx 1 root root 14 16. Mai 14:54 c++ -> /usr/bin/icecc

localhost bin # equery b /usr/lib/icecc/bin/x86_64-pc-linux-gnu-gcc
 * Searching for /usr/lib/icecc/bin/x86_64-pc-linux-gnu-gcc ... 
sys-devel/icecream-1.0.0-r1 (/usr/bin/icecc)


from file date i had sugessted it's from sys-devel/icecream-0.97-r1

Now i'm confused
Comment 4 Oliver Freyermuth 2013-05-16 19:27:27 UTC
(In reply to comment #3)
> Now i'm confused
No need to! 

> have you looked in /usr/lib/icecc/bin/ this is my PREEROOTPATH in my
> make.conf
This is the old folder which was used by pre-icecream-1.0.0.ebuild versions. 
It is sadly not deleted on upgrade, as it was created and filled with symlinks during postinstall by sys-devel/icecream-0.97-r1 and is thus not picked up by portage, so it will stay floating on all upgraded systems :-(. 
You should use /usr/libexec/icecc/bin with sys-devel/icecream-1.0.0-r1, which it sadly does not tell you (unlike the older ebuilds, which did...). 

> /usr/libexec/icecc/bin
This is the folder created by sys-devel/icecream-1.0.0-r1, which contains clang{,++} in addition now, but is missing the CHOST-symlinks, quick fix is to add them there manually until someone resolves this bug...
Comment 5 Gregg Casillo 2014-02-25 17:19:03 UTC
So is this fixed or not? I recently unmasked icecream-1.0.0-r1 on a few of my computers figuring this had long since been resolved, but I noticed that my emerge world builds weren't employing icecream to distribute compile jobs, and they were taking a long time. I'm going back to 0.9.7-r1 for the time being. Just curious on the status of this bug.
Comment 6 Oliver Jaksch 2015-08-21 06:43:04 UTC
Pals, please have a look to #536746
Seems that we are near to finish this issue.
Comment 7 Oliver Freyermuth 2017-08-27 00:31:07 UTC
The issue described here seems to be resolved also for the in-tree version by the recent change to use dev-util/shadowman to create the compiler wrapper links in a common way.
Comment 8 Pacho Ramos gentoo-dev 2018-03-17 09:54:28 UTC
(In reply to Oliver Freyermuth from comment #7)
> The issue described here seems to be resolved also for the in-tree version
> by the recent change to use dev-util/shadowman to create the compiler
> wrapper links in a common way.