diff options
Diffstat (limited to 'native_client_sdk')
-rwxr-xr-x | native_client_sdk/src/build_tools/build_sdk.py | 55 | ||||
-rw-r--r-- | native_client_sdk/src/build_tools/buildbot_common.py | 6 | ||||
-rw-r--r-- | native_client_sdk/src/tools/getos.py | 151 | ||||
-rw-r--r-- | native_client_sdk/src/tools/oshelpers.py | 2 |
4 files changed, 199 insertions, 15 deletions
diff --git a/native_client_sdk/src/build_tools/build_sdk.py b/native_client_sdk/src/build_tools/build_sdk.py index de10e69..f781fcb 100755 --- a/native_client_sdk/src/build_tools/build_sdk.py +++ b/native_client_sdk/src/build_tools/build_sdk.py @@ -19,6 +19,7 @@ and whether it should upload an SDK to file storage (GSTORE) import optparse import os import sys +import zipfile # local includes import buildbot_common @@ -185,7 +186,7 @@ def InstallHeaders(tc_dst_inc, pepper_ver, tc_name): src = os.path.join(NACL_DIR, tc_map[filename]) dst = os.path.join(tc_dst_inc, filename) buildbot_common.MakeDir(os.path.dirname(dst)) - oshelpers.Copy(['-v', src, dst]) + buildbot_common.CopyFile(src, dst) # Clean out per toolchain ppapi directory ppapi = os.path.join(tc_dst_inc, 'ppapi') @@ -340,6 +341,7 @@ def BuildToolchains(pepperdir, platform, arch, pepper_ver, toolchains): EXAMPLE_MAP = { 'newlib': [ + 'debugging', 'fullscreen_tumbler', 'gamepad', 'geturl', @@ -393,17 +395,50 @@ def CopyExamples(pepperdir, toolchains): def BuildUpdater(): buildbot_common.BuildStep('Create Updater') - tooldir = os.path.join(SRC_DIR, 'out', 'sdk_tools') + + naclsdkdir = os.path.join(OUT_DIR, 'nacl_sdk') + tooldir = os.path.join(naclsdkdir, 'sdk_tools') + cachedir = os.path.join(naclsdkdir, 'sdk_cache') + buildtoolsdir = os.path.join(SDK_SRC_DIR, 'build_tools') + + # Build SDK directory + buildbot_common.RemoveDir(naclsdkdir) + buildbot_common.MakeDir(naclsdkdir) + buildbot_common.MakeDir(tooldir) + buildbot_common.MakeDir(cachedir) + + # Copy launch scripts + buildbot_common.CopyFile(os.path.join(buildtoolsdir, 'naclsdk'), naclsdkdir) + buildbot_common.CopyFile(os.path.join(buildtoolsdir, 'naclsdk.bat'), + naclsdkdir) + + # Copy base manifest + json = os.path.join(buildtoolsdir, 'json', 'naclsdk_manifest0.json') + buildbot_common.CopyFile(json, + os.path.join(cachedir, 'naclsdk_manifest2.json')) + + # Copy SDK tools sdkupdate = os.path.join(SDK_SRC_DIR, 'build_tools', 'sdk_tools', 'sdk_update.py') license = os.path.join(SDK_SRC_DIR, 'LICENSE') - buildbot_common.RemoveDir(tooldir) - buildbot_common.MakeDir(tooldir) + buildbot_common.CopyFile(sdkupdate, tooldir) + buildbot_common.CopyFile(license, tooldir) + buildbot_common.CopyFile(CYGTAR, tooldir) + + buildbot_common.RemoveFile(os.path.join(OUT_DIR, 'nacl_sdk.zip')) + buildbot_common.Run(['zip', '-r', 'nacl_sdk.zip', + 'nacl_sdk/naclsdk', + 'nacl_sdk/naclsdk.bat', + 'nacl_sdk/sdk_tools/LICENSE', + 'nacl_sdk/sdk_tools/cygtar.py', + 'nacl_sdk/sdk_tools/sdk_update.py', + 'nacl_sdk/sdk_cache/naclsdk_manifest2.json'], + cwd=OUT_DIR) args = ['-v', sdkupdate, license, CYGTAR, tooldir] - oshelpers.Copy(args) - tarname = 'sdk_tools.tgz' - tarfile = os.path.join(OUT_DIR, tarname) - buildbot_common.Run([sys.executable, CYGTAR, '-C', tooldir, '-czf', tarfile, + tarname = os.path.join(OUT_DIR, 'sdk_tools.tgz') + + buildbot_common.RemoveFile(tarname) + buildbot_common.Run([sys.executable, CYGTAR, '-C', tooldir, '-czf', tarname, 'sdk_update.py', 'LICENSE', 'cygtar.py'], cwd=NACL_DIR) sys.stdout.write('\n') @@ -521,8 +556,8 @@ def main(args): cwd=os.path.abspath(dirnode), shell=True) # Build SDK Tools -# if not skip_update: -# BuildUpdater() + if not skip_update: + BuildUpdater() return 0 diff --git a/native_client_sdk/src/build_tools/buildbot_common.py b/native_client_sdk/src/build_tools/buildbot_common.py index c30a1a1..3c37ed9 100644 --- a/native_client_sdk/src/build_tools/buildbot_common.py +++ b/native_client_sdk/src/build_tools/buildbot_common.py @@ -56,6 +56,12 @@ def CopyDir(src, dst, excludes=['.svn', '*/.svn']): oshelpers.Copy(args) +def CopyFile(src, dst): + print 'cp -r %s %s' % (src, dst) + args = [src, dst] + oshelpers.Copy(args) + + def RemoveDir(dst): """Remove the provided path.""" print 'rm -fr ' + dst diff --git a/native_client_sdk/src/tools/getos.py b/native_client_sdk/src/tools/getos.py index f41bb47..b16870d 100644 --- a/native_client_sdk/src/tools/getos.py +++ b/native_client_sdk/src/tools/getos.py @@ -10,8 +10,26 @@ Determine the name of the platform used to determine the correct Toolchain to invoke. """ +import optparse +import os +import re +import subprocess import sys + +TOOL_PATH=os.path.dirname(os.path.abspath(__file__)) + + +def ErrOut(text): + sys.stderr.write(text + '\n') + sys.exit(1) + + + +def GetSDKPath(): + return os.getenv('NACL_SDK_ROOT', os.path.dirname(TOOL_PATH)) + + def GetPlatform(): if sys.platform.startswith('cygwin') or sys.platform.startswith('win'): return 'win' @@ -23,12 +41,137 @@ def GetPlatform(): return 'linux' return None -if __name__ == '__main__': + +def UseWin64(): + arch32 = os.environ.get('PROCESSOR_ARCHITECTURE', 'unk') + arch64 = os.environ.get('PROCESSOR_ARCHITEW6432', 'unk') + + if arch32 == 'AMD64' or arch64 == 'AMD64': + return True + return False + + +def GetSystemArch(platform): + if platform == 'win': + if UseWin64(): + return 'x86_64' + return 'x86_32' + + if platform in ['mac', 'linux']: + try: + pobj = subprocess.Popen(['uname', '-m'],stdout= subprocess.PIPE) + arch, serr = pobj.communicate() + arch = arch.split()[0] + except: + arch = None + return arch + + +def GetChromeArch(platform): + if platform == 'win': + if UseWin64(): + return 'x86_64' + return 'x86_32' + + if platform in ['mac', 'linux']: + chrome_path = os.getenv('CHROME_PATH', None) + if not chrome_path: + ErrOut('CHROME_PATH is undefined.') + + try: + pobj = subprocess.Popen(['objdump', '-f', chrome_path], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + arch, serr = pobj.communicate() + format = re.compile(r'(file format) ([a-zA-Z0-9_\-]+)') + arch = format.search(arch).group(2) + if '64' in arch: + return 'x86_64' + return 'x86_32' + except: + print "FAILED" + arch = None + return arch + + +def GetLoaderPath(platform): + sdk_path = GetSDKPath() + arch = GetChromeArch(platform) + return os.path.join(sdk_path, 'tools', 'sel_ldr_' + arch) + + +def GetHelperPath(platform): + sdk_path = GetSDKPath() + if platform != 'linux': + return '' + arch = GetChromeArch(platform) + return os.path.join(sdk_path, 'tools', 'nacl_helper_bootstrap_' + arch) + + +def GetIrtBinPath(platform): + sdk_path = GetSDKPath() + arch = GetChromeArch(platform) + return os.path.join(sdk_path, 'tools', 'irt_%s.nexe' % arch) + + +def GetPluginPath(platform): + sdk_path = GetSDKPath() + arch = GetChromeArch(platform) + if platform == 'win': + return os.path.join(sdk_path, 'tools', 'ppNaClPlugin_x86_32.dll') + else: + return os.path.join(sdk_path, 'tools', 'ppNaClPlugin_%s.so' % arch) + + +def main(args): + parser = optparse.OptionParser() + parser.add_option('--arch', help='Return architecture type.', + action='store_true', dest='arch', default=False) + parser.add_option('--chrome', help='Return chrome architecture type.', + action='store_true', dest='chrome', default=False) + parser.add_option('--helper', help='Return chrome helper path.', + action='store_true', dest='helper', default=False) + parser.add_option('--irtbin', help='Return irt binary path.', + action='store_true', dest='irtbin', default=False) + parser.add_option('--loader', help='Return NEXE loader path.', + action='store_true', dest='loader', default=False) + parser.add_option('--plugin', help='Return NaCl plugin path.', + action='store_true', dest='plugin', default=False) + + options, _ = parser.parse_args(args[1:]) + platform = GetPlatform() if platform is None: print 'Unknown platform.' - sys.exit(1) + return 1 + + if len(args) > 2: + print 'Only specify one platform item.' + return 1 - print platform - sys.exit(0) + if len(args) == 1: + print platform + return 0 + if len(args) == 2: + if options.arch: + out = GetSystemArch(platform) + if options.chrome: + out = GetChromeArch(platform) + if options.helper: + out = GetHelperPath(platform) + if options.irtbin: + out = GetIrtBinPath(platform) + if options.loader: + out = GetLoaderPath(platform) + if options.plugin: + out = GetPluginPath(platform) + print out + return 0 + + print 'Failed with args: ' + ' '.join(args) + return 1 + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/native_client_sdk/src/tools/oshelpers.py b/native_client_sdk/src/tools/oshelpers.py index 93648a9..9e878d3 100644 --- a/native_client_sdk/src/tools/oshelpers.py +++ b/native_client_sdk/src/tools/oshelpers.py @@ -69,7 +69,7 @@ def CopyPath(options, src, dst): os.remove(dst) # Now copy to the non-existent fully qualified target - shutil.copyfile(src, dst) + shutil.copy(src, dst) return # Otherwise it's a directory, ignore it unless allowed |