【OH】openHarmony整仓代码编译

前言

本文章主要介绍基于linux环境openHarmony的整仓代码编译(以rk3568为例)遇到的问题。

前提

openHarmony代码代码已下载,并执行prebuilts。
详细参考:openHarmony整仓代码下载

编译步骤

在Linux环境进行如下操作

1. 源码根目录,执行编译命令

./build.sh --product-name rk3568 --ccache

2. 检查编译结果

log中显示如下:

[OHOS INFO] rk3568 build success
[OHOS INFO] Cost Time:  1:54:38
=====build  successful=====
2024-11-01 19:02:48
++++++++++++++++++++++++++++++++++++++++

编译所生成的文件都归档在out目录下,结果镜像输出在out/rk3568/packages/phone/images 目录下。

编译问题

1. FetchError: network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium

(1) 现象

大致报错如下所示

[26798/84913] ACTION //base/powermgr/power_manager/power_dialog:power_dialog_hap_compile_app(//build/toolchain/ohos:ohos_clang_arm)
FAILED: obj/base/powermgr/power_manager/power_dialog/power_dialog_hap/unsigned_hap_path_list.json 

...

ohpm DEBUG: start updateLock, pid: 2173433
ohpm ERROR: ETIMEDOUT network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium, please check the network connectivity to the registry https://ohpm.openharmony.cn/ohpm/
ohpm DEBUG: getOverrideDepFile with key: @ohos/hypium.
ohpm ERROR: missing: @ohos/hypium@1.0.6, required by @
ohpm DEBUG: Executor e(this,void0,void 0,(function*(){const e=yield this.createChildNode({depth:i+1,childName:r,childSpec:n,depType:d,parent:t});yield p(e,i+1)})) execute failed: FetchError: network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium, will retry after 1000 ms with 1 retries remaining.
ohpm DEBUG: PackageLockerManager start building nodeData @ohos/hypium@1.0.6.
ohpm DEBUG: DepNodeDataBuilder start fetching depNode metadata, fetchRequest: {
  "name": "@ohos/hypium",
  "fetchSpec": "1.0.6",
  "rootDir": "/home/OH_code/OH_code_all/base/powermgr/power_manager/power_dialog",
  "where": "/home/OH_code/OH_code_all/base/powermgr/power_manager/power_dialog",
  "parentSaveRoot": "/home/OH_code/OH_code_all/base/powermgr/power_manager/power_dialog"
}.
ohpm INFO: MetaDataFetcher fetching meta info of package '@ohos/hypium' from https://ohpm.openharmony.cn/ohpm/
ohpm DEBUG: start update lock...
ohpm DEBUG: end update lock...
ohpm DEBUG: start updateLock, pid: 2173433
ohpm DEBUG: start update lock...
ohpm DEBUG: end update lock...
ohpm DEBUG: start updateLock, pid: 2173433
ohpm DEBUG: start update lock...
ohpm DEBUG: end update lock...
ohpm DEBUG: start updateLock, pid: 2173433
ohpm DEBUG: start update lock...
ohpm DEBUG: end update lock...
ohpm DEBUG: start updateLock, pid: 2173433
ohpm ERROR: ETIMEDOUT network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium, please check the network connectivity to the registry https://ohpm.openharmony.cn/ohpm/
ohpm DEBUG: getOverrideDepFile with key: @ohos/hypium.
ohpm ERROR: missing: @ohos/hypium@1.0.6, required by @
ohpm ERROR: Found exception: FetchError: network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium, reached retry limit or non retryable error encountered.
ohpm DEBUG: Executor found task execute failed, exit process!
ohpm DEBUG: Executor Run completed in 121s 68ms
ohpm ERROR: ERUNNING execute tasks failed, FetchError: network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium
ohpm DEBUG: removeLock succeed, filepath: /home/OH_code/OH_code_all/base/powermgr/power_manager/power_dialog/oh-lock.lock.
ohpm ERROR: Install failed, detail: FetchError: network timeout at: https://ohpm.openharmony.cn/ohpm/@ohos/hypium

