-
Notifications
You must be signed in to change notification settings - Fork 5.1k
[Bug] scons --menuconfig doesn 't work with kconfiglib installed #9161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
目前env版本针对不同的rtt版本支持情况有些残次不齐。 master版本只支持最新版本的env master,且建议使用install_ubuntu.sh进行安装,否则需要手动安装pip install kconfiglib。其他版本建议使用老版本env v1.5.x 因为master版本将原来老的kconfig-backend升级为python版本的kconfiglib,也就是说如果您使用老的env开发master必须手动安装kconfiglib。如果您使用老版本的env开发老版本的rtt,那么必须uninstall kconfiglib,否则会冲突 |
很抱歉,kconfiglib的升级过程中,没有较全面的考虑对历史版本的兼容。 我这几天尽量把rtt仓库现有的分支都修改成支持kconfiglib,但是tag估计需要重新发布 |
可以参考下:#9141 |
tag 的定义就是打上就不要动了,如果要改动,建议是增加小版本号,譬如 5.1.1,然后重新打tag,否则 tag 就失去意义了。 I have to say: 随意改动 tag 不是一个好的 release 习惯。 |
我主要在 linux/ubuntu 环境下工作(指开发 RTT),好像从来没用过 env 哎,我一直以为 env 是针对 windows 环境下的用户的呢。 |
Ubuntu下工作,scons --menuconfig这个命令在rtt之前的老版本上是调用了kconfig-backend,但是在rtt master更换为python kconfiglib,但是由于老版本的rtt在tools目录下存在一些跟kconfiglib重名的python文件,因此如果开发老版本rtt那么必须uninstall kconfiglib,如果开发master版本必须安装kconfiglib。 如果你安装了最新版本的env master,那么使用menuconfig命令(env定制修改的一个工具)是可以兼容老旧版本的rtt的,不要使用scons --menuconfig(调用了部分python脚本和kconfiglib重名了) windows下,由于有env-win这个存在,用户比较少使用scons --menuconfig,而是直接使用menuconfig.exe,这是一个定制的工具,因此可以兼容老旧版本 |
可以用 docker 建两个沙箱,一个用专门开发旧版本,一个专门开发 master 😂 |
@Later-Comer 既然如此,是否可以把 scons --menuconfig 重定向到 env 呢?或者执行 scons --menuconfig 出错时丢一些有效的提示信息。否则使用者很容易困惑。 |
我在晚上搜到一篇文章 https://club.rt-thread.org/ask/article/05be87dca1cfc990.html, 文章说 “运行 scons --menuconfig, 则会自动的下载 Env 工具”, 以及 “运行完毕后,Env 工具会被安装在当前用户的 ~/.env 目录中。” 我去 home 目录下的确看到 所以我的迷惑是:@Later-Comer 你在答复中描述的 “如果你安装了最新版本的env master” 这个是说我要自己手动安装最新版本的 env 吗?这个和网文中说的自动下载 env 工具是否会有冲突? 看上去 env 是另一个配置的入口。那原先的 scons 的那套入口 (--menuconfig )怎么和新的 env 入口融合起来感觉现在还做的有问题。 特别是我原先只知道 scons 那套命令,现在又要学习 env 的命令,这个过度有什么好办法吗? 其实我觉得最好只保留 scons 的入口,保持原有习惯不好吗?为啥有了 scons --menuconfig 还要有一个 Env 的 menuconfig。 |
是这样的情况,在rtt v5.1.0和之前的版本
在的rt-thread master版本上,我们采用python kconfiglib替换了kconfig-backend:
总体来说:
|
现在比较奇葩的是,scons --menuconfig是直接调用kconfiglib库,而env提供了一个定制的menuconfig(遗传自env-windows),他本质是将scons --menuconfig的功能复制了一次 其实我更倾向rtt的所有操作全面使用 scons --xxx的方式 |
我完全同意所有rtt才做都采用scons --xx这样的入口,由于env-win遗留menuconfig入口,master版本同时保留了env的menuconfig和scons --menuconfig,不过现在在切换rtt版本的时候,linux环境下没有衔接好。另外env提供不仅仅是menuconfig,还有pkgs等多个操作,其实pkgs我是希望采用scons --pkgs方式。 熊大,希望env独立成一个完整的工具,它可以集成到不同的ide里面,然后兼容各种ide对rtt进行操作,一本万利。 |
如果是 |
其实scons --menuconfig可以完全调用env下的py脚本,其中env是通用功能,但是scons --menuconfig是从tools/building.py启动,这样可以兼容env的通用,同时还是在building.py里面定制rtt版本特有的功能,比如环境变量、rtt路径等。 |
RT-Thread Version
v5.1.0
Hardware Type/Architectures
bsp/cvitek
Develop Toolchain
Other
Describe the bug
工作环境:
不知道这是不是设计行为,感觉这个 kconfiglib 对老的 RTT 版本执行 scons --menuconfig 有影响。
大家可以看看,如果觉得不是问题就关掉吧。解决方法我刚才说了,卸载 kconfiglib 后 v5.1.0 可以工作
Other additional context
No response
The text was updated successfully, but these errors were encountered: