Merge pull request #5366 from electron/bootstrap-libchromiumcontent
Add --build_libchromiumcontent command line switch
This commit is contained in:
commit
7cbe6bc8bd
4 changed files with 99 additions and 12 deletions
|
@ -4,6 +4,7 @@ Follow the guidelines below for building Electron on Linux.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
* At least 25GB disk space and 8GB RAM.
|
||||||
* Python 2.7.x. Some distributions like CentOS still use Python 2.6.x
|
* Python 2.7.x. Some distributions like CentOS still use Python 2.6.x
|
||||||
so you may need to check your Python version with `python -V`.
|
so you may need to check your Python version with `python -V`.
|
||||||
* Node.js v0.12.x. There are various ways to install Node. You can download
|
* Node.js v0.12.x. There are various ways to install Node. You can download
|
||||||
|
@ -33,11 +34,6 @@ $ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-
|
||||||
Other distributions may offer similar packages for installation via package
|
Other distributions may offer similar packages for installation via package
|
||||||
managers such as pacman. Or one can compile from source code.
|
managers such as pacman. Or one can compile from source code.
|
||||||
|
|
||||||
## If You Use Virtual Machines For Building
|
|
||||||
|
|
||||||
If you plan to build Electron on a virtual machine you will need a fixed-size
|
|
||||||
device container of at least 25 gigabytes in size.
|
|
||||||
|
|
||||||
## Getting the Code
|
## Getting the Code
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -112,8 +108,6 @@ $ ./script/clean.py
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
Make sure you have installed all of the build dependencies.
|
|
||||||
|
|
||||||
### Error While Loading Shared Libraries: libtinfo.so.5
|
### Error While Loading Shared Libraries: libtinfo.so.5
|
||||||
|
|
||||||
Prebulit `clang` will try to link to `libtinfo.so.5`. Depending on the host
|
Prebulit `clang` will try to link to `libtinfo.so.5`. Depending on the host
|
||||||
|
@ -128,7 +122,7 @@ $ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5
|
||||||
Test your changes conform to the project coding style using:
|
Test your changes conform to the project coding style using:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ ./script/cpplint.py
|
$ npm run lint
|
||||||
```
|
```
|
||||||
|
|
||||||
Test functionality using:
|
Test functionality using:
|
||||||
|
@ -136,3 +130,25 @@ Test functionality using:
|
||||||
```bash
|
```bash
|
||||||
$ ./script/test.py
|
$ ./script/test.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Advanced topics
|
||||||
|
|
||||||
|
The default building configuration is targeted for major desktop Linux
|
||||||
|
distributions, to build for a specific distribution or device, following
|
||||||
|
information may help you.
|
||||||
|
|
||||||
|
### Build libchromiumcontent locally
|
||||||
|
|
||||||
|
To avoid using the prebuilt binaries of libchromiumcontent, you can pass the
|
||||||
|
`--build_libchromiumcontent` switch to `bootstrap.py` script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./script/bootstrap.py -v --build_libchromiumcontent
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that by default the `shared_library` configuration is not built, so you can
|
||||||
|
only build `Release` version of Electron if you use this mode:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./script/build.py -c D
|
||||||
|
```
|
||||||
|
|
|
@ -33,15 +33,29 @@ def main():
|
||||||
if sys.platform == 'cygwin':
|
if sys.platform == 'cygwin':
|
||||||
update_win32_python()
|
update_win32_python()
|
||||||
|
|
||||||
|
update_submodules()
|
||||||
|
|
||||||
|
libcc_source_path = args.libcc_source_path
|
||||||
|
libcc_shared_library_path = args.libcc_shared_library_path
|
||||||
|
libcc_static_library_path = args.libcc_static_library_path
|
||||||
|
|
||||||
|
# Redirect to use local libchromiumcontent build.
|
||||||
|
if args.build_libchromiumcontent:
|
||||||
|
build_libchromiumcontent(args.verbose, args.target_arch)
|
||||||
|
dist_dir = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor',
|
||||||
|
'libchromiumcontent', 'dist', 'main')
|
||||||
|
libcc_source_path = os.path.join(dist_dir, 'src')
|
||||||
|
libcc_shared_library_path = os.path.join(dist_dir, 'shared_library')
|
||||||
|
libcc_static_library_path = os.path.join(dist_dir, 'static_library')
|
||||||
|
|
||||||
if PLATFORM != 'win32':
|
if PLATFORM != 'win32':
|
||||||
update_clang()
|
update_clang()
|
||||||
|
|
||||||
update_submodules()
|
|
||||||
setup_python_libs()
|
setup_python_libs()
|
||||||
update_node_modules('.')
|
update_node_modules('.')
|
||||||
bootstrap_brightray(args.dev, args.url, args.target_arch,
|
bootstrap_brightray(args.dev, args.url, args.target_arch,
|
||||||
args.libcc_source_path, args.libcc_shared_library_path,
|
libcc_source_path, libcc_shared_library_path,
|
||||||
args.libcc_static_library_path)
|
libcc_static_library_path)
|
||||||
|
|
||||||
if PLATFORM == 'linux':
|
if PLATFORM == 'linux':
|
||||||
download_sysroot(args.target_arch)
|
download_sysroot(args.target_arch)
|
||||||
|
@ -71,6 +85,8 @@ def parse_args():
|
||||||
'prompts.')
|
'prompts.')
|
||||||
parser.add_argument('--target_arch', default=get_target_arch(),
|
parser.add_argument('--target_arch', default=get_target_arch(),
|
||||||
help='Manually specify the arch to build for')
|
help='Manually specify the arch to build for')
|
||||||
|
parser.add_argument('--build_libchromiumcontent', action='store_true',
|
||||||
|
help='Build local version of libchromiumcontent')
|
||||||
parser.add_argument('--libcc_source_path', required=False,
|
parser.add_argument('--libcc_source_path', required=False,
|
||||||
help='The source path of libchromiumcontent. ' \
|
help='The source path of libchromiumcontent. ' \
|
||||||
'NOTE: All options of libchromiumcontent are ' \
|
'NOTE: All options of libchromiumcontent are ' \
|
||||||
|
@ -159,6 +175,13 @@ def update_win32_python():
|
||||||
execute_stdout(['git', 'clone', PYTHON_26_URL])
|
execute_stdout(['git', 'clone', PYTHON_26_URL])
|
||||||
|
|
||||||
|
|
||||||
|
def build_libchromiumcontent(verbose, target_arch):
|
||||||
|
args = [os.path.join(SOURCE_ROOT, 'script', 'build-libchromiumcontent.py')]
|
||||||
|
if verbose:
|
||||||
|
args += ['-v']
|
||||||
|
execute_stdout(args + ['--target_arch', target_arch])
|
||||||
|
|
||||||
|
|
||||||
def update_clang():
|
def update_clang():
|
||||||
execute_stdout([os.path.join(SOURCE_ROOT, 'script', 'update-clang.sh')])
|
execute_stdout([os.path.join(SOURCE_ROOT, 'script', 'update-clang.sh')])
|
||||||
|
|
||||||
|
|
48
script/build-libchromiumcontent.py
Executable file
48
script/build-libchromiumcontent.py
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from lib.config import enable_verbose_mode, get_target_arch
|
||||||
|
from lib.util import execute_stdout
|
||||||
|
|
||||||
|
|
||||||
|
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
os.chdir(SOURCE_ROOT)
|
||||||
|
|
||||||
|
args = parse_args()
|
||||||
|
if args.verbose:
|
||||||
|
enable_verbose_mode()
|
||||||
|
|
||||||
|
# ./script/bootstrap
|
||||||
|
# ./script/update -t x64
|
||||||
|
# ./script/build --no_shared_library -t x64
|
||||||
|
# ./script/create-dist -c static_library -t x64 --no_zip
|
||||||
|
script_dir = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor',
|
||||||
|
'libchromiumcontent', 'script')
|
||||||
|
bootstrap = os.path.join(script_dir, 'bootstrap')
|
||||||
|
update = os.path.join(script_dir, 'update')
|
||||||
|
build = os.path.join(script_dir, 'build')
|
||||||
|
create_dist = os.path.join(script_dir, 'create-dist')
|
||||||
|
execute_stdout([sys.executable, bootstrap])
|
||||||
|
execute_stdout([sys.executable, update, '-t', args.target_arch])
|
||||||
|
execute_stdout([sys.executable, build, '-R', '-t', args.target_arch])
|
||||||
|
execute_stdout([sys.executable, create_dist, '-c', 'static_library',
|
||||||
|
'--no_zip', '-t', args.target_arch])
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description='Build libchromiumcontent')
|
||||||
|
parser.add_argument('--target_arch',
|
||||||
|
help='Specify the arch to build for')
|
||||||
|
parser.add_argument('-v', '--verbose', action='store_true',
|
||||||
|
help='Prints the output of the subprocesses')
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main())
|
2
vendor/brightray
vendored
2
vendor/brightray
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit 8dbaeed37b9c4fb8ae985670b142f659bb265fb4
|
Subproject commit 3d168efd1d27d4ac3869beac6290c5066c392721
|
Loading…
Reference in a new issue