[0/0] 
Traceback (most recent call last):
  File "/home/OH_code/OH_code_all/out/rk3568/../../build/scripts/compile_app.py", line 298, in <module>
    sys.exit(main(sys.argv[1:]))
             ^^^^^^^^^^^^^^^^^^
  File "/home/OH_code/OH_code_all/out/rk3568/../../build/scripts/compile_app.py", line 288, in main
    make_env(options.build_profile, cwd, options.ohpm_registry, options)
  File "/home/OH_code/OH_code_all/out/rk3568/../../build/scripts/compile_app.py", line 92, in make_env
    raise Exception('ReturnCode:{}. ohpm install failed. {}'.format(
Exception: ReturnCode:1. ohpm install failed. 
[26799/84913] ACTION //foundation/resourceschedule/memmgr/interface/innerkits:memmgrclient__check(//build/toolchain/ohos:ohos_clang_arm)
[26800/84913] ACTION //foundation/resourceschedule/memmgr/interface/innerkits:memmgrclient__notice(//build/toolchain/ohos:ohos_clang_arm)

...

[91m[OHOS ERROR][0m Traceback (most recent call last):
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/containers/status.py", line 47, in wrapper
[91m[OHOS ERROR][0m     return func(*args, **kwargs)
[91m[OHOS ERROR][0m            ^^^^^^^^^^^^^^^^^^^^^
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/ohos_build_module.py", line 70, in run
[91m[OHOS ERROR][0m     raise exception
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/ohos_build_module.py", line 67, in run
[91m[OHOS ERROR][0m     super().run()
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/interface/build_module_interface.py", line 70, in run
[91m[OHOS ERROR][0m     raise exception
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/interface/build_module_interface.py", line 68, in run
[91m[OHOS ERROR][0m     self._ninja()
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/util/timer_util.py", line 30, in inner
[91m[OHOS ERROR][0m     res = func(*arg, **kwarg)
[91m[OHOS ERROR][0m           ^^^^^^^^^^^^^^^^^^^
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/interface/build_module_interface.py", line 125, in _ninja
[91m[OHOS ERROR][0m     self._target_compilation()
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/modules/ohos_build_module.py", line 106, in _target_compilation
[91m[OHOS ERROR][0m     self.target_compiler.run()
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/services/ninja.py", line 38, in run
[91m[OHOS ERROR][0m     self._execute_ninja_cmd()
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/services/ninja.py", line 69, in _execute_ninja_cmd
[91m[OHOS ERROR][0m     SystemUtil.exec_command(
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/util/system_util.py", line 77, in exec_command
[91m[OHOS ERROR][0m     LogUtil.get_failed_log(log_path)
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/util/log_util.py", line 193, in get_failed_log
[91m[OHOS ERROR][0m     LogUtil.get_compiler_failed_log(log_path)
[91m[OHOS ERROR][0m   File "/home/OH_code/OH_code_all/build/hb/util/log_util.py", line 180, in get_compiler_failed_log
[91m[OHOS ERROR][0m     raise OHOSException(
[91m[OHOS ERROR][0m exceptions.ohos_exception.OHOSException: COMPILE Failed! Please check error in /home/OH_code/OH_code_all/out/rk3568/error.log, and for more build information in /home/OH_code/OH_code_all/out/rk3568/build.log
[91m[OHOS ERROR][0m 
[91m[OHOS ERROR][0m Code:        4000
[91m[OHOS ERROR][0m 
[91m[OHOS ERROR][0m Reason:      COMPILE Failed! Please check error in /home/OH_code/OH_code_all/out/rk3568/error.log, and for more build information in /home/OH_code/OH_code_all/out/rk3568/build.log
[91m[OHOS ERROR][0m 
[91m[OHOS ERROR][0m Error Type:  Ninja build error
[91m[OHOS ERROR][0m 
[91m[OHOS ERROR][0m Description: An unknown error occurred while executing 'ninja -C'.
[91m[OHOS ERROR][0m 
[91m[OHOS ERROR][0m Solution:    no solution
[91m[OHOS ERROR][0m 

(2) 解决方案

a. 修改build/build_scripts/build.sh

将其中 function init_ohpm() 中的 “ohpm config set registry https://repo.harmonyos.com/ohpm/” 替换为 “ohpm config set registry https://ohpm.openharmony.cn/ohpm/”。

root@Ubuntu :~/OH_code/OH_code_all/build$ git diff
diff --git a/build_scripts/build.sh b/build_scripts/build.sh
index b7304c8f..04a3ad9b 100755
--- a/build_scripts/build.sh
+++ b/build_scripts/build.sh
@@ -141,7 +141,8 @@ function init_ohpm() {
     chmod +x ${OHPM_HOME}/init
     ${OHPM_HOME}/init > /dev/null
     echo "[OHOS INFO] Current ohpm version is $(ohpm -v)"
-    ohpm config set registry https://repo.harmonyos.com/ohpm/
+    # ohpm config set registry https://repo.harmonyos.com/ohpm/
+    ohpm config set registry https://ohpm.openharmony.cn/ohpm/
     ohpm config set strict_ssl false
     ohpm config set log_level debug
   popd > /dev/null
root@Ubuntu :~/OH_code/OH_code_all/build$
b. 修改~/.ohpm/.ohpmrc
root@Ubuntu :~$ git diff
registry=https://ohpm.openharmony.cn/ohpm/
strict_ssl=false
publish_registry=https://ohpm.openharmony.cn/ohpm/
log_level=debug
fetch_timeout=60000
max_concurrent=50
retry_times=1
retry_interval=1000
resolve_conflict=true
install_all=true
enable_cross_process_lock=true
enforce_dependency_key=false
ensure_dependency_include=false
disallow_nested_package=false
odm_r2_project_root=false
compability_log_level=warn
use_stream_threshold_size=5
root@Ubuntu :~$

如果需要设置proxy,还需要在~/.ohpm/.ohpmrc中加入以下字段

http_proxy=http://{用户名}:{密码}@{IP}:{端口}/
https_proxy=http://{用户名}:{密码}@{IP}:{端口}/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值