全志 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避免环境干扰。
相关推荐
踩着两条虫2 小时前
VTJ.PRO 在线应用开发平台的项目模板(Web、H5、UniApp)
前端·低代码·ai编程
云原生指北2 小时前
测试文章标题 - Omnipub 自动发布测试
前端
无责任此方_修行中2 小时前
"JavaScript"这个名字,到底属于谁?一场价值74亿美元的法律战争
前端·javascript·程序员
CharlesY2 小时前
网页排版与编码的隐形神器:HTML字符实体从入门到精通
前端
我命由我123452 小时前
React - useEffect、useRef、Fragment
开发语言·前端·javascript·react.js·前端框架·ecmascript·js
云原生指北2 小时前
测试文章 - 摘要自定义填充验证
前端
她的男孩2 小时前
ForgeAdmin 更新:新增第三方登录认证 + 数据字段脱敏两大企业级特性
前端·后端
KevinCyao2 小时前
Ruby短信营销接口示例代码:Ruby开发环境下营销短信API接口的集成与Demo演示
开发语言·前端·ruby
葳_人生_蕤2 小时前
hot100——双指针法专题
java·前端·数据库