Closed Bug 83589 Opened 24 years ago Closed 24 years ago

Doing a commercial build clobbers DefinesOptions.h, forcing an entire rebuild

Categories

(SeaMonkey :: Build Config, defect, P3)

PowerPC
Mac System 8.5
defect

Tracking

(Not tracked)

RESOLVED FIXED
mozilla0.9.6

People

(Reporter: sfraser_bugs, Assigned: sfraser_bugs)

Details

Attachments

(4 files)

When you do a commercial build (whose scripts contain a different set of build options), we recreate DefinesOptions.h, which dirties the entire Mozilla tree. This is very evil. We need to somehow ensure that the commercial scripts don't clobber the mozilla build options.
Huaarh. Let's fight the evil.
Status: NEW → ASSIGNED
Priority: -- → P3
Target Milestone: --- → mozilla0.9.3
This seems quite recent to me. I remember seeing depend cycles being much shorter not that long ago. What happened and how hard is it to fix this ?
The simple fix is to just copy the build options from MozillaBuildFlags.txt into the commercial equivalent. The slightly more involved fix is to have the scripts grab MozillaBuildFlags.txt from the mozilla tree, and overlay any commercial- specific options. The sripts should probably flag discrepancies between the options settings in a user's mozilla and commercial prefs.
Thinking some more, the real bug is this: The commercial scripts (living in ns/build/mac) are regenerating the file mozilla/config/mac/DefinesOptions.h. This is wrong. They do this because BuildCore.pm's ConfigureBuildSystem() subroutine has: UpdateConfigHeader(":mozilla:config:mac:DefinesOptions.h"); We're gonna have to feed in that path from the top-level script, probably as a member of %inputfiles.
Haven't tried it but it should work. Anyone want to try it or review it?
Looks good. The only comment I have is that the BuildCore.pm module still contains a mozilla-relative path: ":mozilla:config:mac:" which, ideally, it should not. Maybe we should send in the entire path via filepaths{"optionsdefines"} ? The patch also doesn't address the issue of sharing options between the netscape and mozilla builds, though I'm not sure what the correct approach is here.
Hmmm, ignore that previous patch, it doesn't work at all. I'd say I must have smoking something but I don't smoke :/. Attaching a patch that seems to work.
sr=sfraser if you rename "$definesoption_file_name" to "$config_header_file_name" or something.
Just saw the commercial dep tinderbox finish in 40 minutes, down from about 2 hours.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
cool. Setting QA to jj for verification.
QA Contact: granrose → jj
Yep, confirming that cycle time dropped: both NS depend tinderbox and morning depend verification build gained about 1 hour. Excellent job! btw, I've been timing all the systems before the major hardware shuffle I'm about to operate! NS depend trunk cycle = +/- 50mn (using a G4 450) NS BRANCH depend cycle = +/- 1h50mn (G4 533)... Which naturally leads me to the next question: Any chance this can land on the 0.9.2 branch as well?
Status: RESOLVED → VERIFIED
Keywords: vtrunk
Build system change, been tested on trunk, looks good. nsBranch+ by me.
Keywords: nsBranch
Whiteboard: nsBranch+
Whiteboard: nsBranch+ → [nsBranch+]
Checked in on the branch, commercial mac branch tinderbox now cycles happily in 50 mins, down from 2 hours. [PDT+] by Chris Hoffmann in mail.
Keywords: nsBranch, vtrunk
Reopening. This fix prevents me from doing an optimized build over an existing debug build, without clobbering all the built library aliases.
Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Those two patches should, hopefully, get us back into a state where we can do opt and debug builds in the same tree. The changes I made are: * Removing some old decrepit include files (MacConfig.h, ComponentConfig.h, MANIFEST_config) * Adding +#ifdef DEBUG +#include "DefinesOptionsDebug.h" +#else +#include "DefinesOptions.h" +#endif into NGLayoutConfigInclude.h (mozilla) and MacConfigInclude.h (ns) * Standardize the auto-gen header names (DefinesOptions{Debug}.h) * Adding a 'config' build step. * Adding PrepareBuild() to the mozilla & ns build modules * Moved UpdateConfigHeader() from BuildCore.pm into BuildUtils.pm * Fixing UpdateConfigHeader() to be more flexible about matching, and to put a comment in the generated file. Things to fix in future: Clean up the mozilla and netscape include files; they are a mess. NGLayoutConfigInclude.h gets aliased into the tree with a different name, for no good reason.
Very nice! Thanks. r=peterv.
Whiteboard: [nsBranch+] → Have r=peterv, need sr.
Target Milestone: mozilla0.9.3 → mozilla0.9.4
sr=scc on the latest two patches above (i.e., 41864 and 41865)
Assignee: peterv → sfraser
Status: REOPENED → NEW
Whiteboard: Have r=peterv, need sr.
Mine
Close to being in, but out of time.
Status: NEW → ASSIGNED
Target Milestone: mozilla0.9.4 → mozilla0.9.5
Boing.
Target Milestone: mozilla0.9.5 → mozilla0.9.6
Changes checked in.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: