问题:
执行 hpm dist 编译的时候报错:
FAILED: obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons_build_ext_components.txt
python ../../build/lite/build_ext_components.py --path=../../vendor/hisi/hi3861/hi3861 --command=sh\ hm_build.sh
/usr/lib/scons/SCons/Defaults.py:213: SyntaxWarning: "is not" with a literal. Did you mean "!="?
if len(operation_list) is not 2:
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
if sys.version_info[0] is 2 and sys.version_info[1] is 1:
/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py:28: SyntaxWarning: "is" with a literal. Did you mean "=="?
if sys.version_info[0] is 2 and sys.version_info[1] is 1:
Traceback (most recent call last):
File "/usr/lib/scons/SCons/Script/Main.py", line 1376, in main
_exec_main(parser, values)
File "/usr/lib/scons/SCons/Script/Main.py", line 1339, in _exec_main
_main(parser)
File "/usr/lib/scons/SCons/Script/Main.py", line 1006, in _main
SCons.Script._SConscript._SConscript(fs, script)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 255, in _SConscript
exec(compile(_file_.read(), _file_.name, 'exec'),
File "/home/pjw/HarmonyOS/project/vendor/hisi/hi3861/hi3861/SConstruct", line 34, in <module>
from scripts import pkt_builder
File "/home/pjw/HarmonyOS/project/vendor/hisi/hi3861/hi3861/build/scripts/pkt_builder.py", line 24, in <module>
import make_upg_file as MAKE_IMAGE
File "/home/pjw/HarmonyOS/project/vendor/hisi/hi3861/hi3861/build/scripts/make_upg_file.py", line 30, in <module>
from Crypto.PublicKey import RSA
File "/usr/lib/python3/dist-packages/Crypto/PublicKey/RSA.py", line 78, in <module>
from Crypto import Random
File "/usr/lib/python3/dist-packages/Crypto/Random/__init__.py", line 29, in <module>
from Crypto.Random import _UserFriendlyRNG
File "/usr/lib/python3/dist-packages/Crypto/Random/_UserFriendlyRNG.py", line 38, in <module>
from Crypto.Random.Fortuna import FortunaAccumulator
File "/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaAccumulator.py", line 39, in <module>
from . import FortunaGenerator
File "/usr/lib/python3/dist-packages/Crypto/Random/Fortuna/FortunaGenerator.py", line 35, in <module>
from Crypto.Util import Counter
File "/usr/lib/python3/dist-packages/Crypto/Util/Counter.py", line 59, in <module>
from Crypto.Util import _counter
ImportError: cannot import name '_counter' from 'Crypto.Util' (/usr/lib/python3/dist-packages/Crypto/Util/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/scons", line 201, in <module>
SCons.Script.main()
File "/usr/lib/scons/SCons/Script/Main.py", line 1401, in main
SCons.Script._SConscript.SConscript_exception()
File "/usr/lib/scons/SCons/Script/SConscript.py", line 319, in SConscript_exception
stack = traceback.extract_tb(tb)
File "/usr/lib/python3.8/traceback.py", line 72, in extract_tb
return StackSummary.extract(walk_tb(tb), limit=limit)
File "/usr/lib/python3.8/traceback.py", line 366, in extract
f.line
File "/usr/lib/python3.8/traceback.py", line 288, in line
self._line = linecache.getline(self.filename, self.lineno).strip()
File "/usr/lib/python3.8/linecache.py", line 16, in getline
lines = getlines(filename, module_globals)
File "/usr/lib/python3.8/linecache.py", line 47, in getlines
return updatecache(filename, module_globals)
File "/usr/lib/python3.8/linecache.py", line 137, in updatecache
lines = fp.readlines()
File "/usr/lib/python3.8/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 699: invalid continuation byte
Traceback (most recent call last):
File "../../build/lite/build_ext_components.py", line 64, in <module>
sys.exit(main())
File "../../build/lite/build_ext_components.py", line 58, in main
cmd_exec(args.command)
File "../../build/lite/build_ext_components.py", line 32, in cmd_exec
raise Exception("{} failed, return code is {}".format(cmd, ret_code))
Exception: ['sh', 'hm_build.sh'] failed, return code is 1
ninja: build stopped: subcommand failed.
you can check build log in /home/pjw/HarmonyOS/project/out/BearPi-HM_Nano/build.log
/home/pjw/HarmonyOS/tools/ninja/ninja -w dupbuild=warn -C /home/pjw/HarmonyOS/project/out/BearPi-HM_Nano failed, return code is 1
usage:
python build.py ipcamera_hi3516dv300
python build.py ipcamera_hi3518ev300
python build.py wifiiot
positional arguments:
product Name of the product
optional arguments:
-h, --help show this help message and exit
-b BUILD_TYPE, --build_type BUILD_TYPE
release or debug version.
-t [TEST [TEST ...]], --test [TEST [TEST ...]]
Compile test suit
-n, --ndk Compile ndk
原因:
缺少了包文件
解决:
sudo pip3 install setuptools kconfiglib pycryptodome ecdsa
可能之前执行这个命令有些包没安装成功,再次安装了这些就好了,没注意看是缺少了哪个包。
后续分析:
根据错误缺少‘Crypto.Util‘ 来看,是缺少了PyCryptodome库,PyCryptodome是PyCrypto(Crypto算法库)的一个分支。
sudo pip3 install pycryptodome