Re: Building js/xul/css from Firefox faster
This is great progress! I had hope that something like this would also include the 'build binaries' DAG. It might make it slightly slower but it should still be very fast and lessen the cognitive load. I was under the impression that 'build binaries' at some point was a single DAG but it doesn't seem to be the case anymore (I see make entering/exiting directories now)? It would be nice if we got to a state where we had a 'build faster' like target that supported all the most frequently modified extensions all-in-one (say cpp/h/js/jsm/idl/css/xul). On Mon, Oct 5, 2015 at 12:30 PM, Gregory Szorcwrote: > Basically a set of build actions related to frontend development and known > by moz.build files are assembled in a single make file that contains a > single DAG and doesn't need to recurse into directories. See > python/mozbuild/mozbuild/backend/fastermake.py and /faster/Makefile > for the low-level details. > > On Fri, Oct 2, 2015 at 12:18 PM, Justin Dolske wrote: > > > Nice! Out of curiosity, how does "faster" work? Does it just ignore build > > targets/directories that involve native code? > > > > FWIW, I benchmarked various no-changes builds with yesterday's m-c, on my > > low-end Surface Pro 3 (i3, 4GB)... > > > > mach build: 7:38 > > mach build browser: 0:43 > > mach build toolkit: 1:42 > > mach build faster: 0:22 > > > > Big wins! > > > > Justin > > > > On Thu, Oct 1, 2015 at 5:23 PM, Mike Hommey wrote: > > > >> Hi, > >> > >> I recently landed a new build backend that, if you opt-in to running it, > >> will make your non-C++ changes to Firefox more readily available in > >> local builds. > >> > >> After you built Firefox normally once, and assuming you only changed > >> non-C++ code, you can now use the following command for a faster > >> incremental build: > >> ./mach build faster > >> > >> Now, since this is fresh out of the oven, there are a few things to > >> know: > >> - it doesn't handle removing files > >> - it doesn't handle files that would end up outside of dist/bin > >> - it doesn't handle a few things like the files from the default profile > >> - it currently only works for desktop Firefox > >> > >> Obviously, this is not an end state, so things will improve in the > >> future, but it should work well enough for most day-to-day work for > >> desktop Firefox, thus this message. > >> > >> On my machine, `mach build faster` completes in about 4 seconds for an > >> incremental build. This should get even faster very soon. > >> > >> Additionally, while requiring some manual steps (which bug 1207888 and > >> bug 1207890 will help with), it is also possible to use this to build > >> desktop Firefox without actually building any C++. Here is how that > >> goes: > >> - Run `./mach configure` with a mozconfig containing: > >> ac_add_options --disable-compile-environment > >> - Download and unpack a nightly > >> - Use `./mach python toolkit/mozapps/installer/unpack.py `, where > >>is the nightly's firefox/ directory. > >> - Move that fully unpacked nightly to $objdir/dist/bin (for mac, that > >> involves more fiddling, because dist/bin is a somewhat flattened > >> version of the .app directory) > >> - Ensure the files in $objdir/dist/bin are older than the source files. > >> - Run `./mach build faster`. > >> - On mac, you will need to run something like (untested) > >> ./mach build browser/app/repackage > >> > >> After that $objdir/dist/bin should contain a bastardized Firefox, with > >> xul, js, etc. coming from the source tree, and the remainder still being > >> there from the original nightly. > >> > >> `mach run` should work with that. > >> > >> Cheers, > >> > >> Mike > >> ___ > >> firefox-dev mailing list > >> firefox-...@mozilla.org > >> https://mail.mozilla.org/listinfo/firefox-dev > >> > > > > > > ___ > > firefox-dev mailing list > > firefox-...@mozilla.org > > https://mail.mozilla.org/listinfo/firefox-dev > > > > > ___ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
This is great progress! I had hope that something like this would also include the 'build binaries' DAG. It might make it slightly slower but it should still be very fast and lessen the cognitive load. I was under the impression that 'build binaries' at some point was a single DAG but it doesn't seem to be the case anymore (I see make entering/exiting directories now)? It would be nice if we got to a state where we had a 'build faster' like target that supported all the most frequently modified extensions all-in-one (say cpp/h/js/jsm/idl/css/xul). On Mon, Oct 5, 2015 at 12:30 PM, Gregory Szorcwrote: > Basically a set of build actions related to frontend development and known > by moz.build files are assembled in a single make file that contains a > single DAG and doesn't need to recurse into directories. See > python/mozbuild/mozbuild/backend/fastermake.py and /faster/Makefile > for the low-level details. > > On Fri, Oct 2, 2015 at 12:18 PM, Justin Dolske wrote: > > > Nice! Out of curiosity, how does "faster" work? Does it just ignore build > > targets/directories that involve native code? > > > > FWIW, I benchmarked various no-changes builds with yesterday's m-c, on my > > low-end Surface Pro 3 (i3, 4GB)... > > > > mach build: 7:38 > > mach build browser: 0:43 > > mach build toolkit: 1:42 > > mach build faster: 0:22 > > > > Big wins! > > > > Justin > > > > On Thu, Oct 1, 2015 at 5:23 PM, Mike Hommey wrote: > > > >> Hi, > >> > >> I recently landed a new build backend that, if you opt-in to running it, > >> will make your non-C++ changes to Firefox more readily available in > >> local builds. > >> > >> After you built Firefox normally once, and assuming you only changed > >> non-C++ code, you can now use the following command for a faster > >> incremental build: > >> ./mach build faster > >> > >> Now, since this is fresh out of the oven, there are a few things to > >> know: > >> - it doesn't handle removing files > >> - it doesn't handle files that would end up outside of dist/bin > >> - it doesn't handle a few things like the files from the default profile > >> - it currently only works for desktop Firefox > >> > >> Obviously, this is not an end state, so things will improve in the > >> future, but it should work well enough for most day-to-day work for > >> desktop Firefox, thus this message. > >> > >> On my machine, `mach build faster` completes in about 4 seconds for an > >> incremental build. This should get even faster very soon. > >> > >> Additionally, while requiring some manual steps (which bug 1207888 and > >> bug 1207890 will help with), it is also possible to use this to build > >> desktop Firefox without actually building any C++. Here is how that > >> goes: > >> - Run `./mach configure` with a mozconfig containing: > >> ac_add_options --disable-compile-environment > >> - Download and unpack a nightly > >> - Use `./mach python toolkit/mozapps/installer/unpack.py `, where > >>is the nightly's firefox/ directory. > >> - Move that fully unpacked nightly to $objdir/dist/bin (for mac, that > >> involves more fiddling, because dist/bin is a somewhat flattened > >> version of the .app directory) > >> - Ensure the files in $objdir/dist/bin are older than the source files. > >> - Run `./mach build faster`. > >> - On mac, you will need to run something like (untested) > >> ./mach build browser/app/repackage > >> > >> After that $objdir/dist/bin should contain a bastardized Firefox, with > >> xul, js, etc. coming from the source tree, and the remainder still being > >> there from the original nightly. > >> > >> `mach run` should work with that. > >> > >> Cheers, > >> > >> Mike > >> ___ > >> firefox-dev mailing list > >> firefox-...@mozilla.org > >> https://mail.mozilla.org/listinfo/firefox-dev > >> > > > > > > ___ > > firefox-dev mailing list > > firefox-...@mozilla.org > > https://mail.mozilla.org/listinfo/firefox-dev > > > > > ___ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
On Mon, Oct 05, 2015 at 03:08:15PM -0400, Benoit Girard wrote: > This is great progress! > > I had hope that something like this would also include the 'build binaries' > DAG. It might make it slightly slower but it should still be very fast and > lessen the cognitive load. I was under the impression that 'build binaries' > at some point was a single DAG but it doesn't seem to be the case anymore > (I see make entering/exiting directories now)? It never was a single DAG, so that never changed. It however used to have a trick that avoided part of the recursion, but it was complex and didn't work to make 'build binaries' part of the normal build. > It would be nice if we got to a state where we had a 'build faster' like > target that supported all the most frequently modified extensions > all-in-one (say cpp/h/js/jsm/idl/css/xul). The eventual goal is for the 'build faster' thing to be the default, but it's a long way there. I definitely want to add binaries to the equation, but the first goal was to provide something that works well enough to help frontend developers. Mike ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
On Fri, Oct 02, 2015 at 12:18:12PM -0700, Justin Dolske wrote: > Nice! Out of curiosity, how does "faster" work? Does it just ignore build > targets/directories that involve native code? Greg answered this :) > FWIW, I benchmarked various no-changes builds with yesterday's m-c, on my > low-end Surface Pro 3 (i3, 4GB)... > > mach build: 7:38 > mach build browser: 0:43 > mach build toolkit: 1:42 > mach build faster: 0:22 > > Big wins! Could you compare with 'mach build faster' with bug 1210642 and bug 1210687 applied? Mike ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
Basically a set of build actions related to frontend development and known by moz.build files are assembled in a single make file that contains a single DAG and doesn't need to recurse into directories. See python/mozbuild/mozbuild/backend/fastermake.py and /faster/Makefile for the low-level details. On Fri, Oct 2, 2015 at 12:18 PM, Justin Dolskewrote: > Nice! Out of curiosity, how does "faster" work? Does it just ignore build > targets/directories that involve native code? > > FWIW, I benchmarked various no-changes builds with yesterday's m-c, on my > low-end Surface Pro 3 (i3, 4GB)... > > mach build: 7:38 > mach build browser: 0:43 > mach build toolkit: 1:42 > mach build faster: 0:22 > > Big wins! > > Justin > > On Thu, Oct 1, 2015 at 5:23 PM, Mike Hommey wrote: > >> Hi, >> >> I recently landed a new build backend that, if you opt-in to running it, >> will make your non-C++ changes to Firefox more readily available in >> local builds. >> >> After you built Firefox normally once, and assuming you only changed >> non-C++ code, you can now use the following command for a faster >> incremental build: >> ./mach build faster >> >> Now, since this is fresh out of the oven, there are a few things to >> know: >> - it doesn't handle removing files >> - it doesn't handle files that would end up outside of dist/bin >> - it doesn't handle a few things like the files from the default profile >> - it currently only works for desktop Firefox >> >> Obviously, this is not an end state, so things will improve in the >> future, but it should work well enough for most day-to-day work for >> desktop Firefox, thus this message. >> >> On my machine, `mach build faster` completes in about 4 seconds for an >> incremental build. This should get even faster very soon. >> >> Additionally, while requiring some manual steps (which bug 1207888 and >> bug 1207890 will help with), it is also possible to use this to build >> desktop Firefox without actually building any C++. Here is how that >> goes: >> - Run `./mach configure` with a mozconfig containing: >> ac_add_options --disable-compile-environment >> - Download and unpack a nightly >> - Use `./mach python toolkit/mozapps/installer/unpack.py `, where >>is the nightly's firefox/ directory. >> - Move that fully unpacked nightly to $objdir/dist/bin (for mac, that >> involves more fiddling, because dist/bin is a somewhat flattened >> version of the .app directory) >> - Ensure the files in $objdir/dist/bin are older than the source files. >> - Run `./mach build faster`. >> - On mac, you will need to run something like (untested) >> ./mach build browser/app/repackage >> >> After that $objdir/dist/bin should contain a bastardized Firefox, with >> xul, js, etc. coming from the source tree, and the remainder still being >> there from the original nightly. >> >> `mach run` should work with that. >> >> Cheers, >> >> Mike >> ___ >> firefox-dev mailing list >> firefox-...@mozilla.org >> https://mail.mozilla.org/listinfo/firefox-dev >> > > > ___ > firefox-dev mailing list > firefox-...@mozilla.org > https://mail.mozilla.org/listinfo/firefox-dev > > ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
Nice! Out of curiosity, how does "faster" work? Does it just ignore build targets/directories that involve native code? FWIW, I benchmarked various no-changes builds with yesterday's m-c, on my low-end Surface Pro 3 (i3, 4GB)... mach build: 7:38 mach build browser: 0:43 mach build toolkit: 1:42 mach build faster: 0:22 Big wins! Justin On Thu, Oct 1, 2015 at 5:23 PM, Mike Hommeywrote: > Hi, > > I recently landed a new build backend that, if you opt-in to running it, > will make your non-C++ changes to Firefox more readily available in > local builds. > > After you built Firefox normally once, and assuming you only changed > non-C++ code, you can now use the following command for a faster > incremental build: > ./mach build faster > > Now, since this is fresh out of the oven, there are a few things to > know: > - it doesn't handle removing files > - it doesn't handle files that would end up outside of dist/bin > - it doesn't handle a few things like the files from the default profile > - it currently only works for desktop Firefox > > Obviously, this is not an end state, so things will improve in the > future, but it should work well enough for most day-to-day work for > desktop Firefox, thus this message. > > On my machine, `mach build faster` completes in about 4 seconds for an > incremental build. This should get even faster very soon. > > Additionally, while requiring some manual steps (which bug 1207888 and > bug 1207890 will help with), it is also possible to use this to build > desktop Firefox without actually building any C++. Here is how that > goes: > - Run `./mach configure` with a mozconfig containing: > ac_add_options --disable-compile-environment > - Download and unpack a nightly > - Use `./mach python toolkit/mozapps/installer/unpack.py `, where >is the nightly's firefox/ directory. > - Move that fully unpacked nightly to $objdir/dist/bin (for mac, that > involves more fiddling, because dist/bin is a somewhat flattened > version of the .app directory) > - Ensure the files in $objdir/dist/bin are older than the source files. > - Run `./mach build faster`. > - On mac, you will need to run something like (untested) > ./mach build browser/app/repackage > > After that $objdir/dist/bin should contain a bastardized Firefox, with > xul, js, etc. coming from the source tree, and the remainder still being > there from the original nightly. > > `mach run` should work with that. > > Cheers, > > Mike > ___ > firefox-dev mailing list > firefox-...@mozilla.org > https://mail.mozilla.org/listinfo/firefox-dev > ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Re: Building js/xul/css from Firefox faster
Mike Hommey wrote: ./mach build faster So is this the complete opposite of ./mach build binaries? -- Warning: May contain traces of nuts. ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform
Building js/xul/css from Firefox faster
Hi, I recently landed a new build backend that, if you opt-in to running it, will make your non-C++ changes to Firefox more readily available in local builds. After you built Firefox normally once, and assuming you only changed non-C++ code, you can now use the following command for a faster incremental build: ./mach build faster Now, since this is fresh out of the oven, there are a few things to know: - it doesn't handle removing files - it doesn't handle files that would end up outside of dist/bin - it doesn't handle a few things like the files from the default profile - it currently only works for desktop Firefox Obviously, this is not an end state, so things will improve in the future, but it should work well enough for most day-to-day work for desktop Firefox, thus this message. On my machine, `mach build faster` completes in about 4 seconds for an incremental build. This should get even faster very soon. Additionally, while requiring some manual steps (which bug 1207888 and bug 1207890 will help with), it is also possible to use this to build desktop Firefox without actually building any C++. Here is how that goes: - Run `./mach configure` with a mozconfig containing: ac_add_options --disable-compile-environment - Download and unpack a nightly - Use `./mach python toolkit/mozapps/installer/unpack.py `, where is the nightly's firefox/ directory. - Move that fully unpacked nightly to $objdir/dist/bin (for mac, that involves more fiddling, because dist/bin is a somewhat flattened version of the .app directory) - Ensure the files in $objdir/dist/bin are older than the source files. - Run `./mach build faster`. - On mac, you will need to run something like (untested) ./mach build browser/app/repackage After that $objdir/dist/bin should contain a bastardized Firefox, with xul, js, etc. coming from the source tree, and the remainder still being there from the original nightly. `mach run` should work with that. Cheers, Mike ___ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform