Closed
Bug 828317
Opened 12 years ago
Closed 11 years ago
Require pymake for building on Windows
Categories
(Firefox Build System :: General, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla24
People
(Reporter: ted, Assigned: gps)
References
Details
Attachments
(1 file, 1 obsolete file)
(deleted),
patch
|
ted
:
review+
|
Details | Diff | Splinter Review |
We should stop supporting GNU make on Windows and require Pymake.
Since mach uses Pymake automatically, the error message could instruct the user to use "./mach build" instead.
Comment 1•12 years ago
|
||
Just a note that when a bit mysterious bug 824004 that disappears and reappears at its own will is not resolved I may be completely blocked from build the tree. It means that all pymake related issues must be resolved or a override for this requirement must be available.
Personally I don't understand why you want to remove the GNU make supports at all.
Assignee | ||
Comment 2•12 years ago
|
||
(In reply to Honza Bambas (:mayhemer) from comment #1)
> Personally I don't understand why you want to remove the GNU make supports
> at all.
It is easier to support and debug N - 1 build configurations.
Comment 3•12 years ago
|
||
OK, if that is just about "not supporting" in means of not maintaining the code by some paid mozilla contributor, then I think we could just claim the support is dead but leave the option be supported by the community (here me). If that is possible of course and doesn't mean to still leave effort on build config developers.
I'm just worried to get blocked from work by being dependent on faulty pymake with no other option to build.
Reporter | ||
Comment 4•12 years ago
|
||
Our tinderbox machines are building with pymake, so GNU make is no longer a well-tested solution. Furthermore, GNU make on Windows has a long-standing bug where it hangs with multi-core builds, meaning that it's a huge potential footgun. Finally, because of path differences between pymake and gmake, supporting both means that it's hard (or impossible) to get a bunch of corner cases right (for example, bug 773423).
Reporter | ||
Comment 5•12 years ago
|
||
I would like this configuration to error out so that users don't accidentally use an unsupported tool and find themselves with strange errors as a result.
Comment 6•12 years ago
|
||
(In reply to Ted Mielczarek [:ted.mielczarek] from comment #4)
> Our tinderbox machines are building with pymake, so GNU make is no longer a
> well-tested solution. Furthermore, GNU make on Windows has a long-standing
> bug where it hangs with multi-core builds, meaning that it's a huge
> potential footgun.
Yeah, I know this very well ;)
> Finally, because of path differences between pymake and
> gmake, supporting both means that it's hard (or impossible) to get a bunch
> of corner cases right (for example, bug 773423).
This is an argument then.
Ted, I hope I can count on you to help with any issues that would prevent build the tree only with pymake where make might work.
Reporter | ||
Comment 7•12 years ago
|
||
Absolutely. Pymake is our officially supported build platform for Windows, so bugs there are always important.
Assignee | ||
Comment 8•12 years ago
|
||
This bug could use a patch!
I don't have access to a Windows machine ATM, so this patch is untested. Would appreciate testing as part of review. Or, I can wait until Wednesday to test on Windows myself and/or use Try.
Comment 9•12 years ago
|
||
Comment on attachment 715276 [details] [diff] [review]
Require pymake to build on Windows, v1
Why not just run pymake instead of complaining?
Comment 10•12 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #9)
> Comment on attachment 715276 [details] [diff] [review]
> Require pymake to build on Windows, v1
>
> Why not just run pymake instead of complaining?
for clarification: "why not just have make run pymake instead of erroring-out?" is what was meant above.
Assignee | ||
Comment 11•12 years ago
|
||
Is there a robust way to obtain all the arguments passed into make? Yes, you can use $(MAKEFLAGS). But how do you get at -C and/or -f? $(firstword $(MAKEFILE_LIST))?
My personal opinion here is people should start using an intelligent driver (like mach) that automatically selects the appropriate build backend for them (which may not be make/pymake in the future).
Comment 12•12 years ago
|
||
(In reply to Gregory Szorc from comment #11)
> Is there a robust way to obtain all the arguments passed into make? Yes, you
> can use $(MAKEFLAGS). But how do you get at -C and/or -f? $(firstword
> $(MAKEFILE_LIST))?
FYI, -C doesn't apply because gmake will already have changed to the appropriate directory. The only time I use -f is for client.mk which I don't think includes rules.mk anyway. (This makes it easy to search shell history for -f to find the command to rebuild the whole tree!)
Comment 13•12 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #10)
> > Why not just run pymake instead of complaining?
>
> for clarification: "why not just have make run pymake instead of
> erroring-out?" is what was meant above.
It's great. I'm tired to type "./build/pymake/make.py".
(In reply to Gregory Szorc [:gps] from comment #11)
> My personal opinion here is people should start using an intelligent driver
> (like mach) that automatically selects the appropriate build backend for
> them (which may not be make/pymake in the future).
I'm usually using ./mach, but I still have to use make at the moment. For example, bug 842387. Another example is building only the part of the tree. If I have to rebuild the entire tree whenever I changed something, it would be virtually impossible to develop Firefox on my slow laptop.
Assignee | ||
Comment 14•12 years ago
|
||
(In reply to Masatoshi Kimura [:emk] from comment #13)
> I'm usually using ./mach, but I still have to use make at the moment. For
> example, bug 842387. Another example is building only the part of the tree.
> If I have to rebuild the entire tree whenever I changed something, it would
> be virtually impossible to develop Firefox on my slow laptop.
$ ./mach build toolkit browser
That will perform an incremental build.
Comment 15•12 years ago
|
||
(In reply to Gregory Szorc [:gps] from comment #14)
> (In reply to Masatoshi Kimura [:emk] from comment #13)
> > I'm usually using ./mach, but I still have to use make at the moment. For
> > example, bug 842387. Another example is building only the part of the tree.
> > If I have to rebuild the entire tree whenever I changed something, it would
> > be virtually impossible to develop Firefox on my slow laptop.
>
> $ ./mach build toolkit browser
>
> That will perform an incremental build.
I just checked it works also for submodules like
src$ mach build netwerk/protocol/http/
But I hope that doing...
src/_obj$ pymake -C network/protocol/http
... is going to be preserved as well?
Reporter | ||
Comment 16•12 years ago
|
||
(In reply to Honza Bambas (:mayhemer) from comment #15)
> But I hope that doing...
>
> src/_obj$ pymake -C network/protocol/http
>
> ... is going to be preserved as well?
We have no short-term plans to stop supporting that. Longer-term we hope to get rid of Makefiles as the build backend, so think of "mach build" as the carrot to change your habits so you don't get broken eventually. :)
Reporter | ||
Comment 17•12 years ago
|
||
Comment on attachment 715276 [details] [diff] [review]
Require pymake to build on Windows, v1
Review of attachment 715276 [details] [diff] [review]:
-----------------------------------------------------------------
Can you put the same check in client.mk so we can error out early there as well?
Attachment #715276 -
Flags: review?(ted) → review+
Comment 18•12 years ago
|
||
(In reply to Ted Mielczarek [:ted.mielczarek] from comment #16)
> We have no short-term plans to stop supporting that. Longer-term we hope to
> get rid of Makefiles as the build backend, so think of "mach build" as the
> carrot to change your habits so you don't get broken eventually. :)
I'm asking because I sometimes have more then just one _obj dir under my source dir, with different configs (browser, b2g X debug, optimized, tests etc..) and I work with both build configs using the same sources. Then I just cd to the _obj I want to build, do my build commands for modules. And when I want to rebuild the same modules in other build config, I just cd ../_obj2 and use bash history to quickly repeat build commands.
If mach build can also support switch between .mozconfigs (actually having an option to specify a custom .mozconfig would be great!) then I'm OK.
Comment 19•12 years ago
|
||
(In reply to Gregory Szorc [:gps] from comment #14)
> (In reply to Masatoshi Kimura [:emk] from comment #13)
> > I'm usually using ./mach, but I still have to use make at the moment. For
> > example, bug 842387. Another example is building only the part of the tree.
> > If I have to rebuild the entire tree whenever I changed something, it would
> > be virtually impossible to develop Firefox on my slow laptop.
>
> $ ./mach build toolkit browser
>
> That will perform an incremental build.
Oh, when I tried it before, it didn't work.
Is there an corresponding mach command to "./build/pymake/make.py -C path/to/objdir/ export"?
I'm often using it to reduce the turn-around time.
Assignee | ||
Comment 20•12 years ago
|
||
Justin: I think you mentioned on IRC that SeaMonkey and possibly comm-central doesn't build with pymake yet. I don't want to push this out before you are ready. But, I don't want to wait indefinitely either. What timetable is good for you?
Flags: needinfo?(bugspam.Callek)
Assignee | ||
Comment 21•12 years ago
|
||
(In reply to Honza Bambas (:mayhemer) from comment #18)
> If mach build can also support switch between .mozconfigs (actually having
> an option to specify a custom .mozconfig would be great!) then I'm OK.
mach supports the MOZCONFIG environment variable to define which mozconfig is in effect:
MOZCONFIG=foo ./mach build
MOZCONFIG=bar ./mach build
(In reply to Masatoshi Kimura [:emk] from comment #19)
> Oh, when I tried it before, it didn't work.
> Is there an corresponding mach command to "./build/pymake/make.py -C
> path/to/objdir/ export"?
> I'm often using it to reduce the turn-around time.
This is bug 837824.
Comment 22•12 years ago
|
||
(In reply to Gregory Szorc [:gps] from comment #20)
> Justin: I think you mentioned on IRC that SeaMonkey and possibly
> comm-central doesn't build with pymake yet. I don't want to push this out
> before you are ready. But, I don't want to wait indefinitely either. What
> timetable is good for you?
SeaMonkey is indeed not ready for pymake yet, we're working on it. But we're also broken due to Bug 842341 right now, so long as we don't have pymake. :ted doesn't seem willing to fix that though (see c#3)
So my priority is "fix that" so we can get SeaMonkey trunk and aurora building again.
If it is deemed wontfix we can land this, since we're broken anyway.
Either way, we're actively working on pymake in Bug 842445, and expect within the next few weeks to be switched over on trunk.
Flags: needinfo?(bugspam.Callek)
Assignee | ||
Comment 23•12 years ago
|
||
Now with client.mk integration.
Attachment #715276 -
Attachment is obsolete: true
Attachment #716677 -
Flags: review?(ted)
Reporter | ||
Updated•12 years ago
|
Attachment #716677 -
Flags: review?(ted) → review+
Assignee | ||
Comment 25•12 years ago
|
||
It's been a month. Is SeaMonkey ready?
Comment 26•12 years ago
|
||
(In reply to Gregory Szorc [:gps] from comment #25)
> It's been a month. Is SeaMonkey ready?
We discussed in IRC recently that its not *only* waiting on SeaMonkey now, it was waiting on l10n bustage. We switched over a while ago for our main builds but l10n (also for Firefox) was broken when we required pymake.
As discussed in IRC then enabling pymake my default is ok if you exclude l10n (e.g. --with-l10n-basedir and --disable-compile-environment as seperate switches to allow without pymake)
Assignee | ||
Comment 27•11 years ago
|
||
Ted is sitting next to me and we both agreed there is no time like the present.
https://hg.mozilla.org/integration/mozilla-inbound/rev/c750d5d003dd
Target Milestone: --- → mozilla24
Comment 28•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•