Commit Graph

91 Commits

Author SHA1 Message Date
Ted Mielczarek
601251747c bug 1190522 - Rewrite pkg-dmg as a Python script. r=gps 2015-08-03 15:40:04 -04: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
Gregory Szorc
e5bf4a021d Bug 1176642 - Use absolute_import in mozpack; r=glandium 2015-06-25 12:13:55 -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
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
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
Mike Hommey
91f38690b4 Bug 1168231 - Normalize file mode in jars. r=gps 2015-05-27 11:33:25 +09:00
Nick Alexander
ee1877836e Bug 1163077 - Never elfhack if --disable-compile-environment is set. r=glandium
A host elfhack binary is only built when there is a compile environment.
2015-05-08 11:40:06 -07:00
Philipp Kewisch
6738c8b403 Bug 1153790 - mac unification doesn't work with packaged addons. r=glandium 2015-04-27 00:46:20 +02:00
Mike Hommey
7e054b29dc Bug 1147207 - Use SimplePackager code to find manifest entries and base directories during l10n repack. r=gps
This avoids duplicating the logic from SimplePackager to find base
directories, and fixes some cases where the l10n repack code wouldn't
find them properly.
2015-04-01 13:52:07 +09:00
Mike Hommey
b8be189c18 Backout changeset 685aa4dfe753 (bug 1147207) for build bustage 2015-03-31 13:18:39 +09:00
Mike Hommey
d73b525ade Bug 1147207 - Allow to give extra l10n directories to l10n-repack.py. r=gps
This allows to use separate l10n staging directories for e.g. addons.
2015-03-31 12:32:53 +09:00
Mike Hommey
33e0d61e5f Bug 1147207 - Improve SimplePackager manifest consistency check. r=gps
Bug 910660 added a consistency check that rejects cases where a manifest
inside a directory detected as being the base of an addon is included from
outside the addon. Unfortunately, this triggered false positives when
a manifest is included from within the addon, but just happens to be at
the top-level of that addon.
2015-03-31 12:32:52 +09:00
Mike Hommey
c5c095a07d Bug 1147207 - Use SimplePackager code to find manifest entries and base directories during l10n repack. r=gps
This avoids duplicating the logic from SimplePackager to find base
directories, and fixes some cases where the l10n repack code wouldn't
find them properly.
2015-03-31 12:32:52 +09:00
Mike Hommey
6ad063c793 Bug 1147207 - Add a ComposedFinder class that acts like a FileFinder proxy over multiple FileFinders. r=gps 2015-03-31 12:32:51 +09:00
Mike Hommey
cf36c9a4c6 Bug 1147760 - In mozpack.files.FileCopier.copy, remove files after copying. r=gps
Some file types, such as XPTFile, read their associated data during the
copy. In the case of XPTFiles, several original files are linked together
in one destination file. When a FileCopier is used in-place, those
original files are removed before XPTFile.copy is invoked, so XPTFile.copy
fails.

Generally speaking, there are many other reasons why FileCopier can fail
in-place, but the only active use of this mode is l10n repack code, which
actually doesn't do much of the dangerous uses. However, it can end up
linking XPTFiles for some reason, which fails for the reasons given above.
2015-03-31 12:32:51 +09:00
Mike Hommey
71c139e842 Bug 1147723 - Avoid non TEST_PASS/TEST_UNEXPECTED_FAIL output from test_files.py. r=gps
Instead, capture the output and check it's being printed.
2015-03-31 12:32:50 +09:00
Mike Hommey
57fbadfa4f Bug 1147283 - Replace mozpack.path with mozpath. r=mshal
Back when mozpack.path was added, it was used as:

  import mozpack.path
  mozpack.path.func()

Nowadays, the common idiom is:

  import mozpack.path as mozpath
  mozpath.func()

because it's shorter.

$ git grep mozpath\\. | wc -l
423
$ git grep mozpack.path\\. | wc -l
123

This change was done with:
$ git grep -l mozpack.path\\. | xargs sed -i 's/mozpack\.path\./mozpath./g'
$ git grep -l 'import mozpack.path$' | xargs sed -i 's/import mozpack.path$/\0 as mozpath/'
$ (pat='import mozpack.path as mozpath'; git grep -l "$pat" | xargs sed -i "1,/$pat/b;/$pat/d")
2015-03-27 08:13:16 +09:00
Mike Hommey
31dd783e72 Bug 1147217 - Improve l10n repack error message when locale doesn't contain necessary files. r=mshal 2015-03-27 08:13:04 +09:00
Mike Hommey
f4afced784 Bug 910660 - Make the SimplePackager emit a separate base for addons. r=gps
Addons are detected by the presence of an install.rdf file in their base.
2015-03-24 09:10:33 +09:00
Mike Hommey
3bdc564357 Bug 910660 - Make package formatters handle addons. r=gps
Addons are always formatted with jars for omnijar and jar packaging, and
flat for flat packaging.
2015-03-24 09:10:33 +09:00
Mike Hommey
c183697958 Bug 910660 - Add a test for the unpacker code. r=gps 2015-03-24 09:10:32 +09:00
Mike Hommey
69dd99b743 Bug 910660 - Refactor test_packager_formats.py so that it's easier to follow. r=gps 2015-03-24 09:10:31 +09:00
Gregory Szorc
b04dd4661b Bug 1134800 - Properly cache file matching patterns; r=glandium
The regular expression cache for mozpack.path.match was keyed off the
original pattern. However, that variable was mutated as part of the
function and the mutated result was subsequently stored as the cache
key. This effectively resulted in a 0% cache hit rate.

On some tests being written for bug 1132111 which involve a full
filesystem traversal for moz.build files and subsequent execution of
those files, the following timings are indicative of the impact of this
patch.

Before:
real 16.082s
user 14.760s
sys   1.318s

After:
real 6.345s
user 5.085s
sys  1.257s
2015-02-24 10:19:41 -08:00
Nathan Froyd
8e2147a70e Bug 1109409 - improve mozpack.BaseFile.copy() performance on Windows; r=gps
mopack.BaseFile.copy() performs a generic read/write file copy.  Windows
has an explicit CopyFile() call that tests have shown to be
significantly faster.  Let's use that instead via the magic of ctypes.
2014-12-12 11:59:24 -05:00
Nick Alexander
bdfaf9c1a6 Bug 1105052 - Update in-tree jsmin to commit a878bf0. rs=gps
This is a straight copy from

a878bf0ba0

paired with a tiny change to use the new quote_chars option.

--HG--
extra : rebase_source : 75d604ffafc7062c663bca4242af35546d2c1e3a
2014-11-25 16:02:08 -08:00
Bill McCloskey
c8f8625356 Bug 930243 - Add a processType flag to chrome manifest directives (r=froydnj) 2014-10-07 11:46:24 -07:00
Gregory Szorc
9f367ab3d4 Bug 1061684 - Normalize path separators in JAR paths; r=mshal
The forward slash appears to be the standard path separator in zip/JAR
files. Accept back slashes when adding paths to a JAR.

--HG--
extra : rebase_source : bd94eab36b347006e65952d99b53dd397e2ca758
extra : amend_source : 2cefd887d8bb5d989fafb398a3464429ac376e2e
2014-09-03 10:42:34 -07:00
Gregory Szorc
2a4aace69a Bug 1058036 - Ensure dependency isn't lost when ORing InstallManifest; r=glandium
The install manifest processor starts with an empty InstallManifest and
uses |= to "concatenate" instances. It became pretty obvious when
developing some patches that add more preprocessed files to install
manifests that the source install manifest dependency was getting
lost during the |= operation. This patch fixes it.

The solution is not ideal performance wise. But slightly worse
performance (only after config.status, however) is better than
clobbers.

A test has been added to ensure this doesn't regress.

