Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 304017 - app-portage/eix: USE flags to set CFLAGS
Summary: app-portage/eix: USE flags to set CFLAGS
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Jeremy Olexa (darkside) (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-02-08 14:51 UTC by Donnie Berkholz (RETIRED)
Modified: 2010-02-09 02:11 UTC (History)
2 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 Donnie Berkholz (RETIRED) gentoo-dev 2010-02-08 14:51:05 UTC
I was surprised to see that when emerging eix, it had USE flags for optimization and strong-optimization with descriptions stating they simply enabled CFLAGS. CFLAGS should be set in make.conf, the environment, or other usual places and respected as-is, not enabled by USE flags. For anyone interested, the implicated area of configure.ac is around line 220-270.
Comment 1 Jeremy Olexa (darkside) (RETIRED) archtester gentoo-dev Security 2010-02-08 15:35:25 UTC
upstream's desire to enable them by default. Would you prefer that instead? I think not. I'll close this bug as INVALID because you didn't state a reason for opening.
Comment 2 Tomáš Chvátal (RETIRED) gentoo-dev 2010-02-08 19:48:33 UTC
As qa we don't agree with this approach.

Every package must obey user set flags no matter what upstream says.

Only expectations are hard mathematic dependant apps where more optimalizations might be needed, but this is not case for this one.

So fix it in ebuild so it ALWAYS obey the flags.
Comment 3 Jeremy Olexa (darkside) (RETIRED) archtester gentoo-dev Security 2010-02-08 19:56:30 UTC
(In reply to comment #2)
> As qa we don't agree with this approach.
> 
> Every package must obey user set flags no matter what upstream says.
> 
> Only expectations are hard mathematic dependant apps where more optimalizations
> might be needed, but this is not case for this one.
> 
> So fix it in ebuild so it ALWAYS obey the flags.
> 

It does "ALWAYS obey the user's flags", the USE flags add extra opts per upstream's decision. I had a long chat with the proxy-maintainer about it (also upstream)

Again, closing as this bug is pointless.
Comment 4 Mark Loeser (RETIRED) gentoo-dev 2010-02-08 20:09:00 UTC
It isn't pointless, and it would be nice if you could try to understand the confusion before closing the bug.  I think I now understand what those use flags do after looking at it for a minute, and I think the names or explanations should be updated to explain them better.

As I understand it, these flags do not touch existing CFLAGS, and not having them enabled does not strip any CFLAGS, but by enabling them they will enabled a bunch of optimizations that the user may not have, right?  That isn't what the first reading of the explanation jumped out at me and said, especially given their names.  I'd suggest changing the names and explanations so its clear these only supplement CFLAGS the user may have, and not having it set doesn't "disable optimizations".
Comment 5 Jeremy Olexa (darkside) (RETIRED) archtester gentoo-dev Security 2010-02-08 20:24:50 UTC
(In reply to comment #4)
> As I understand it, these flags do not touch existing CFLAGS, and not having
> them enabled does not strip any CFLAGS, but by enabling them they will enabled
> a bunch of optimizations that the user may not have, right?  That isn't what
> the first reading of the explanation jumped out at me and said, especially

So the word: "Add" in the description means the same as 'strip' or 'disable' to you?? I think the descriptions are fine now. But, none-the-less, I will add some more words tonight when my commit host is online.

> given their names.  I'd suggest changing the names and explanations so its
> clear these only supplement CFLAGS the user may have, and not having it set
> doesn't "disable optimizations".
Comment 6 Martin Väth 2010-02-08 21:40:50 UTC
Sorry for my late reply, I have almost no time these days.

(In reply to comment #4)
> As I understand it, these flags do not touch existing CFLAGS, and not
> having them enabled does not strip any CFLAGS, but by enabling them
> they will enabled a bunch of optimizations that the user may not have,
> right?

Yes: If the flags are disabled (which is the default), nothing is changed,
and if the flags are enabled, there may be added certain CXXFLAGS
(if the user has not already enabled them and if some tests suggests
that the toolchain will handle them well.)

My (I am the upstream maintainer) reason to add certain CXXFLAGS is that
I have taken care e.g. to avoid type punning in the code so that
e.g. -fstrict-aliasing should not be able to break something; if it does,
some unintended type punning happened, and this I consider as a bug in
the code which should be fixed. Similar for other flags.

I agree with the recommendation to the user to not enable "ricer" flags,
but then in a sense it is upstream's responsibility to decide about them:
In fact, usually only upstream knows all project code well enough to decide
which of these are actually safe for the particular project.
The usually valid argument that these flags may cause problems does not
apply here, since if adding some of these flags should really cause
problems, this only *reveals* an existing bug in the code: If there really
should be such bugs, I would like to know about them (having unknown bugs
can also be a security issue). I admit that in rare cases, some of the
added flags can reveal a compiler bug instead of a bug in the code, but
then to know about it won't hurt either. Moreover, I always test with
these flags before releasing a new version. An enterprise user for which
a misbehavior might have extremely serious consequences should be sane
enough to not enable a USE-flag called "strong-optimization" anyway...

> That isn't what the first reading of the explanation jumped out at me
> and said, especially given their names.

Maybe my English is too bad, but if the description for a USE-flag says
that it "adds CFLAGS", then I would expect that not enabling this flag
means that it does "not add CFLAGS" which is what is happening.
Of course, I won't protest if the latter is stated explicitly.
Thinking about it, it also won't hurt to point out in the description
that enabling these flags *might* trigger hidden bugs.
Comment 7 Jeremy Olexa (darkside) (RETIRED) archtester gentoo-dev Security 2010-02-09 02:11:23 UTC
metadata.xml is updated. Thanks for the input, Martin.