全志 V853 开发:lunch 不显示项目列表问题排查与解决

问题现象

在全志 V853 平台源码环境下,执行source build/envsetup.sh后运行lunch项目列表完全不显示,无法选择编译目标,直接影响编译流程启动。

排查环境

  • 系统:Ubuntu 22.04
  • 源码:全志 V853 melis 源码
  • 问题命令:lunch

排查步骤

1. 基础目录与文件检查

首先确认target目录存在且权限正常:

复制代码
ls -ld target
# 输出:drwxr-xr-x 7 geoffrey geoffrey 4096 Aug  6  2025 target

手动执行find查找vendorsetup.sh,能正常找到文件:

复制代码
# 不带-L
find target -name vendorsetup.sh | head -5
# 带-L(与脚本一致)
find -L target -maxdepth 4 -name vendorsetup.sh | head -5

结果均能输出target/allwinner/xxx/vendorsetup.sh,说明文件存在、find 命令本身无问题

2. 脚本逻辑定位

查看envsetup.shlunch菜单生成逻辑:

复制代码
# 核心代码片段
awchips=$(ls $(pwd)/device/config/chips | awk '{print " -e "$1"-"}')
verdors=$(find -L target -name vendorsetup.sh | grep $awchips | sort)
  • awchips:生成 grep 匹配规则
  • verdors:筛选有效项目路径
  • 日志显示verdors=为空,说明grep 匹配失败

3. 根因定位

排查发现:系统别名ls --color=auto导致输出带 ANSI 颜色转义码 ,这些不可见字符被带入awchips变量,grep 无法匹配纯文本路径,最终verdors为空,lunch无列表。

验证:

复制代码
echo "$awchips" | cat -A
# 若出现^[[等转义字符,确认颜色码干扰

解决方案

修改build/envsetup.sh禁用 ls 颜色输出、绕过系统别名

1. 修复 awchips 生成行

将:

复制代码
awchips="$(ls $(pwd)/device/config/chips | awk '{print " -e "$1"-"}')"

改为:

复制代码
# 方法1:使用\ls绕过别名
awchips="$(\ls $(pwd)/device/config/chips | awk '{print " -e "$1"-"}')"

# 方法2:显式禁用颜色
awchips="$(ls --color=never $(pwd)/device/config/chips | awk '{print " -e "$1"-"}')"

2. 同步修复 PLATFORM_CHOICES 行

复制代码
export PLATFORM_CHOICES="$(\ls $(gettop)/target/allwinner 2>/dev/null | grep common | sort | uniq | sed 's/-common//g')"

3. 生效验证

复制代码
source build/envsetup.sh
lunch

此时lunch正常显示全志平台项目列表。


问题总结

  1. 根本原因 :shell 别名导致ls输出颜色转义码,污染 grep 匹配规则。
  2. 关键现象:find 能找到文件,但 grep 无输出,verdors 变量为空。
  3. 通用经验 :shell 脚本中调用系统命令,建议用\command--color=never避免环境干扰。
相关推荐
深海鱼在掘金几秒前
Next.js从入门到实战保姆级教程(第六章):服务端组件与客户端组件
前端·typescript·next.js
HookJames2 分钟前
Turnkey PCBA - Hero
前端·php
深海鱼在掘金5 分钟前
Next.js从入门到实战保姆级教程(第十章):表单处理与 Server Actions
前端·typescript·next.js
深海鱼在掘金5 分钟前
Next.js从入门到实战保姆级教程(第九章):元数据与 SEO 优化
前端·typescript·next.js
сокол6 分钟前
【网安-Web渗透测试-Linux提权】SUID提权
linux·前端·web安全·网络安全
深海鱼在掘金7 分钟前
Next.js从入门到实战保姆级教程(第八章):图像、字体与媒体优化
前端·typescript·next.js
英俊潇洒美少年7 分钟前
Vue2 高德地图地址选择器完整实战(组件抽离+高并发优化+@amap/amap-jsapi-loader最佳实践)
前端·javascript·vue.js
深海鱼在掘金10 分钟前
Next.js从入门到实战保姆级教程(第七章):样式方案与 UI 优化
前端·typescript·next.js
晴天丨17 分钟前
🛡️ Vue 3 错误处理完全指南:全局异常捕获、前端监控、用户反馈
前端·vue.js
孙凯亮17 分钟前
Electron 接口请求全解析:从疑问到落地(真实开发对话整理)
前端·electron