Commit Graph

1127 Commits

Author SHA1 Message Date
Mike Hommey
736747c427 Bug 1191575 - Optimize the RecursiveMakeBackend._check_blacklisted_variables test. r=gps
Bug 1153566 changed the regexp used in that method in such a way that there
has been a big hit in the time spent executing the make backend. On my machine,
with the current code, mach build-backend indicates:
  Backend executed in 5.01s
With the change from bug 1153566 reverted:
  Backend executed in 2.97s
That's a significant regression for a 4-character change.
But we can actually avoid using regexp in most cases, which can make things faster
than they were. With this change, we get down to:
  Backend executed in 2.28s
For reference, making the _check_blacklisted_variables method do nothing at all
ends with:
  Backend executed in 2.20s
2015-08-07 06:51:44 +09:00
Ryan VanderMeulen
64e8cd0fdb Backed out revision bca1ad6cc378 (bug 1190522) for breaking OSX B2G Desktop builds. 2015-08-06 15:43:45 -04:00
Ted Mielczarek
f4167f27a1 bug 1190522 - Rewrite pkg-dmg as a Python script. r=gps 2015-08-03 15:40:04 -04:00
Ted Mielczarek
415ad8450f bug 1191598 - Pass MOZ_CURRENT_PROJECT in environment when running post-build automation steps for universal mac builds. r=gps 2015-08-05 12:11:24 -04:00
Chris Manchester
802d1bc0a9 Bug 1183232 - Allow selecting tests and suites with just a tag from mach try. r=ahal,gps 2015-08-06 10:19:31 -07:00
Carsten "Tomcat" Book
0a07f63219 Merge mozilla-central to mozilla-inbound 2015-08-05 13:19:38 +02:00
Nick Alexander
bae9d3ddfb Bug 1191051 - Use full 40 character hashes in |mach artifact|. r=gps
DONTBUILD NPOTB on a CLOSED TREE
2015-08-04 13:32:00 -07:00
Mike Hommey
bfb376779f Bug 1188224 - Remove stale .pyc files from the source directory at import time. r=gps 2015-08-05 15:45:45 +09:00
Mike Hommey
2c18035129 Backed out changeset 684252f11061 (bug 1188224) for make check bustage. 2015-08-05 13:50:11 +09:00
Mike Hommey
243d18beaf Bug 1188224 - Remove stale .pyc files from the source directory at import time. r=gps 2015-08-05 11:17:03 +09:00
Nick Alexander
ea4353b988 Bug 1189459 - Allow generating geckoview AAR files when MOZ_APP_NAME is not 'fennec'. r=gps
This just allows a little versatility for consumers such as b2gdroid,
which are Fennec-like but don't have MOZ_APP_NAME=fennec.

I elected to pass appname as a parameter rather than modify the
existing distdir because I expect to want to differentiate, in some
way, the output AAR files based on the underlying name.  That is, in
future we might generate geckoview-fennec-VERSION.aar and
geckolibs-b2gdroid-VERSION.aar, or stuff the name into the Ivy version
information, or...

