简介
软件包的定义 :运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的软件组件形成一个个软件包,由软件包描述信息,软件包源代码或库文件组成。
在制作软件包前,需要先对软件包的功能进行准确的定义,确保 不要耦合 与产品业务逻辑有关的代码,提高软件包的 通用性 。
软件包应该包含以下内容:
1、软件包代码和说明文档。
2、软件包索引。
例如作为示例的 hello 软件包,这两部分的地址为分别是:
软件包代码和说明文档
软件包索引
整理软件包代码和说明文档
制作软件包前需要仔细阅读示例软件包说明文档,参考示例软件包的文件夹结构。
软件包代码和说明文档应该由以下部分组成:
软件包的功能代码;
根目录下的 SConscript 文件,用于和 RT-Thread 环境一起进行编译;
根目录下的 examples 文件夹,用于提供一份使用的例子;
如果需要加入 git submodule ,则可以直接在根目录下添加;
根目录下的 README.md 文件,说明这个软件包的功能;
根目录下的 docs 文件夹,放置除了 README 之外的其他文档;
如果需要额外的移植代码,可将其放在 port 文件夹下;### 创建软件包索引
软件包索引 :指存放在 env\packages
文件夹下的软件包 描述文件 。以 env\packages\packages\iot\pahomqtt
文件夹为例,包含内容如图所示:
Kconfig 文件 :软件包的配置项,如软件包版本、功能选项等信息。
package.json 文件 :存放软件包的名称、简介、各个版本对应的下载链接等信息。#### 使用索引生成向导
我们可以使用 env 的软件包索引生成向导功能来制作软件包索引,命令为 pkgs —wizard
,大致流程如下如图所示:
生成内容如下图所示:
修改 package.json 文件
package.json 文件介绍:
关于文件中 URL
值,每个版本可以填入两种类型 :
Git :可以填入 Git 仓库地址和对应版本的 SHA 值。一般 latest 版本会在 SHA 填入master。
压缩包 : 指定软件包压缩包的下载地址,此时无需填入 SHA 。
package.json 是软件包的描述信息文件,包括软件包名称,软件包描述,作者等信息,以及必须的 package 代码下载链接。另外,请务必包含许可证的说明,使用了哪种许可证( GPLv2,LGPLv2.1,MIT,Apache license v2.0,BSD 等)。
修改后的 package.json 大致如下:
修改 Kconfig 文件
Kconfig 文件内容大致如下:
软件包索引中的 Kconfig 文件主要由 menuconfig 命令使用,软件包的一些选项必须在 Kconfig 文件中定义出来,注意事项如下:
1、索引向导自动生成的 Kconfig 文件中的内容大多是必须的,可以参考其他软件包修改选项的值,但是 不要删除选项 。
2、软件包必须包含一个以PKGUSING开头的配置项,这样RT-Thread的包管理器才能将其正确识别。假设这个包的名称叫做SOFTA,那么软件包总选项应该是PKG_USING_SOFTA;
3、和这个SOFTA软件包相关的其他选项,需要以SOFTA_开头的配置项进行定义,可以是SOFTA_USING_A或者SOFTA_ENABLE_A等方式。
4、支持 latest 版本的软件包也至少需要一个固定版本,以防止在某个时候找不到合适的版本。
5、软件包如果还需要更多的配置项,可以搜索 Kconfig 语法 ,并参考已有的软件包来对 Kconfig 文件进行修改。
上传软件包
软件包可以上传到 git 上或者其他可供下载的地方,推荐使用 git 仓库的方式进行保存,这样方便更新软件包版本。
测试软件包
软件包的下载 :将软件包索引拷贝到 env\packages\packages 下对应的位置,然后在 env 中尝试在线下载软件包,测试下载是否成功。
软件包的功能 :下载完成后,使用 scons 命令重新编译项目,在相应的环境下运行,测试软件包功能是否正确。
软件包版本的切换 :尝试在 menuconfig 下切换软件包的版本,查看版本切换是否正常。### 向 RT-Thread 提交软件包索引
软件包索引源的管理
简介
env 可以从多个软件包源来下载软件包,每个源的软件包列表就存放在 env\packages
文件夹中,如 env\packages\packages
文件夹下就是 RT-Thread 官方的软件包列表。
添加额外的软件包源
复制一份 RT-Thread 官方的 packages 文件夹,修改文件夹名称后,删除该文件夹内不需要的软件包索引,将需要的索引添加进去。
更新 env\packages 文件夹下的 Kconfig 文件,在 Kconfig 文件中添加软件包源信息。
删除软件包源
删除软件源文件夹;
将 Kconfig 文件中相应的源文件夹信息删除。## 新版本发布(release)流程
软件包发布新版本需要遵循以下流程:
1、检查软件包,确保软件包功能使用正常。
2、在 github 上使用 release 功能发布新版本,如果没有权限可以通知管理员发布新版本。如果不知道该如何 release,可以参考 paho-mqtt 软件包仓库),发布新版本界面如下所示:
3、修改本地软件包索引,在 kconfig 文件和 package.json 文件中添加新版本的信息。
4、在本地测试新版本软件包的下载和删除,以及安装是否正常,确保软件包可以被正常添加到工程中使用。
5、向软件包索引提交 PR,并通知管理员合并。
原作者:RT-Thread工具手册