Граф коммитов

1397 Коммитов

Автор SHA1 Сообщение Дата
Gregory Szorc 2d3964ecf9 Bug 1176620 - Eliminate MethodHandler; r=ahal
This type is now redundant with our new rich type for capturing all mach
command metadata. Eliminate it and using _MachCommand instead.

--HG--
extra : commitid : 7pXhf6V7F8m
extra : rebase_source : 343615096f23d3acf23f7487c7b8c7137c85337e
2015-06-21 13:17:51 -07:00
Gregory Szorc 89a96642e2 Bug 1176620 - Pass fewer arguments into MethodHandler; r=ahal
Simplify construction of mach's MethodHandler instances by by passing in
our new rich type that holds all command metadata.

While we are here, kill the docstring argument, as it can be computed
easily inside MethodHandler.__init__.

--HG--
extra : commitid : I5PRlYDVXVq
extra : rebase_source : ebf07116357036ddfec06fd32fb161fefff628e6
2015-06-21 13:07:33 -07:00
Gregory Szorc 3e834385c6 Bug 1176620 - Refactor how mach command metadata is stored; r=ahal
Up to this point, mach command metadata has been stored in tuples.
Initially, things weren't so bad. But they have evolved into tuples with
many elements. Adding new attributes is cumbersome. Let's restructure
the code to capture metadata in a dedicated class.

Before, there existed a separate attribute on the @Command or
@SubCommand decorated method for each mach decorator: @Command,
@CommandArgument, @CommandArgumentGroup. With the magic of __ior__,
we can now capture all metadata on a single type. This simplies
processing, as we now only look at a single attribute on methods:
_mach_command.

Before, we used separate attributes to distinguish between mach commands
and mach sub-commands. Now that we have a type that can hold all data,
we combine things into the _mach_command attribute and look for the
presence of the "subcommand" attribute on this type to identify
sub-commands.

--HG--
extra : commitid : EtBwUmS5TV2
extra : rebase_source : 4ef5f95a532693672c6c4b33fa1c22adb76d105e
2015-06-21 12:59:29 -07:00
Gregory Szorc 95643136a3 Bug 1176620 - Use absolute_import in mach; r=ahal
To help ensure Python 3 compatibility.

--HG--
extra : commitid : 1eCMr8OKGRa
extra : rebase_source : 49a6037ae6a25a5d3e30b93b634f3b4cc1b55a4e
2015-06-21 11:56:05 -07:00
Birunthan Mohanathas 0a800b87f2 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 df52729835 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.

--HG--
extra : commitid : F55RzhDCVmR
extra : rebase_source : 1fe1a03f8d592c60d2ed8d760fd62c7bc60421a5
2015-06-12 09:44:14 -07:00
Gregory Szorc f15e40e75d 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.

--HG--
extra : commitid : AfiwohniLPq
extra : rebase_source : 70786c7bd9e37c9acc9b38f54c956fec424cfcf5
extra : amend_source : e4e3752dc97b934456b973736ef55633366c8ee6
2015-06-12 09:37:54 -07:00
Wes Kocher 2aa142fe5e Merge inbound to central, a=merge 2015-06-11 17:02:47 -07:00
Gregory Szorc cb10ca03ae Bug 1168466 - Bump minimum Mercurial version in bootstrapper; r=me
This should have been done in 4c757e339f81.

DONTBUILD (NPOTB)

--HG--
extra : commitid : 41TCyM9iqVQ
extra : rebase_source : 8defc6b23d507e1580db77869ff2c2e99ee5db5a
extra : amend_source : 5f330ea7c2775675fcc8051e5c46d2439c4e5823
2015-06-10 15:38:46 -07:00
Timur Timirkhanov 507e72a004 Bug 1169089 - Detect CentOS 7 in bootstrapper; r=gps
CentOS has apparently changed its disto name. Detect the new version.

DONTBUILD (NPOTB)

--HG--
extra : commitid : JrYp4WJ5Fs3
extra : amend_source : c2ac16f7006c2e44450de54edb732fa722f150d0
2015-06-10 11:27:15 -07:00
Benjamin Smedberg 89ca26a1e4 Bug 1168861 - Make mach bootstrap install GConf2-devel on Fedora, r=glandium
--HG--
extra : rebase_source : 306ede940567b5c7922d9248651c8091677cc5b8
extra : histedit_source : 0d1bff410be6fcddfd74c85b9d4313d15c82a7cf
2015-05-27 11:01:22 -04:00
Gregory Szorc 013f437636 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.

--HG--
extra : commitid : 8CzDFt3lQmx
extra : rebase_source : 1540ad20d795086926b316612062e2a1f10c4958
2015-06-09 13:49:45 -07:00
Gregory Szorc d5d6c72dd3 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.

--HG--
extra : commitid : 7143XT9ENqb
extra : rebase_source : d8c0c98d536d07db76653b648fd4b7d74d8f43ae
2015-06-09 13:43:22 -07:00
Gregory Szorc ba5d71304d 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.

--HG--
extra : commitid : 2JmzOBldBLy
extra : rebase_source : a8af6ce88dd9e2b98f131c92b45c3ece852e13d2
2015-06-08 09:33:46 -07:00
Gregory Szorc 4f13520461 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.

--HG--
extra : commitid : BkwaQOW9MiR
extra : rebase_source : 915d6015317ccc79c228a76eed861d9f43e2fd17
2015-06-09 13:39:01 -07:00
Gregory Szorc 8ce366a5f7 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.

--HG--
extra : commitid : 1WDcrSU3SQD
extra : rebase_source : a23aa5a4063c6f7080ee00b6f0fe0ee532da3ce7
2015-06-09 18:16:35 -07:00
Gregory Szorc 4bee702035 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.

--HG--
extra : commitid : 82qw76XmpjC
extra : rebase_source : 422b16c5a3b1577f080097925aeaeb560aa3e798
2015-06-02 09:37:45 -07:00
Gregory Szorc ab11dfb209 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.

--HG--
extra : commitid : K9It2ZJ3Rbo
extra : rebase_source : a56f8f70aa1902d26373a7196eae2847cce653d3
2015-06-04 11:24:03 -07:00
Mike Hommey 0a4831d945 Bug 1172800 - Create actual functions to execute moz.build templates. r=gps
The current mode of execution of templates doesn't allow them to more advanced
control flow, like returning early, returning or yielding values, because that
mode of execution is equivalent to running the code at the top level of a .py
file.

Making the templates executed through a function call, although trickier,
allows those control flows, which will be useful for template as context
managers.
2015-06-10 09:33:22 +09:00
Mike Hommey e7ceb2bd70 Bug 1172800 - Avoid using inspect.getsourcelines() and inspect.getfile(). r=gps
inspect.getsourcelines() and inspect.getfile() involve I/O out of our control.
Our use of those functions, however, doesn't require all their smarts. In fact,
we only use them on function objects, for which we can just do the work
ourselves without involving inspect functions that trigger I/O.
2015-06-10 09:33:21 +09:00
Mike Hommey 17363f4d4e Bug 1172800 - Move moz.build template handling in a separate class. r=gps
This will make subsequent refactorings a bit more intelligible.
2015-06-10 09:33:20 +09:00
Mike Hommey 0d786e2057 Bug 1172800 - Fixup after bug 991983. r=gps 2015-06-10 09:33:19 +09:00
Mike Hommey ad90bd664a Bug 985857 - Automatically log mach output and add a command to display it. r=gps 2015-06-10 09:33:19 +09:00
Gregory Szorc 67e6a15a08 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.

--HG--
extra : commitid : Hx6ZkHDxbCK
extra : rebase_source : 01ced5a044442e370a45cd3fb245ac6283316925
extra : amend_source : fceb771e0e1ffa4e6f3f1b7c22eae6e25cf82034
2015-06-11 08:32:02 -07:00
Jonathan Griffin eaaad653b6 Bug 1170632 - Fix platform_guess for osx; add pgo runtimes for mbc, r=ahal 2015-06-05 16:29:18 -07:00
Wes Kocher 079a117eae Merge m-c to fx-team, a=merge 2015-06-05 16:05:33 -07:00
Gijs Kruitbosch 015c8609b5 Bug 1150417 - use theme manifest for overrides, r=glandium,dao
--HG--
extra : commitid : 7Ip6kOB2BdY
extra : histedit_source : ada1cc46a63d0b7b2b26cd55f6085bd65be5d70d
2015-06-05 12:48:34 +01:00
Michael Comella 627fb4620a Bug 1165422 - Bump mach bootstrap versions for SDK 22. r?nalexander
--HG--
extra : commitid : BNLZwuY4k7V
extra : rebase_source : d36b0269bb69febd2201ef9d8a9f928e4bddb7ec
2015-06-04 10:53:24 -07:00
Nathan Froyd fc6a141ee0 Bug 1170691 - part 1 - add the generating script's directory to sys.path in file_generate.py; r=glandium
The old way of writing scripts for generated files would invoke the script thusly:

    python script.py arg1...

Invoking the script this way means that the script's directory is
automatically added to sys.path, and importing modules from that
directory is easy.  Let's make it equally easy in the new world for
GENERATED_FILES, too.
2015-06-02 16:00:48 -04:00
Axel Hecht fc69cd94d8 Bug 1165906 - Add docs for l10n to the tree. r=gps
Document the role of l10n.ini, filter.py, file paths and checks.

Also add a glossary for the jargon used in the doc.

