This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DRA71XEVM:致命:打结器 UI 无法加载所需的 curses python 模块

Guru**** 2224960 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/971145/dra71xevm-fatal-the-knotty-ui-could-not-load-the-required-curses-python-module

器件型号:DRA71XEVM

您好!

我正在尝试按照以下指南设置构建环境

我按照该指南执行了所有步骤。

最后、当我执行 build-core-sdk dra7xx-evm 时、遇到以下错误:

用户@温度:~/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03/yocto-layers ./build-core-sdk.sh dra7xx-evm
[PSDKLA]>
[PSDKLA]>当前目录是/home/user/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03/yocto-layers
[PSDKLA]>路径为/home/user/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:/home/user/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
[PSDKLA]>在运行 Linux Temp 4.14.0-041400-generic #201711122031 SMP Sun 11月12日20:32:29 UTC 2017 x86_64 x86_64 x86_64 x86_64 x86_64 x86_64 GNU/Linux
[PSDKLA]>从2021年1月15日星期五下午13:17:06 IST 开始 Yocto 构建
[PSDKLA]>
[PSDKLA]>CD 构建
[PSDKLA]>。 配置/设置
[PSDKLA]>CP conf/local.conf conf/local.conf 原始
[PSDKLA]> machine=dra7xx-EVM bitbake tisdk-rootfs-image
致命:打结器 ui 无法加载所需的 curses python 模块。
[PSDKLA]>
[PSDKLA]>于2021年1月15日13:17:07 IST 星期五完成了 Yocto 构建
[PSDKLA]>

我正在使用 Ubuntu 14.04。

请告诉我解决此问题是否需要任何其他详细信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、您好!

    我们之前没有看到过这个问题,快速搜索告诉我,可以通过安装 python3-curses 来解决这个问题。

    我会请您尝试此操作并分享您的反馈。

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Karthik、

    感谢您的快速回复。

    我看到没有名为"python3-curses"的封装

    终端无法找到此软件包。

    我也尝试在该链接中搜索、找不到。

    但在我发现的一个文档中,如果我没有看到“导入卷曲”命令的任何错误,我是安全的。

    但我在执行"import curses (导入 curses)"时遇到以下错误

    import.im6:未`@ curses error/constitu.c/WriteImage/1072。

    如果需要其他详细信息、请告诉我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、您好!

    请确认您已能够根据您在 此处的其他帖子解决此问题:https://e2e.ti.com/support/tools/ccs/f/81/p/968012/3590888#3590888 

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Karthik、

    此问题尚未解决、我尝试通过评论 knotty.py 文件中与代码相关的一些小路来旁通此问题、以便能够启动 bitbake。

    此问题仍需解决、但不会阻止我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、

    很高兴听到这个消息。 您能否在此处提供您所评论的内容的详细信息并分享该解决方案? 我将尝试以一种干净的方式解决这一问题。

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Karthik、

    请查找相同的附件。

    在附件中、代码 w.r.t curses 用#进行注释

    抱歉、我无法上传文件、因此我粘贴了代码

    编号
    # BitBake (No) TTY UI 实现
    编号
    #处理 TTYs 或文件的输出(无 TTY)
    编号
    #版权所有(C) 2006-2012 Richard Purdie
    编号
    #此程序是免费软件;您可以重新分发和/或修改
    #根据 GNU 通用公共许可证版本2的条款、如下所示
    #由免费软件基金会发布。
    编号
    #此计划的发布目的是希望它将有所帮助、
    #但不提供任何保证;甚至没有的暗示保证
    #适销性或特定用途的适用性。 请参阅
    # GNU 通用公共许可证以了解更多详细信息。
    编号
    #您应该已收到 GNU 通用公共许可证的副本
    #对于此程序;如果没有,请向 Free Software Foundation, Inc.
    # 51 Franklin Street, Fifth Floor, Boston,MA 02110-1301 USA。

    从__fute__import 分部导入

    导入操作系统
    导入系统
    将 xmlrpc.client 导入为 xmlrpclub
    导入日志记录
    导入进度条
    导入信号
    导入 bb.msg
    导入时间
    导入 fcntl
    导入结构
    导入副本
    导入退出

    从 bb.ui 导入 uihelper

    FeatureSet =[bb.Cooker.CookerFeatures.send_SANITYEVENTS]

    Logger = logging.getLogger ("BitBeake")
    交互式= sys.stdout.isatty()

    分级 BBProgress (Progressbar.ProgressBar):
    DEF __init__(self、msg、maxval、widgets=None、extrapos=1、 resize_handler =无):
    self.msg = msg
    self.exapos = exapos
    如果不是小工具:
    小工具=[Progressbar.percent()、'、Progressbar.Bar()、'、
    ProgressBar.ETA()
    self.exapos=4

    如果 resize_handler:
    self_resize_default = resize_handler
    否则:
    self._resize_default = signal.getsignal (signal.SIGWINCH)
    ProgressBar.ProgressBar.__init__(self、maxval、[self.msg +":"]+小工具、fd=sys.stdout)

    def_handle_resize (self、signum=None、frame=None):
    ProgressBar.ProgressBar.Handle_resize (self、signum、frame)
    如果 self._resize_default:
    self_resize_default (signum、frame)

    DEF (自行):
    ProgressBar.ProgressBar.Finish(自己)
    如果 self._resize_default:
    signal.signal (signal.SIGWINCH、self._resize_default)

    DEF 设定消息(self、msg):
    self.msg = msg
    self.widget[0]= msg

    DEF setextra (自加、额外):
    如果 self.extrapos >-1:
    如果额外:
    strextrast=str(extra)
    如果 extrastr[0]!=':
    strextstr=''+ strextstr
    否则:
    外部=''
    self.widget[self.extraapos]=外部

    DEF_need_update (self):
    #调用 update()时,我们始终希望该栏打印
    返回 True

    类非活动入口(对象):
    fobj = sys.stdout

    DEF __init__(self、msg、maxval):
    self.msg = msg
    self.maxval = maxval
    self.finished =错误

    默认启动(自、更新=真):
    selfobj.write ("%s..") % self.msg)
    selfobj.flush ()
    自行返回

    DEF 更新(自、值):
    通过

    DEF (自行):
    如果自行完成:
    返回
    selfobj.write ("don.\n")
    selfobj.flush ()
    self.finished = True

    默认 new_progress (msg、maxval):
    如果是交互式:
    返回 BBProgress (msg、maxval)
    否则:
    返回非活动入口(msg、maxval)

    DEF 多元化(奇异、复数、数量):
    如果(数量= 1):
    返回奇异%数量
    否则:
    返回复数%数量


    类 InteractConsoleLogFilter (logging.Filter):
    DEF __init__(self、TF、format):
    self.tf = tf
    self.format =格式

    DEF 过滤器(自、记录):
    如果 record .levelno = self.format.note 和(record .msg.StartsWith ("Running")或 record msg.StartsWith ("配方")):
    返回 False
    self.tf.clearFooter()
    返回 True

    类终端过滤器(对象):
    rows = 25
    列= 80

    DEF 绞盘_手柄(自、信号、框架):
    self.rows、self.columns = self.getTerminalColumns()
    如果 self._sig绞 盘默认值:
    self. sig绞 盘默认值(signum、frame)

    DEF getTerminalColumns (self):
    默认 ioctl_GWINSZ (FD):
    尝试:
    cr = struct.unpack('hhhhhh'、fcntl.ioctl (fd、self.termios.tIOCGWINSZ、'123'))
    除了:
    返回无
    返回 CR
    cr = ioctl_GWINSZ (sys.stdout.fileno())
    如果不是 CR:
    尝试:
    fd = os.open (os.cttermid()、os.O_RDONLY)
    CR = ioctl_GWINSZ (FD)
    os.close(FD)
    除了:
    通过
    如果不是 CR:
    尝试:
    cr =(env['LINes']、env['column'])
    除了:
    CR =(25、80)
    返回 CR

    DEF __init__(self、main、helper、console、errconsole、 格式、安静):
    self.main = main
    self.helper = helper
    self.cuu =无
    self.stdinbackup =无
    self.interactive = sys.stdout.isatty()
    selfooter_present =错误
    self.lastpids =[]
    self.lasttime =无
    self.quiet =安静

    如果不是 self.interactive:
    返回

    #尝试:
    #导入卷曲
    #除了 ImportError:
    # sys.exit ("致命:打结器 ui 无法加载所需的 curses python 模块。")

    导入 termios
    #self.curses = curses
    self.termios = termios
    尝试:
    fd = sys.stdin.fileno()
    self.stdinbackup = termios.tcgetattr (FD)
    新= copy.deepcopy(self.stdinbackup)
    new[3]= new[3]&~termios.echo
    termios.tcsetattr (fd、termios.TCSADRAIN、新)
    curses.setupterm ()
    #if curses。tigetnum ("颜色")> 2:
    # format.enable_color ()
    #self.ed = curses.tigetstr ("ed")
    #if self.ed:
    # self.cuu = curses.tigetstr ("cuu")
    #尝试:
    # self._sigchwin_default = SIGN.getsignal (SIGWINCH)
    # SIGL.SIGNAL (SIGWINCH、self.sig绞 盘手柄)
    #例外:
    #通过
    #self.rows、self.columns = self.getTerminalColumns()
    除了:
    self.cuu =无
    如果不是 self.cuu:
    self.interactive =错误
    bb.note("Unable 以使用交互模式连接此终端、使用回退")
    返回
    如果是控制台:
    console.addFilter (InteractConsoleLogFilter (self、format))
    如果错误控制台:
    errconsole.addFilter (InteractConsoleLogFilter (self、format))

    self.main_progress =无

    DEF clearFooter (自助):
    如果 selfooter_present:
    行= selfooter_present
    sys.stdout.buffer.write (self.curses.tparm (self.cuu、lines))
    sys.stdout.buffer.write (self.curses.tparm (self.ed))
    sys.stdout.flush()
    selfooter_present =错误

    DEF 更新页脚(self):
    如果不是 self.cuu:
    返回
    activetasks = self.helper.running_tasks
    failedtas= self.helper.failed_tasks
    Runningpeds = self.helper.running_pids
    CurrentTime = time.time()
    如果不是 self.lasttime 或(currenttime - self.lasttime > 5):
    self.helper.needUpdate =真
    self.lasttime =当前时间
    如果 selfooter_present 而不是 self.helper.needUpdate:
    返回
    self.helper.needUpdate =错误
    如果 selfooter_present:
    self.clearFooter()
    如果(非 self.helper.tasknumber_total 或 self.helper.tasknumber_current = self.helper.tasknumber_total)而不是 len (activetask):
    返回
    任务=[]
    对于 t IN 运行:
    进度= activetasks [t].get ("进度"、无)
    如果进度不是无:
    pbar = activetasks [t].get ("进度条"、无)
    rate = activetasks [t].get ("rate"、无)
    start_time = activetasks [t].get ("starttime"、无)
    如果不是 pbar 或 pbar.b弹跳!=(进度< 0):
    如果进度< 0:
    pbar = BBProgress ("0:%s (pid %s)"%(activetasks [t]["title"]、t)、100、widgets=[Progressbar.BouncingSlider ()、'"]、 extrapos=2、resize_handler = self.sigbandon_handle)
    pbar.b弹跳=真
    否则:
    pbar = BBProgress ("0:%s (pid %s)"%(activetasks [t]["title")、t)、100、widgets=[progressbar.percentage ()、'、 ProgressBar.Bar ()、']、extrapos=4、resize_handler = self.sigchandon_handle)
    pbar.b弹跳=错误
    activetas[t]["进度条"]= pbar
    tasks.append ((pbar、进度、速率、start_time))
    否则:
    start_time = activetasks [t].get ("starttime"、无)
    如果 start_time:
    tasks.append ("%s"-%DS (pid %s)"%(activetasks[t]["title"]、currenttime - start_time、t))
    否则:
    tasks.append ("%s"(pid %s)"%(activetasks[t]["title"]、t))

    如果 self.main.shutdown:
    内容="等待%s 正在运行的任务完成:"% len (activetasks)
    打印(内容)
    否则:
    如果 self.quiet:
    内容="正在运行的任务(%s、共%s 个)"%(self.helper.tasknumber_current、self.helper.tasknumber_total)
    Elif not len (活化剂):
    内容="当前无正在运行的任务(%s、共%s 个)"%(self.helper.tasknumber_current、selfhelper.tasknumber_total)
    否则:
    内容="当前%2个正在运行的任务(%s 个、共%s 个)"%(len (activetask)、self.helper.tasknumber_current、self.helper.tasknumber_total)
    maxtask = self.helper.taskNumber_total
    如果不是 self.main_progress 或 self.main_progress.maxval!= maxtask:
    小工具=['、Progressbar.percentage ()、'、Progressbar.Bar ()]
    self.main_progress = BBProgress ("正在运行的任务"、maxtask、widgets=widget、resize_handler = self.sigwand_handle)
    self.main_progress.start (错误)
    self.main_progress.setmessage(content)
    进度= self.helper.tasknumber_current - 1.
    如果进度< 0:
    进度= 0
    内容= self.main_progress.update (进度)
    打印('')
    线条= 1 + int (len (content)/(self.columns + 1))
    如果 self.quiet = 0:
    对于 tasknum、枚举中的任务(任务[:(self.rows - 2)]):
    如果 isinstance (task、tuple):
    Pbar、进度、速率、START_TIME =任务
    如果不是 pbar.start_time:
    pbar.start (错误)
    如果 start_time:
    pbar.start_time = start_time
    pbar.setmessage('%s:%s'%(tasknum、pbar.msg.split(':'、1)[1])
    如果进度>-1:
    pbar.setextra(rate)
    内容= pbar.update (进度)
    否则:
    内容= pbar.update (1)
    打印('')
    否则:
    内容="%s":%s"%(tasknum、task)
    打印(内容)
    行=行+ 1 + int (len (content)/(self.columns + 1))
    selfooter_present =行
    self.lastpids =运行 ningpids[:]
    self.lastcount = self.helper.tasknumber_current

    DEF (自行):
    如果 self.stdinbackup:
    fd = sys.stdin.fileno()
    self.termios.tcsetattr (fd、self.termios.TCSADRAIN、self.stdinbackup)

    默认 print_event_log (event、includedelog、loglines、termfilter):
    # FIXME 进一步重新考虑了这一点
    logfile = event.logfile
    如果 logfile 和 os.path.exists (logfile):
    termfilter.clearFooter()
    bB.error ("故障的日志文件存储在:%s"%日志文件中)
    如果 includedogs 而不是 event.errprinted:
    打印("日志数据遵循:")
    f = open (logfile、"r")
    线条=[]
    当为真时:
    l = f.readline()
    如果 l ='':
    中断
    L = L.rstrip()
    如果对数行:
    LINES.append ('|%s'% l)
    如果 len (lines)> int (loglines):
    LINes.POP (0)
    否则:
    打印('|%s'% l)
    F.Close()
    如果行:
    对于线路输入:
    打印(行)

    DEF _log_settings_fin_server (服务器、只观察):
    #获取控制输出的变量值
    includedelogs、ERROR = server.runCommand(["getVariable"、"BBINCLUDELOGs"])
    如果出错:
    logger.error ("无法获取 BBINCLUDELOGS 变量的值:%s"%错误)
    提升基异常(错误)
    loglines、error = server.runCommand(["getVariable"、"BBINCLUDELOGS_LINES"])
    如果出错:
    logger.error ("无法获取 BBINCLUDELOGS_LINes 变量的值:%s"%错误)
    提升基异常(错误)
    如果只观察:
    CMD ='getVariable'
    否则:
    CMD ='getSetVariable'
    consolelogfile、error = server.runCommand([cmd、"BB_CONSOLELOG"])
    如果出错:
    logger.error ("无法获取 BB_CONSOLELOG 变量的值:%s"%错误)
    提升基异常(错误)
    返回 includedog、loglines、consolelogfile

    _evt_list =["bb.runqueue.runQueueExitWait"、"bb.event.LogExecty"、"logging.LogRecord"、
    "bb.build.TaskFail"、"bb.build.TaskBase"、"bb.event.ParseStarted"、
    "bb. event.ParseProgress"、"bb.event.ParseCompled"、"bb.event.CacheLoadStarted"、
    "bb. event.CacheLoadProgress、"bb.event.CacheLoadCompled"、"bb.command.CommandFailed"、
    bb.command.CommandExit"、"bb.command.CommandCompleted"、"bb.Cooker.CookerExit"、
    "bb. event.MultipleProviders"、"bb.event.NoProvider"、"bb.runqueue.sceneQueueTaskStarted"、
    "bb.runqueue.runQueueTaskStarted"、"bb.runqueue.runQueueTaskFailed"、"bb.runqueue.sceneQueueTaskFailed"、
    "bb. event.BuildBase"、"bb.build.TaskStarted"、"bb.build.TaskSuccessed"、"bb.build.TaskFailedSilent"、
    "bb. build.TaskProgress "、"bb.event.ProcessStarted"、"bb.event.ProcessProgress "、"bb.event.ProcessFined"]

    DEF main (server、eventHandler、params、TF =终端过滤器):

    如果不是 params.Observ_only:
    params.updateToServer (服务器、os.environon.copy())

    includedelogs、loglines、consolelogfile =_log_settings_fin_server (server、params.Observ_only)

    如果 sys.stdin.isatty()和 sys.stdout.isatty():
    LOG_exec_TTY =真
    否则:
    LOG_exec_TTY =错误

    helper = uihelper.BBUIhelper()

    控制台= logging.StreamHandler (sys.stdout)
    errconsole = logging.StreamHandler (sys.stderr)
    format_str ="%(levelname) s:%(message) s"
    格式= bb.msg.BBLogFormat(format_str)
    如果 params.options.quiet = 0:
    forcelevel =无
    Elif params.options.quiet > 2:
    forcelevel = bb.msg.BBLogFormatter.error
    否则:
    forcelevel = bb.msg.BBLogFormatter.warning
    b.msg.addDefaultlogFilter (console、bb.msg.BBLogFilterStdOut、forcelevel)
    b.msg.addDefaultlogFilter (errconsole、bb.msg.BBLogFilterStdErr)
    console.setFormatter(format)
    errconsole.setFormatter(format)
    如果不是 bb.msg.has _console_handler (logger):
    logger.addHandler (控制台)
    logger.addHandler (errconsole)

    bb.utils.set_process_name("KnottyUI")

    如果 params.options.remote_server 和 params.options.kill_server:
    server.terminateServer()
    返回

    consolelog =无
    如果 consolelogfile 而不是 params.options.show_environment 而不是 params.options.show_versions:
    b.utils.mkdirhier(os.path.dirname(conelogfile))
    conlogformat = bb.msg.BBLogFormat(format_str)
    consolelog = logging.FileHandler (consolelogfile)
    bb.msg.addDefaultlogFilter (consolelog)
    consolelog.setFormatter(conlogformat)
    logger.addHandler (consolelog)
    loglink = os.path.join (os.path.dirname (consolelogfile)、'console-latest.log')
    b.utils.remove (loglink)
    尝试:
    os.symlink (os.path.basename (consolelogfile)、loglink)
    除 OSError:
    通过

    llevel、debug_domains=bb.msg.structLogOptions()
    server.runCommand(["setEventMask"、server.getEventHandle()、llevel、debug_domains,_evt_list])

    宇宙=错误
    如果不是 params.Observ_only:
    params.updateFromServer(服务器)
    cmdline = params.parseActs()
    如果不是 cmdline:
    print("Nothing to Do。 使用"Bitbake world"构建一切、或运行"Bitbake --help"获取使用信息。")
    返回1
    如果命令行和命令行中的'msg'['msg']:
    logger.error (cmdlin['mSG'])
    返回1
    如果 cmdline['action'][0]="buildTargets"和"University"位于 cmdline['action'][1]中:
    宇宙=正确

    RET、ERROR = server.runCommand(cmdline['action'])
    如果出错:
    logger.error ("命令'%s'失败:%s"%(cmdline、错误))
    返回1
    Elif ret!=正确:
    logger.error ("命令'%s'失败:返回%s"%(cmdline、ret))
    返回1


    parseprogress =无
    CacheProgress =无
    main.shutdown = 0
    中断=错误
    RETURE_VALUE = 0
    错误= 0
    警告= 0
    任务失败=[]

    termfilter = tf (main、helper、console、errconsole、format、 params.options.quiet)
    atexit.register (termfilter.finish)

    当为真时:
    尝试:
    事件= eventHandler.waitEvent (0)
    如果事件为无:
    如果 main.shutdown > 1:
    中断
    termfilter.updateFooter()
    事件= eventHandler.waitEvent (0.25)
    如果事件为无:
    继续
    helper.eventHandler (事件)
    if isinstance (event、bb.runqueue.runQueueExitWait):
    如果不是 main.shutdown:
    main.shutdown = 1
    继续
    如果 isinstance (event、bb.event.LogExecTTY):
    如果 log_exec_tty:
    尝试= event.retries
    尝试时:
    打印("正在尝试运行:%s"% event.prog)
    如果 os.system (event.prog)=0:
    中断
    TIME.SLEEP (EVENT.SLEEP_DELAY)
    尝试-= 1.
    如果尝试:
    继续
    logger.warning (event.msg)
    继续

    如果 isinstance (event、logging.LogRecord):
    如果 event.levelno >= format.error:
    错误=错误+ 1
    RETURE_VALUE = 1
    Elif event.levelno == format.warning:
    警告=警告+ 1.

    如果 event.taskpid!= 0:
    #对于"正常"日志记录条件、不显示任务的注释日志
    #、但如果用户将默认日志级别更改为、请务必显示它们
    #包含详细/调试消息
    如果 event.levelno <= format.note 和(event.levelno < llevel 或(event.levelno == format.note 和 llevel!= format.verbose):
    继续

    #使用配方/任务前缀任务消息
    如果 helper.running_tasks 中的 event.taskpid 和 event.levelno != format.plain:
    taskinfo = helper.running_tasks[event.taskpid]
    event.msg = taskinfo['title']+':'+ event.msg
    如果有(事件、'fn'):
    event.msg = event.fn +':'+ event.msg
    logger.handle (事件)
    继续

    如果 isinstance (event、bb.build.TaskFailedSilent):
    logger.warning ("失败的 setscene 任务的 Logfile 为%s"% event.logfile)
    继续
    如果 isinstance (event、bb.build.TaskFailed):
    RETURE_VALUE = 1
    print_event_log (event、includedelog、loglines、termfilter)
    如果 isinstance (event、bb.build.TaskBase):
    logger.info(event._message)
    继续
    如果 isinstance (event、bb.event.ParseStarted):
    如果 params.options.quiet > 1:
    继续
    如果 event.total = 0:
    继续
    parseprogress = new_progress ("分析方法"、event.total).start()
    继续
    如果 isinstance (event、bb.event.ParseProgress):
    如果 params.options.quiet > 1:
    继续
    如果 parseprogress:
    parseprogress.update (event.current)
    否则:
    bB.warn("GOT ParseProgress event for assuming that never started?")
    继续
    如果 isinstance (event、bb.event.ParseCompleded):
    如果 params.options.quiet > 1:
    继续
    如果不是并行进程:
    继续
    parseprogress.finish()
    pasreprogress =无
    如果 params.options.quiet = 0:
    print("对%d .bb 文件的解析已完成(%d 缓存、%d 解析)。 %d 个目标、%d 个已跳过、%d 个已屏蔽、%d 个错误。"
    %(event.total、event.cached、event.pareded、event.virtuals、event.skipped、 event.masked、event.errors))))
    继续

    如果 isinstance (event、bb.event.CacheLoadStarted):
    如果 params.options.quiet > 1:
    继续
    cachesProgress = new_progress ("正在加载高速缓存"、event.total).start ()
    继续
    如果 isinstance (event、bb.event.CacheLoadProgress):
    如果 params.options.quiet > 1:
    继续
    cachepprogress.update (event.current)
    继续
    如果 isinstance (event、bb.event.CacheLoadCompleted):
    如果 params.options.quiet > 1:
    继续
    cachepprogress.finish()
    如果 params.options.quiet = 0:
    打印("从依赖关系缓存加载%d 个条目。" % event.num_entries)
    继续

    if isinstance (event、bb.command.CommandFailed):
    return_value = event.exitcode
    如果 event.error:
    错误=错误+ 1
    logger.error (str (event))(logger.error (str
    main.shutdown = 2
    继续
    if isinstance (event、bb.command.CommandExit):
    如果不是 return_value:
    return_value = event.exitcode
    继续
    如果 isinstance (event、(bb.command.CommandCompleted、bb.tofter.CookerExit):
    main.shutdown = 2
    继续
    如果 isinstance (event、bb.event.MultipleProviders):
    logger.info(str(event)
    继续
    如果 isinstance (event、bb.event.NoProvider):
    #对于 Universe 构建、仅将这些显示为警告、而不是错误
    如果不是宇宙:
    RETURE_VALUE = 1
    错误=错误+ 1
    logger.error (str (event))(logger.error (str
    否则:
    logger.warning (str(event))
    继续

    if isinstance (event、bb.runqueue.sceneQueueTaskStarted):
    logger.info("Running setscene task %d、共%d (%s)"%(event.stats.completed + event.stats.active + event.stats.failed + 1、event.stats.total、event.taskstring))
    继续

    if isinstance (event、bb.runqueue.runQueueTaskStarted):
    如果是 event.noexec:
    TaskType ='noexec task'
    否则:
    任务类型='task'
    logger.info("Running %s %d、共%d (%s)"、
    任务类型、
    event.stats.completed + event.stats.active +
    event.stats.failed + 1、
    event.stats.total、event.taskstring)
    继续

    if isinstance (event、bb.runqueue.runQueueTaskFailed):
    RETURE_VALUE = 1
    taskfailures.append (event.taskstring)
    logger.error (str (event))(logger.error (str
    继续

    if isinstance (event、bb.runqueue.sceneQueueTaskFailed):
    logger.warning (str(event))
    继续

    如果 isinstance (event、bb.event.dptreeGenerated):
    继续

    如果 isinstance (event、bb.event.ProcessStarted):
    如果 params.options.quiet > 1:
    继续
    parseprogress = new_progress (event.processname、event.total)
    parseprogress.start (错误)
    继续
    如果 isinstance (event、bb.event.ProcessProgress):
    如果 params.options.quiet > 1:
    继续
    如果 parseprogress:
    parseprogress.update (event.progress)
    否则:
    bB.warn("GOT ProcessProgress event for sominging that never started?")
    继续
    如果 isinstance (event、bb.event.ProcessFinished):
    如果 params.options.quiet > 1:
    继续
    如果 parseprogress:
    parseprogress.finish()
    parseprogress =无
    继续

    #忽略
    如果 isinstance (event、(bb.event.BuildBase、
    b.event.MetadataEvent、
    b.event.StampUpdate、
    b.event.ConfigParsed、
    b.event.MultiConfigParsed、
    b.event.RecipeParsed、
    BB.event.RecipePreFinalize、
    bb.runqueue.runQueueEvent、
    b.event.OperationStarted、
    BB.event.OperationCompleted、
    BB.event.OperationProgress、
    b.event.DiskFull、
    b.event.HeartbeatEvent、
    bb.build.TaskProgress)):
    继续

    logger.error ("未知事件:%s"、事件)

    除了环境错误作为 ioerror:
    termfilter.clearFooter()
    #忽略中断的 IO
    如果 ioerror.args[0]= 4:
    继续
    sys.stderr.write (str (ioerror))(sys.stderr.write (str (str
    如果不是 params.Observ_only:
    _、ERROR = server.runCommand(["stateForceShutdown"])
    main.shutdown = 2
    键盘中断除外:
    termfilter.clearFooter()
    如果 params.Observ_only:
    打印("\n 键盘中断、正在退出观测器...")
    main.shutdown = 2
    如果不是 params.Observ_only 和 main.shutdown == 1:
    打印("\n 第二个键盘中断,正在停止...\n")
    _、ERROR = server.runCommand(["stateForceShutdown"])
    如果出错:
    logger.error ("无法完全停止:%s"%错误)
    如果不是 params.Observ_only 和 main.shutdown == 0:
    打印("\n 键盘中断,关闭...\n")
    中断=真
    _、ERROR = server.runCommand(["stateShutdown"])
    如果出错:
    logger.error ("无法完全关闭:%s"%错误)
    main.shutdown = main.shutdown + 1
    通过
    例外情况除外、例如 e:
    导入回溯
    sys.stderr.write (traceba.format_exc ())
    如果不是 params.Observ_only:
    _、ERROR = server.runCommand(["stateForceShutdown"])
    main.shutdown = 2
    RETURE_VALUE = 1
    尝试:
    termfilter.clearFooter()
    摘要=""
    如果任务失败:
    摘要+=多元化("\n 摘要:%s 任务失败:"、
    "\n 摘要:%s 任务失败:"、len (任务失败)
    对于任务失败中的失败:
    摘要+="\n %s"%失败
    如果出现警告:
    summary += pluralize ("\n 摘要:显示了%s 警告消息。"、
    "\n 摘要:显示了%s 个警告消息。"、警告)
    如果 return_value 和错误:
    summary += pluralize ("\n 摘要:显示%s 错误消息、返回非零退出代码。"、
    "\n 摘要:显示%s 错误消息,返回非零退出代码。",错误)
    如果 summary 和 params.options.quiet = 0:
    打印(摘要)

    如果中断:
    打印("执行被中断、返回非零退出代码。")
    如果 return_value = 0:
    RETURE_VALUE = 1
    除了 IOError 作为 e:
    导入错误号
    如果 e.errno == errno.epipe:
    通过

    如果控制台:
    logger.removeHandler (consolelog)
    consolelog.close()

    返回 return_value

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、

    我开始认为您报告的问题与主机上的 python 有关。

    为什么您的主机上有 python 版本? 您能否共享"python --version"的输出

    此致

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Karthik、

    请查看以下内容:

    User@Temp:~/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03 python --version
    Python 2.7.6
    用户@温度:~/Prasad/ti-processor-sdk-linux-automotive-dra7xx-evm-6.00.00.03

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Karthik、

    我已将默认 python 版本设置为 Python 3.7、并重复了所有过程、但仍然存在相同的问题

    User@Temp:~$ python -版本
    Python 3.7.9
    用户@温度:~$

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    有任何更新吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prasad、您好!

    我在这个主题上发布了我的更新: https://e2e.ti.com/support/tools/ccs/f/81/p/972640/3605660#3605660、让我们继续讨论一个主题。 所有问题都是相关的。

    此致

    Karthik