Commit Graph

1770 Commits

Author SHA1 Message Date
Gijs Kruitbosch
f0a47f0a16 Bug 1232421 - followup: fix test to not use 'inline comments' which are not supported elsewhere, rs=bustage on a CLOSED TREE 2015-12-16 14:03:20 +00:00
Gijs Kruitbosch
2a4fcef993 Bug 1232421 - force matching the start of the line for comments, r=glandium 2015-12-14 20:33:57 +00:00
Rail Aliiev
e9237498c7 Bug 1232887 - "make package MOZ_PKG_PRETTYNAMES=1" is busted. r=glandium 2015-12-15 23:23:18 -05:00
Mike Hommey
6874992719 Bug 1231315 - Build CONFIGURE_DEFINE_FILES at build time instead of during configure. r=gps 2015-12-15 08:06:11 +09:00
Mike Hommey
3c29698cac Bug 1231314 - Turn mozilla-config.h and js-confdefs.h into CONFIGURE_DEFINE_FILES. r=gps
Both these files, are, after all, define files, like other CONFIGURE_DEFINE_FILES.
They only happen to have a special requirement for an expansion for all defines,
which doesn't need to happen through traditional preprocessing.

This change adds consistency in how configure-related headers are being handled.
2015-12-15 08:06:11 +09:00
Gregory Szorc
d6cbc328d8 Bug 1231989 - Install watchman via Homebrew and MacPorts; r=ahal
This is needed to support hgwatchman.
2015-12-11 12:40:41 -05:00
Felipe Gomes
ae6ed21c61 Bug 1231720 - Log when ESLint finishes running. r=nalexander 2015-12-10 14:31:14 -05:00
Carsten "Tomcat" Book
209b6fca86 merge mozilla-inbound to mozilla-central a=merge 2015-12-10 12:05:03 +01:00
Mike Hommey
b36ad7dc0b Bug 1230355 - Remove include_deps. r=mshal
We used to use include_deps to trigger a fast-path in pymake, but we don't
use pymake anymore, so we can use normal includes now.
2015-12-09 19:23:53 +09:00
Ted Mielczarek
56d30d0b18 bug 1160185 - support GENERATED_FILES in EXPORTS. r=glandium
This change allows specifying objdir-relative paths in EXPORTS to enable
exporting entries from GENERATED_FILES. Objdir paths in EXPORTS that are
not in GENERATED_FILES will raise an exception.

Example:
```
EXPORTS += ['!g.h', 'f.h']
GENERATED_FILES += ['g.h']
```

Given the implementation, this should also work for FINAL_TARGET_FILES,
FINAL_TARGET_PP_FILES, and TESTING_FILES, but those are not well-tested.

This patch also renames the install manifest for '_tests' to match the
directory name for convenience in some code I refactored.
2015-12-01 09:53:16 -05:00
Mike Hommey
0451771e82 Bug 1230060 - Don't fail to read an install manifest containing non-actionable items. r=gps
Future improvements to process_install_manifest's --track option will require
adding data in the tracking dump that uses an install manifest form, and I don't
want e.g. switching branches or bisection to require to clobber in order to do the
right thing, so this change future-proofs the install manifest reader.
2015-12-05 11:04:21 +09:00
Mike Hommey
20605c74d2 Bug 1230060 - Add a --track option to process_install_manifest. r=gps
There are currently two operating modes for process_install_manifest:
- default, which removes any file in the destination directory that is not
  in the install manifest
- --no-remove, which doesn't do the above.

While install manifests also have the ability to deal with files that may
be left in the destination directory some other way, that requires knowing the
list of those files in advance, which is not always possible.

For instance:
- with the FasterMake build backend, install manifests are split such that
  there is one manifest per application of addon directory (to allow more
  parallelism), which means there is one for dist/bin and one for several
  of its sub-directories.
- With --disable-compile-environment combined with artefacts, the backends
  are not aware of e.g. all the libraries and executables that end up in
  dist/bin.

If we want to properly remove files when they are removed from moz.build
or jar.mn, we can't use --no-remove, but the alternative would remove those
files

So add an option that keeps a list of all the files that were installed as
part of processing the given install manifest(s). That information is simply
a dump of the install manifest, which, while it contains more information
than currently required, will allow to do smarter things in the future.
2015-12-05 11:04:21 +09:00
Mike Hommey
cfd23e24a7 Bug 1230060 - Allow to restrict what unaccounted files to remove when copying from a FileCopier. r=gps
The default behavior for a FileCopier's copy is to remove all the files and
directories in the destination that aren't in its registry.

The remove_unaccounted argument can be passed as False to disable this
behavior.

This change adds another possibility, where remove_unaccounted may be a
FileRegistry, in which case only the files in that registry are removed.

This allows to e.g. only remove files that were copied from a previous
FileCopier.copy, leaving aside files that were in the destination for some
other reason.
2015-12-05 11:04:21 +09:00
Carsten "Tomcat" Book
b49b18718d Backed out changeset 9d1f7f04a682 (bug 1230060) to complete backout 2015-12-04 15:22:52 +01:00
Carsten "Tomcat" Book
10b9d9a7b8 Backed out changeset 0dcea48cbf38 (bug 1230060) for bustage due to race conditions of some sort 2015-12-04 15:18:07 +01:00
Carsten "Tomcat" Book
ff6fec9afe Backed out changeset 1e44f391a3cb (bug 1230060) 2015-12-04 15:17:38 +01:00
Mike Hommey
b0d30674e1 Bug 1230067 - Normalize install target when processing JarManifestParser data in FasterMake backend. r=gps
The loop addon jar.mn data uses '.' as base, and join(path, '.') returns
'{path}/.'. So normalize that so that it becomes '{path}'.
2015-12-04 19:25:42 +09:00
Mike Hommey
6010d9fce6 Bug 1230060 - Don't fail to read an install manifest containing non-actionable items. r=gps
Future improvements to process_install_manifest's --track option will require
adding data in the tracking dump that uses an install manifest form, and I don't
want e.g. switching branches or bisection to require to clobber in order to do the
right thing, so this change future-proofs the install manifest reader.
2015-12-04 19:25:42 +09:00
Mike Hommey
2e3f4a3e2b Bug 1230060 - Add a --track option to process_install_manifest. r=gps
There are currently two operating modes for process_install_manifest:
- default, which removes any file in the destination directory that is not
  in the install manifest
- --no-remove, which doesn't do the above.

While install manifests also have the ability to deal with files that may
be left in the destination directory some other way, that requires knowing the
list of those files in advance, which is not always possible.

For instance:
- with the FasterMake build backend, install manifests are split such that
  there is one manifest per application of addon directory (to allow more
  parallelism), which means there is one for dist/bin and one for several
  of its sub-directories.
- With --disable-compile-environment combined with artefacts, the backends
  are not aware of e.g. all the libraries and executables that end up in
  dist/bin.

If we want to properly remove files when they are removed from moz.build
or jar.mn, we can't use --no-remove, but the alternative would remove those
files

So add an option that keeps a list of all the files that were installed as
part of processing the given install manifest(s). That information is simply
a dump of the install manifest, which, while it contains more information
than currently required, will allow to do smarter things in the future.
2015-12-04 19:25:42 +09:00
Mike Hommey
becc827860 Bug 1230060 - Allow to restrict what unaccounted files to remove when copying from a FileCopier. r=gps
The default behavior for a FileCopier's copy is to remove all the files and
directories in the destination that aren't in its registry.

The remove_unaccounted argument can be passed as False to disable this
behavior.

This change adds another possibility, where remove_unaccounted may be a
FileRegistry, in which case only the files in that registry are removed.

This allows to e.g. only remove files that were copied from a previous
FileCopier.copy, leaving aside files that were in the destination for some
other reason.
2015-12-04 19:25:42 +09:00
Maja Frydrychowicz
b6adad677d Bug 1229467 - Include wptserve in common.tests.zip; r=gps 2015-12-01 15:45:41 -05:00
Axel Hecht
ef2ed3a3d9 Bug 1229330 - fix import, r=glandium
Follow-up fix to bug 1147283
2015-12-01 11:55:59 +01:00
Mike Hommey
a3c00474ca Bug 1229341 - Remove HierarchicalStringListWithFlagsFactory. r=gps
It is not used anymore.
2015-12-03 13:34:02 +09:00
Mike Hommey
10c190af7a Bug 1229341 - Remove .source flag on BRANDING_FILES. r=gps
The only use of BRANDING_FILES[...].source is in xulrunner/app/moz.build, for
the app.ico file.

This file has not been useful since the removal of the xpinstall-based
installer in bug 344236... 9 years ago.
2015-12-03 13:34:02 +09:00
Mike Hommey
6f3fa8e976 Bug 1229279 - Use mozbuild.context.Path for FINAL_TARGET{_PP}_FILES. r=gps 2015-12-03 13:34:02 +09:00
Mike Hommey
4b15736d3f Bug 1229279 - Add a specialized HierarchicalStringList class for ContextDerivedValue types. r=gps 2015-12-03 13:34:02 +09:00
Chris Pearce
eff71dcef1 Bug 1229541 - Assume config.substs.get() already returns a list in VS mach build-backend backend. r=glandium 2015-12-03 11:47:29 +13:00
Dave Townsend
6bb0893b77 Bug 1230300: Fix mach eslint to pass command arguments through to eslint. r=gps
Currently mach treats the first argument to eslint as the path and moves it to
the end of the arguments but this breaks usage like "mach eslint -f json browser".

It used to be necessary to change to the directory you wanted to lint but now
the .eslintignore is at the top level we just run from the top level. This means
the path argument doesn't need to be special anymore.
2015-12-03 10:38:29 -08:00
Dave Townsend
f2c42c1f62 Bug 1229858: Add a preprocessor to convert XBL into JavaScript blocks for eslint. r=miker 2015-12-02 17:03:33 -08:00
Carsten "Tomcat" Book
0f9a85616c merge mozilla-inbound to mozilla-central a=merge 2015-12-02 15:20:57 +01:00
Mike Hommey
547d572dd9 Bug 1229293 - Enforce order when setting a HierarchicalStringList, and forbid reassignment. r=gps
The current implementation of HierarchicalStringList allows the following:

   FOO.bar = [
       'foo',
       'bar',
   ]

while

   FOO.bar += [
       'foo',
       'bar',
   ]

would be invalid because of the StrictOrderingOnAppendList enforcement.

It also allows to overwrite the entire list with a subsequent

   FOO.bar = [
	'baz',
   ]

while we've explicitly forbidden such things for every other list.

While in the vicinity, fix HierarchicalStringList._get_export_variable to not
call the HierarchicalStringList constructor uselessly.
2015-12-02 11:04:37 +09:00
Mike Hommey
8a4b8e4cf7 Bug 1229245 - Use a FinalTargetFiles-like object for TESTING_JS_MODULES. r=gps 2015-12-01 16:46:57 +09:00
Mike Hommey
d5397256a1 Backout changeset aad04db89c38 (bug 1229245) for jetpack bustage. r=me on a CLOSED TREE 2015-12-01 16:18:54 +09:00
Mike Hommey
75fae169cd Fixup for bug 1229233 to fix bustage on OSX universal builds. r=me
Those bits are copied from TestMozbuildObject.
2015-12-01 14:52:31 +09:00
Mike Hommey
ea4d1d128a Fixup for bug 1229233 to fix test bustage on Windows. r=me 2015-12-01 14:52:31 +09:00
Mike Hommey
865411462b Bug 1229245 - Use a FinalTargetFiles-like object for TESTING_JS_MODULES. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
a83579de7c Bug 1229245 - Don't store the target in FinalTarget{,Preprocessed}Files instances. r=gps
They already have that value in self.install_target.
2015-12-01 13:57:52 +09:00
Mike Hommey
d430982259 Bug 1229241 - Use FINAL_TARGET{,_PP}_FILES for EXTRA{,_PP}_JS_MODULES. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
2a44c0408c Bug 1229241 - Redirect RESOURCE_FILES to FINAL_TARGET_FILES.res. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
75d3ac49f6 Bug 1229241 - Use FINAL_TARGET{,_PP}_FILES for JS_PREFERENCE{,_PP}_FILES. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
488bd1361b Bug 1229241 - Differentiate preprocessed and non-preprocessed JS pref files. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
4674cd8a4e Bug 1229241 - Redirect EXTRA{_PP}_COMPONENTS to FINAL_TARGET{,_PP}_FILES.components. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
e0564fea40 Bug 1229241 - Support merging HierarchicalStringLists. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
4b881b7905 Bug 1229241 - Reject FINAL_TARGET{,_PP}_FILES along DIST_INSTALL = False. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
d8e01cc61c Bug 1229241 - Allow moz.build special variables to be set, as long as the value is not modified. r=gps
This will allow a new kind of special variable where it is possible to do
  FOO += ['bar']

All the current special variables are either strings (for which __setitem__ would
be called with a different string object), or a read-only dict (which doesn't
allow modifications).
2015-12-01 13:57:52 +09:00
Mike Hommey
6077e146dc Bug 1229233 - Add a (incomplete) end-to-end build test. r=gps
We have many unit tests in the tree for some small parts of the build system
pipeline, but we don't have anything that resembles an end to end test, and we
kind of rely on the resulting Firefox not being broken by our changes.

With the Faster make backend growing, I want to ensure it produces the same
thing as the recursive make backend, at least for the parts it supports.

This adds some kind of test that allows to check that.
2015-12-01 13:57:52 +09:00
Mike Hommey
deaf4c59af Bug 1229233 - Properly skip the top-level directory in the RecursiveMake backend. r=gps
Somehow this never ended up being a problem in practice, but somehow with a
minimalistic test case, it becomes one.
2015-12-01 13:57:52 +09:00
Mike Hommey
9a4b067a41 Bug 1229233 - Skip building XPIDL when there aren't any in the FasterMake backend. r=gps
The test I'm about to add doesn't have XPIDL files, and that currently avoids
the FasterMake backend to run properly. Also, in the future, when the FasterMake
grows the ability to build C++ files, it should be possible to build Spidermonkey
with the FasterMake backend, but it doesn't have XPIDL files either.
2015-12-01 13:57:52 +09:00
Mike Hommey
8114f398da Bug 1229233 - Use SourcePaths for CONFIGURE_SUBST_FILES and CONFIGURE_DEFINE_FILES. r=gps 2015-12-01 13:57:52 +09:00
Mike Hommey
fb0a744f12 Bug 1229226 - Reject RESOURCE_FILES along DIST_SUBDIR or XPI_NAME. r=gps
Gecko only uses resource files in the GRE directory.
2015-12-01 13:57:52 +09:00
Mike Hommey
975c98bf84 Bug 1229226 - Remove preprocessing support for RESOURCE_FILES. r=gps
No resource file is preprocessed in gecko, and no resource file is defined
in comm-central.
2015-12-01 13:57:52 +09:00
Mike Hommey
8991c7de99 Bug 1228467 - Make the preprocessor error out for "no preprocessing directives" instead of warning. r=gps 2015-12-01 08:25:22 +09:00
Mike Hommey
e6640e1ccd Bug 1228444 - Rename DIST_FILES to FINAL_TARGET_PP_FILES. r=gps
This makes it clearer that really it's the same thing as FINAL_TARGET,
with preprocessing.
We still keep DIST_FILES in backend.mk because it's shorter and doesn't
really matter.
2015-12-01 08:25:22 +09:00
Mike Hommey
bfb9659d48 Bug 1228444 - Make DIST_FILES a HierarchicalStringList, like FINAL_TARGET_FILES. r=gps 2015-12-01 08:25:22 +09:00
Mike Hommey
5f18a2a5fe Bug 1228444 - Don't silence "no preprocessor directives found" warnings for DIST_FILES. r=gps
and move files without preprocessor directives to FINAL_TARGET_FILES.
2015-12-01 08:25:22 +09:00
Mike Hommey
77c70061bb Bug 1228444 - Validate that FINAL_TARGET_FILES source files exist. r=gps 2015-12-01 08:25:22 +09:00
Mike Hommey
5bc3501aa1 Bug 1227892 - Add basic tests for IS_COMPONENT/NO_COMPONENTS_MANIFEST. r=gps 2015-12-01 08:25:22 +09:00
Mike Hommey
0f35f34571 Bug 1227892 - Emit a specialized object for chrome.manifest entries. r=gps
This new ChromeManifestEntry object type is generic and can hold any kind of
chrome manifest entry, but we currently only emit them for binary components.

References to sub-directory manifests is left to the backend, for now, until
all manifest entries are emitted by the frontend.
2015-12-01 08:25:22 +09:00
Mike Hommey
544aa093d5 Bug 1227892 - Add a NO_COMPONENTS_MANIFEST moz.build variable. r=gps
The variable is used by Lightning in comm-central and influences
binary-component manifest creation.
2015-12-01 08:25:22 +09:00
Dave Townsend
67b6efe88d Bug 1228628: Move all eslintignore rules to the top-level of the tree. r=mconley 2015-11-27 09:39:59 -08:00
Carsten "Tomcat" Book
d229b39c6e merge mozilla-inbound to mozilla-central a=merge 2015-11-26 16:54:27 +01:00
Nick Alexander
1858db610f Bug 1227600 - Fix |mach bootstrap| bustage on Mac OS X. r=me,gps
DONTBUILD NPOTB on a CLOSED TREE
2015-11-25 11:11:39 -08:00
Mike Hommey
d7d07b12ef Bug 1224452 - Quote passthru variables. r=gps
Ideally, we should properly make and shell quote everything we print out
in makefiles, but that's a can of worms I don't want to open just yet. So
I'll limit myself to just passthru variables.
2015-11-26 08:51:02 +09:00
Mike Hommey
3456476a3e Bug 1224452 - Better handle make variable references from gyp files. r=gps
This further improves the changes from bug 1224460 to e.g. handle variable
references mixed with text, and to avoid adding empty strings to the
resulting flags variables when the expansion leads to an empty string.
2015-11-26 08:50:59 +09:00
Mike Hommey
7f991d690b Bug 1224452 - Add an expand_variables helper function to do simple make-like variable expansion. r=gps 2015-11-26 08:50:54 +09:00
Mike Hommey
7e349babef Bug 1224452 - Use mozbuild.shellutil.split instead of shlex.shlex in mozbuild.compilation.util. r=gps
And then properly quote the strings when printing them out in the compilation
database or the mach compileflags output.
2015-11-26 08:50:44 +09:00
Mike Hommey
ce1968240d Bug 1224452 - Move shell_quote to the shellutil module. r=gps
Also make it only quote when actually necessary.
2015-11-26 08:49:18 +09:00
Mike Hommey
9c615cc34b Bug 1226884 - Keep em:unpack addons unpacked after bug 1216371. r=gps 2015-11-23 22:40:00 +01:00
Mike Hommey
ade5fca422 Bug 1151124 - Add a simplified version of pymake's clinetoargv to mozbuild and use it. r=gps
Pymake's clinetoargv is very specific to pymake's use case, yet has been abused
as a replacement for shlex because shlex doesn't handle things properly for our
use cases.

Using pymake's clinetoargv, however, has shortcomings, and we're better off
importing its code in mozbuild, simplifying it a little, and using that
instead.

Plus, less dependencies on pymake will help kill it for good some day.
2015-11-24 11:29:14 +09:00
Jared Wein
7323e5c89a Bug 1229154 - Launch 'eslint' with UNIX environment since 'eslint' is not a valid Win32 binary. r=gps 2015-12-01 14:29:47 -05:00
Geoff Brown
99d1a07479 Bug 1219807 - Support 'mach run --debug' for Android; r=jmaher 2015-11-19 13:15:34 -07:00
Mike Hommey
590798cde2 Bug 1224460 - Expand make variable references we get out of gyp. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
a393b0fc6a Bug 1216371 - Pack addons that can be packed as XPIs. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
a572e164b4 Bug 1216371 - Distinguish between addons that can be packed and those that cannot in the packager. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
c15f45a0d4 Bug 1216371 - Use the PiecemealFormatter for the OmniJarFormatter. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
b147420c97 Bug 1216371 - Use the PiecemealFormatter for the JarFormatter. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
fa11e28895 Bug 1216371 - Introduce a PiecemealFormatter base package formatter. r=gps
FlatFormatter, JarFormatter and OmniJarFormatter all, in some way, deal
with different pieces of the package being handled differently.

Instead of each of them dealing with their different pieces in some subtly
different way, instead, introduce a new base package formatter class that
will handle it for all of them.

Use this new PiecemealFormatter for the FlatFormatter.
2015-11-19 08:05:51 +09:00
Mike Hommey
35043820ae Bug 1216371 - Add a proxy class to access a subtree of a FileRegistry as an independent FileRegistry. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
f8c97aa911 Bug 1216371 - Don't assume the root directory is a base directory in packager formatters. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
784aa8e307 Bug 1216371 - Add tests for *Formatter.contains(). r=gps
And fix OmniJarFormatter.contains after bug 910660.
2015-11-19 08:05:51 +09:00
Mike Hommey
4c6775a4cb Bug 1216371 - Don't rely on OmniJarFormatter.is_resource for test_omnijar_is_resource. r=gps 2015-11-19 08:05:51 +09:00
Mike Hommey
d3942b2e5a Bug 1216371 - Add package formatter tests emulating mac packaging. r=gps
Only directories containing chrome manifests are given as base to formatters,
but there can still be files given outside the bases, like, on mac builds,
all files in Content/MacOS, or Content/Info.plist, whereas chrome manifests
are under Content/Resources.
2015-11-19 08:05:51 +09:00
Mike Hommey
408650c3f3 Bug 1216371 - Rearrange test_packager_formats.py. r=gps
There is a lot of repetition across its various tests, and we're going to add
some more in a subsequent change, so it is desirable to make it a less
repetitive task.
2015-11-19 08:05:51 +09:00
Chris Manchester
0953a7e528 Bug 1219521 - Add imported python modules in the tree to dependencies of GENERATED_FILES scripts. r=glandium 2015-11-16 16:51:51 -08:00
Mark Hammond
92fa43fe9a Bug 1224689 - Add a 'sync' mozinfo variable and only run test_remotetabmatches.js if it is defined. r=ted 2015-11-15 15:21:00 +01:00
Harshit Bansal
1a2ab7ecb3 Bug 1217039 - Created a function android_ndk_url() in android.py and used it in all other sub-modules to calculate the URL. r=mshal 2015-11-15 14:49:08 +01:00
Chris Manchester
2a6a9f4abe Bug 1224411 - Speed up FileRegistry._partial_paths by memoizing on the basis of directory. r=nalexander
This function was found to be a little slow while profiling due to repeated calls to
mozpath.dirname. This patch speeds up the function replacing dirname with string manipulation
(these paths are already normalized), by caching results on the basis of directory,
and converting from iteration to recursion to increase use of the cache.

This commit speeds up the "install tests" step run as a part of the build and running
tests by ~10% on a fast linux laptop.
2015-11-13 16:14:40 -08:00
Mike Hommey
e1f83df5a7 Bug 1219104 - Disallow multiple jar.mn mentioning the same files for the same build in the FasterMake backend. r=mshal 2015-11-14 08:40:54 +09:00
Mike Shal
84e3dace27 Bug 1223593 - Make depsdir optional in xpidl-process.py; r=glandium 2015-11-10 18:30:46 -05:00
Gregory Szorc
827969c6ab Bug 1223149 - Add basic usage documentation for mach build; r=glandium
Support for displaying docstrings in `mach help` was added relatively
recently. `mach build` was never documented. Let's document it.

There are a gazillion things we could put in the documentation. For now,
mainly focus on targets.
2015-11-10 15:41:08 -08:00
Mike Hommey
7ed700f80d Bug 1222591 - "nsMsgUtils.cpp:52:10: fatal error: 'nsProtocolProxyService.h' file not found". r=gps f=aleth 2015-11-06 17:31:00 +01:00
Chris Manchester
c49a26ce1f Bug 1215238 - Mention the included filepath in pre-processed js sources with #includes. r=glandium 2015-11-06 15:58:30 -08:00
Mike Hommey
405622a83e Bug 1221453 - Use ObjDirPaths for GENERATED_INCLUDES and merge with LOCAL_INCLUDES. r=gps 2015-11-06 09:59:21 +09:00
Mike Hommey
10276f39ee Bug 1221453 - Use SourcePaths for LOCAL_INCLUDES. r=gps 2015-11-06 09:59:21 +09:00
Mike Hommey
88f05aae29 Bug 1219147 - Use addEntriesToListFile in mozbuild.jar.JarMaker.updateManifest. r=mshal
Also make addEntriesToListFile emit files with CR instead of CRLF on Windows.
2015-11-04 11:21:49 +09:00
A-deLuna
82b05b847b Bug 1220480 - Reference proper variable in Arch Linux bootstrapper; r=gps
DONTBUILD (NPOTB)
2015-11-03 11:00:02 -08:00
Chris Manchester
1eb3ea5839 Bug 1218999 - Update mtimes when building a GENERATED_FILES target, even when contents don't change. r=glandium
When a make target is generated with FileAvoidWrite, this can cause targets to
get rebuilt perpetually when a prerequisite is updated, because FileAvoidWrite
will leave the target's mtime older than the prerequisite's when the target's
contents are unchanged. To avoid this issue, GENERATED_FILES is modified to
unconditionally update its target's mtime.
2015-11-03 10:23:04 -08:00
Chris Manchester
111bc7fe80 Bug 1218999 - Back out changeset 5f32b2bcfa43 (bug 1188468) in favor of a more efficient solution. r=glandium
Bug 118468 landed an option for FileAvoidWrite to always write to an output
file, whether or not the contents would be changed. This was to address a
problem caused by not updating mtimes when building GENERATED_FILES, but
undoes the purpose of FileAvoidWrite and isn't really necessary.
This is addressed in a subsequent commit by unconditionally updating
mtimes when processing GENERATED_FILES.
2015-11-03 10:23:04 -08:00
Mike Hommey
093d32dc22 Bug 1217276 - Fix the handling of relativesrcdir for localized chrome data in FasterMake backend. r=mshal 2015-10-31 07:32:47 +09:00
Mike Hommey
76d603eddb Bug 1216901 - Make the FasterMake backend reticulate splines when moz.build or jar.mn files are modified. r=mshal 2015-10-31 07:32:43 +09:00
Mike Hommey
86ab51c1af Bug 1216901 - Always update backend output list files mtime from the base backend class. r=mshal
Instead of having individual backends do it on their own.
2015-10-31 07:32:42 +09:00
Wes Kocher
6eda870e01 Backed out changeset e22433400ec2 (bug 1216901) to hopefully fix winpgo bustage 2015-10-30 10:11:46 -07:00
Wes Kocher
35b7fcf43d Backed out changeset b855984ff056 (bug 1216901) 2015-10-30 10:11:45 -07:00
Wes Kocher
51bf70ed8a Backed out changeset 9475e3ef6a44 (bug 1217276) 2015-10-30 10:11:43 -07:00
Geoff Brown
e82abaa8b7 Bug 1219803 - Support 'mach run' for Android; r=jmaher 2015-10-30 10:57:35 -06:00
Makoto Kato
7cc17a4f18 Bug 1219228 - Generate correct source path of cpu-features.c. r=glandium 2015-10-30 12:23:42 +09:00
Mike Hommey
8a0899d518 Bug 1217276 - Fix the handling of relativesrcdir for localized chrome data in FasterMake backend. r=mshal 2015-10-30 08:19:04 +09:00
Mike Hommey
0c3bd62ba9 Bug 1216901 - Make the FasterMake backend reticulate splines when moz.build or jar.mn files are modified. r=mshal 2015-10-30 08:19:04 +09:00
Mike Hommey
e0d7951362 Bug 1216901 - Always update backend output list files mtime from the base backend class. r=mshal
Instead of having individual backends do it on their own.
2015-10-30 08:19:04 +09:00
Carsten "Tomcat" Book
feb51da6a8 Merge mozilla-central to mozilla-inbound 2015-10-29 12:15:05 +01:00
Richard Newman
a26cfa8435 Bug 1219512 - Bump Android version code computation check. r=nalexander 2015-10-28 18:38:55 -07:00
Carsten "Tomcat" Book
da15097e12 merge mozilla-inbound to mozilla-central a=merge 2015-10-28 10:43:33 +01:00
Nick Alexander
21e9816e85 Bug 1207708 - Part 2: Build against play-services-{basement,base,gcm} if MOZ_ANDROID_GCM. r=sebastian
Since MOZ_NATIVE_DEVICES builds against play-services-{basement,base,cast},
some ad-hoc de-duplication is necessary.
2015-10-27 17:41:49 -07:00
Nathan Froyd
3b64fa8d95 Bug 1218042 - part 2 - make the CompileDB backend follow the backend protocol; r=mshal
Calling CommonBackend.consume_object ensures that we process WebIDL and
IPDL files (and many other things) correctly.  Calling
CommonBackend.consume_finished ensures that the CompileDB backend gets
to see the unified bindings and protocol files that we generate, and add
those files to the compilation database.
2015-10-26 11:53:59 -04:00
Nathan Froyd
5b70be67e6 Bug 1218042 - part 1 - pass an objdir into _build_db_line; r=mshal
The only thing we need the obj for here is getting the objdir.  Future
patches will just have an objdir when calling this function, and not a
proper mozbuild object.  In light of these facts, let's change the
function to accept an objdir only, which will make those future patches
easier.
2015-10-26 11:50:27 -04:00
Michael Ratcliffe
02854fcf71 Bug 1212047 - Improve ESLint logging in case of error r=glandium
Fix *all* return codes
2015-10-23 17:18:45 +01:00
Carsten "Tomcat" Book
2dbe6c23a9 merge mozilla-inbound to mozilla-central a=merge 2015-10-26 10:57:35 +01:00
Nick Alexander
5fb41e1225 Bug 1192064 - Add 'android-x86' job to |mach artifact|. r=jonalmeida 2015-10-23 12:55:16 -07:00
Nathan Froyd
ec49e7f64d Bug 1215526 - part 3 - make preprocessor.preprocessor report all included files; r=glandium
For GENERATED_FILES scripts that want to report dependencies, this
change makes it easy to use |preprocess|, rather than having to
construct and use |Preprocessor| manually.
2015-10-21 10:38:18 -04:00
Nathan Froyd
203a056782 Bug 1215526 - part 2 - write dependencies to file_generate.py's depfile; r=glandium 2015-10-21 10:36:08 -04:00
Nathan Froyd
d93013ebc9 Bug 1215526 - part 1 - pass dependencies file to file_generate.py; r=glandium
In addition to their inputs declared in moz.build files, generated files
may also depend on other files, such as #includes in preprocessed files.
Let's provide a place for file_generate.py to write out those extra
dependencies.
2015-10-21 09:23:09 -04:00
Michael Ratcliffe
a4ccbf9055 Bug 1211223 - Error running eslint setup on Windows r=mh+mozilla, r=pbro 2015-10-23 14:36:24 +01:00
Nick Alexander
2bc88c8e14 Bug 1114718 - Make |mach bootstrap| support 'mobile/android' builds on Arch Linux. r=mcomella 2015-10-19 16:36:00 -07:00
Andrew Halberstadt
0180005548 Bug 1216575 - [mozbuild] Remove if statement that sets bindir to resource dir on osx, r=spohl 2015-10-21 10:04:21 -04:00
Mike Hommey
df2bf35d9e Bug 1212773 - Extend jar maker syntax for jar file location. r=gps
Indicating a jar currently looks like the following in a jar manifest:
  path/to/name.jar:

The `path/to` doesn't contain the implicit "chrome/" directory. This, in
turn, doesn't allow much flexibility to use the jar maker for what is not
necessarily under chrome/.

To use the jar maker to fill some chrome manifest for the default theme
extension, we currently use a hackish path to get to the right location,
and rely on the chrome.manifest file in the parent directory never to be
picked by the package manifest, which is a quite horrible way to do this,
but worked well enough for that specific use case.

With the need to handle system addons at the build system level, it
becomes necessary to come up with something less hackish.

What this change introduces is an additional syntax for the jar manifest,
in the following form:
  [base/path] sub/path/to/name.jar:

Using this syntax, there is no implicit 'chrome' path. The `base/path` is
relative to the current DIST_SUBDIR, and the `sub/path` is relative to that
`base/path`. The distinction can be useful for build system backends.

The assumption that the "root" chrome.manifest is in the parent directory
of the implicit "chrome" directory dies, and the `base/path` is where the
root chrome.manifest is placed.
2015-10-20 07:36:51 +09:00
Mike Hommey
96b01137ad Bug 1212773 - Pass a base directory to jar maker, instead of a chrome directory. r=gps 2015-10-20 07:36:47 +09:00
Andrew Halberstadt
ba14b6cb2a Bug 1216171 - Fix MozbuildObject.bindir to import the correct mozinfo, r=jmaher 2015-10-19 11:15:15 -04:00
Nathan Froyd
e4e2da55c9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Tooru Fujisawa
53a5a94d88 Bug 1208160 - Show information when Xcode requires accepting license agreement; r=gps 2015-10-16 11:17:48 -07:00
Mike Hommey
302d6ecb6c Bug 1211765 - Remove remnants from --with-libxul-sdk. r=bsmedberg
The configure option has explicitly thrown an error for more than a year now,
and it happens that the remaining way to still forcefully use it has been
broken for more than 8 months.
2015-10-14 08:02:34 +09:00
Nick Alexander
4f55b86c08 Bug 1213418 - Part 2: Use Fennec APKs in |mach artifact|; use mozversion to extract build IDs. r=me
DONTBUILD NPOTB

This downloads to a temporary file named uniquely but consistently
based on the URL, and then extracts a build ID using mozversion to use
as a human readable and sortable prefix.  This approach can be re-used
by |mach artifact| based Desktop builds.
2015-10-09 18:32:52 -07:00
Nick Alexander
c3815047b7 Bug 1213418 - Part 1: Use mozregression to download in |mach artifact|. r=me
DONTBUILD NPOTB
2015-10-09 17:47:17 -07:00
Nick Alexander
44e32c2c8a No bug - Message which upstream pushhead is used in |mach artifact|. r=me
DONTBUILD NPOTB
2015-10-09 17:23:46 -07:00
Mike Hommey
68aeaf30b5 Bustage fix for bug 1210687 on a CLOSED TREE. r=me
Looks like I went too fancy removing a part of the jarline regexp before landing.
2015-10-08 17:28:36 +09:00
Mike Hommey
56f097b817 Bug 1210687 - Use install manifests for jar.mn files in FasterMake backend. r=gps 2015-10-08 17:11:23 +09:00
Mike Hommey
2c9f0f2b2f Bug 1210687 - Remove PushbackIter now it's not used anymore. r=gps 2015-10-08 17:11:23 +09:00
Mike Hommey
3fb5792b30 Bug 1210687 - Separate out jar.mn parsing in a separate class. r=gps 2015-10-08 17:11:23 +09:00
Mike Hommey
f2843f8439 Bug 1211957 - Add the repackage step at the end of a faster build on Mac. r=gps
That is necessary until bug 934070 is fixed
2015-10-08 17:11:23 +09:00
Wes Kocher
618bcef407 Backed out changeset 91d4539e00ce (bug 1207245) 2015-10-07 10:19:19 -07:00
Wes Kocher
624dfbe469 Merge fx-team to central, a=merge 2015-10-07 09:58:09 -07:00
Nathan Froyd
141e4d0f43 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-07 16:50:25 -04:00
Carsten "Tomcat" Book
c03f3ce652 merge mozilla-inbound to mozilla-central a=merge 2015-10-06 12:01:35 +02:00
Mike Hommey
c5e63a76f9 Bug 1210642 - Use install manifests for preprocessed files in the FasterMake build backend. r=gps 2015-10-06 11:15:07 +09:00
Mike Hommey
070700d726 Bug 1210642 - Add support for --silence-missing-directive-warnings for preprocessing within install manifests. r=gps 2015-10-06 11:15:06 +09:00
Mike Hommey
5c9fa1461a Bug 1210642 - Allow to pass defines overrides when processing install manifests. r=gps 2015-10-06 11:15:06 +09:00
Mike Hommey
af0645ef97 Bug 1210329 - Remove support for line endings munging in the preprocessor. r=gps
It was added back in
5147d5c69f
for unclear reasons (and the lack of bug number doesn't help), and hasn't been
used, as far as I can see in the gecko-dev history, other than in bug 206029,
which is the only use currently in the tree.

Bug 206029 was working around the Flash player installer modifying Firefox's
prefs file and not dealing with it properly or something depending on the line
endings. 11 years later, all prefs files except channel-prefs.js are in
omni.ja, so obviously, bug 206029 doesn't actually apply anymore.

So, let's simplify it all and get rid of this.
2015-10-06 11:15:04 +09:00
Sebastian Kaspari
f92c5d923f Bug 1210755 - mozboot/android: Install non-preview version of platform-tools. r=trivial 2015-10-06 16:10:01 +02:00
Sebastian Kaspari
746a57004f Bug 1210755 - Mach build: Compile with SDK version 23 and use build tools 23.0.1. r=nalexander 2015-10-05 15:01:23 +02:00
Carsten "Tomcat" Book
cbff0f93a2 merge mozilla-inbound to mozilla-central a=merge 2015-10-01 12:39:25 +02:00
Gregory Szorc
f33f67b7f7 Bug 1208320 - Decrease compression level of test zip archives; r=glandium
Compressing C++ unit tests is a long pole when writing test archives.
Experimenting with various levels of compression revealed that
compression level 9 was providing minimal space savings for
significantly longer archiving times and greater CPU usage.

Results of our experimentation of `make -sj8 package-tests` on OS X
with various levels of compression are below. Note: these numbers were
accidentally obtained without JS tests being archived. This skews the
results a little but doesn't impact the analysis below.

ARCHIVE        SIZE       WALL   CPU

(L=9)
cppunittest  76,806,629  30.6s
mochitest    61,276,928   9.4s
reftest      31,204,396  11.0s
ALL         228,146,761  31.2s  75.9s

(L=8)
cppunittest  76,851,593  24.1s
mochitest    61,279,322   8.9s
reftest      31,207,867  10.4s
ALL         228,228,096  24.9s  64.7s

(L=7)
cppunittest  77,102,292  14.3s
mochitest    61,305,147   8.2s
reftest      31,260,359   9.4s
ALL         228,717,803  15.0s  49.1s

(L=6)
cppunittest  77,321,408  11.5s
mochitest    61,336,539   8.2s
reftest      31,303,604   9.2s
ALL         229,123,307  12.2s  44.7s

(L=5)
cppunittest  78,226,404   8.2s
mochitest    61,483,804   7.6s
reftest      31,509,349   8.8s
ALL         230,725,600   9.6s  39.7s

(L=4)
cppunittest  79,733,669   6.3s
mochitest    61,825,519   7.6s
reftest      31,924,171   8.4s
ALL         233,669,991   9.0s  36.4s

(L=3)
cppunittest  82,380,731   5.8s
mochitest    62,554,431   7.1s
reftest      32,696,415   8.1s
ALL         239,180,168   8.9s  34.6s

Levels lower than 3 resulted in larger archives with no decreae in
wall time and marginal decrease in CPU time.

As we can see, lowering the compression level reduces archiving time by
>3x while only increasing total archive size by ~2.5 MB or ~1% for
compression level 5.

Total time hits a plateau around levels 4 and 5. After that, file size
increases faster for little decrease in wall time. I suspect that we're
hitting Python limits from having to process thousands of files: there's
only so fast Python can do I/O and make function calls.

I think choosing 4 or 5 for the new compression level are acceptable.
I went with 5 because the wall time savings from 5 to 4 are marginal and
the archive size does start to increase a bit faster at 4. That being
said, 4 does consume 10% less CPU. I could easily just 4 as well. 5 is
more conservative. We can always change to 4 after seeing results in the
wild.

The end result of this change is `make package-tests` is much faster:

Before:  228,146,761 bytes;  31.2s wall;  75.9s CPU
After:   230,725,600 bytes;  11.4s wall;  45.0s CPU
Delta:    +2,578,839 bytes; -19.8s wall; -30.9s CPU

When you take the whole series into consideration:

Before:  44.2s wall; 84.6s CPU
After:   11.4s wall; 45.0s CPU

Lowering CPU is impressive considering we switched from the C `zip`
implementation to Python!

Keep in mind we were at ~78s wall before e87b74b3db43 introduced
concurrent archive generation!

And we still haven't eliminated the staging of JS tests, which are
several thousand files and a few dozen MB!
2015-09-30 11:33:04 -07:00