Closed Bug 912914 Opened 11 years ago Closed 11 years ago

Preserve targets and dependencies order when creating Makefiles with makeutil.py

Categories

(Firefox Build System :: General, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla26

People

(Reporter: glandium, Assigned: glandium)

References

Details

Attachments

(1 file, 1 obsolete file)

No description provided.
Also allow to add random statements (like variable assignment)
Attachment #800043 - Flags: review?(gps)
Also allow to add random statements (like variable assignment) Now with stable order of the removal guards.
Attachment #800127 - Flags: review?(gps)
Attachment #800043 - Attachment is obsolete: true
Attachment #800043 - Flags: review?(gps)
Comment on attachment 800127 [details] [diff] [review] Preserve targets and dependencies order when creating Makefiles with makeutil.py Review of attachment 800127 [details] [diff] [review]: ----------------------------------------------------------------- r- on the grounds that this removes consistent ordering. I'm pretty sure we have code using makeutil.py (or at least intending to use makeutil.py) that is relying on the consistent ordering of the generated make file. This patch breaks that promise! I'm going to argue there are use cases for both preserving call-time ordering *and* for ensuring sorted output ordering. I think makeutil.py should support both. As a parameter to __init__ perhaps?
Attachment #800127 - Flags: review?(gps) → review-
Comment on attachment 800127 [details] [diff] [review] Preserve targets and dependencies order when creating Makefiles with makeutil.py (In reply to Gregory Szorc [:gps] from comment #3) > Comment on attachment 800127 [details] [diff] [review] > Preserve targets and dependencies order when creating Makefiles with > makeutil.py > > Review of attachment 800127 [details] [diff] [review]: > ----------------------------------------------------------------- > > r- on the grounds that this removes consistent ordering. > > I'm pretty sure we have code using makeutil.py (or at least intending to use > makeutil.py) that is relying on the consistent ordering of the generated > make file. The patch trades one consistent ordering with another one. It's not like using a set() and having the result in a random order depending on what the set internal hash table looks like. That being said, if something is relying on a particular order of dependencies in a Makefile, then we have a serious race condition issue waiting to break the tree. Moreover, that code is currently only used to create .pp files, which are only used to rebuild stuff when things change. Order doesn't matter for these use cases. > This patch breaks that promise! There never was such promise. Please reconsider.
Attachment #800127 - Flags: review- → review?(gps)
I wanted to use makeutil.py to generate some FileAvoidWrite'ed files as part of backend generation. Once we hook that up, we'll be modifying some auto-generated make files as part of config.status because ordering may not be stable. I was hoping makeutil.py would perform all the sorts on write. But if we need to do that on the caller side, we can do it on the caller side.
(In reply to Gregory Szorc [:gps] from comment #5) > I wanted to use makeutil.py to generate some FileAvoidWrite'ed files as part > of backend generation. Once we hook that up, we'll be modifying some > auto-generated make files as part of config.status because ordering may not > be stable. Ordering *is* stable.
Attachment #800127 - Flags: review?(gps) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla26
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: