xmake-io / xmake-vscode

🍩 A XMake integration in Visual Studio Code
https://xmake.io
Apache License 2.0
227 stars 54 forks source link

在容器内使用(或者vscode以root权限运行时), xmake-vscode 会提示xmake not found! #239

Closed RiversJin closed 9 months ago

RiversJin commented 9 months ago

Xmake 版本

xmake v2.8.5+20231107

操作系统版本和架构

Linux, Docker内(root 用户)

描述问题

这个问题是由于xmake默认不可以用root权限运行. 而且容器内通常就是root. 如果是希望正常使用, 可以用XMAKE_ROOT=y或者--root参数. 但是, 插件在启动时, 会直接调用 xmake --version导致xmake返回错误, 即使在插件的配置页中额外添加--root也无济于事, 因为这里src/xmake.ts:start()处是直接编码的参数而没有从config.additionalConfigArguments获取手动添加的参数

期待的结果

如果要解决这个问题的话. 我想比较好的方式是在await process.runv(config.executable, ["--version"] ...那里, 将config.additionalConfigArguments也加入进来, 或者简单添加一个'--root'? xmake用root权限执行是不太好, 但如果只是运行xmake --root --version的话, 应该问题不大吧?

工程配置

用vscode打开一个空的xmake.lua即可

附加信息和错误日志

waruqi commented 9 months ago

用 XMAKE_ROOT=y或者--root参数, 或者 Docker 下切到普通用户,参考:https://github.com/waruqi/dockerfiles/blob/master/ubuntu/Dockerfile

root 下遇到的问题,我这边不做更多技术支持

RiversJin commented 9 months ago

用 XMAKE_ROOT=y或者--root参数, 或者 Docker 下切到普通用户,参考:https://github.com/waruqi/dockerfiles/blob/master/ubuntu/Dockerfile

root 下遇到的问题,我这边不做更多技术支持

对, 问题在于在await process.runv(config.executable, ["--version"] ...这里用户不能直接添加--root参数. 我觉得应该在这里加一个判断, 假如用户在插件配置中添加了--root参数的话(视为用户确认使用root), 在这里检查xmake时就同样加入--root参数. 如果你觉得这样可以的话, 我可以提一个pr来做这件事

waruqi commented 9 months ago

不考虑,建议自己设置 XMAKE_ROOT=y

RiversJin commented 9 months ago

Ok