--HG--
extra : rebase_source : 848aebbbc935ce2bca2d3fcc85d1df534e734e0d
2014-08-24 20:19:55 -04:00
Ted Mielczarek
5f1a51f87a bug 462159 - Use install manifests to track header files from dist/include back to srcdir in symbolstore.py. r=gps 2014-07-18 16:33:34 -04:00
Nathan Froyd
e87a5365d1 Bug 996061 - part 0 - make tests use [scriptable] interfaces; r=ted
Smart xpt linking will keep around [scriptable] interfaces and anything
those interfaces depend on.  Modify the tests that deal with xpt linking
so they use [scriptable] interfaces, ensuring that the tests continue to
work in the face of smarter linkers.
2014-05-19 12:35:21 -04:00
Gregory Szorc
2c5427b5d0 Bug 903149 - Part 3: Support for minifying packaged JavaScript; r=glandium 2013-09-11 19:54:19 -07:00
Nick Alexander
ccbfc3c856 Bug 971525 - Optionally make FileCopier only delete symlinked directories it needs to replace. r=gps 2014-02-13 22:19:48 -08:00
Nick Alexander
f1b0cc2217 Bug 971272 - Post: Add informational test showing unnecessary directories may be created. r=gps 2014-02-13 09:09:09 -08:00
Nick Alexander
d022342df3 Bug 971272 - Part 3: Use required_directories in FileCopier.copy. r=gps 2014-02-13 09:09:08 -08:00
Nick Alexander
f52b37797f Bug 971272 - Part 2: Expose FileRegistry.required_directories. r=gps 2014-02-13 09:09:08 -08:00
Nick Alexander
b3c684284a Bug 971272 - Part 1: Guard against adding {foo, foo/bar} to FileRegistry. r=gps
This already raised if the order was [foo, foo/bar].  But it didn't
prevent adding [foo/bar, foo].

The only sub-classes of FileRegistry are FileCopier and Jarrer.

FileCopier.copy threw in the previously unhandled case: the order of
creation is the same as the order of addition, so that foo is created
after foo/bar.

A zip file index can contain both foo and foo/bar.  I don't think we
should rely on this property in our use of Jarrer, but if we already do,
I guess we need to move these guards into FileCopier.  Let's hope that's
not the case!

(For the record: On my Mac OS X system, unzipping such a zip file
prompts the user for what to do, depending on the order of the entries
in the zip index.)
2014-02-13 09:09:08 -08:00
Nick Alexander
9b3eecf85d Bug 971265 - Add --no-remove-empty-directories to process_install_manifest.py. r=gps 2014-02-13 09:09:08 -08:00
Ted Mielczarek
188466ab56 Bug 971802 - Make mozpack capable of storing unix file permissions in jars. r=glandium 2014-02-13 07:47:00 -05:00
Ehsan Akhgari
82ebdc883f Bug 969757 - Remove the dead code in our tree which pretends to support OS/2; r=roc,mcmanus,gps,jorendorf,bsmedberg sr=bsmedberg 2014-02-10 17:57:01 -05:00
Mike Hommey
459d8c3649 bug 903620 - Make ExecutableFile support being put directly into a jar. r=gps 2014-02-06 13:22:35 -05:00
Brian O'Keefe
d3b4ea8269 Bug 935987 - Part 3: Add preprocessed file support to install manifests; r=gps
--HG--
extra : rebase_source : a6897be53064bd171bd9280735c513c6ff539a4f
2013-12-14 09:46:48 -05:00
Brian O'Keefe
5a35523e65 Bug 935987 - Part 2: Add preprocessed files to mozpack.files; r=gps
--HG--
extra : rebase_source : fe32f92b22aecc82ea1b6d95a5ee43e274a9f8be
2013-11-06 14:46:05 -05:00
Gregory Szorc
6ad74fa93f Bug 941245 - Allow FileFinder to ignore patterns; r=glandium
--HG--
extra : rebase_source : 0dd3f11dcf97abc57962e820ede241b82d715624
extra : amend_source : ef75cc5f516ecba0062002c7432e7b257bff5209
2013-11-20 13:12:21 -08:00
Mike Hommey
fbe3253bb8 Bug 948275 - Use mozpack.path instead of os.path in mozbuild.frontend and mozbuild.backend modules. r=gps 2013-12-11 15:20:31 +09:00
Gregory Szorc
8a8d29bfb9 Bug 934739 - Part 2: Add pattern matches to install manifests; r=glandium
This patch adds pattern matching entries to install manifests. We store
metadata necessary to construct a pattern match at a later point in
time. When we convert the install manifest to a file registry, we
resolve the patterns using FileFinder.

The build config logic has been updated to store support-files values as
pattern entries. This should resolve the clobber needed issue and make
the local development experience more pleasant as well.

--HG--
extra : amend_source : 3fe659f7ad6930ef54316b5babac6b83bee240af
2013-12-09 19:02:35 +09:00
Ryan VanderMeulen
0fe6654a46 Backed out changesets 572624d76edf and 17a5f2e554e8 (bug 934739) for causing bug 947879. 2013-12-09 17:24:14 -05:00