Closed
Bug 1232421
Opened 9 years ago
Closed 9 years ago
manifest.py parses every # as a comment, while preprocessor.py will only match leading # lines as commented-out lines
Categories
(Firefox Build System :: General, defect)
Firefox Build System
General
Tracking
(firefox45 fixed, firefox46 fixed)
RESOLVED
FIXED
mozilla46
People
(Reporter: Gijs, Assigned: Gijs)
References
Details
Attachments
(2 files)
40 bytes,
text/x-review-board-request
|
glandium
:
review+
|
Details |
2.38 KB,
patch
|
Sylvestre
:
approval-mozilla-aurora+
|
Details | Diff | Splinter Review |
STR: 1. add the following line to a jar.mn file: % override chrome://browser/content/foo.svg#yoink chrome://browser/content/foo.svg#boink 2. run ./mach build It works! (expected) 3. run ./mach package It breaks! (not expected) Specifically: 10:59:43 INFO - c:/builds/moz2_slave/try-w32-0000000000000000000000/build/src/browser/installer/package-manifest.in ../../dist ../../dist/firefox \ 10:59:43 INFO - Traceback (most recent call last): 10:59:43 INFO - File "c:/builds/moz2_slave/try-w32-0000000000000000000000/build/src/toolkit/mozapps/installer/packager.py", line 406, in <module> 10:59:43 INFO - main() 10:59:43 INFO - File "c:/builds/moz2_slave/try-w32-0000000000000000000000/build/src/toolkit/mozapps/installer/packager.py", line 348, in main 10:59:43 INFO - preprocess_manifest(sink, args.manifest, defines) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 202, in preprocess_manifest 10:59:43 INFO - preprocess(manifest, PackageManifestParser(sink), defines) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 193, in preprocess 10:59:43 INFO - pp.do_include(input) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozbuild\preprocessor.py", line 780, in do_include 10:59:43 INFO - self.handleLine(l) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozbuild\preprocessor.py", line 558, in handleLine 10:59:43 INFO - self.write(aLine) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozbuild\preprocessor.py", line 438, in write 10:59:43 INFO - self.out.write(filteredLine) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 181, in write 10:59:43 INFO - self._parser.handle_line(str) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 166, in handle_line 10:59:43 INFO - self._sink.add(self._component, str) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 384, in add 10:59:43 INFO - self.packager.add(dest, f) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 262, in add 10:59:43 INFO - self._add_manifest_file(path, file) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\packager\__init__.py", line 285, in _add_manifest_file 10:59:43 INFO - for e in parse_manifest(base, path, file.open()): 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\chrome\manifest.py", line 358, in parse_manifest 10:59:43 INFO - e = parse_manifest_line(base, line) 10:59:43 INFO - File "c:\builds\moz2_slave\try-w32-0000000000000000000000\build\src\python\mozbuild\mozpack\chrome\manifest.py", line 342, in parse_manifest_line 10:59:43 INFO - return MANIFESTS_TYPES[cmd[0]](base, *cmd[1:]) 10:59:43 INFO - TypeError: __init__() takes at least 4 arguments (3 given) I believe that the comment regexp: https://dxr.mozilla.org/mozilla-central/source/python/mozbuild/mozpack/chrome/manifest.py#328 is too liberal and should only match line-leading #, the same way that the preprocessor does.
Assignee | ||
Comment 1•9 years ago
|
||
Bug 1232421 - force matching the start of the line for comments, r?gps
Attachment #8698153 -
Flags: review?(gps)
Assignee | ||
Comment 2•9 years ago
|
||
I'm still allowing leading whitespace on the line because of this jar.mn file: https://dxr.mozilla.org/mozilla-central/source/browser/extensions/loop/jar.mn#33 (where I don't really understand how that file isn't breaking things right now, unless the answer is https://developer.mozilla.org/en/docs/Chrome_Registration#comments )
Comment 3•9 years ago
|
||
https://reviewboard.mozilla.org/r/27845/#review25009 ::: python/mozbuild/mozpack/chrome/manifest.py:328 (Diff revision 1) > -MANIFEST_RE = re.compile(r'\s*#.*$') > +MANIFEST_RE = re.compile(r'^\s*#.*$') It seems to me we should still consider non-line-leading # if it's preceded by a whitespace.
Comment 4•9 years ago
|
||
(In reply to :Gijs Kruitbosch from comment #0) > % override chrome://browser/content/foo.svg#yoink chrome://browser/content/foo.svg#boink Wow, is this actually supported?
Updated•9 years ago
|
Attachment #8698153 -
Flags: review?(gps)
Assignee | ||
Comment 5•9 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #3) > https://reviewboard.mozilla.org/r/27845/#review25009 > > ::: python/mozbuild/mozpack/chrome/manifest.py:328 > (Diff revision 1) > > -MANIFEST_RE = re.compile(r'\s*#.*$') > > +MANIFEST_RE = re.compile(r'^\s*#.*$') > > It seems to me we should still consider non-line-leading # if it's preceded > by a whitespace. Why? The regular preprocessor doesn't. Why keep the inconsistency? Ni for this. (In reply to Mike Hommey [:glandium] from comment #4) > (In reply to :Gijs Kruitbosch from comment #0) > > % override chrome://browser/content/foo.svg#yoink chrome://browser/content/foo.svg#boink > > Wow, is this actually supported? The opposite isn't supported, ie: override foo.svg bar.svg doesn't work if you actually ask for foo.svg#whatever as an image - you still get foo.svg instead of bar.svg. I'd like to fix that, but short-term we just need to fix the inconsistency between these two parsers.
Flags: needinfo?(mh+mozilla)
Assignee | ||
Comment 6•9 years ago
|
||
Comment on attachment 8698153 [details] MozReview Request: Bug 1232421 - force matching the start of the line for comments, r?glandium Review request updated; see interdiff: https://reviewboard.mozilla.org/r/27845/diff/1-2/
Attachment #8698153 -
Attachment description: MozReview Request: Bug 1232421 - force matching the start of the line for comments, r?gps → MozReview Request: Bug 1232421 - force matching the start of the line for comments, r?glandium
Attachment #8698153 -
Flags: review?(mh+mozilla)
Comment 7•9 years ago
|
||
https://reviewboard.mozilla.org/r/27845/#review25141 ::: python/mozbuild/mozpack/chrome/manifest.py:328 (Diff revision 2) > -MANIFEST_RE = re.compile(r'\s*#.*$') > +MANIFEST_RE = re.compile(r'(\s+|^)#.*$') The parser that actually matters is the one in xpcom/components/ManifestParser.cpp, and it only considers lines starting with a # as comments. (as in ^#). Come to think of it, technically, this is what the parser in chrome/manifest.py should be using, and the jar manifest parser should munge things appropriately if we consider that jar.mn files may have comments at the end of those lines. It's also the jar.mn parser's job to remove the whitespaces between the % and the chrome manifest keyword, since that's part of the jar.mn syntax, not the chrome manifest syntax itself. So all in all, ^#.*$ would be the right thing to have here. The jar.mn parser already removes whitespaces between % and the chrome manifest entry, but doesn't handle comments at the end of the line, which we don't have anyways, so it's just fine.
Updated•9 years ago
|
Flags: needinfo?(mh+mozilla)
Comment 8•9 years ago
|
||
Comment on attachment 8698153 [details] MozReview Request: Bug 1232421 - force matching the start of the line for comments, r?glandium Looks like mozreview didn't propagate the r+.
Attachment #8698153 -
Flags: review?(mh+mozilla) → review+
Comment 11•9 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/d0f136a93ad3 https://hg.mozilla.org/mozilla-central/rev/45a3b79cc3a4
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox46:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla46
Comment 12•9 years ago
|
||
Gijs, please could you ask for uplift for aurora? I'd like then to ask for uplift of bug 1191230 to be also in the ESR versions.
Flags: needinfo?(gijskruitbosch+bugs)
Assignee | ||
Comment 13•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → gijskruitbosch+bugs
Assignee | ||
Comment 14•9 years ago
|
||
Comment on attachment 8699434 [details] [diff] [review] Patch for aurora Approval Request Comment [Feature/regressing bug #]: blocking using SVG with overrides in jar.mn files [User impact if declined]: can't land bug 1232421 on aurora [Describe test coverage new/current, TreeHerder]: there's a test, this patch modifies it [Risks and why]: 1-line build system change for a system that has tests, aurora only just branched 3 days ago - very low risk [String/UUID change made/needed]: no
Flags: needinfo?(gijskruitbosch+bugs)
Attachment #8699434 -
Flags: approval-mozilla-aurora?
Comment 15•9 years ago
|
||
Comment on attachment 8699434 [details] [diff] [review] Patch for aurora Ahhhh, regexp :p Taking it in aurora.
Attachment #8699434 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Comment 16•9 years ago
|
||
bugherder uplift |
https://hg.mozilla.org/releases/mozilla-aurora/rev/38f291c5c2bb
Updated•6 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•