| Index: native_client_sdk/src/tools/tests/create_nmf_test.py
|
| 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 03b802a3147de6f37105fcf47f4cc9b31a35fc7b..85dc0206199245553a29735d4bff443336b5f344 100755
|
| --- a/native_client_sdk/src/tools/tests/create_nmf_test.py
|
| +++ b/native_client_sdk/src/tools/tests/create_nmf_test.py
|
| @@ -29,9 +29,12 @@ import getos
|
| from mock import patch, Mock
|
|
|
| TOOLCHAIN_OUT = os.path.join(build_paths.OUT_DIR, 'sdk_tests', 'toolchain')
|
| -NACL_X86_GLIBC_TOOLCHAIN = os.path.join(TOOLCHAIN_OUT,
|
| - '%s_x86' % getos.GetPlatform(),
|
| - 'nacl_x86_glibc')
|
| +X86_GLIBC_TOOLCHAIN = os.path.join(TOOLCHAIN_OUT,
|
| + '%s_x86' % getos.GetPlatform(),
|
| + 'nacl_x86_glibc')
|
| +ARM_GLIBC_TOOLCHAIN = os.path.join(TOOLCHAIN_OUT,
|
| + '%s_x86' % getos.GetPlatform(),
|
| + 'nacl_arm_glibc')
|
|
|
| PosixRelPath = create_nmf.PosixRelPath
|
|
|
| @@ -47,9 +50,10 @@ def StripSo(name):
|
| libc.so.ad6acbfa => libc.so
|
| foo.bar.baz => foo.bar.baz
|
| """
|
| - stripped_name = '.'.join(name.split('.')[:-1])
|
| - if stripped_name.endswith('.so'):
|
| - return stripped_name
|
| + if '.' in name:
|
| + stripped_name, ext = name.rsplit('.', 1)
|
| + if stripped_name.endswith('.so') and len(ext) > 1:
|
| + return stripped_name
|
| return name
|
|
|
|
|
| @@ -103,12 +107,20 @@ class TestNmfUtils(unittest.TestCase):
|
|
|
| def setUp(self):
|
| self.tempdir = None
|
| - self.toolchain = NACL_X86_GLIBC_TOOLCHAIN
|
| - self.objdump = os.path.join(self.toolchain, 'bin', 'i686-nacl-objdump')
|
| + self.objdump = os.path.join(X86_GLIBC_TOOLCHAIN, 'bin', 'i686-nacl-objdump')
|
| if os.name == 'nt':
|
| self.objdump += '.exe'
|
| self._Mktemp()
|
|
|
| + # Create dummy elf_loader_arm.nexe by duplicating an existing so.
|
| + # This nexe is normally build during SDK build but we want these tests
|
| + # to run standalone, and the contents of the ELF are not important for
|
| + # these tests.
|
| + arm_libdir = os.path.join(ARM_GLIBC_TOOLCHAIN, 'arm-nacl', 'lib')
|
| + shutil.copy(os.path.join(arm_libdir, 'ld-nacl-arm.so.1'),
|
| + os.path.join(arm_libdir, 'elf_loader_arm.nexe'))
|
| +
|
| +
|
| def _CreateTestNexe(self, name, arch):
|
| """Create an empty test .nexe file for use in create_nmf tests.
|
|
|
| @@ -116,7 +128,12 @@ class TestNmfUtils(unittest.TestCase):
|
| checked in binaries depend on .so files that only exist in the
|
| certain SDK that build them.
|
| """
|
| - compiler = os.path.join(self.toolchain, 'bin', '%s-nacl-g++' % arch)
|
| + if arch == 'arm':
|
| + toolchain = ARM_GLIBC_TOOLCHAIN
|
| + else:
|
| + toolchain = X86_GLIBC_TOOLCHAIN
|
| +
|
| + compiler = os.path.join(toolchain, 'bin', '%s-nacl-g++' % arch)
|
| if os.name == 'nt':
|
| compiler += '.exe'
|
| os.environ['CYGWIN'] = 'nodosfilewarning'
|
| @@ -141,10 +158,11 @@ class TestNmfUtils(unittest.TestCase):
|
|
|
| def _CreateNmfUtils(self, nexes, **kwargs):
|
| if not kwargs.get('lib_path'):
|
| - # Use lib instead of lib64 (lib64 is a symlink to lib).
|
| kwargs['lib_path'] = [
|
| - os.path.join(self.toolchain, 'x86_64-nacl', 'lib'),
|
| - os.path.join(self.toolchain, 'x86_64-nacl', 'lib32')]
|
| + # Use lib instead of lib64 (lib64 is a symlink to lib).
|
| + os.path.join(X86_GLIBC_TOOLCHAIN, 'x86_64-nacl', 'lib'),
|
| + os.path.join(X86_GLIBC_TOOLCHAIN, 'x86_64-nacl', 'lib32'),
|
| + os.path.join(ARM_GLIBC_TOOLCHAIN, 'arm-nacl', 'lib')]
|
| return create_nmf.NmfUtils(nexes,
|
| objdump=self.objdump,
|
| **kwargs)
|
| @@ -197,7 +215,7 @@ class TestNmfUtils(unittest.TestCase):
|
| """
|
| arch_path = arch_path or {}
|
| nexes = []
|
| - for arch in ('x86_64', 'x86_32'):
|
| + for arch in ('x86_64', 'x86_32', 'arm'):
|
| nexe_name = 'test_dynamic_%s.nexe' % arch
|
| rel_nexe = os.path.join(arch_path.get(arch, ''), nexe_name)
|
| arch_alt = 'i686' if arch == 'x86_32' else arch
|
| @@ -285,7 +303,13 @@ class TestNmfUtils(unittest.TestCase):
|
| new_d[new_k] = new_v
|
| return new_d
|
|
|
| - self.assertEqual(StripSoCopyDict(manifest), expected)
|
| + strip_manifest = StripSoCopyDict(manifest)
|
| + self.assertEqual(strip_manifest['program'], expected['program'])
|
| + if 'files' in strip_manifest:
|
| + for key in strip_manifest['files']:
|
| + self.assertEqual(strip_manifest['files'][key], expected['files'][key])
|
| +
|
| + self.assertEqual(strip_manifest, expected)
|
|
|
| def assertStagingEquals(self, expected):
|
| """Compare the contents of the temporary directory, to an expected
|
| @@ -304,6 +328,7 @@ class TestNmfUtils(unittest.TestCase):
|
| all_files.append(path)
|
| self.assertEqual(set(expected), set(all_files))
|
|
|
| + arch_dir = {'x86_32': 'x86_32', 'x86_64': 'x86_64', 'arm': 'arm'}
|
|
|
| def testStatic(self):
|
| nmf, _ = self._CreateStatic()
|
| @@ -318,8 +343,7 @@ class TestNmfUtils(unittest.TestCase):
|
| self.assertManifestEquals(nmf, expected_manifest)
|
|
|
| def testStaticWithPath(self):
|
| - arch_dir = {'x86_32': 'x86_32', 'x86_64': 'x86_64', 'arm': 'arm'}
|
| - nmf, _ = self._CreateStatic(arch_dir, nmf_root=self.tempdir)
|
| + nmf, _ = self._CreateStatic(self.arch_dir, nmf_root=self.tempdir)
|
| expected_manifest = {
|
| 'files': {},
|
| 'program': {
|
| @@ -335,8 +359,7 @@ class TestNmfUtils(unittest.TestCase):
|
| # used to work. If there is no nmf_root given, all paths are relative to
|
| # the first nexe passed on the commandline. I believe the assumption
|
| # previously was that all .nexes would be in the same directory.
|
| - arch_dir = {'x86_32': 'x86_32', 'x86_64': 'x86_64', 'arm': 'arm'}
|
| - nmf, _ = self._CreateStatic(arch_dir)
|
| + nmf, _ = self._CreateStatic(self.arch_dir)
|
| expected_manifest = {
|
| 'files': {},
|
| 'program': {
|
| @@ -366,14 +389,25 @@ class TestNmfUtils(unittest.TestCase):
|
| 'main.nexe': {
|
| 'x86-32': {'url': 'test_dynamic_x86_32.nexe'},
|
| 'x86-64': {'url': 'test_dynamic_x86_64.nexe'},
|
| + 'arm': {'url': 'test_dynamic_arm.nexe'},
|
| + },
|
| + 'ld-nacl-arm.so.1': {
|
| + 'arm': {'url': 'libarm/ld-nacl-arm.so.1'},
|
| + },
|
| + 'libc.so.0.1': {
|
| + 'arm': {'url': 'libarm/libc.so.0.1'}
|
| },
|
| 'libc.so': {
|
| 'x86-32': {'url': 'lib32/libc.so'},
|
| 'x86-64': {'url': 'lib64/libc.so'},
|
| },
|
| - 'libgcc_s.so': {
|
| - 'x86-32': {'url': 'lib32/libgcc_s.so'},
|
| - 'x86-64': {'url': 'lib64/libgcc_s.so'},
|
| + 'libgcc_s.so.1': {
|
| + 'arm': {'url': 'libarm/libgcc_s.so.1'},
|
| + 'x86-32': {'url': 'lib32/libgcc_s.so.1'},
|
| + 'x86-64': {'url': 'lib64/libgcc_s.so.1'},
|
| + },
|
| + 'libpthread.so.0': {
|
| + 'arm': { 'url': 'libarm/libpthread.so.0'}
|
| },
|
| 'libpthread.so': {
|
| 'x86-32': {'url': 'lib32/libpthread.so'},
|
| @@ -381,6 +415,7 @@ class TestNmfUtils(unittest.TestCase):
|
| },
|
| },
|
| 'program': {
|
| + 'arm': {'url': 'libarm/elf_loader_arm.nexe'},
|
| 'x86-32': {'url': 'lib32/runnable-ld.so'},
|
| 'x86-64': {'url': 'lib64/runnable-ld.so'},
|
| }
|
| @@ -389,34 +424,50 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_staging = [os.path.basename(f) for f in nexes]
|
| expected_staging.extend([
|
| 'lib32/libc.so',
|
| - 'lib32/libgcc_s.so',
|
| + 'lib32/libgcc_s.so.1',
|
| 'lib32/libpthread.so',
|
| 'lib32/runnable-ld.so',
|
| 'lib64/libc.so',
|
| - 'lib64/libgcc_s.so',
|
| + 'lib64/libgcc_s.so.1',
|
| 'lib64/libpthread.so',
|
| - 'lib64/runnable-ld.so'])
|
| + 'lib64/runnable-ld.so',
|
| + 'libarm/elf_loader_arm.nexe',
|
| + 'libarm/libpthread.so.0',
|
| + 'libarm/ld-nacl-arm.so.1',
|
| + 'libarm/libgcc_s.so.1',
|
| + 'libarm/libc.so.0.1'
|
| + ])
|
|
|
| self.assertManifestEquals(nmf, expected_manifest)
|
| self.assertStagingEquals(expected_staging)
|
|
|
| def testDynamicWithPath(self):
|
| - arch_dir = {'x86_64': 'x86_64', 'x86_32': 'x86_32'}
|
| - nmf, nexes = self._CreateDynamicAndStageDeps(arch_dir,
|
| + nmf, nexes = self._CreateDynamicAndStageDeps(self.arch_dir,
|
| nmf_root=self.tempdir)
|
| expected_manifest = {
|
| 'files': {
|
| 'main.nexe': {
|
| + 'arm': {'url': 'arm/test_dynamic_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/test_dynamic_x86_32.nexe'},
|
| 'x86-64': {'url': 'x86_64/test_dynamic_x86_64.nexe'},
|
| },
|
| + 'libc.so.0.1': {
|
| + 'arm': {'url': 'arm/libarm/libc.so.0.1'}
|
| + },
|
| + 'ld-nacl-arm.so.1': {
|
| + 'arm': {'url': 'arm/libarm/ld-nacl-arm.so.1'},
|
| + },
|
| 'libc.so': {
|
| 'x86-32': {'url': 'x86_32/lib32/libc.so'},
|
| 'x86-64': {'url': 'x86_64/lib64/libc.so'},
|
| },
|
| - 'libgcc_s.so': {
|
| - 'x86-32': {'url': 'x86_32/lib32/libgcc_s.so'},
|
| - 'x86-64': {'url': 'x86_64/lib64/libgcc_s.so'},
|
| + 'libgcc_s.so.1': {
|
| + 'arm': {'url': 'arm/libarm/libgcc_s.so.1'},
|
| + 'x86-32': {'url': 'x86_32/lib32/libgcc_s.so.1'},
|
| + 'x86-64': {'url': 'x86_64/lib64/libgcc_s.so.1'},
|
| + },
|
| + 'libpthread.so.0': {
|
| + 'arm': { 'url': 'arm/libarm/libpthread.so.0'}
|
| },
|
| 'libpthread.so': {
|
| 'x86-32': {'url': 'x86_32/lib32/libpthread.so'},
|
| @@ -424,6 +475,7 @@ class TestNmfUtils(unittest.TestCase):
|
| },
|
| },
|
| 'program': {
|
| + 'arm': {'url': 'arm/libarm/elf_loader_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/lib32/runnable-ld.so'},
|
| 'x86-64': {'url': 'x86_64/lib64/runnable-ld.so'},
|
| }
|
| @@ -432,37 +484,53 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_staging = [PosixRelPath(f, self.tempdir) for f in nexes]
|
| expected_staging.extend([
|
| 'x86_32/lib32/libc.so',
|
| - 'x86_32/lib32/libgcc_s.so',
|
| + 'x86_32/lib32/libgcc_s.so.1',
|
| 'x86_32/lib32/libpthread.so',
|
| 'x86_32/lib32/runnable-ld.so',
|
| 'x86_64/lib64/libc.so',
|
| - 'x86_64/lib64/libgcc_s.so',
|
| + 'x86_64/lib64/libgcc_s.so.1',
|
| 'x86_64/lib64/libpthread.so',
|
| - 'x86_64/lib64/runnable-ld.so'])
|
| + 'x86_64/lib64/runnable-ld.so',
|
| + 'arm/libarm/elf_loader_arm.nexe',
|
| + 'arm/libarm/libpthread.so.0',
|
| + 'arm/libarm/ld-nacl-arm.so.1',
|
| + 'arm/libarm/libgcc_s.so.1',
|
| + 'arm/libarm/libc.so.0.1'
|
| + ])
|
|
|
| self.assertManifestEquals(nmf, expected_manifest)
|
| self.assertStagingEquals(expected_staging)
|
|
|
| def testDynamicWithRelPath(self):
|
| """Test that when the nmf root is a relative path that things work."""
|
| - arch_dir = {'x86_64': 'x86_64', 'x86_32': 'x86_32'}
|
| old_path = os.getcwd()
|
| try:
|
| os.chdir(self.tempdir)
|
| - nmf, nexes = self._CreateDynamicAndStageDeps(arch_dir, nmf_root='')
|
| + nmf, nexes = self._CreateDynamicAndStageDeps(self.arch_dir, nmf_root='')
|
| expected_manifest = {
|
| 'files': {
|
| 'main.nexe': {
|
| + 'arm': {'url': 'arm/test_dynamic_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/test_dynamic_x86_32.nexe'},
|
| 'x86-64': {'url': 'x86_64/test_dynamic_x86_64.nexe'},
|
| },
|
| + 'ld-nacl-arm.so.1': {
|
| + 'arm': {'url': 'arm/libarm/ld-nacl-arm.so.1'},
|
| + },
|
| + 'libc.so.0.1': {
|
| + 'arm': {'url': 'arm/libarm/libc.so.0.1'}
|
| + },
|
| 'libc.so': {
|
| 'x86-32': {'url': 'x86_32/lib32/libc.so'},
|
| 'x86-64': {'url': 'x86_64/lib64/libc.so'},
|
| },
|
| - 'libgcc_s.so': {
|
| - 'x86-32': {'url': 'x86_32/lib32/libgcc_s.so'},
|
| - 'x86-64': {'url': 'x86_64/lib64/libgcc_s.so'},
|
| + 'libgcc_s.so.1': {
|
| + 'arm': {'url': 'arm/libarm/libgcc_s.so.1'},
|
| + 'x86-32': {'url': 'x86_32/lib32/libgcc_s.so.1'},
|
| + 'x86-64': {'url': 'x86_64/lib64/libgcc_s.so.1'},
|
| + },
|
| + 'libpthread.so.0': {
|
| + 'arm': { 'url': 'arm/libarm/libpthread.so.0'}
|
| },
|
| 'libpthread.so': {
|
| 'x86-32': {'url': 'x86_32/lib32/libpthread.so'},
|
| @@ -470,6 +538,7 @@ class TestNmfUtils(unittest.TestCase):
|
| },
|
| },
|
| 'program': {
|
| + 'arm': {'url': 'arm/libarm/elf_loader_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/lib32/runnable-ld.so'},
|
| 'x86-64': {'url': 'x86_64/lib64/runnable-ld.so'},
|
| }
|
| @@ -478,13 +547,19 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_staging = [PosixRelPath(f, self.tempdir) for f in nexes]
|
| expected_staging.extend([
|
| 'x86_32/lib32/libc.so',
|
| - 'x86_32/lib32/libgcc_s.so',
|
| + 'x86_32/lib32/libgcc_s.so.1',
|
| 'x86_32/lib32/libpthread.so',
|
| 'x86_32/lib32/runnable-ld.so',
|
| 'x86_64/lib64/libc.so',
|
| - 'x86_64/lib64/libgcc_s.so',
|
| + 'x86_64/lib64/libgcc_s.so.1',
|
| 'x86_64/lib64/libpthread.so',
|
| - 'x86_64/lib64/runnable-ld.so'])
|
| + 'x86_64/lib64/runnable-ld.so',
|
| + 'arm/libarm/elf_loader_arm.nexe',
|
| + 'arm/libarm/libpthread.so.0',
|
| + 'arm/libarm/ld-nacl-arm.so.1',
|
| + 'arm/libarm/libgcc_s.so.1',
|
| + 'arm/libarm/libc.so.0.1'
|
| + ])
|
|
|
| self.assertManifestEquals(nmf, expected_manifest)
|
| self.assertStagingEquals(expected_staging)
|
| @@ -492,23 +567,33 @@ class TestNmfUtils(unittest.TestCase):
|
| os.chdir(old_path)
|
|
|
| def testDynamicWithPathNoArchPrefix(self):
|
| - arch_dir = {'x86_64': 'x86_64', 'x86_32': 'x86_32'}
|
| - nmf, nexes = self._CreateDynamicAndStageDeps(arch_dir,
|
| + nmf, nexes = self._CreateDynamicAndStageDeps(self.arch_dir,
|
| nmf_root=self.tempdir,
|
| no_arch_prefix=True)
|
| expected_manifest = {
|
| 'files': {
|
| 'main.nexe': {
|
| + 'arm': {'url': 'arm/test_dynamic_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/test_dynamic_x86_32.nexe'},
|
| 'x86-64': {'url': 'x86_64/test_dynamic_x86_64.nexe'},
|
| },
|
| + 'ld-nacl-arm.so.1': {
|
| + 'arm': {'url': 'arm/ld-nacl-arm.so.1'},
|
| + },
|
| + 'libc.so.0.1': {
|
| + 'arm': {'url': 'arm/libc.so.0.1'}
|
| + },
|
| 'libc.so': {
|
| 'x86-32': {'url': 'x86_32/libc.so'},
|
| 'x86-64': {'url': 'x86_64/libc.so'},
|
| },
|
| - 'libgcc_s.so': {
|
| - 'x86-32': {'url': 'x86_32/libgcc_s.so'},
|
| - 'x86-64': {'url': 'x86_64/libgcc_s.so'},
|
| + 'libgcc_s.so.1': {
|
| + 'arm': {'url': 'arm/libgcc_s.so.1'},
|
| + 'x86-32': {'url': 'x86_32/libgcc_s.so.1'},
|
| + 'x86-64': {'url': 'x86_64/libgcc_s.so.1'},
|
| + },
|
| + 'libpthread.so.0': {
|
| + 'arm': { 'url': 'arm/libpthread.so.0'}
|
| },
|
| 'libpthread.so': {
|
| 'x86-32': {'url': 'x86_32/libpthread.so'},
|
| @@ -516,6 +601,7 @@ class TestNmfUtils(unittest.TestCase):
|
| },
|
| },
|
| 'program': {
|
| + 'arm': {'url': 'arm/elf_loader_arm.nexe'},
|
| 'x86-32': {'url': 'x86_32/runnable-ld.so'},
|
| 'x86-64': {'url': 'x86_64/runnable-ld.so'},
|
| }
|
| @@ -524,13 +610,19 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_staging = [PosixRelPath(f, self.tempdir) for f in nexes]
|
| expected_staging.extend([
|
| 'x86_32/libc.so',
|
| - 'x86_32/libgcc_s.so',
|
| + 'x86_32/libgcc_s.so.1',
|
| 'x86_32/libpthread.so',
|
| 'x86_32/runnable-ld.so',
|
| 'x86_64/libc.so',
|
| - 'x86_64/libgcc_s.so',
|
| + 'x86_64/libgcc_s.so.1',
|
| 'x86_64/libpthread.so',
|
| - 'x86_64/runnable-ld.so'])
|
| + 'x86_64/runnable-ld.so',
|
| + 'arm/elf_loader_arm.nexe',
|
| + 'arm/libpthread.so.0',
|
| + 'arm/ld-nacl-arm.so.1',
|
| + 'arm/libgcc_s.so.1',
|
| + 'arm/libc.so.0.1'
|
| + ])
|
|
|
| self.assertManifestEquals(nmf, expected_manifest)
|
| self.assertStagingEquals(expected_staging)
|
| @@ -540,16 +632,27 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_manifest = {
|
| 'files': {
|
| 'main.nexe': {
|
| + 'arm': {'url': 'test_dynamic_arm.nexe'},
|
| 'x86-32': {'url': 'test_dynamic_x86_32.nexe'},
|
| 'x86-64': {'url': 'test_dynamic_x86_64.nexe'},
|
| },
|
| + 'ld-nacl-arm.so.1': {
|
| + 'arm': {'url': 'foo/libarm/ld-nacl-arm.so.1'},
|
| + },
|
| + 'libc.so.0.1': {
|
| + 'arm': {'url': 'foo/libarm/libc.so.0.1'}
|
| + },
|
| 'libc.so': {
|
| 'x86-32': {'url': 'foo/lib32/libc.so'},
|
| 'x86-64': {'url': 'foo/lib64/libc.so'},
|
| },
|
| - 'libgcc_s.so': {
|
| - 'x86-32': {'url': 'foo/lib32/libgcc_s.so'},
|
| - 'x86-64': {'url': 'foo/lib64/libgcc_s.so'},
|
| + 'libgcc_s.so.1': {
|
| + 'arm': {'url': 'foo/libarm/libgcc_s.so.1'},
|
| + 'x86-32': {'url': 'foo/lib32/libgcc_s.so.1'},
|
| + 'x86-64': {'url': 'foo/lib64/libgcc_s.so.1'},
|
| + },
|
| + 'libpthread.so.0': {
|
| + 'arm': { 'url': 'foo/libarm/libpthread.so.0'}
|
| },
|
| 'libpthread.so': {
|
| 'x86-32': {'url': 'foo/lib32/libpthread.so'},
|
| @@ -557,6 +660,7 @@ class TestNmfUtils(unittest.TestCase):
|
| },
|
| },
|
| 'program': {
|
| + 'arm': {'url': 'foo/libarm/elf_loader_arm.nexe'},
|
| 'x86-32': {'url': 'foo/lib32/runnable-ld.so'},
|
| 'x86-64': {'url': 'foo/lib64/runnable-ld.so'},
|
| }
|
| @@ -565,13 +669,19 @@ class TestNmfUtils(unittest.TestCase):
|
| expected_staging = [PosixRelPath(f, self.tempdir) for f in nexes]
|
| expected_staging.extend([
|
| 'foo/lib32/libc.so',
|
| - 'foo/lib32/libgcc_s.so',
|
| + 'foo/lib32/libgcc_s.so.1',
|
| 'foo/lib32/libpthread.so',
|
| 'foo/lib32/runnable-ld.so',
|
| 'foo/lib64/libc.so',
|
| - 'foo/lib64/libgcc_s.so',
|
| + 'foo/lib64/libgcc_s.so.1',
|
| 'foo/lib64/libpthread.so',
|
| - 'foo/lib64/runnable-ld.so'])
|
| + 'foo/lib64/runnable-ld.so',
|
| + 'foo/libarm/elf_loader_arm.nexe',
|
| + 'foo/libarm/libpthread.so.0',
|
| + 'foo/libarm/ld-nacl-arm.so.1',
|
| + 'foo/libarm/libgcc_s.so.1',
|
| + 'foo/libarm/libc.so.0.1'
|
| + ])
|
|
|
| self.assertManifestEquals(nmf, expected_manifest)
|
| self.assertStagingEquals(expected_staging)
|
|
|