electron/script/create-dist.py

104 lines
2.4 KiB
Python
Raw Normal View History

#!/usr/bin/env python
import errno
import glob
import os
import shutil
import subprocess
import sys
from lib.util import *
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
DIST_DIR = os.path.join(SOURCE_ROOT, 'dist')
2013-08-12 07:00:50 +00:00
NODE_DIR = os.path.join(SOURCE_ROOT, 'vendor', 'node')
DIST_HEADERS_DIR = os.path.join(DIST_DIR, 'node-{0}'.format(get_atom_shell_version()))
BUNDLE_NAME = 'Atom.app'
BUNDLE_DIR = os.path.join(SOURCE_ROOT, 'out', 'Release', BUNDLE_NAME)
2013-08-12 07:00:50 +00:00
HEADERS_SUFFIX = [
'.h',
'.gypi',
]
HEADERS_DIRS = [
'src',
'deps/http_parser',
'deps/v8',
'deps/zlib',
'deps/uv',
]
HEADERS_FILES = [
'common.gypi',
'config.gypi',
2013-08-12 07:00:50 +00:00
]
def main():
rm_rf(DIST_DIR)
os.makedirs(DIST_DIR)
force_build()
copy_binaries()
2013-08-12 07:00:50 +00:00
copy_headers()
copy_license()
create_version()
create_zip()
def force_build():
build = os.path.join(SOURCE_ROOT, 'script', 'build.py')
subprocess.check_call([sys.executable, build, '-c', 'Release']);
def copy_binaries():
shutil.copytree(BUNDLE_DIR, os.path.join(DIST_DIR, BUNDLE_NAME),
symlinks=True)
2013-08-12 07:00:50 +00:00
def copy_headers():
os.mkdir(DIST_HEADERS_DIR)
for include_path in HEADERS_DIRS:
abs_path = os.path.join(NODE_DIR, include_path)
for dirpath, dirnames, filenames in os.walk(abs_path):
for filename in filenames:
extension = os.path.splitext(filename)[1]
if extension not in HEADERS_SUFFIX:
continue
copy_source_file(os.path.join(dirpath, filename))
for other_file in HEADERS_FILES:
copy_source_file(os.path.join(NODE_DIR, other_file))
2013-08-12 07:00:50 +00:00
def copy_license():
license = os.path.join(SOURCE_ROOT, 'LICENSE')
shutil.copy2(license, DIST_DIR)
def create_version():
version_path = os.path.join(SOURCE_ROOT, 'dist', 'version')
with open(version_path, 'w') as version_file:
2013-08-12 07:00:50 +00:00
version_file.write(get_atom_shell_version())
def create_zip():
print "Zipping distribution..."
zip_file = os.path.join(SOURCE_ROOT, 'dist', 'atom-shell.zip')
safe_unlink(zip_file)
with scoped_cwd(DIST_DIR):
2013-08-08 09:13:45 +00:00
files = ['Atom.app', 'LICENSE', 'version']
subprocess.check_call(['zip', '-r', '-y', zip_file] + files)
2013-08-12 07:00:50 +00:00
def copy_source_file(source):
relative = os.path.relpath(source, start=NODE_DIR)
destination = os.path.join(DIST_HEADERS_DIR, relative)
safe_mkdir(os.path.dirname(destination))
shutil.copy2(source, destination)
if __name__ == '__main__':
sys.exit(main())