This also fixes a typo in one of the JarFinder instantiations.
2015-07-30 11:50:44 -07:00
Dustin J. Mitchell
fb855bf450 Bug 1188551: treat assertion failures as bad mozconfig; r=mshal 2015-07-29 14:14:05 -04:00
Vladimir Vukicevic
b8e7a478bb Bug 1157420, mach should generate VS2013 project files and use a better dir structure; r=froydnj 2015-07-20 16:21:15 -04:00
Mike Hommey
484986b581 Bug 1187245 - Make .mozconfig.mk environment variables available to mach valgrind-test. r=gps 2015-07-28 08:19:14 +09:00
Mitchell Field
aaf8252b07 Bug 1126228 - Directory (--directory) argument for |mach warnings-list| and |mach warnings-summary|. r=gps 2015-01-27 21:13:28 +11:00
Mike Hommey
3deb2dd11b Bug 1185671 - Use BytesIO instead of StringIO as backing store for FileAvoidWrite, and handle writing unicode to it explicitly. r=gps 2015-07-23 09:37:33 +09:00
Jonathan Griffin
87fa66cd0a Bug 1179292 - Make mozinfo recognize linux64-asan as a distinct platform, r=ahal 2015-07-16 13:17:56 -07:00
Ehsan Akhgari
d3d141e31a Bug 1180275 - Part 1: Add a release_build mozinfo variable; r=ted 2015-07-16 14:47:52 -04:00
Ryan VanderMeulen
22d77db0ae Backed out changesets 9a048b598b1e and 56e9597b1257 (bug 1180275) for OSX test_android_eclipse.py failures.
CLOSED TREE
2015-07-15 23:40:06 -04:00
Ehsan Akhgari
415ebdfa86 Bug 1180275 - Part 1: Add a release mozinfo variable; r=ted 2015-07-15 19:59:59 -04:00
Peter Elmers
90309d8599 Bug 1183291 - Factor idl-parser into a Python package. r=khuey
Move Python code into an xpidl subdirectory, and include a setup.py to allow
inclusion from pip install or requirements files. Change build directory
variables appropriately.
2015-07-13 13:09:11 -07:00
Carsten "Tomcat" Book
579c0a5956 merge mozilla-inbound to mozilla-central a=merge 2015-07-13 11:51:14 +02:00
Nick Alexander
fc8724c159 Bug 1182579 - Compute Android version codes in Python. r=gps
I considered three ways to do this:

* one, as a Python script executed with $(shell);
* two, as a Python script that writes an include file for the preprocessor;
* three, as a function exposed to the moz.build sandbox.

I rejected two because it's both tied to the preprocessor, and awkward
to make handle the dependency on the buildid (in a file) and
additional build defines (in config.status).

I rejected three because I know of no precedent for this approach, and
it hides the dependency on the buildid.

One doesn't handle failures in the script gracefully, but neither did
the existing approach.  This patch is at least testable.
2015-07-08 12:43:06 -07:00
Mike Hommey
d1925d3749 Bug 1181450 - Make GENERATED_FILES more visible during the build by printing their name when they are being generated. r=gps 2015-07-10 09:56:04 +09:00
Julien Pagès
b450a92925 Bug 1180813 - Use a cache for BuildConfig to improve mach speed. r=gps 2015-07-07 00:35:00 -04:00
Nicholas Hurley
14fdcbe99a Bug 1182301 - Improve 'mach build' notifications. r=gps 2015-07-10 13:36:57 -07:00
Edmund Wong
1064b3e0ee Bug 1177634 - Ensure EXTERNAL_SOURCE_DIR uses normcase. r=glandium 2015-07-08 08:11:15 +08:00
Mike Hommey
5adcf3d3e2 Bug 1180081 - Properly rebuild gtest/libxul before running gtests. r=gps
And since this does go through plenty of make directories, avoid make printing
many "Entering" and "Leaving" messages.
2015-07-08 07:53:31 +09:00
Ted Mielczarek
310aa0987d bug 1162519 - use winrm for mach clobber on Windows. r=gps 2015-07-01 11:47:03 -04:00
Wes Kocher
49ef10c712 Merge m-c to fx-team, a=merge 2015-06-30 16:58:23 -07:00
Nick Alexander
6d0770f3cc No bug - Don't write artifacts twice. r=me
DONTBUILD NPOTB

This was just an oversight during the initial landing, leading to two
copies of artifact libraries being appended to the same destination
file.
2015-06-30 16:19:51 -07:00
Andrew McCreight
c8a00cd5a2 Bug 1058178, part 1 - Implement DMD heap scanning mode. r=njn
This implements a new "scan" mode for DMD that records the address
and contents of every live unsampled block in the DMD log. This
enables the low-level analysis of references from one block to
another, which can help leak investigations.
2015-06-30 11:54:15 -07:00
Gregory Szorc
1ad3bd03f2 Bug 1176642 - Import proper mozinfo package; r=me
bf34d16b6ab2 added absolute_import to this file. When changed, "import
mozinfo" stopped picking up mozbuild.mozinfo and started importing
mozinfo instead.

Use relative imports to force mozbuild.mozinfo to be picked up.
2015-06-25 16:11:22 -07:00
Gregory Szorc
b531585d04 Bug 1176642 - Use absolute_import in mozbuild; r=glandium 2015-06-21 18:37:18 -07:00
Gregory Szorc
e5bf4a021d Bug 1176642 - Use absolute_import in mozpack; r=glandium 2015-06-25 12:13:55 -07:00
Gregory Szorc
7c31dff45d Bug 1176642 - Defer import Eclipse backend modules; r=glandium
This import brought in significant parts of the mozbuild package. Moving
it to a deferred import reduces the total number of Python modules
imported during mach dispatch by 43.
2015-06-25 12:11:12 -07:00
Gregory Szorc
0d16ec0cfa Bug 1176642 - Use absolute_import in mach_commands.py files; r=glandium
This removes ambiguity as to which modules are being imported, making
import slightly faster as Python doesn't need to test so many
directories for file presence.

All files should already be using absolute imports because mach command
modules aren't imported to the package they belong to: they instead
belong to the "mach" package. So relative imports shouldn't have been
used.
2015-06-21 17:39:09 -07:00
Gregory Szorc
97fe4bc7c7 Bug 1176642 - Remove unused imports; r=glandium 2015-06-25 12:16:38 -07:00
Nick Alexander
cbe57abf71 Bug 1162191 - Add |mach artifact| for installing downloaded Fennec binaries. r=gps
DONTBUILD ON A CLOSED TREE: Android-only and the build changes are cosmetic.

Very much a first cut, but I'd like to get some Fennec early adopters testing.

This adds:

* |mach artifact install| to fetch and install Fennec binaries;
* |mach artifact last| to print details about what was last installed;
* |mach artifact {print,clear}-caches|, for debugging.

This code is exposed as a new mozbuild.artifacts Python but it's not
particularly general.  My intention was to get things out of the mach command
more than produce a general artifact fetching API.  We can leave that bike
shed to Bug 1124378.

I've been testing this with --disable-compile-environment and it works well
locally, although there's no reason a knowledgeable developer couldn't use
this in conjunction with a fully-built tree.  (I don't know when such a
situation would arise, but I know of no technical impediment.)
2015-06-24 23:12:00 -07:00
Birunthan Mohanathas
fc58b10df7 Bug 1174524 - Make objdir path comparison case-insensitive on Windows. r=mshal
os.path.realpath already implies os.path.normpath, so this just changes
normpath to normcase.
2015-06-16 08:24:29 -07:00
Gregory Szorc
b376fe9c05 Bug 1171105 - Ability to aggregate metadata from Files instances; r=glandium
We want this logic to live next to where metadata types are defined so
downstream consumers of Files-based metadata don't have to reinvent the
wheel.

The work in this commit will be used to enable auto filing bugs during
pushes to MozReview.
2015-06-12 09:44:14 -07:00
Gregory Szorc
2201e9dd05 Bug 1172645 - Make mozbuild's setup.py work; r=glandium
This file hasn't been updated in ages and the current configuration
doesn't produce working packages. Change that.
2015-06-12 09:37:54 -07:00
Gregory Szorc
0ab322a7fe Bug 1173633 - Print docstrings of mach command handlers in help output; r=ahal
`mach help <command>` currently only displays a brief description of the
command along with its arguments. Sometimes more detailed help text is
needed.

With this commit, the docstrings of mach command handlers will appear in
the output of `mach help <command>` if they are defined.

I've implemented basic docstrings for the three flavors of mach commands
(normal command, main subcommand, subcommand) to demonstate things work.

My hope is others will start to fill in docstrings once this feature
lands so the output for `mach help` can serve as a better learning guide
for new contributors.
2015-06-11 08:32:02 -07:00
Gregory Szorc
9add883718 Bug 1168607 - Add a native Mercurial finder; r=glandium
The hglib Mercurial finder was nice. But it is somewhat slow, as it
involves a separate Mercurial process.

This commit introduces a native Mercurial finder that speaks directly
to a Mercurial repository instance. It is significantly faster.

The new code is isolated to its own file because it imports Mercurial
code, which is GPL.
2015-06-09 13:49:45 -07:00
Gregory Szorc
31328c6c69 Bug 1168607 - Make mach file-info work with Mercurial repos; r=glandium
This commit adds support for specifying a Mercurial revision with `mach
file-info`. Aside from being a potentially useful feature, it proves
that MercurialRevisionFinder works with BuildReader.
2015-06-09 13:43:22 -07:00
Gregory Szorc
a0f182b4e8 Bug 1168607 - Add mode to MercurialFileFinder to support non-relative paths; r=glandium
The moz.build reader uses absolute paths when referencing moz.build
files. *Finder classes expect paths to be relative to a base. When we
switched the reader to use *Finder instances for I/O, we simply provided
a default FileFinder based at the filesystem root. This was quick and
easy. Things worked.

Unfortunately, that solution isn't ideal because not all *Finder
instances can accept absolute paths like that. The
MercurialRevisionFinder is one of them.

Changing the moz.build reader to talk in terms of relative paths is a
lot of work. While this would be ideal, it is significantly easier to
defer the problem until later and hack up MercurialRevisionFinder to
accept absolute paths. This commit does exactly that.

Bug 1171069 has been filed to track converting BuildReader to relative
paths.
2015-06-08 09:33:46 -07:00
Gregory Szorc
d64a7e66e6 Bug 1168607 - Implement a finder that reads from a Mercurial repo; r=glandium
Now that moz.build files use finders for I/O, we can start reading
moz.build data from other sources.

Version control is essentially a filesystem. We implement a finder
that speaks to Mercurial to obtain file data. It is able to obtain
file data from a specific revision in the repository.

We use the hglib package (which uses the Mercurial command server) for
speaking with Mercurial. This adds overhead compared to consuming the
raw Mercurial APIs. However, it also avoids GPL side-effects of
importing Mercurial's Python modules.

Testing shows that performance is good but not great. A follow-up
commit will introduce a GPL licensed Mercurial finder. For now, get
the base functionality in place.
2015-06-09 13:39:01 -07:00
Gregory Szorc
105df5a295 Bug 1168607 - Use mozpack Finders for reading moz.build files; r=glandium
Sometimes moz.build data may not come from the local filesystem. To
support defining moz.build data in other backing stores, we switch
moz.build reading to use mozpack's *Finder classes for I/O.

The use of a FileFinder bound to / is sub-optimal. We should ideally
be creating a finder bound to topsrcdir. However, doing this would
require refactoring a lot of path handling in the reader, as that code
makes many assumptions that paths are absolute. This would be excellent
follow-up work.

While I was here, I cleaned up some linter warnings for unused imports.

On my machine, this commit results in a slight slowdown of moz.build
reading. Before, `mach build-backend` was consistently reporting 1.99s
for reading 2,572 moz.build files. After, it is consistently reporting
2.07s, an increase of 4%. This is likely due to a) function call
overhead b) the cost of instantiating a few thousand File instances
c) FileFinder performing an os.path.exists() before returning File
instances. I believe the regression is tolerable.
2015-06-09 18:16:35 -07:00
Gregory Szorc
1c6e12f560 Bug 1168607 - Add a read() method to File; r=glandium
Passing raw file handles around is a bit dangerous because it could lead
to leaking file descriptors. Add a read() method that handles the simple
case of obtaining the full contents of a File instance.

This should ideally be a method on BaseFile. But this would require
extra work and isn't needed. So we've deferred it until bug 1170329.
2015-06-02 09:37:45 -07:00
Gregory Szorc
b4a637bb54 Bug 1168607 - Add get method to finders; r=glandium
Today, the *Finder classes are optimized for doing matching and
returning multiple results. However, sometimes only looking for a
single file is wanted.

This commit implements the "get" method on all the *Finder classes.
It returns a BaseFile or None.

FileFinder._find_file has been refactored into FileFinder.get
to avoid code duplication.
2015-06-04 11:24:03 -07:00