diff options
author | rouslan <rouslan@chromium.org> | 2015-01-30 11:36:42 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-30 19:37:26 +0000 |
commit | 243315bb066856bcadc20b3118ec623d96187edd (patch) | |
tree | 7a334fa272d8591d4c52ddbce7cbd9898010d01d | |
parent | c3ab543bc538dbb1c8ac4d0b212d06db03cb4b48 (diff) | |
download | chromium_src-243315bb066856bcadc20b3118ec623d96187edd.zip chromium_src-243315bb066856bcadc20b3118ec623d96187edd.tar.gz chromium_src-243315bb066856bcadc20b3118ec623d96187edd.tar.bz2 |
Revert of [NaCl SDK] Remove create_nmf dependency on NACL_SDK_ROOT env var (patchset #5 id:80001 of https://codereview.chromium.org/737653003/)
Reason for revert:
Broke compile on Google Chrome ChromeOS bot.
[8069/19495] CXX obj/components/policy/core/common/cloud/policy_component_common.external_policy_data_updater.o
FAILED: cd ../../third_party/liblouis; python ../../native_client_sdk/src/tools/create_nmf.py ../../out/Release/chromevox_test_data/braille/liblouis_nacl_x86_64.nexe "--output=../../out/Release/chromevox_test_data/braille/liblouis_nacl.nmf"
Traceback (most recent call last):
File "../../native_client_sdk/src/tools/create_nmf.py", line 680, in <module>
rtn = main(sys.argv[1:])
File "../../native_client_sdk/src/tools/create_nmf.py", line 633, in main
options.lib_path += GetDefaultLibPath(config)
File "../../native_client_sdk/src/tools/create_nmf.py", line 507, in GetDefaultLibPath
sdk_root = GetSDKRoot()
File "../../native_client_sdk/src/tools/create_nmf.py", line 478, in GetSDKRoot
assert(os.path.exists(os.path.join(sdk_root, 'toolchain')))
AssertionError
ninja: build stopped: subcommand failed.
http://build.chromium.org/p/chromium.chrome/builders/Google%20Chrome%20ChromeOS/builds/76569
Original issue's description:
> [NaCl SDK] Remove create_nmf dependency on NACL_SDK_ROOT env var
>
> create_nmf should determine the root of the SDK relative
> to its own location.
>
> The exception to this is when its run as part of the
> chrome build, when it is not yet installed. In this
> case we pass --no-default-libpath and --objdump to
> create_nmf to remove any use of the SDK root.
>
> Committed: https://crrev.com/088561ac99314a79866a39f79bb32bd5e1196217
> Cr-Commit-Position: refs/heads/master@{#313957}
TBR=binji@chromium.org,dmichael@chromium.org,sbc@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/890033003
Cr-Commit-Position: refs/heads/master@{#313963}
-rwxr-xr-x | native_client_sdk/src/tools/create_nmf.py | 33 | ||||
-rwxr-xr-x | native_client_sdk/src/tools/tests/create_nmf_test.py | 26 | ||||
-rw-r--r-- | ppapi/ppapi_nacl.gyp | 10 | ||||
-rw-r--r-- | ppapi/ppapi_nacl_test_common.gypi | 9 |
4 files changed, 39 insertions, 39 deletions
diff --git a/native_client_sdk/src/tools/create_nmf.py b/native_client_sdk/src/tools/create_nmf.py index dc7e552..de72408 100755 --- a/native_client_sdk/src/tools/create_nmf.py +++ b/native_client_sdk/src/tools/create_nmf.py @@ -466,16 +466,15 @@ def ParseExtraFiles(encoded_list, err): def GetSDKRoot(): - """Returns the root directory of the NaCl SDK. + """Determine current NACL_SDK_ROOT, either via the environment variable + itself, or by attempting to derive it from the location of this script. """ - # This script should be installed in NACL_SDK_ROOT/tools. Assert that - # the 'toolchain' folder exists within this directory in case, for - # example, this script is moved to a different location. - # During the Chrome build this script is sometimes run outside of - # of an SDK but in these cases it should always be run with --objdump= - # and --no-default-libpath which avoids the need to call this function. - sdk_root = os.path.dirname(SCRIPT_DIR) - assert(os.path.exists(os.path.join(sdk_root, 'toolchain'))) + sdk_root = os.environ.get('NACL_SDK_ROOT') + if not sdk_root: + sdk_root = os.path.dirname(SCRIPT_DIR) + if not os.path.exists(os.path.join(sdk_root, 'toolchain')): + return None + return sdk_root @@ -483,8 +482,12 @@ def FindObjdumpExecutable(): """Derive path to objdump executable to use for determining shared object dependencies. """ + sdk_root = GetSDKRoot() + if not sdk_root: + return None + osname = getos.GetPlatform() - toolchain = os.path.join(GetSDKRoot(), 'toolchain', '%s_x86_glibc' % osname) + toolchain = os.path.join(sdk_root, 'toolchain', '%s_x86_glibc' % osname) objdump = os.path.join(toolchain, 'bin', 'x86_64-nacl-objdump') if osname == 'win': objdump += '.exe' @@ -505,6 +508,10 @@ def GetDefaultLibPath(config): """ assert(config in ('Debug', 'Release')) sdk_root = GetSDKRoot() + if not sdk_root: + # TOOD(sbc): output a warning here? We would also need to suppress + # the warning when run from the chromium build. + return [] osname = getos.GetPlatform() libpath = [ @@ -573,8 +580,8 @@ def main(args): help='Rename FOO as BAR', action='append', default=[], metavar='FOO,BAR') parser.add_argument('-x', '--extra-files', - help='Add extra key:file tuple to the "files"' - ' section of the .nmf', + help=('Add extra key:file tuple to the "files"' + + ' section of the .nmf'), action='append', default=[], metavar='FILE') parser.add_argument('-O', '--pnacl-optlevel', help='Set the optimization level to N in PNaCl manifests', @@ -662,7 +669,7 @@ def main(args): pnacl_debug_optlevel=pnacl_debug_optlevel, nmf_root=nmf_root) - if options.output is None: + if not options.output: sys.stdout.write(nmf.GetJson()) else: with open(options.output, 'w') as output: diff --git a/native_client_sdk/src/tools/tests/create_nmf_test.py b/native_client_sdk/src/tools/tests/create_nmf_test.py index d71bee9..86a89a2 100755 --- a/native_client_sdk/src/tools/tests/create_nmf_test.py +++ b/native_client_sdk/src/tools/tests/create_nmf_test.py @@ -14,19 +14,17 @@ import unittest SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) TOOLS_DIR = os.path.dirname(SCRIPT_DIR) DATA_DIR = os.path.join(TOOLS_DIR, 'lib', 'tests', 'data') -BUILD_TOOLS_DIR = os.path.join(os.path.dirname(TOOLS_DIR), 'build_tools') CHROME_SRC = os.path.dirname(os.path.dirname(os.path.dirname(TOOLS_DIR))) MOCK_DIR = os.path.join(CHROME_SRC, 'third_party', 'pymock') # For the mock library sys.path.append(MOCK_DIR) sys.path.append(TOOLS_DIR) -sys.path.append(BUILD_TOOLS_DIR) import build_paths import create_nmf import getos -from mock import patch, Mock +import mock TOOLCHAIN_OUT = os.path.join(build_paths.OUT_DIR, 'sdk_tests', 'toolchain') NACL_X86_GLIBC_TOOLCHAIN = os.path.join(TOOLCHAIN_OUT, @@ -63,18 +61,24 @@ class TestPosixRelPath(unittest.TestCase): class TestDefaultLibpath(unittest.TestCase): - def setUp(self): - patcher = patch('create_nmf.GetSDKRoot', Mock(return_value='/dummy/path')) - patcher.start() - self.addCleanup(patcher.stop) - - def testUsesSDKRoot(self): - paths = create_nmf.GetDefaultLibPath('Debug') + def testWithoutNaClSDKRoot(self): + """GetDefaultLibPath wihtout NACL_SDK_ROOT set + + In the absence of NACL_SDK_ROOT GetDefaultLibPath should + return the empty list.""" + with mock.patch.dict('os.environ', clear=True): + paths = create_nmf.GetDefaultLibPath('Debug') + self.assertEqual(paths, []) + + def testHonorNaClSDKRoot(self): + with mock.patch.dict('os.environ', {'NACL_SDK_ROOT': '/dummy/path'}): + paths = create_nmf.GetDefaultLibPath('Debug') for path in paths: self.assertTrue(path.startswith('/dummy/path')) def testIncludesNaClPorts(self): - paths = create_nmf.GetDefaultLibPath('Debug') + with mock.patch.dict('os.environ', {'NACL_SDK_ROOT': '/dummy/path'}): + paths = create_nmf.GetDefaultLibPath('Debug') self.assertTrue(any(os.path.join('ports', 'lib') in p for p in paths), "naclports libpath missing: %s" % str(paths)) diff --git a/ppapi/ppapi_nacl.gyp b/ppapi/ppapi_nacl.gyp index aab96ef..bbad955 100644 --- a/ppapi/ppapi_nacl.gyp +++ b/ppapi/ppapi_nacl.gyp @@ -139,10 +139,6 @@ '--strip-all', ], 'create_nmf': '<(DEPTH)/native_client_sdk/src/tools/create_nmf.py', - 'create_nmf_flags': [ - '--no-default-libpath', - '--objdump=>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump', - ], 'create_nonsfi_test_nmf': 'tests/create_nonsfi_test_nmf.py', }, 'conditions': [ @@ -153,6 +149,7 @@ # doesn't work on Windows. 'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib', 'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32', + 'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump', 'nmf_glibc%': '<(PRODUCT_DIR)/>(nexe_target)_glibc.nmf', }, 'actions': [ @@ -168,7 +165,7 @@ 'action': [ 'python', '>@(_inputs)', - '>@(create_nmf_flags)', + '--objdump=>(nacl_objdump)', '--output=>(nmf_glibc)', '--stage-dependencies=<(PRODUCT_DIR)', ], @@ -221,7 +218,6 @@ 'action': [ 'python', '>@(_inputs)', - '>@(create_nmf_flags)', '--output=>(nmf_pnacl)', ], 'conditions': [ @@ -310,7 +306,6 @@ 'action': [ 'python', '>@(_inputs)', - '>@(create_nmf_flags)', '--output=>(nmf_pnacl)', ], }, @@ -334,7 +329,6 @@ 'action': [ 'python', '>@(_inputs)', - '>@(create_nmf_flags)', '--output=>(nmf_pnacl)', ], }, diff --git a/ppapi/ppapi_nacl_test_common.gypi b/ppapi/ppapi_nacl_test_common.gypi index c5e8a6f..ea61327 100644 --- a/ppapi/ppapi_nacl_test_common.gypi +++ b/ppapi/ppapi_nacl_test_common.gypi @@ -110,10 +110,6 @@ 'create_nmf': '<(DEPTH)/native_client_sdk/src/tools/create_nmf.py', 'create_nmf_args_portable%': [], 'create_nonsfi_test_nmf': '<(DEPTH)/ppapi/tests/create_nonsfi_test_nmf.py', - 'create_nmf_args': [ - '--no-default-libpath', - '--objdump=>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump', - ], }, 'target_conditions': [ ['generate_nmf==1 and build_newlib==1', { @@ -125,7 +121,6 @@ 'action': [ 'python', '>(create_nmf)', - '>@(create_nmf_args)', '--output=>(nmf_newlib)', '>@(create_nmf_args_portable)', ], @@ -156,6 +151,7 @@ # doesn't work on Windows. 'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib', 'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32', + 'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump', }, 'actions': [ { @@ -168,7 +164,7 @@ 'action': [ 'python', '>@(_inputs)', - '>@(create_nmf_args)', + '--objdump=>(nacl_objdump)', '--output=>(nmf_glibc)', '--path-prefix=>(nexe_target)_libs', '--stage-dependencies=<(nacl_glibc_out_dir)', @@ -205,7 +201,6 @@ 'action': [ 'python', '>(create_nmf)', - '>@(create_nmf_args)', '--output=>(nmf_pnacl_newlib)', '>(out_pnacl_newlib)', '>@(create_nmf_args_portable)', |