Merge pull request #11208 from electron/mips64el
Add support for mips64el
This commit is contained in:
commit
f8adaed763
17 changed files with 207 additions and 46 deletions
|
@ -7,10 +7,11 @@ import re
|
|||
import subprocess
|
||||
import sys
|
||||
|
||||
from lib.config import BASE_URL, PLATFORM, enable_verbose_mode, \
|
||||
from lib.config import BASE_URL, PLATFORM, MIPS64EL_SYSROOT_URL, \
|
||||
MIPS64EL_GCC, MIPS64EL_GCC_URL, enable_verbose_mode, \
|
||||
is_verbose_mode, get_target_arch
|
||||
from lib.util import execute, execute_stdout, get_electron_version, \
|
||||
scoped_cwd, update_node_modules
|
||||
scoped_cwd, download, update_node_modules
|
||||
|
||||
|
||||
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
||||
|
@ -18,7 +19,6 @@ VENDOR_DIR = os.path.join(SOURCE_ROOT, 'vendor')
|
|||
DOWNLOAD_DIR = os.path.join(VENDOR_DIR, 'download')
|
||||
PYTHON_26_URL = 'https://chromium.googlesource.com/chromium/deps/python_26'
|
||||
|
||||
|
||||
def main():
|
||||
os.chdir(SOURCE_ROOT)
|
||||
|
||||
|
@ -37,6 +37,9 @@ def main():
|
|||
libcc_shared_library_path = args.libcc_shared_library_path
|
||||
libcc_static_library_path = args.libcc_static_library_path
|
||||
|
||||
if args.target_arch == 'mips64el':
|
||||
download_mips64el_toolchain()
|
||||
|
||||
# Redirect to use local libchromiumcontent build.
|
||||
if args.build_release_libcc or args.build_debug_libcc:
|
||||
build_libchromiumcontent(args.verbose, args.target_arch, defines,
|
||||
|
@ -57,7 +60,7 @@ def main():
|
|||
libcc_source_path, libcc_shared_library_path,
|
||||
libcc_static_library_path)
|
||||
|
||||
if PLATFORM == 'linux':
|
||||
if PLATFORM == 'linux' and args.target_arch != 'mips64el':
|
||||
download_sysroot(args.target_arch)
|
||||
|
||||
create_chrome_version_h()
|
||||
|
@ -144,8 +147,8 @@ def setup_libchromiumcontent(is_dev, target_arch, url,
|
|||
libcc_shared_library_path,
|
||||
libcc_static_library_path):
|
||||
target_dir = os.path.join(DOWNLOAD_DIR, 'libchromiumcontent')
|
||||
download = os.path.join(VENDOR_DIR, 'libchromiumcontent', 'script',
|
||||
'download')
|
||||
script = os.path.join(VENDOR_DIR, 'libchromiumcontent', 'script',
|
||||
'download')
|
||||
args = ['-f', '-c', get_libchromiumcontent_commit(), '--target_arch',
|
||||
target_arch, url, target_dir]
|
||||
if (libcc_source_path != None and
|
||||
|
@ -158,9 +161,9 @@ def setup_libchromiumcontent(is_dev, target_arch, url,
|
|||
else:
|
||||
mkdir_p(DOWNLOAD_DIR)
|
||||
if is_dev:
|
||||
subprocess.check_call([sys.executable, download] + args)
|
||||
subprocess.check_call([sys.executable, script] + args)
|
||||
else:
|
||||
subprocess.check_call([sys.executable, download, '-s'] + args)
|
||||
subprocess.check_call([sys.executable, script, '-s'] + args)
|
||||
|
||||
|
||||
def update_win32_python():
|
||||
|
@ -198,6 +201,24 @@ def download_sysroot(target_arch):
|
|||
'--arch', target_arch],
|
||||
cwd=VENDOR_DIR)
|
||||
|
||||
|
||||
def download_mips64el_toolchain():
|
||||
# Download sysroot image.
|
||||
if not os.path.exists(os.path.join(VENDOR_DIR,
|
||||
'debian_jessie_mips64-sysroot')):
|
||||
tar_name = 'debian_jessie_mips64-sysroot.tar.bz2'
|
||||
download(tar_name, MIPS64EL_SYSROOT_URL,
|
||||
os.path.join(SOURCE_ROOT, tar_name))
|
||||
subprocess.call(['tar', '-jxf', tar_name, '-C', VENDOR_DIR])
|
||||
os.remove(tar_name)
|
||||
# Download toolchain.
|
||||
if not os.path.exists(os.path.join(VENDOR_DIR, MIPS64EL_GCC)):
|
||||
tar_name = MIPS64EL_GCC + '.tar.gz'
|
||||
download(tar_name, MIPS64EL_GCC_URL, os.path.join(SOURCE_ROOT, tar_name))
|
||||
subprocess.check_call(['tar', '-xf', tar_name, '-C', VENDOR_DIR])
|
||||
os.remove(tar_name)
|
||||
|
||||
|
||||
def create_chrome_version_h():
|
||||
version_file = os.path.join(VENDOR_DIR, 'libchromiumcontent', 'VERSION')
|
||||
target_file = os.path.join(SOURCE_ROOT, 'atom', 'common', 'chrome_version.h')
|
||||
|
|
|
@ -5,12 +5,13 @@ import os
|
|||
import subprocess
|
||||
import sys
|
||||
|
||||
from lib.config import get_target_arch
|
||||
from lib.config import MIPS64EL_GCC, get_target_arch, build_env
|
||||
from lib.util import electron_gyp, import_vs_env
|
||||
|
||||
|
||||
CONFIGURATIONS = ['Release', 'Debug']
|
||||
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
||||
VENDOR_DIR = os.path.join(SOURCE_ROOT, 'vendor')
|
||||
LIBCC_SOURCE_ROOT = os.path.join(SOURCE_ROOT, 'vendor', 'libchromiumcontent')
|
||||
LIBCC_DIST_MAIN = os.path.join(LIBCC_SOURCE_ROOT, 'dist', 'main')
|
||||
GCLIENT_DONE = os.path.join(SOURCE_ROOT, '.gclient_done')
|
||||
|
@ -40,9 +41,10 @@ def main():
|
|||
get_target_arch()])
|
||||
subprocess.check_call([ninja, '-C', LIBCC_DIST_MAIN])
|
||||
|
||||
env = build_env()
|
||||
for config in args.configuration:
|
||||
build_path = os.path.join('out', config[0])
|
||||
ret = subprocess.call([ninja, '-C', build_path, args.target])
|
||||
ret = subprocess.call([ninja, '-C', build_path, args.target], env=env)
|
||||
if ret != 0:
|
||||
sys.exit(ret)
|
||||
|
||||
|
|
|
@ -4,10 +4,11 @@ const buildAppVeyorURL = 'https://windows-ci.electronjs.org/api/builds'
|
|||
const jenkinsServer = 'https://mac-ci.electronjs.org'
|
||||
|
||||
const circleCIJobs = [
|
||||
'electron-linux-arm',
|
||||
'electron-linux-arm64',
|
||||
'electron-linux-ia32',
|
||||
'electron-linux-x64',
|
||||
'electron-linux-arm'
|
||||
'electron-linux-mips64el',
|
||||
'electron-linux-x64'
|
||||
]
|
||||
|
||||
const jenkinsJobs = [
|
||||
|
|
|
@ -12,7 +12,7 @@ if sys.platform == "win32":
|
|||
import _winreg
|
||||
|
||||
from lib.config import BASE_URL, PLATFORM, enable_verbose_mode, \
|
||||
get_target_arch, get_zip_name
|
||||
get_target_arch, get_zip_name, build_env
|
||||
from lib.util import scoped_cwd, rm_rf, get_electron_version, make_zip, \
|
||||
execute, electron_gyp
|
||||
|
||||
|
@ -210,13 +210,15 @@ def strip_binaries():
|
|||
|
||||
|
||||
def strip_binary(binary_path):
|
||||
if get_target_arch() == 'arm':
|
||||
strip = 'arm-linux-gnueabihf-strip'
|
||||
elif get_target_arch() == 'arm64':
|
||||
strip = 'aarch64-linux-gnu-strip'
|
||||
else:
|
||||
strip = 'strip'
|
||||
execute([strip, binary_path])
|
||||
if get_target_arch() == 'arm':
|
||||
strip = 'arm-linux-gnueabihf-strip'
|
||||
elif get_target_arch() == 'arm64':
|
||||
strip = 'aarch64-linux-gnu-strip'
|
||||
elif get_target_arch() == 'mips64el':
|
||||
strip = 'mips64el-redhat-linux-strip'
|
||||
else:
|
||||
strip = 'strip'
|
||||
execute([strip, binary_path], env=build_env())
|
||||
|
||||
|
||||
def create_version():
|
||||
|
@ -226,6 +228,9 @@ def create_version():
|
|||
|
||||
|
||||
def create_symbols():
|
||||
if get_target_arch() == 'mips64el':
|
||||
return
|
||||
|
||||
destination = os.path.join(DIST_DIR, '{0}.breakpad.syms'.format(PROJECT_NAME))
|
||||
dump_symbols = os.path.join(SOURCE_ROOT, 'script', 'dump-symbols.py')
|
||||
execute([sys.executable, dump_symbols, destination])
|
||||
|
@ -286,6 +291,9 @@ def create_ffmpeg_zip():
|
|||
|
||||
|
||||
def create_symbols_zip():
|
||||
if get_target_arch() == 'mips64el':
|
||||
return
|
||||
|
||||
dist_name = get_zip_name(PROJECT_NAME, ELECTRON_VERSION, 'symbols')
|
||||
zip_file = os.path.join(DIST_DIR, dist_name)
|
||||
licenses = ['LICENSE', 'LICENSES.chromium.html', 'version']
|
||||
|
|
|
@ -5,6 +5,11 @@ import os
|
|||
import platform
|
||||
import sys
|
||||
|
||||
# URL to the mips64el sysroot image.
|
||||
MIPS64EL_SYSROOT_URL = 'https://github.com/electron/debian-sysroot-image-creator/releases/download/v0.5.0/debian_jessie_mips64-sysroot.tar.bz2'
|
||||
# URL to the mips64el toolchain.
|
||||
MIPS64EL_GCC = 'gcc-4.8.3-d197-n64-loongson'
|
||||
MIPS64EL_GCC_URL = 'http://ftp.loongnix.org/toolchain/gcc/release/' + MIPS64EL_GCC + '.tar.gz'
|
||||
|
||||
BASE_URL = os.getenv('LIBCHROMIUMCONTENT_MIRROR') or \
|
||||
'https://s3.amazonaws.com/github-janky-artifacts/libchromiumcontent'
|
||||
|
@ -79,3 +84,21 @@ def get_zip_name(name, version, suffix=''):
|
|||
if suffix:
|
||||
zip_name += '-' + suffix
|
||||
return zip_name + '.zip'
|
||||
|
||||
|
||||
def build_env():
|
||||
env = os.environ.copy()
|
||||
if get_target_arch() == "mips64el":
|
||||
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
VENDOR_DIR = os.path.join(SOURCE_ROOT, 'vendor')
|
||||
gcc_dir = os.path.join(VENDOR_DIR, MIPS64EL_GCC)
|
||||
ldlib_dirs = [
|
||||
gcc_dir + '/usr/x86_64-unknown-linux-gnu/mips64el-redhat-linux/lib',
|
||||
gcc_dir + '/usr/lib64',
|
||||
gcc_dir + '/usr/mips64el-redhat-linux/lib64',
|
||||
gcc_dir + '/usr/mips64el-redhat-linux/sysroot/lib64',
|
||||
gcc_dir + '/usr/mips64el-redhat-linux/sysroot/usr/lib64',
|
||||
]
|
||||
env['LD_LIBRARY_PATH'] = os.pathsep.join(ldlib_dirs)
|
||||
env['PATH'] = os.pathsep.join([gcc_dir + '/usr/bin', env['PATH']])
|
||||
return env
|
||||
|
|
|
@ -100,6 +100,7 @@ function assetsForVersion (version) {
|
|||
`electron-${version}-linux-armv7l.zip`,
|
||||
`electron-${version}-linux-ia32-symbols.zip`,
|
||||
`electron-${version}-linux-ia32.zip`,
|
||||
`electron-${version}-linux-mips64el.zip`,
|
||||
`electron-${version}-linux-x64-symbols.zip`,
|
||||
`electron-${version}-linux-x64.zip`,
|
||||
`electron-${version}-mas-x64-dsym.zip`,
|
||||
|
@ -118,6 +119,7 @@ function assetsForVersion (version) {
|
|||
`ffmpeg-${version}-linux-arm64.zip`,
|
||||
`ffmpeg-${version}-linux-armv7l.zip`,
|
||||
`ffmpeg-${version}-linux-ia32.zip`,
|
||||
`ffmpeg-${version}-linux-mips64el.zip`,
|
||||
`ffmpeg-${version}-linux-x64.zip`,
|
||||
`ffmpeg-${version}-mas-x64.zip`,
|
||||
`ffmpeg-${version}-win32-ia32.zip`,
|
||||
|
|
|
@ -66,8 +66,9 @@ def main():
|
|||
# Upload Electron with GitHub Releases API.
|
||||
upload_electron(github, release, os.path.join(DIST_DIR, DIST_NAME),
|
||||
args.upload_to_s3)
|
||||
upload_electron(github, release, os.path.join(DIST_DIR, SYMBOLS_NAME),
|
||||
args.upload_to_s3)
|
||||
if get_target_arch() != 'mips64el':
|
||||
upload_electron(github, release, os.path.join(DIST_DIR, SYMBOLS_NAME),
|
||||
args.upload_to_s3)
|
||||
if PLATFORM == 'darwin':
|
||||
upload_electron(github, release, os.path.join(DIST_DIR,
|
||||
'electron-api.json'), args.upload_to_s3)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue