本文來源電子發(fā)燒友社區(qū),作者:離北況歸, 帖子地址:https://bbs.elecfans.com/jishu_2308800_1_1.html
由于想要分享的內(nèi)容較多,為避免讀者姥爺們失去看下去的耐心,分享將以連載的方式進(jìn)行。
本期為移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)
的第⑥期,主要內(nèi)容如下:
speexdsp移植后已提交至openhamrony sig倉庫:https://gitee.com/openharmony-sig/contest/tree/master/2022_OpenHarmony_thirdparty/speexdsp
九、準(zhǔn)備好上傳speexdsp至OpenHarmony倉庫。
移植完成后,先將代碼上傳至sig倉中的contest倉
sig倉庫是TPC倉庫的孵化倉。代碼先上sig倉,到時(shí)會(huì)直接平移到tpc倉。
上傳的內(nèi)容包括:
-
原生庫代碼
- (除了涉及需要修改原生庫代碼的部分,其他都不能上傳,例如編譯途中生成的中間文件)
- BUILD.gn
- README.Opensource
- 庫對(duì)外導(dǎo)出的所有api接口export_api.txt
- 測(cè)試過的api接口tested_api.txt
-
功能測(cè)試文檔: 三方庫_test_function.md
- 內(nèi)容至少包含羅列出庫所有的功能,已測(cè)試過的功能,原生庫測(cè)試邏輯的分析
- 原生庫分析文檔: 三方庫_analyse.md
文檔命名不要用中文,如果涉及到編碼問題的話,到時(shí)候會(huì)出現(xiàn)亂碼,一般建議不用中文命名?。?!
提供OAT.xml文件
OAT開源掃描
- OAT(OSS Audit Tool)是OpenHarmony社區(qū)的自動(dòng)化開源審視工具,用于幫助開發(fā)人員基于自定義的規(guī)則自動(dòng)掃描開源倉代碼,識(shí)別不符合預(yù)定規(guī)則的代碼并輸出掃描報(bào)告。
- OAT下載地址:https://gitee.com/openharmony-sig/tools_oat
工具使用
編譯構(gòu)建:
- 編譯構(gòu)建成功
在父目錄下添加OAT.xml,內(nèi)容如下:
<configuration>
<oatconfig>
<licensefile>COPYINGlicensefile>
<policylist>
<policy name="projectPolicy" desc="">
<policyitem type="license" name="*" path=".*" rule="may" group="defaultGroup" filefilter="defaultPolicyFilter" desc=""/>
policy>
policylist>
<filefilterlist>
<filefilter name="defaultFilter" desc="Files not to check">
<filteritem type="filepath" name=".*" desc="原生庫文件"/>
filefilter>
<filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
<filteritem type="filepath" name=".*" desc="原生庫代碼"/>
filefilter>
<filefilter name="copyrightPolicyFilter" desc="Filters for copyright header policies">
<filteritem type="filepath" name=".*" desc="原生庫代碼"/>
filefilter>
<filefilter name="licenseFileNamePolicyFilter" desc="Filters for LICENSE file policies">
filefilter>
<filefilter name="readmeFileNamePolicyFilter" desc="Filters for README file policies">
filefilter>
<filefilter name="readmeOpenSourcefileNamePolicyFilter" desc="Filters for README.OpenSource file policies">
filefilter>
<filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies">
filefilter>
filefilterlist>
<licensematcherlist>
licensematcherlist>
oatconfig>
configuration>
在speexdsp根目錄下新建空白的OAT_report.text文件,執(zhí)行命令:
Java –jar ohos_ossaudittool-1.0.jar –s src_dir –r report_file –n selfcheck
- ohos_ossaudittool-1.0.jar 工具包名,需要帶實(shí)際路徑
- -s 指定需要檢查的代碼目錄,src_dir 改成要檢查的項(xiàng)目路徑
- -r 指定報(bào)告輸出文件的路徑,檢查完成后可查看此文件中列出的問題,按指導(dǎo)文檔修復(fù)
- report_file
- -n 檢查任務(wù)的名稱,任意指定,本地檢查使用不上。
例如筆者執(zhí)行的語句為:
sudo java -Dfile.encoding=UTF-8 -jar /home/jiajiahao/Desktop/tools_oat-master/target/ohos_ossaudittool-1.0.jar -s /home/jiajiahao/Desktop/gitee_speexdsp -r /home/jiajiahao/Desktop/gitee_speexdsp/OAT_report.text -n nameOfRepo
掃描結(jié)果
執(zhí)行完上述命令后,OAT_report.text生成內(nèi)容如下:
同時(shí)在speexdsp父目錄下生成log文件夾
- LicenseFile.txt位于OAT工具運(yùn)行目錄的log目錄下,此文件記錄掃描目錄下所有疑似許可證的文件
原生庫通過make或者cmake時(shí)生成的一些配置文件。如比較通用的config.h配置文件,config.h文件為原生庫生成文件,原則上也不做修改,為了避免文件上倉進(jìn)行代碼掃碼,可以將文件文件修改后綴名(config.h.in)。相關(guān)文檔中需要將配置文件使用方法說明。
提供README.OpenSource文件
README.Opensource的格式如下:
[
{
"Name": "", ## 庫名
"License": "", ## 開源協(xié)議
"License File": ", ## 開源文件,一般開源項(xiàng)目都會(huì)自帶該文件
"Version Number": "", ## 庫的版本
"Owner": "", ## 作者
"Upstream URL": "", ## 開源庫的地址
"Description": "" ## 庫的描述
}
]
speexdsp的README.OpenSource文件如下:
[
{
"Name": "speexdsp",
"License": "BSD-3-Clause",
"License File": "COPYING",
"Version Number": "1.2.1",
"Owner": "2692032597@qq.com",
"Upstream URL": "https://speex.org/",
"Description": "Speexdsp is a speech processing library that goes along with the Speex codec"
}
]
提供庫的分析文檔
三方庫分析文檔如下:
一、確定庫實(shí)現(xiàn)方式
例如:C/C++/JS/JAVA
二.依賴分析
例如:當(dāng)前庫依賴其他三方庫,如下
1)庫名1,庫倉庫地址
2)庫名2,庫倉庫地址
三、license以及版權(quán)
例如:一般在license文件或者COPYING中,Apache License V2.0
四、最新一次版本
xx年xx月xx日,版本號(hào)xxx
五、功能點(diǎn)分析
(羅列出該庫所支持的功能)
六、代碼規(guī)模
(統(tǒng)計(jì)庫代碼總行數(shù),包括.h/.hpp/.c/.cpp/.cc 等代碼相關(guān)文件)
提供功能測(cè)試文檔
文檔中需羅列出
- 庫所有的功能
- 已測(cè)試過的功能
- 原生庫測(cè)試邏輯的分析
提供導(dǎo)出的api接口列表
1、 導(dǎo)出庫對(duì)外暴露的所有api接口的列表
2、導(dǎo)出庫對(duì)外暴露的已測(cè)試api接口的列表
十、上傳speexdsp至OpenHarmony倉庫
配置個(gè)人信息
打開git bash,依次輸入以下命令:
git config --global user.name "xxxx" (配置用戶名,xxxx為賬號(hào)用戶名,即個(gè)人空間地址)
git config --global user.email "xxxxxx@xxx" (gitee 賬號(hào)郵箱與簽署DCO 的郵箱保持一致即可)
git config --list (查看配置情況)
git config --global credential.helper store (解決每次git pull都要輸入賬號(hào)信息的問題)
克隆倉庫內(nèi)容到本地
到個(gè)人賬號(hào)點(diǎn)擊并進(jìn)入contest倉庫, fork該倉庫:
進(jìn)入到clone界面,復(fù)制clone的鏈接地址。
執(zhí)行如下語句:
git clone https://gitee.com/xxxxx/contest.git --depth=1
- --depth=1意思是只clone當(dāng)前倉庫最新版本,省去一些歷史log,避免倉庫歷史記錄過于龐大花費(fèi)太多clone時(shí)間。
- clone完畢之后,即可在本地目錄下看到這個(gè)clone的倉庫。本地目錄所在位置是根據(jù)git bash的位置決定的,比如在桌面啟動(dòng)git bash,則clone的倉庫會(huì)出現(xiàn)在桌面。
利用git lfs機(jī)制添加特殊文件
提交三方庫時(shí)候,文檔中有PDF文件時(shí)就需要使用利用git lfs機(jī)制
git lfs track xxx/xxx.pdf // 聲明該特殊文件到git lfs機(jī)制
git add .gitattributes // 添加配置文件
git add xxx/xxx.pdf // 添加具體特殊文件到暫存區(qū)中
git lfs ls-files // 確認(rèn)相關(guān)test_lfs.a 文件是否已經(jīng)添加到lfs 機(jī)制中。
git add * //將變更文件加入到暫存區(qū)
git commit -s -m "add xxxxxxxx" //將暫存區(qū)內(nèi)容簽名并提交到本地
- -s是簽名表明這次提交者簽名(signoff)
- -m是對(duì)此次提交行為進(jìn)行備注.
推送本地修改到賬號(hào)倉庫
現(xiàn)在需要將本地倉庫的修改內(nèi)容推送到gitee上fork后的個(gè)人倉庫,使用git push命令來完成這個(gè)動(dòng)作。
git push origin master
- origin指的是自己的倉庫對(duì)應(yīng)的原始遠(yuǎn)程服務(wù)器地址;
- master標(biāo)識(shí)的是想要提交的分支。
- 可以使用 git remote -v查看配置的遠(yuǎn)程服務(wù)器;
- git branch -a查看所有的分支。
進(jìn)入自己的賬號(hào)下面,查看這個(gè)倉庫,發(fā)現(xiàn)已經(jīng)發(fā)生了變化。從個(gè)人賬號(hào)倉庫下向官方倉庫下提交PR。
進(jìn)入個(gè)人賬號(hào)的該倉庫下,點(diǎn)擊增加PR即可開始提交PR。
提交pr時(shí),push的文件超過100個(gè)文件,在pr頁面只顯示100個(gè)。
-
dayu200
+關(guān)注
關(guān)注
1文章
26瀏覽量
1177 -
潤和軟件
+關(guān)注
關(guān)注
1文章
243瀏覽量
848
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論