diff --git a/README.md b/README.md index 78627f3e9edf86d76e76f6297128a46c736998db..295f43933e8c97738a166608e8757112a61fb151 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## 组件构成 -下面将以在线组件`curl`为例,对`Huawei LiteOS`的组件构成及组件管理进行详细说明。 +下面以在线组件`curl`为例,对`Huawei LiteOS`的组件构成及组件管理进行详细说明。 ### 目录结构 @@ -61,16 +61,21 @@ 在线组件的源码需要从网上下载,下载信息记录在`online_components`文件中。该文件具有特定格式,保存了各在线组件的相关信息(或称参数),如下所示,每个组件各有四个参数,各参数之间使用`&#&`分开。 -`curl-7.54.1 &#& components/utility/curl &#& LOSCFG_COMPONENTS_CURL=y &#& git clone -b curl-7.54.1 https://github.com/curl/curl.git` +`curl-7.54.1 &#& components/utility/curl &#& LOSCFG_COMPONENTS_CURL=y &#& https://github.com/curl/curl/archive/refs/tags/curl-7_54_1.zip` * 参数一:组件源码名(一般命名为:`源码名-版本号`)。 * 参数二:组件所在路径(将组件源码下载到该目录下)。 * 参数三:组件使能的标志(用于判断是否下载组件源码,该标志就是组件`Kconfig`文件中的配置项)。 -* 参数四:获取组件源码的方法(推荐使用`git`从`github`或`gitee`上下载开源软件,如使用其他脚本下载,此处填写调用该脚本的方法)。 +* 参数四:组件源码的下载地址或获取组件源码的命令(因后面涉及源码校验,推荐优先下载源码压缩包,校验起来更加方便快捷)。 + +**须知:** 在线组件目前支持如下几种下载方式: +* 下载压缩包:目前仅支持`.zip`/`.tar.gz`类型的压缩包,如:https://github.com/curl/curl/archive/refs/tags/curl-7_54_1.zip。 +* 使用git克隆:如:`git clone -b curl-7.54.1 https://github.com/curl/curl.git`。 +* 如无法使用以上方式获取源码,可自行编写shell脚本完成源码下载,并返回下载结果(成功/失败)。参数四填写调用该脚本的方法即可。 ### download.sh -下载在线组件源码和补丁文件,校验成功后,将补丁文件打入源码。在`Linux`或`Windows`平台上,下载获得的代码格式(`Windows`与`Linux`的换行符不同)可能不同。 +下载在线组件源码和补丁文件,进行sha256sum校验,校验成功后,将补丁文件打入源码。 ### components/utility/curl @@ -82,50 +87,47 @@ ### components/utility/curl/curl-7.54.1 -组件源码,对于在线组件由`download.sh`从网上下载获得,所以不需要将组件源码上传到`Huawei LiteOS`代码仓,只有离线组件的源码需要上传。 +组件源码,目录名需要和`online_components`文件中的参数一保持一致。对于在线组件由`download.sh`从网上下载获得,所以不需要将组件源码上传到`Huawei LiteOS`代码仓,只有离线组件的源码需要上传。 ### src.sha256 -文件内容为组件源码的`sha256`校验码。为确保组件的正常使用,需要保证从网上下载的源码与开发组件时使用的源码是同一份,因此需要对下载的源码进行`sha256`校验。因此,开发组件时需要针对这份源码生成`sha256`校验码文件。因为在`Windows`或`Linux`平台下下载的源码格式不一致,所以源码的校验码文件中都需要2个校验码,分别用于`Windows`和`Linux`源码格式的校验。 - -理论上可将[online_components](#online_components)中`参数四 参数一`组合成一个命令,分别在`Windows`和`Linux`平台上执行即可得到各自平台下的源码,再分别生成两种源码格式的`sha256`校验码,复制到`src.sha256`文件即可。 +文件内容为组件源码的`sha256`校验码。为确保组件的正常使用,需要保证从网上下载的源码与开发组件时使用的源码是同一份,`LiteOS`通过对下载的源码进行`sha256`校验来保证是同一份源码。所以,开发组件时需要计算生成源文件的`sha256`校验码,并将其复制到`src.sha256`文件。`curl`组件的`src.sha256`的文件内容如下: -`curl`组件的`src.sha256`的文件内容如下: ``` -linux_format: -94dccc75db03e0a1aa9f5fdcdb0bbb23c10588dacfa26ff1efa4c7a3c3f0188e curl-7.54.1/src/tool_util.c -2ea41391319ddf34131819154bee699df468dc92eaf8e7222632218982e48e73 curl-7.54.1/src/tool_util.h - -windows_format: -32d501d80f455062d548454bc98e3cd2f048000e332e08d498cd4dbf6776abcf *curl-7.54.1/src/tool_util.c -32c8502c6e1eee8d92afe59da8ac02fc11895184c60e5f9d59cca12b78b0b05d *curl-7.54.1/src/tool_util.h +7eec2c7f863c17d8586e94255cd0c2934822f1ae3cb40283a892b46e44f93bdf curl-7.54.1.zip ``` -* `linux_format:` 关键字,表示其后是`Linux`格式的校验码。 -* `windows_format:` 关键字,表示其后是`Windows`格式的校验码。 -* 该文件采用统一命名,文件名不可修改。 -可参考如下命令生成源码中所有文件的`sha256`校验值: -```shell -find curl-7.54.1 -type f -print0 | xargs -0 sha256sum -``` -**须知:** 如果需要在`Windows`的`cmd`中执行该命令,可以安装`Git`工具,找到`Git`中`find.exe`在`Windows`中的安装路径,替换`find`,如: -``` -"C:\Program Files\Git\usr\bin\find" curl-7.54.1 -type f -print0 | xargs -0 sha256sum -``` -* 必须在组件源码的同级目录下执行上述命令,然后将输出的结果以要求的格式拷贝到`src.sha256`文件即可。 +生成`sha256`校验码的方法可参考如下命令: + +* 如果下载的源码包是压缩包: + ```shell + sha256sum 参数一.zip > src.sha256 # sha256sum curl-7.54.1.zip > src.sha256 + ``` + +* 如果源码包不是压缩包: + ```shell + find 参数一 -type f -print0 | xargs -0 sha256sum > src.sha256 # find curl-7.54.1 -type f -print0 | xargs -0 sha256sum > src.sha256 + ``` + +**须知:** 如果需要在`Windows`中执行以上命令,可以安装`Git`工具,使用`Git`自带的终端即可执行。注意需提前设置`Git`为禁止换行符转换,参考命令`git config --global core.autocrlf input`。 + +**注意:** +- 校验码文件采用统一命名`src.sha256`,文件名不可修改。 +- 开发组件时,请使用`online_components`文件中的参数四的方式下载源码文件。 ### origin.patch 源码的补丁文件,该文件采用统一命名`origin.patch`,不可修改。在`Huawei LiteOS`上开发组件,建议尽量避免对开源源码的直接修改,如无法避免(例如:不修改源码无法编译成功,或源码无法直接运行在`Huawei LiteOS`上,则需要适配),则应该将修改内容生成为补丁文件`origin.patch`。在后续使用中,采取打补丁的方式修改源码。 -补丁文件保存在`LiteOS_Components`仓库中,使用时由`download.sh`从该仓库中下载获得,所以在不同平台上,下载获得的代码格式是不一样的。 +补丁文件需上传到`LiteOS_Components`仓库中,使用时由`download.sh`从该仓库中下载获得。`download.sh`脚本会采用`patch -p1`的方式打补丁,所以应该将修改后的源码文件放在另一个源码目录中,对原源码目录和修改后的源码目录制作补丁。 +**注意:** 请确保`origin.patch`文件在本地校验前已经是`unix`格式,因为该文件上传到`LiteOS_Components`仓库时会自动转换为`unix`格式,如果本地校验时不是`unix`格式,会导致该在线组件执行`download.sh`失败。 ### patch.sha256 -源码补丁文件`origin.patch`的校验码文件,该文件采用统一命名`patch.sha256`,不可修改。其作用是保证下载的补丁文件正确,文件格式与`src.patch`的要求一致,也需要分别在`Windows`和`Linux`两种平台下生成校验码。 +源码补丁文件`origin.patch`的校验码文件,该文件采用统一命名`patch.sha256`,不可修改。其作用是保证下载的补丁文件正确,文件格式与`src.patch`的要求一致。 ### Kconfig