--HG--
extra : rebase_source : ec71f9b7123ba76370d34d2349b2f078f14dd1de
2015-06-01 17:13:44 +02:00
James Graham d27ca37fce Bug 1169410 Add support for web-platform-tests to |mach test| r=gps
--HG--
extra : rebase_source : 9a1fb715e0844a61c47a1de53f8a4a54ff2e05f0
extra : amend_source : 8fb1e54b76ae543fa2b01002c2d300334dc051be
2015-05-28 20:27:23 +01:00
Mike Hommey 79ea9f2368 Bug 1170431 part 0 - Use the *Path classes for GENERATED_FILES scripts and inputs. r=gps 2015-06-03 07:10:12 +09:00
Andrew Halberstadt 7aa80fb529 Bug 1164597 - Consolidate all mochitest mach commands into single |mach mochitest|, r=chmanchester
--HG--
extra : rebase_source : 0a0d8a454df10ae9df9678c98e11b5eaf8249f51
2015-05-05 16:41:59 -04:00
David Keeler f23dffbae1 bug 1166976 - add Python-RSA python library r=ted,gerv 2015-05-20 16:34:03 -07:00
David Keeler 932ce8516b bug 1166976 - add pyasn1-modules python library r=ted,gerv 2015-05-20 16:33:23 -07:00
Mike Hommey 5b9df4e5b5 Bug 991983 - Add a deprecation hint for GENERATED_SOURCES. r=gps 2015-05-28 07:39:05 +09:00
Mike Hommey 9b83baa130 Bug 991983 - Make TEST_HARNESS_FILES use the *Path classes instead of a separate set of methods to resolve paths. r=gps 2015-05-28 07:34:16 +09:00
Mike Hommey 806e0220a2 Bug 991983 - Use objdir-relative SOURCES instead of GENERATED_SOURCES. r=gps 2015-05-28 07:34:16 +09:00
Mike Hommey ea7750bcb1 Bug 991983 - Define SOURCES as SourcePath. r=gps 2015-05-28 07:34:15 +09:00
Mike Hommey f8b674d9a9 Bug 991983 - Refactor SourcePath handling for moz.build, add new classes and extensive tests. r=gps
Add generic support for different forms of paths in moz.build:
  '/topsrcdir/relative/paths'
  'srcdir/relative/paths'
  '!/topobjdir/relative/paths'
  '!objdir/relative/paths'

This drops the use of UserString for performance reasons, which required
going around with a meta class.
2015-05-28 07:34:14 +09:00
Mike Hommey 138454bcb9 Bug 991983 - Remove commented code in gyp_reader.py. r=gps
This code has been commented since it landed, and enabling it requires
adding the proper conditionals around all non_unified_sources in gyp
configurations, which is a daunting task. OTOH, the commented code is
already outdated (it would need updates to work) and the related code
that is not commented gets in the way of upcoming changes, so remove
it.
2015-05-28 07:34:14 +09:00
Mike Hommey fc325a2d7e Bug 991983 - Don't pass template paths to contexts. r=gps
When doing a template call, what's relevant for relative paths is the source
path of the caller moz.build, not where the template is defined.
2015-05-28 07:34:13 +09:00
Mike Hommey 65120e7e62 Bug 991983 - Add a ContextDerivedTypedListWithItems type. r=gps 2015-05-28 07:34:12 +09:00
Mike Hommey bc23a0ddc5 Bug 991983 - Emit absolute paths for other sources. r=gps 2015-05-28 07:34:11 +09:00
Mike Hommey 188ce081ec Bug 991983 - Emit absolute paths for UnifiedSources. r=gps
This helps upcoming changes, and relieves backends from path resolution.
This has the side effect of chaning the order of some unified sources,
which consequently breaks nsTextFormatter because it declares snprintf
methods after nsStringAPI #defines it.
2015-05-28 07:34:11 +09:00
Mike Hommey fc645ba14f Bug 991983 - Set GARBAGE for GeneratedSources in the recursivemake backend. r=gps
GARBAGE is an implementation detail of the recursivemake backend, and
doesn't need to spill in what the emitter emits.
2015-05-28 07:34:10 +09:00
Mike Hommey 2818f32729 Bug 1168231 - Normalize file mode in jars. r=gps 2015-05-27 11:33:25 +09:00
Kartikaya Gupta 077ad1ddfb Bug 1117958 - Allow any debugging options to the run or gtest mach subcommands to automatically enable debugging. r=gps 2015-05-25 15:32:09 -04:00
Mike Hommey 4a4cc01c62 Bug 1166538 - Make it more straightforward, path-wise, to change $(ZIP) uses to the zip py_action. r=gps 2015-05-21 15:17:01 +09:00
Mike Hommey aa8f7a51f7 Bug 1166538 - Make dozip.py a py_action. r=gps
--HG--
rename : toolkit/mozapps/installer/dozip.py => python/mozbuild/mozbuild/action/zip.py
2015-05-21 15:17:00 +09:00