Closed
Bug 1269517
Opened 9 years ago
Closed 8 years ago
Move some header checks to Python configure
Categories
(Firefox Build System :: General, defect)
Firefox Build System
General
Tracking
(firefox50 fixed)
RESOLVED
FIXED
mozilla50
Tracking | Status | |
---|---|---|
firefox50 | --- | fixed |
People
(Reporter: chmanchester, Assigned: chmanchester)
References
(Blocks 2 open bugs)
Details
Attachments
(8 files)
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
(deleted),
text/x-review-board-request
|
glandium
:
review+
|
Details |
There are a handful of header checks in old-configure.in and js/src/old-configure.in that are pretty much isolated. This is a common and fairly straightforward check that will be used in a lot of places.
Assignee | ||
Comment 1•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/62462/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62462/
Attachment #8768222 -
Flags: review?(mh+mozilla)
Attachment #8768223 -
Flags: review?(mh+mozilla)
Attachment #8768224 -
Flags: review?(mh+mozilla)
Attachment #8768225 -
Flags: review?(mh+mozilla)
Attachment #8768226 -
Flags: review?(mh+mozilla)
Attachment #8768227 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 2•8 years ago
|
||
And add a few tests for that function.
Review commit: https://reviewboard.mozilla.org/r/62464/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62464/
Assignee | ||
Comment 3•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/62466/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62466/
Assignee | ||
Comment 4•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/62468/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62468/
Assignee | ||
Comment 5•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/62470/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62470/
Assignee | ||
Comment 6•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/62472/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/62472/
Comment 7•8 years ago
|
||
Comment on attachment 8768222 [details]
Bug 1269517 - Fix various environment variables that may contain posix-style paths when invoking the js subconfigure.
https://reviewboard.mozilla.org/r/62462/#review59678
Not having read the rest of the series, but in case I forget about it, this begs the question: how is it related to the rest?
::: build/subconfigure.py:218
(Diff revision 1)
> - environ['PATH'] = os.environ['PATH']
> + # These environment variables as passed from old-configure may contain
> + # posix-style paths, which will not be meaningful to the js
> + # subconfigure, which runs as a native python process, so use their
> + # values from the environment. In the case of autoconf implemented
> + # subconfigures, Msys will re-convert them properly.
> + for var in ('HOME', 'LD_LIBRARY_PATH', 'TERM', 'PATH',
LD_LIBRARY_PATH is surprising for msys.
Attachment #8768222 -
Flags: review?(mh+mozilla) → review+
Comment 8•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
https://reviewboard.mozilla.org/r/62464/#review59680
Commit message talks about tests. There are no tests.
Attachment #8768223 -
Flags: review?(mh+mozilla)
Comment 9•8 years ago
|
||
Comment on attachment 8768224 [details]
Bug 1269517 - Implement try_compile for Python configure.
https://reviewboard.mozilla.org/r/62466/#review59682
::: build/moz.configure/compilechecks.configure:9
(Diff revision 1)
> +# License, v. 2.0. If a copy of the MPL was not distributed with this
> +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
> +
> +@template
> +@imports('textwrap')
> +def try_compile(body, language, flags=None, includes=None):
I think keeping the order includes/body from autoconf's AC_TRY_COMPILE makes sense.
I'd default language to "C++" so that we don't have to pass it most of the time (we're mostly compiling C++ code, it makes sense to do the checks for C++ by default).
It might be convenient to allow passing a tuple/list of languages, too, so that both C and C++ can be handled.
That being said, I had a different vision for those checks, but meh, we can refactor later.
::: build/moz.configure/compilechecks.configure:11
(Diff revision 1)
> + def quote_include(path):
> + if ('<', '>') == (path[0], path[-1]):
> + return path
> + return '"%s"' % path
I'm pretty sure you don't have to worry about this. Just use <> everywhere.
::: build/moz.configure/compilechecks.configure:16
(Diff revision 1)
> + def quote_include(path):
> + if ('<', '>') == (path[0], path[-1]):
> + return path
> + return '"%s"' % path
> + source_lines = ['#include %s' % quote_include(f) for f in includes]
> + source = '\n'.join(source_lines) + '\n'
the first line feed doesn't seem very useful.
::: build/moz.configure/compilechecks.configure:21
(Diff revision 1)
> + source = '\n'.join(source_lines) + '\n'
> + source += textwrap.dedent('''\
> + int
> + main(void)
> + {
> + %s
You'll want to add a ; when there is none at the end of "body".
::: build/moz.configure/compilechecks.configure:26
(Diff revision 1)
> + %s
> + return 0;
> + }
> + ''' % body)
> + flags = flags or []
> + flags.insert(0, '-c')
you might as well put it last with flags.append, it shouldn't matter.
::: python/mozbuild/mozbuild/test/configure/test_header_checks.py:23
(Diff revision 1)
> +
> +class TestHeaderChecks(unittest.TestCase):
> +
> + def get_mock_compiler(self, expected_test_content=None, expected_flags=None):
> + expected_flags = expected_flags or []
> + def mock_compiler(stdin, args):
It would be better to augment FakeCompiler instead.
::: python/mozbuild/mozbuild/test/configure/test_header_checks.py:35
(Diff revision 1)
> + with open(test_file) as fh:
> + test_content = fh.read()
> + self.assertEqual(test_content, expected_test_content)
> +
> + status = 0
> + if '--error' in args:
something like -funknown-flag would somehow more realistic
Attachment #8768224 -
Flags: review?(mh+mozilla)
Comment 10•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
https://reviewboard.mozilla.org/r/62468/#review59688
This doesn't seem very related.
::: build/moz.configure/android-ndk.configure:28
(Diff revision 1)
> + help='android platform version',
> + default=min_android_version)
> +
> +@depends('--with-android-version', min_android_version)
> +def android_version(value, min_value):
> + if value[0] < min_value:
You're comparing strings. '15' < '9' is True
There should also be some type checking.
::: build/moz.configure/android-ndk.configure:49
(Diff revision 1)
> +@checking('for android platform directory')
> +def android_platform(target, android_version, ndk):
> + if target.os != 'Android':
> + return
> +
> + if '86' in target.cpu:
this condition is true for x86_64, which didn't match i?86 in the previous check. You want to check target.cpu == 'x86', which is the value for target_dir_name, so it can just fall back to the target_dir_name = target.cpu case :)
Attachment #8768225 -
Flags: review?(mh+mozilla)
Comment 11•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
https://reviewboard.mozilla.org/r/62470/#review59696
::: build/moz.configure/compilechecks.configure:46
(Diff revision 1)
> language, source, flags,
> onerror=lambda: None)
> return check
> +
> +@template
> +def check_header(header, language='C', flags=None, includes=None):
I know a lot of our checks are with the C compiler today, but we should default to C++
::: build/moz.configure/compilechecks.configure:60
(Diff revision 1)
> + @depends_when(check_header(header, **kwargs), when=when)
> + @checking('for %s' % header)
This will only print the checking message after having actually checked. Let me give this more thought. There are things I wanted to improve related to @depends and possibly other decorators, I'm wondering if that would help here or not.
Attachment #8768226 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 12•8 years ago
|
||
https://reviewboard.mozilla.org/r/62462/#review59678
Munging of INCLUDE makes the js subconfigure fail to find headers, and munging of TEMP makes msvc called from js subconfigure fail to compile files.
Assignee | ||
Comment 13•8 years ago
|
||
https://reviewboard.mozilla.org/r/62468/#review59688
I'm sure this is clear from the next patch, but we need to pass `-idirafter $platform_dir/usr/include` to find headers on android.
Assignee | ||
Comment 14•8 years ago
|
||
https://reviewboard.mozilla.org/r/62462/#review59678
> LD_LIBRARY_PATH is surprising for msys.
I thought I saw docs about this, but that was for cygwin. I don't think it's relevant here, so we can leave it out.
Assignee | ||
Comment 15•8 years ago
|
||
https://reviewboard.mozilla.org/r/62470/#review59696
> This will only print the checking message after having actually checked. Let me give this more thought. There are things I wanted to improve related to @depends and possibly other decorators, I'm wondering if that would help here or not.
Yeah, I'm actually not sure how to do this better in the current set up...
Comment 16•8 years ago
|
||
So, if you change try_compile to be a decorator that just wraps the function it's given, you can then do:
@checking('for ...')
@try_compile(...)
def check(compiler_result):
...
And the checking should be printed at the right time.
Assignee | ||
Comment 17•8 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #16)
> So, if you change try_compile to be a decorator that just wraps the function
> it's given, you can then do:
>
> @checking('for ...')
> @try_compile(...)
> def check(compiler_result):
> ...
>
> And the checking should be printed at the right time.
That didn't quite work, but I found another way.
Assignee | ||
Comment 18•8 years ago
|
||
https://reviewboard.mozilla.org/r/62466/#review59682
> the first line feed doesn't seem very useful.
I'm not sure which line feed is meant here. We end up with one between each line, and one at the end (which looks right to me).
Comment 19•8 years ago
|
||
https://reviewboard.mozilla.org/r/62466/#review59682
> I'm not sure which line feed is meant here. We end up with one between each line, and one at the end (which looks right to me).
It looks like I misread.
Assignee | ||
Comment 20•8 years ago
|
||
Review commit: https://reviewboard.mozilla.org/r/64384/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/64384/
Attachment #8771576 -
Flags: review?(mh+mozilla)
Attachment #8768223 -
Flags: review?(mh+mozilla)
Attachment #8768224 -
Flags: review?(mh+mozilla)
Attachment #8768225 -
Flags: review?(mh+mozilla)
Attachment #8768226 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 21•8 years ago
|
||
Comment on attachment 8768222 [details]
Bug 1269517 - Fix various environment variables that may contain posix-style paths when invoking the js subconfigure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62462/diff/1-2/
Assignee | ||
Comment 22•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62464/diff/1-2/
Assignee | ||
Comment 23•8 years ago
|
||
Comment on attachment 8768224 [details]
Bug 1269517 - Implement try_compile for Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62466/diff/1-2/
Assignee | ||
Comment 24•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62468/diff/1-2/
Assignee | ||
Comment 25•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62470/diff/1-2/
Assignee | ||
Comment 26•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62472/diff/1-2/
Updated•8 years ago
|
Attachment #8768223 -
Flags: review?(mh+mozilla)
Comment 27•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
https://reviewboard.mozilla.org/r/62464/#review62130
Previous review comment still applies: The commit message talks about tests, but there are no tests added by this patch.
Updated•8 years ago
|
Attachment #8771576 -
Flags: review?(mh+mozilla) → review+
Comment 28•8 years ago
|
||
Comment on attachment 8771576 [details]
Bug 1269517 - Outfit the configure tests' fake compiler to handle compilation calls.
https://reviewboard.mozilla.org/r/64384/#review62132
Comment 29•8 years ago
|
||
Comment on attachment 8768224 [details]
Bug 1269517 - Implement try_compile for Python configure.
https://reviewboard.mozilla.org/r/62466/#review62134
::: build/moz.configure/compilechecks.configure:27
(Diff revisions 1 - 2)
> + @checking(check_msg, callback=lambda r: r is not None)
> + def wrapper(*args, **kwargs):
> + return fn(*args, **kwargs)
> + return wrapper
this can be written as return checking(check_msg, ...)(fn)
::: build/moz.configure/compilechecks.configure:9
(Diff revision 2)
> +# License, v. 2.0. If a copy of the MPL was not distributed with this
> +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
> +
> +@template
> +@imports('textwrap')
> +def try_compile(includes=None, body='', language='C++', flags=None, check_msg=None):
A comment describing what the function does and its inputs would be nice.
I'm not super fan of the check_msg thing, but let's go with this for now.
Attachment #8768224 -
Flags: review?(mh+mozilla) → review+
Updated•8 years ago
|
Attachment #8768225 -
Flags: review?(mh+mozilla)
Comment 30•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
https://reviewboard.mozilla.org/r/62468/#review62136
::: build/moz.configure/android-ndk.configure:17
(Diff revision 2)
> +@depends('--help')
> +def min_android_version(_):
> + return '9'
> +
> +js_option('--with-android-version',
> + nargs=1,
> + help='android platform version',
> + default=min_android_version)
> +
> +@depends('--with-android-version', min_android_version)
> +@imports(_from='__builtin__', _import='ValueError')
> +def android_version_number(value, min_version):
> + try:
> + int(value[0])
> + except ValueError:
> + die('--with-android-version expects an integer value')
> +
> + if Version(value[0]) < Version(min_version):
> + die('--with-android-version must be at least %s (got %s)',
> + min_version, value[0])
> +
> + return int(value[0])
You could return a literal int from min_android_version, and then do something like:
try:
version = int(value[0])
except ValueError:
...
if version < min_version:
...
return version
Note you're not handling the case where value is a NegativeOptionValue, in which case value[0] will throw an IndexError.
Comment 31•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
https://reviewboard.mozilla.org/r/62470/#review62142
::: build/moz.configure/compilechecks.configure:66
(Diff revision 2)
> +
> + return try_compile(includes=includes, language=language, flags=flags,
> + check_msg='for %s' % header)
> +
> +@template
> +def check_headers(*headers, **kwargs):
Come to think of it, I'm not sure if it's desirable to have both check_header and check_headers. Especially when they don't have the same behavior. If we do want to have both, then check_headers should only be a helper to loop over check_header, and check_header should be the one setting the defines.
::: python/mozbuild/mozbuild/test/configure/test_header_checks.py:192
(Diff revision 2)
> + return 0;
> + }
> + ''')
> +
> + cmd = textwrap.dedent('''\
> + (have_foo,) = check_headers('foo.h', includes=['std.h', 'bar.h'])
This seems like something we should explicitly forbid as not making sense.
Attachment #8768226 -
Flags: review?(mh+mozilla)
Comment 32•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
https://reviewboard.mozilla.org/r/62472/#review62144
::: build/moz.configure/headers.configure:10
(Diff revision 2)
> +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
> +
> +# Check for headers defining standard int types.
> +have_stdint, have_inttypes = check_headers('stdint.h', 'inttypes.h')
> +
> +set_config('HAVE_INTTYPES_H', have_inttypes)
I'm skeptical. HAVE_INTTYPES_H should already be set from just using check_headers('inttypes.h'), right?
::: build/moz.configure/headers.configure:25
(Diff revision 2)
> +
> +add_old_configure_assignment('HAVE_MALLOC_H', have_malloc)
> +
> +check_headers(
> + 'sys/byteorder.h',
> + 'compat.h',
there is no HAVE_COMPAT_H in the tree
::: build/moz.configure/headers.configure:27
(Diff revision 2)
> +
> +check_headers(
> + 'sys/byteorder.h',
> + 'compat.h',
> + 'getopt.h',
> + 'sys/bitypes.h',
There is no HAVE_SYS_BITYPES_H in the tree.
::: build/moz.configure/headers.configure:28
(Diff revision 2)
> +check_headers(
> + 'sys/byteorder.h',
> + 'compat.h',
> + 'getopt.h',
> + 'sys/bitypes.h',
> + 'memory.h',
Nothing in the tree appears to be using HAVE_MEMORY_H from here.
::: build/moz.configure/headers.configure:30
(Diff revision 2)
> + 'compat.h',
> + 'getopt.h',
> + 'sys/bitypes.h',
> + 'memory.h',
> + 'unistd.h',
> + 'gnu/libc-version.h',
The last actual use of HAVE_GNU_GET_LIBC_VERSION was removed in http://hg.mozilla.org/mozilla-central/rev/8d6db7f8fe09 (there is still a ifdef, but it can be removed)
::: build/moz.configure/headers.configure:32
(Diff revision 2)
> + 'sys/bitypes.h',
> + 'memory.h',
> + 'unistd.h',
> + 'gnu/libc-version.h',
> + 'nl_types.h',
> + 'X11/XKBlib.h',
Nothing is using HAVE_X11_XKBLIB_H
::: build/moz.configure/headers.configure:33
(Diff revision 2)
> + 'memory.h',
> + 'unistd.h',
> + 'gnu/libc-version.h',
> + 'nl_types.h',
> + 'X11/XKBlib.h',
> + 'io.h',
funny thing: the two only places in gecko code where HAVE_IO_H are using it for isatty. isatty defined in io.h is a windows thing, and we set HAVE_IO_H manually on Windows.
::: build/moz.configure/headers.configure:50
(Diff revision 2)
> +)
> +
> +# Quota support
> +check_headers(
> + 'sys/quota.h',
> + 'sys/sysmacros.h',
Nothing uses HAVE_SYS_SYSMACROS_H
::: build/moz.configure/headers.configure:54
(Diff revision 2)
> +check_headers('linux/quota.h',
> + includes=['sys/socket.h'],
> + when=non_msvc_compiler)
> +
> +# SCTP support - needs various network include headers
> +check_headers(
> + 'linux/if_addr.h',
> + 'linux/rtnetlink.h',
Everything that starts with linux/ could be limited to target.kernel == 'Linux'
::: build/moz.configure/headers.configure:82
(Diff revision 2)
> +# Checks for headers relevant when building js.
> +
> +endian_h, sys_isa_defs_h, sys_cdefs_h = check_headers(
> + 'endian.h',
> + 'sys/isa_defs.h',
> + 'sys/cdefs.h',
Nothing uses this one.
::: build/moz.configure/headers.configure:86
(Diff revision 2)
> +set_define('JS_HAVE_ENDIAN_H', endian_h)
> +set_define('JS_HAVE_SYS_ISA_DEFS_H', sys_isa_defs_h)
> +
> +(machine_endian_h,) = check_headers(
> + 'machine/endian.h',
> + includes=['sys/types.h'],
> + when=building_js_non_msvc,
> +)
> +
> +set_define('JS_HAVE_MACHINE_ENDIAN_H', machine_endian_h)
All these can go away entirely (reason being that all the compilers we support don't need those headers anymore, and we can actually remove our uses of them ; I actually have something related to that in a local branch ; I'll file a separate bug about it), so it's not worth moving them.
::: moz.configure:110
(Diff revision 2)
> +@depends('--disable-compile-environment', '--help')
> +def headers_check_include(compile_env, help):
> + if compile_env:
> + return 'build/moz.configure/headers.configure'
> +
> +include(headers_check_include)
We're starting to have way too many of those, please file a followup to add a template (probably) around this hack.
::: old-configure.in
(Diff revision 2)
> -dnl These are all the places some variant of statfs can be hiding.
> -MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
> -
> -dnl Quota support
> -MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
> -MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
okay, forget what I said about the includes argument to checking_headers not making sense.
Attachment #8768227 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 33•8 years ago
|
||
https://reviewboard.mozilla.org/r/62468/#review62136
> You could return a literal int from min_android_version, and then do something like:
>
> try:
> version = int(value[0])
> except ValueError:
> ...
>
> if version < min_version:
> ...
>
> return version
>
> Note you're not handling the case where value is a NegativeOptionValue, in which case value[0] will throw an IndexError.
I'm using min_android_version as a default, and I guess we don't allow ints as defaults...
It's a little suprising we can end up with a NegativeOptionValue we have nargs=1 and a default provided. Can we reject this earlier?
Assignee | ||
Comment 34•8 years ago
|
||
https://reviewboard.mozilla.org/r/62470/#review62142
> Come to think of it, I'm not sure if it's desirable to have both check_header and check_headers. Especially when they don't have the same behavior. If we do want to have both, then check_headers should only be a helper to loop over check_header, and check_header should be the one setting the defines.
Agreed, although there are a couple of places we have MOZ_CHECK_HEADER called today where we have the result of checking for the header but not setting the define. But there are only a couple, and I haven't ensured that's actually a useful behavior.
> This seems like something we should explicitly forbid as not making sense.
I'm not sure what you mean, is this the comment you said to ignore on the next patch?
Assignee | ||
Comment 35•8 years ago
|
||
https://reviewboard.mozilla.org/r/62472/#review62144
> I'm skeptical. HAVE_INTTYPES_H should already be set from just using check_headers('inttypes.h'), right?
It's already set as a define by check_headers, but it's also checked in moz.build files.
> We're starting to have way too many of those, please file a followup to add a template (probably) around this hack.
Filed bug 1287924
Comment 36•8 years ago
|
||
(In reply to Chris Manchester (:chmanchester) from comment #34)
> I'm not sure what you mean, is this the comment you said to ignore on the
> next patch?
Yes
Comment 37•8 years ago
|
||
(In reply to Chris Manchester (:chmanchester) from comment #33)
> I'm using min_android_version as a default, and I guess we don't allow ints
> as defaults...
You can still do
try:
version = int(value[0])
except ValueError:
...
if version < int(min_version):
...
return version
> It's a little suprising we can end up with a NegativeOptionValue we have
> nargs=1 and a default provided. Can we reject this earlier?
Unfortunately, not now. There are many legitimate uses of disable-able options with nargs=1 with a default. We'd need some argument telling "this can't be disabled". But it's probably simpler to explicitly reject the case with a `if not value: die()`
Assignee | ||
Comment 38•8 years ago
|
||
Comment on attachment 8768222 [details]
Bug 1269517 - Fix various environment variables that may contain posix-style paths when invoking the js subconfigure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62462/diff/2-3/
Attachment #8768223 -
Flags: review?(mh+mozilla)
Attachment #8768225 -
Flags: review?(mh+mozilla)
Attachment #8768226 -
Flags: review?(mh+mozilla)
Attachment #8768227 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 39•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62464/diff/2-3/
Assignee | ||
Comment 40•8 years ago
|
||
Comment on attachment 8771576 [details]
Bug 1269517 - Outfit the configure tests' fake compiler to handle compilation calls.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/64384/diff/1-2/
Assignee | ||
Comment 41•8 years ago
|
||
Comment on attachment 8768224 [details]
Bug 1269517 - Implement try_compile for Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62466/diff/2-3/
Assignee | ||
Comment 42•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62468/diff/2-3/
Assignee | ||
Comment 43•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62470/diff/2-3/
Assignee | ||
Comment 44•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62472/diff/2-3/
Updated•8 years ago
|
Attachment #8768223 -
Flags: review?(mh+mozilla)
Comment 45•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
https://reviewboard.mozilla.org/r/62464/#review62766
Previous review comment still applies: The commit message talks about tests, but there are no tests added by this patch.
Comment 46•8 years ago
|
||
https://reviewboard.mozilla.org/r/62466/#review62768
::: build/moz.configure/compilechecks.configure:12
(Diff revisions 2 - 3)
> +
> +# Generates a test program and attempts to compile it. In case of failure, the
> +# resulting check will return None. If the test program succeeds, it will return
> +# the output of the test program.
> +# - `includes` are the includes that will appear at the top of the generated
> +# test program.
worth mentioning it's only file names, not full #include syntax.
::: build/moz.configure/compilechecks.configure:13
(Diff revisions 2 - 3)
> +# Generates a test program and attempts to compile it. In case of failure, the
> +# resulting check will return None. If the test program succeeds, it will return
> +# the output of the test program.
> +# - `includes` are the includes that will appear at the top of the generated
> +# test program.
> +# - `body` is the code that will appear in the main function of the generated
worth mentioning that "return 0" is automatically added at the end of the code.
Updated•8 years ago
|
Attachment #8768225 -
Flags: review?(mh+mozilla) → review+
Comment 47•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
https://reviewboard.mozilla.org/r/62468/#review62770
Updated•8 years ago
|
Attachment #8768226 -
Flags: review?(mh+mozilla) → review+
Comment 48•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
https://reviewboard.mozilla.org/r/62470/#review62772
It strikes me that in most cases, we could actually get away with only running the preprocessor, not a complete compilation. I'm okay with leaving that to a followup, though, since autoconf does use a compile for those tests. Also, we're going to start needing a cache. Followup too.
::: build/moz.configure/compilechecks.configure:64
(Diff revision 3)
> language, source, flags,
> onerror=lambda: None)
> return check
> +
> +@template
> +def check_header(header, language='C++', flags=None, includes=None, when=None):
For both this and check_header a comment explaining what it does and its input/output would be nice.
::: python/mozbuild/mozbuild/test/configure/test_header_checks.py:175
(Diff revision 3)
> + ''')
> +
> + config, out, status = self.do_compile_test(cmd,
> + expected_test_content=expected_test_content)
> + self.assertEqual(status, 0)
> + self.assertEqual(config, {'DEFINES': {'HAVE_FOO_H': True}})
you could check the out like on line 206.
Comment 49•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
https://reviewboard.mozilla.org/r/62472/#review62776
It would be better to split this in two patches: one that removes the checks that are useless (with a commit message saying why), and another that moves the remainder to python configure.
::: build/moz.configure/headers.configure:8
(Diff revision 3)
> +# This Source Code Form is subject to the terms of the Mozilla Public
> +# License, v. 2.0. If a copy of the MPL was not distributed with this
> +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
> +
> +# Check for headers defining standard int types.
> +have_stdint, have_inttypes = check_headers('stdint.h', 'inttypes.h')
you could replace "have_stdint" with "_"
::: build/moz.configure/headers.configure:24
(Diff revision 3)
> +add_old_configure_assignment('HAVE_MALLOC_H', have_malloc)
> +
> +check_headers(
> + 'sys/byteorder.h',
> + 'getopt.h',
> + 'memory.h',
cf. comment 32.
::: js/src/old-configure.in
(Diff revision 3)
> -MOZ_CHECK_HEADERS(endian.h)
> -if test "$ac_cv_header_endian_h" = yes; then
> - AC_DEFINE(JS_HAVE_ENDIAN_H)
> -fi
> -
> -MOZ_CHECK_HEADERS([machine/endian.h],[],[],[#include <sys/types.h>])
> -if test "$ac_cv_header_machine_endian_h" = yes; then
> - AC_DEFINE(JS_HAVE_MACHINE_ENDIAN_H)
> -fi
> -
> -MOZ_CHECK_HEADERS(sys/isa_defs.h)
> -if test "$ac_cv_header_sys_isa_defs_h" = yes; then
> - AC_DEFINE(JS_HAVE_SYS_ISA_DEFS_H)
> -fi
> -
Please leave those for bug 1287671.
Attachment #8768227 -
Flags: review?(mh+mozilla)
Comment 50•8 years ago
|
||
https://reviewboard.mozilla.org/r/62472/#review62776
> you could replace "have_stdint" with "_"
... or use check_header twice.
Assignee | ||
Comment 51•8 years ago
|
||
(In reply to Mike Hommey [:glandium] from comment #45)
> Comment on attachment 8768223 [details]
> Bug 1269517 - Factor Python configure's try_preprocess into an invocation of
> a lower-level function.
>
> https://reviewboard.mozilla.org/r/62464/#review62766
>
> Previous review comment still applies: The commit message talks about tests,
> but there are no tests added by this patch.
Wow, I missed this comment repeatedly, sorry about that. The mozreview UI seems to bury a comment like this if an issue isn't also opened.
Assignee | ||
Comment 52•8 years ago
|
||
This patch removes the checks for compat.h, sys/bittypes.h, gnu/libc-version.h,
X11/XKBlib.h, sys/sysmacros.h, and sys/cdefs.h from old-configure, because they
are not checked meaningfully in the tree.
The check for memory.h is removed, because while there are checks for
HAVE_MEMORY_H in the tree, they are in places this is set by a third party
build system.
The check for io.h is also removed, because while there are checks for
HAVE_IO_H, they're only relevant on windows, where this is set manually in
old-configure.
Review commit: https://reviewboard.mozilla.org/r/66526/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/66526/
Attachment #8773870 -
Flags: review?(mh+mozilla)
Attachment #8768223 -
Flags: review?(mh+mozilla)
Attachment #8768227 -
Flags: review?(mh+mozilla)
Assignee | ||
Comment 53•8 years ago
|
||
Comment on attachment 8768222 [details]
Bug 1269517 - Fix various environment variables that may contain posix-style paths when invoking the js subconfigure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62462/diff/3-4/
Assignee | ||
Comment 54•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62464/diff/3-4/
Assignee | ||
Comment 55•8 years ago
|
||
Comment on attachment 8771576 [details]
Bug 1269517 - Outfit the configure tests' fake compiler to handle compilation calls.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/64384/diff/2-3/
Assignee | ||
Comment 56•8 years ago
|
||
Comment on attachment 8768224 [details]
Bug 1269517 - Implement try_compile for Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62466/diff/3-4/
Assignee | ||
Comment 57•8 years ago
|
||
Comment on attachment 8768225 [details]
Bug 1269517 - Move android_platform to python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62468/diff/3-4/
Assignee | ||
Comment 58•8 years ago
|
||
Comment on attachment 8768226 [details]
Bug 1269517 - Implement check_header in Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62470/diff/3-4/
Assignee | ||
Comment 59•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
Review request updated; see interdiff: https://reviewboard.mozilla.org/r/62472/diff/3-4/
Assignee | ||
Comment 60•8 years ago
|
||
Comment 61•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
https://reviewboard.mozilla.org/r/62464/#review63910
::: build/moz.configure/util.configure:91
(Diff revision 4)
>
> +@imports('os')
> +@imports('subprocess')
> +@imports(_from='mozbuild.configure.util', _import='LineIO')
> +@imports(_from='tempfile', _import='mkstemp')
> +def try_invoke_compiler(compiler, language, source, flags=None, onerror=None):
Note, I'm not convinced this needs to move to util.configure.
Attachment #8768223 -
Flags: review?(mh+mozilla)
Comment 62•8 years ago
|
||
Comment on attachment 8773870 [details]
Bug 1269517 - Remove header checks from old-configure that are no longer needed.
https://reviewboard.mozilla.org/r/66526/#review63912
Attachment #8773870 -
Flags: review?(mh+mozilla) → review+
Comment 63•8 years ago
|
||
Comment on attachment 8768223 [details]
Bug 1269517 - Factor Python configure's try_preprocess into an invocation of a lower-level function.
https://reviewboard.mozilla.org/r/62464/#review63914
Attachment #8768223 -
Flags: review+
Comment 64•8 years ago
|
||
Comment on attachment 8768227 [details]
Bug 1269517 - Move various header checks to Python configure.
https://reviewboard.mozilla.org/r/62472/#review63916
Attachment #8768227 -
Flags: review?(mh+mozilla) → review+
Assignee | ||
Comment 65•8 years ago
|
||
https://reviewboard.mozilla.org/r/62464/#review63910
> Note, I'm not convinced this needs to move to util.configure.
For these tests it's more convenient to include util.configure than toolchain.configure. There's probably a better way to structure these tests, I can look into it as a follow up.
Comment 66•8 years ago
|
||
Pushed by cmanchester@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/8457e2d24535
Fix various environment variables that may contain posix-style paths when invoking the js subconfigure. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/d3b5b77d0dcc
Factor Python configure's try_preprocess into an invocation of a lower-level function. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/c12838ecfbb5
Outfit the configure tests' fake compiler to handle compilation calls. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/de64f0094103
Implement try_compile for Python configure. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/cd2ca7c770fd
Move android_platform to python configure. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/2081a003f2d8
Implement check_header in Python configure. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/b50c01f263a5
Remove header checks from old-configure that are no longer needed. r=glandium
https://hg.mozilla.org/integration/mozilla-inbound/rev/550fc29355f1
Move various header checks to Python configure. r=glandium
Comment 67•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/8457e2d24535
https://hg.mozilla.org/mozilla-central/rev/d3b5b77d0dcc
https://hg.mozilla.org/mozilla-central/rev/c12838ecfbb5
https://hg.mozilla.org/mozilla-central/rev/de64f0094103
https://hg.mozilla.org/mozilla-central/rev/cd2ca7c770fd
https://hg.mozilla.org/mozilla-central/rev/2081a003f2d8
https://hg.mozilla.org/mozilla-central/rev/b50c01f263a5
https://hg.mozilla.org/mozilla-central/rev/550fc29355f1
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox50:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla50
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•