Closed Bug 706129 Opened 14 years ago Closed 14 years ago

patch our libstdc++ for c++11 conformance

Categories

(Release Engineering :: General, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: espindola, Assigned: rail)

References

Details

Attachments

(3 files, 1 obsolete file)

We build firefox with c++11 on linux, but the old 4.5 libstdc++ is not valid c++11. This means that we only use c++11 with gcc 4.5, which incorrectly accepts it. When our build system finds that c++11 is not supported, it falls back to c++03, but we already have test failures when using -fshort-wchar. In particular, this patch lets us build with clang in c++11 mode on the bots. This is a backport of r159628, r163231 and r171807 from upstream gcc. Note that this patch includes patches, so the bugzilla "view patch" feature doesn't work correctly.
Attachment #577630 - Flags: review?(rail)
ah, and the change to pr49911.diff is just to avoid it ending without a new line. Newer versions of patch+rpmubild complain about it.
This patch removes the old (unused) version of gcc and adds moz3 as the current testing one.
Assignee: nobody → respindola
Status: NEW → ASSIGNED
Attachment #577636 - Flags: review?(rail)
Comment on attachment 577636 [details] [diff] [review] rotate the gcc version in the pupet file removing it just from the manifest will leave it installed on old slaves. We should do an ensure => absent, imo.
Attachment #577636 - Flags: feedback-
Comment on attachment 577630 [details] [diff] [review] patch our libstdc++ for c++11 conformance Review of attachment 577630 [details] [diff] [review]: ----------------------------------------------------------------- ::: gcc45/centos5-i686/gcc45.spec @@ +6,2 @@ > > +Name: gcc45_0moz3 I'd use "%define gcc_prefix /tools/gcc-4.5-test" and "Name: gcc45_test". This simplifies puppet manifests and you don't need to remove the previous package explicitly.
Attachment #577630 - Flags: review?(rail) → review-
Attached patch Install new gccSplinter Review
I just realized that the old gcc is used by branches that haven't merged from m-c yet. I updated the patch to just install the new one. thanks!
Attachment #577636 - Attachment is obsolete: true
Attachment #577636 - Flags: review?(rail)
Attachment #577661 - Flags: review?(rail)
Attachment #577661 - Flags: feedback?(bugspam.Callek)
> I'd use "%define gcc_prefix /tools/gcc-4.5-test" and "Name: gcc45_test". > This simplifies puppet manifests and you don't need to remove the previous > package explicitly. This is what was proposed in the first upgrade of gcc, but we decide to just use versions (the -moz suffix) as it plays much better with mozconfigs being in mercurial.
Attachment #577630 - Flags: review- → review?(rail)
Attachment #577630 - Flags: review?(rail) → review+
Comment on attachment 577661 [details] [diff] [review] Install new gcc I think, you need to remove the previous version. Please remove gcc45_0moz2 from install_rpm and make sure that the package is removed, something like: package { "gcc45_0moz2": driver => "rpm", ensure => "absent"; }
Attachment #577661 - Flags: review?(rail) → review-
Comment on attachment 577661 [details] [diff] [review] Install new gcc <espindola> rail, yes, m-c is using that (the previous version) until we change the mozconfigs
Attachment #577661 - Flags: review- → review+
(In reply to Rail Aliiev [:rail] from comment #7) > Comment on attachment 577661 [details] [diff] [review] [diff] [details] [review] > Install new gcc > > I think, you need to remove the previous version. You will want to remove the previous version, yes. *BUT* we can't remove it at the same time we're adding gcc45_0moz3, for a few simple reasons. * Puppet on these slaves is run at boot, so will only install the new gcc after the slave reboots. * Mozilla-Central right now uses 0moz2. * Any branches that already merged the mozconfig change in also uses 0moz2 * We need a config change for m-c when we go to use 0moz3. My recommendation, take this patch as is, and in a week or two remove 0moz2, and mention it to project-branches somehow so they can be sure they have the 0moz3 dependant code. > Please remove gcc45_0moz2 from install_rpm and make sure that the package is > removed, something like: > package { > "gcc45_0moz2": > driver => "rpm", > ensure => "absent"; > } You actually don't want driver, but |provider => 'rpm',| driver is unknown here.
I am really sorry I missed this the first time. Only now has my clang bootstrap finished and I noticed the headers were not changed.
Attachment #577779 - Flags: review?(rail)
Comment on attachment 577779 [details] [diff] [review] actually apply the patch If this patch is incorrect, you have the right to punch me in the face. :-)
Attachment #577779 - Flags: review?(rail) → review+
BTW, you can try your toolchain using a similar workaround: https://hg.mozilla.org/try/rev/bcd2efa68c10 It may help us to minimize iterations and deployment time.
Taking the bug to build and deploy.
Assignee: respindola → rail
Attachment #577661 - Flags: feedback?(bugspam.Callek)
Deployed this weekend.
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Product: mozilla.org → Release Engineering
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: