Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update v8 to 11.6.189.22 #16364

Merged
merged 8 commits into from
Oct 10, 2023
Merged

Update v8 to 11.6.189.22 #16364

merged 8 commits into from
Oct 10, 2023

Conversation

dumganhar
Copy link
Contributor

@dumganhar dumganhar commented Oct 8, 2023

Re: #15552

cocos/cocos-engine-external#425
cocos/cocos-engine-external#432

Changelog


Continuous Integration

This pull request:

  • needs automatic test cases check.

    Manual trigger with @cocos-robot run test cases afterward.

  • does not change any runtime related code or build configuration

    If any reviewer thinks the CI checks are needed, please uncheck this option, then close and reopen the issue.


Compatibility Check

This pull request:

  • changes public API, and have ensured backward compatibility with deprecated features.
  • affects platform compatibility, e.g. system version, browser version, platform sdk version, platform toolchain, language version, hardware compatibility etc.
  • affects file structure of the build package or build configuration which requires user project upgrade.
  • introduces breaking changes, please list all changes, affected features and the scope of violation.

@dumganhar dumganhar requested a review from minggo October 8, 2023 06:02
@github-actions
Copy link

github-actions bot commented Oct 8, 2023

Interface Check Report

This pull request does not change any public interfaces !

@dumganhar dumganhar marked this pull request as draft October 8, 2023 08:57
@dumganhar dumganhar marked this pull request as ready for review October 10, 2023 02:22
@dumganhar dumganhar requested a review from minggo October 10, 2023 03:03
@minggo minggo merged commit 093bc87 into cocos:v3.8.2 Oct 10, 2023
24 checks passed
@LuoLuoDev
Copy link

This commit shows v8 has been updated to 11.6, but the v8 version in v8-version.h did not change. @minggo

@dumganhar
Copy link
Contributor Author

@LuoLuoDev

https://github.com/cocos/cocos-engine-external/blob/v3.8.2/android/armeabi-v7a/include/v8/v8-version.h#L14

@liufsd
Copy link

liufsd commented Jun 16, 2024

@dumganhar kuoruan/libv8#8 大佬知道是什么原因么? 就是基于你这个版本去调研验证的~
我的想法是,先打一个SO, 然后另外一个工程去依赖这个SO文件,进行V8开发,但编译出来的SO是没有符号,所以那边用不了。之前v8 8.x版本是可以的;

@liufsd
Copy link

liufsd commented Jun 17, 2024

@dumganhar 切到 3d-v3.3.1 分支,当时你们还是用的 8.0 版本的V8

#define V8_MAJOR_VERSION 8
#define V8_MINOR_VERSION 0
#define V8_BUILD_NUMBER 426
#define V8_PATCH_LEVEL 16

就可以正常这么单独打so,然后集成项目,动态下发so.

但9.x 以及 11.x 版本就不行了的, 可能的原因是什么呢?
8.x gn构建参数和 高版本差异导致的 不支持?

@dumganhar
Copy link
Contributor Author

@dumganhar kuoruan/libv8#8 大佬知道是什么原因么? 就是基于你这个版本去调研验证的~
我的想法是,先打一个SO, 然后另外一个工程去依赖这个SO文件,进行V8开发,但编译出来的SO是没有符号,所以那边用不了。之前v8 8.x版本是可以的;

你编译v8的时候指定 symbol_level为2就带符号了。我们预编译的v8没有带符号主要是因为带符号太大了。

@liufsd
Copy link

liufsd commented Jun 17, 2024

谢谢大佬答疑~
https://github.com/dumganhar/v8/blob/cc1e66a6494434756109ec139901c6122d663d09/build-android.sh
symbol_level=0 改为 2 对么?
那, 你这个工程是基于Linux哪个系统版本来编译的呢?
我想试试跟你的环境一样, 只改symbol_level参数, 编译一把试试~ @dumganhar

@liufsd
Copy link

liufsd commented Jun 17, 2024

如果能在Mac上编译就好了的~ 但好像不太行~ 只能用Linux,不过Linux是有系统版本约束的~ (我记得~

@liufsd
Copy link

liufsd commented Jun 17, 2024

不过其实也奇怪🤔, 我看你的.a文件其实有符号的,但是确实8.x版本走share的方式出来的so有符号,11.x就不行了。确实有可能是编译参数差异导致的, 我倒是想装个ubuntu虚拟机拉你的v8代码试试~ 但我不知道你的基于哪个系统版本~

@dumganhar
Copy link
Contributor Author

dumganhar commented Jun 17, 2024

mac 和 ubuntu 都可以的。

symbol_level=0 改为 2 对么?

yes

@liufsd
Copy link

liufsd commented Jun 17, 2024

mac 和 ubuntu 都可以的。

symbol_level=0 改为 2 对么?

yes

Mac直接拉你的工程,然后执行你外层的android的编译脚本? 还是跟Linux一样,要先执行一下那个系统环境安装: ./build/install-build-deps.sh ?然后再执行你的android脚本就可以编译了? 几年前Linux我记得是这个流程。

@liufsd
Copy link

liufsd commented Jun 17, 2024

mac 和 ubuntu 都可以的。

symbol_level=0 改为 2 对么?

yes

Mac直接拉你的工程,然后执行你外层的android的编译脚本? 还是跟Linux一样,要先执行一下那个系统环境安装: ./build/install-build-deps.sh ?然后再执行你的android脚本就可以编译了? 几年前Linux我记得是这个流程。

如果是这样子的话, 我上午可以搞一把试试,但u1s1, 编译v8挺艰辛的… Mac我记得当初直接报错了🙅…现在可以了吗?

@dumganhar
Copy link
Contributor Author

我之前可能理解错误了。mac 上编译 android 的 新版本的 v8,可能已经不行的。必须用 ubuntu 的。

@liufsd
Copy link

liufsd commented Jun 18, 2024

Mac 拉完工程执行报错:
./build-android.sh arm64
Valid architecture: arm64
NDK_ROOT_R21=/Users/liupeng/Library/Android/sdk/ndk/21.4.7075529
NDK_ROOT_R26=/Users/liupeng/Library/Android/sdk/ndk/26.0.10792818
gn.py: Could not find gn executable at: ['/workspace/cocos-v8/v8/buildtools/mac/gn/gn', '/workspace/cocos-v8/v8/buildtools/mac/gn']
➜ v8 git:(main) ✗
ls buildtools/mac/
clang-format clang-format.arm64.sha1 clang-format.x64.sha1

@liufsd
Copy link

liufsd commented Jun 18, 2024

我之前可能理解错误了。mac 上编译 android 的 新版本的 v8,可能已经不行的。必须用 ubuntu 的。

嗯嗯, 是的; 我记得也是不行的~
你装的是哪个版本的Ubuntu呢? 我用虚拟机试试安装一样的系统看看~

@dumganhar
Copy link
Contributor Author

Ubuntu 22.04.4 LTS

@liufsd
Copy link

liufsd commented Jun 18, 2024

我用的是20.04 版本, 执行的时候 也是报错 gn.py: Could not find gn executable at ... linux64/gn
是Ubuntu 版本原因么?

我的操作顺序是

  1. 下载 Google的 depot_tools 并且配置到环境变量
  2. 下载R21E 和 R26 两个NDK 并且配置到环境变量
  3. 浅克隆(--depth 1) 你的工程
  4. ./build-android.sh arm64

@liufsd
Copy link

liufsd commented Jun 18, 2024

是不是少配置了什么环境?

@dumganhar
Copy link
Contributor Author

参考一下这个 github action 里面的 step:

https://github.com/cocos/v8/blob/11.6/.github/workflows/build.yml#L279

@dumganhar
Copy link
Contributor Author

我那个仓库是编译静态库的。所以默认把函数符号不导出的,这样可以减小包体。你可以看这个改动:

if ((is_posix || is_fuchsia) &&
-    (v8_enable_backtrace || v8_monolithic || v8_expose_symbols)) {
+    (v8_enable_backtrace || v8_expose_symbols)) {
  v8_remove_configs += [ "//build/config/gcc:symbol_visibility_hidden" ]
  v8_add_configs += [ "//build/config/gcc:symbol_visibility_default" ]
}

cocos/v8@874b059

你要编译动态库,那么自己研究一下吧。这里可能要还原。

@liufsd
Copy link

liufsd commented Jun 18, 2024

原来如此, 感恩感恩~
我试试看看 直接github上编译看看~

@liufsd
Copy link

liufsd commented Jun 20, 2024

@

我那个仓库是编译静态库的。所以默认把函数符号不导出的,这样可以减小包体。你可以看这个改动:

if ((is_posix || is_fuchsia) &&
-    (v8_enable_backtrace || v8_monolithic || v8_expose_symbols)) {
+    (v8_enable_backtrace || v8_expose_symbols)) {
  v8_remove_configs += [ "//build/config/gcc:symbol_visibility_hidden" ]
  v8_add_configs += [ "//build/config/gcc:symbol_visibility_default" ]
}

cocos/v8@874b059

你要编译动态库,那么自己研究一下吧。这里可能要还原。

本地装了一个Linux , 编译了一把, 确实是这个原因, 基于tags/11.6.189.22-r3, 编译了64的,能正常运行起来啦~ 和外层的 symbol_level 无关, 确实是symbol_visibility_hidden这个地方导致链接符号不出来~

感谢大佬 @dumganhar

@dumganhar
Copy link
Contributor Author

@liufsd 搞定就好。 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants