mirror of
https://github.com/denoland/rusty_v8.git
synced 2024-12-25 00:29:14 -05:00
Default to binary build, instead of from source (#325)
This commit is contained in:
parent
6bf57abb5c
commit
c7262e8994
3 changed files with 26 additions and 23 deletions
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
|
@ -36,6 +36,9 @@ jobs:
|
||||||
variant: "release"
|
variant: "release"
|
||||||
# Note we do not support windows debug builds.
|
# Note we do not support windows debug builds.
|
||||||
|
|
||||||
|
env:
|
||||||
|
V8_FROM_SOURCE: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Configure git
|
- name: Configure git
|
||||||
run: git config --global core.symlinks true
|
run: git config --global core.symlinks true
|
||||||
|
|
40
README.md
40
README.md
|
@ -29,12 +29,26 @@ V8 Version: 8.2.308, 2020-03-12
|
||||||
Due to the complexity and size of V8's build, this is nontrivial. For example
|
Due to the complexity and size of V8's build, this is nontrivial. For example
|
||||||
the crate size must be kept under 10 MiB in order to publish.
|
the crate size must be kept under 10 MiB in order to publish.
|
||||||
|
|
||||||
|
## Binary Build
|
||||||
|
|
||||||
|
V8 is very large and takes a long time to compile. Many users will prefer to use
|
||||||
|
a prebuilt version of V8. We publish static libs for every version of rusty v8
|
||||||
|
on [Github](https://github.com/denoland/rusty_v8/releases).
|
||||||
|
|
||||||
|
Binaries builds are turned on by default: `cargo build` will initiate a download
|
||||||
|
from github to get the static lib. To disable this build using the
|
||||||
|
`V8_FROM_SOURCE` environmental variable.
|
||||||
|
|
||||||
|
When making changes to rusty_v8 itself, it should be tested by build from
|
||||||
|
source. The CI always builds from source.
|
||||||
|
|
||||||
## Build V8 from Source
|
## Build V8 from Source
|
||||||
|
|
||||||
Use `cargo build -vv` to build the crate.
|
Use `V8_FROM_SOURCE=1 cargo build -vv` to build the crate completely from
|
||||||
|
source.
|
||||||
|
|
||||||
Depends on Python 2.7, not Python 3. [Do not open issues with us regarding
|
The build scripts on Python 2.7, not Python 3. [Do not open issues with us
|
||||||
Python 3; it's something that must be fixed in
|
regarding Python 3; it is a non-trivial problem that must be fixed in
|
||||||
Chromium.](https://bugs.chromium.org/p/chromium/issues/detail?id=942720).
|
Chromium.](https://bugs.chromium.org/p/chromium/issues/detail?id=942720).
|
||||||
|
|
||||||
For linux builds: glib-2.0 development files need to be installed such that
|
For linux builds: glib-2.0 development files need to be installed such that
|
||||||
|
@ -54,22 +68,8 @@ providing a `$CLANG_BASE_PATH` environmental variable pointing to a recent
|
||||||
You could also pass in additional arguments to `gn` by setting the `$GN_ARGS`
|
You could also pass in additional arguments to `gn` by setting the `$GN_ARGS`
|
||||||
environmental variable.
|
environmental variable.
|
||||||
|
|
||||||
Env vars used in build.rs: `SCCACHE`, `GN`, `NINJA`, `CLANG_BASE_PATH`, `GN_ARGS`
|
Env vars used in when building from source: `SCCACHE`, `GN`, `NINJA`,
|
||||||
|
`CLANG_BASE_PATH`, `GN_ARGS`
|
||||||
## Binary Build
|
|
||||||
|
|
||||||
V8 is very large and take a long time to compile. Many users may prefer to use
|
|
||||||
a prebuilt version of V8. We publish static libs for every version of rusty v8
|
|
||||||
on [Github](https://github.com/denoland/rusty_v8/releases).
|
|
||||||
|
|
||||||
To use these prebuilt binaries use the `V8_BINARY=1` environmental variable:
|
|
||||||
|
|
||||||
```
|
|
||||||
V8_BINARY=1 cargo build
|
|
||||||
```
|
|
||||||
|
|
||||||
This will cause rusty v8 to download the static lib binary during the build
|
|
||||||
process.
|
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ GN/Ninja.
|
||||||
generation of this binding code?**
|
generation of this binding code?**
|
||||||
|
|
||||||
In the limit we would like to auto-generate bindings. We have actually started
|
In the limit we would like to auto-generate bindings. We have actually started
|
||||||
down this route several times, however due to many excentric features of the V8
|
down this route several times, however due to many eccentric features of the V8
|
||||||
API, this has not proven successful. Therefore we are proceeding in a
|
API, this has not proven successful. Therefore we are proceeding in a
|
||||||
brute-force fashion for now, focusing on solving our stated goals first. We hope
|
brute-force fashion for now, focusing on solving our stated goals first. We hope
|
||||||
to auto-generate bindings in the future.
|
to auto-generate bindings in the future.
|
||||||
|
|
6
build.rs
6
build.rs
|
@ -23,10 +23,10 @@ fn main() {
|
||||||
.map(|s| s.starts_with("rls"))
|
.map(|s| s.starts_with("rls"))
|
||||||
.unwrap_or(false);
|
.unwrap_or(false);
|
||||||
|
|
||||||
if env::var_os("V8_BINARY").is_some() {
|
if env::var_os("V8_FROM_SOURCE").is_some() {
|
||||||
download_static_lib_binaries();
|
|
||||||
} else if !(is_trybuild || is_cargo_doc | is_rls) {
|
|
||||||
build_v8()
|
build_v8()
|
||||||
|
} else if !(is_trybuild || is_cargo_doc | is_rls) {
|
||||||
|
download_static_lib_binaries();
|
||||||
}
|
}
|
||||||
|
|
||||||
if !(is_cargo_doc || is_rls) {
|
if !(is_cargo_doc || is_rls) {
|
||||||
|
|
Loading…
Reference in a new issue