summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrouslan <rouslan@chromium.org>2015-01-30 11:36:42 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-30 19:37:26 +0000
commit243315bb066856bcadc20b3118ec623d96187edd (patch)
tree7a334fa272d8591d4c52ddbce7cbd9898010d01d
parentc3ab543bc538dbb1c8ac4d0b212d06db03cb4b48 (diff)
downloadchromium_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-xnative_client_sdk/src/tools/create_nmf.py33
-rwxr-xr-xnative_client_sdk/src/tools/tests/create_nmf_test.py26
-rw-r--r--ppapi/ppapi_nacl.gyp10
-rw-r--r--ppapi/ppapi_nacl_test_common.gypi9
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)',