From d41e26cab05ebb1449ca1be7c11d28f31e8db1a5 Mon Sep 17 00:00:00 2001 From: tyBrave Date: Tue, 9 May 2023 14:58:29 +0800 Subject: [PATCH] add nghttp3 Signed-off-by: tyBrave --- thirdparty/nghttp3/HPKBUILD | 59 +++++++++++++++ thirdparty/nghttp3/README.OpenSource | 11 +++ thirdparty/nghttp3/README_zh.md | 12 +++ thirdparty/nghttp3/SHA512SUM | 1 + thirdparty/nghttp3/docs/hap_integrate.md | 70 ++++++++++++++++++ .../nghttp3/docs/pic/nghttp3_install_dir.png | Bin 0 -> 21514 bytes thirdparty/nghttp3/docs/pic/nghttp3_test.png | Bin 0 -> 27986 bytes thirdparty/nghttp3/docs/pic/nghttp3_usage.png | Bin 0 -> 26289 bytes 8 files changed, 153 insertions(+) create mode 100644 thirdparty/nghttp3/HPKBUILD create mode 100644 thirdparty/nghttp3/README.OpenSource create mode 100644 thirdparty/nghttp3/README_zh.md create mode 100644 thirdparty/nghttp3/SHA512SUM create mode 100644 thirdparty/nghttp3/docs/hap_integrate.md create mode 100644 thirdparty/nghttp3/docs/pic/nghttp3_install_dir.png create mode 100644 thirdparty/nghttp3/docs/pic/nghttp3_test.png create mode 100644 thirdparty/nghttp3/docs/pic/nghttp3_usage.png diff --git a/thirdparty/nghttp3/HPKBUILD b/thirdparty/nghttp3/HPKBUILD new file mode 100644 index 00000000..7802560d --- /dev/null +++ b/thirdparty/nghttp3/HPKBUILD @@ -0,0 +1,59 @@ +# Contributor: tyBrave +# Maintainer: tyBrave +pkgname=nghttp3 +pkgver=v0.10.0 +pkgrel=0 +pkgdesc="" +url="" +archs=("armeabi-v7a" "arm64-v8a") +license=("MIT") +depends=("CUnit") +makedepends=() +install= +source="https://github.com/ngtcp2/$pkgname/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true + +builddir=$pkgname-${pkgver:1} +packagename=$builddir.tar.gz + +prepare() { + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ -L > `pwd`/$ARCH-build/build.log 2>&1 + make -j4 -C $ARCH-build >> `pwd`/$ARCH-build/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd "$builddir" + make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1 + cd $OLDPWD +} + +check() { + cd $builddir/$ARCH-build + echo "checkcheckcheckcheckcheckcheckcheckcheck" + make -f lib/CMakeFiles/nghttp3_static.dir/build.make lib/CMakeFiles/nghttp3_static.dir/depend >> `pwd`/build.log 2>&1 && \ + make -f lib/CMakeFiles/nghttp3_static.dir/build.make lib/CMakeFiles/nghttp3_static.dir/build >> `pwd`/build.log 2>&1 && \ + make -f tests/CMakeFiles/main.dir/build.make tests/CMakeFiles/main.dir/depend >> `pwd`/build.log 2>&1 && \ + make -f tests/CMakeFiles/main.dir/build.make tests/CMakeFiles/main.dir/build >> `pwd`/build.log 2>&1 && \ + make -f CMakeFiles/check.dir/build.make CMakeFiles/check.dir/depend >> `pwd`/build.log 2>&1 + res=$? + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" + # real test CMD + # ctest + return $res +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} diff --git a/thirdparty/nghttp3/README.OpenSource b/thirdparty/nghttp3/README.OpenSource new file mode 100644 index 00000000..544387ed --- /dev/null +++ b/thirdparty/nghttp3/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "nghttp3", + "License": "MIT", + "License File": "https://github.com/ngtcp2/nghttp3/blob/main/COPYING", + "Version Number": "v0.10.0, + "Owner": "tianyong13@huawei.com", + "Upstream URL": "https://github.com/ngtcp2/nghttp3/archive/refs/tags/v0.10.0.tar.gz", + "Description": "nghttp3 is an implementation of RFC 9114 HTTP/3 mapping over QUIC and RFC 9204 QPACK in C." + } +] diff --git a/thirdparty/nghttp3/README_zh.md b/thirdparty/nghttp3/README_zh.md new file mode 100644 index 00000000..c0052ad2 --- /dev/null +++ b/thirdparty/nghttp3/README_zh.md @@ -0,0 +1,12 @@ +# nghttp3三方库说明 +## 功能简介 +nghttp3是在C中通过QUIC和QPACK进行HTTP/3映射的实现,它不依赖于任何特定的QUIC传输实现 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:v0.10.0 +- 当前适配的功能:支持http3 +- [MIT License](https://github.com/ngtcp2/nghttp3/blob/main/COPYING) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/nghttp3/SHA512SUM b/thirdparty/nghttp3/SHA512SUM new file mode 100644 index 00000000..436e20c2 --- /dev/null +++ b/thirdparty/nghttp3/SHA512SUM @@ -0,0 +1 @@ +44dd4f4bb807a4d9f2c85399e83e3146ca8e18b4d4e9bca0b1a9a626daf1f9ca2892bfa55552267a3f43af7e6c6090ec662782936a45bada6faca822d1a31638 nghttp3-0.10.0.tar.gz diff --git a/thirdparty/nghttp3/docs/hap_integrate.md b/thirdparty/nghttp3/docs/hap_integrate.md new file mode 100644 index 00000000..684ef62a --- /dev/null +++ b/thirdparty/nghttp3/docs/hap_integrate.md @@ -0,0 +1,70 @@ +# nghttp3集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/nghttp3 #三方库nghttp3的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将nghttp3及其依赖库CUnit拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/CUnit tools/main -rf + cp thirdparty/nghttp3 tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh CUnit nghttp3 + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + nghttp3/arm64-v8a nghttp3/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + + ![nghttp3_install_dir](pic/nghttp3_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/nghttp3/${OHOS_ARCH}/lib/libnghttp3.a) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/nghttp3/${OHOS_ARCH}/include) + ``` + ![nghttp3_usage](pic/nghttp3_usage.png) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行ctest运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![nghttp3_test](pic/nghttp3_test.png) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/nghttp3/docs/pic/nghttp3_install_dir.png b/thirdparty/nghttp3/docs/pic/nghttp3_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfbc97b586177bfaaeea702f0d32cb29292eb06 GIT binary patch literal 21514 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 literal 0 HcmV?d00001 diff --git a/thirdparty/nghttp3/docs/pic/nghttp3_test.png b/thirdparty/nghttp3/docs/pic/nghttp3_test.png new file mode 100644 index 0000000000000000000000000000000000000000..582457b1e2e31b20e7ff55808034ff0c1766f2c8 GIT binary patch literal 27986 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 literal 0 HcmV?d00001 -- Gitee