From 859f687fef6336342b5b997e83a278e17e72c3db Mon Sep 17 00:00:00 2001 From: chengkan Date: Fri, 4 Aug 2023 16:00:37 +0800 Subject: [PATCH 1/4] add libxslt Signed-off-by: chengkan --- thirdparty/libxslt/HPKBUILD | 88 ++++++++++++++++ thirdparty/libxslt/HPKCHECK | 31 ++++++ thirdparty/libxslt/OAT.xml | 20 ++++ thirdparty/libxslt/README.OpenSource | 11 ++ thirdparty/libxslt/README_zh.md | 14 +++ thirdparty/libxslt/SHA512SUM | 1 + thirdparty/libxslt/docs/hap_integrate.md | 96 ++++++++++++++++++ .../libxslt/docs/pic/libxslt_install.png | Bin 0 -> 17975 bytes thirdparty/libxslt/docs/pic/libxslt_test.png | Bin 0 -> 45227 bytes 9 files changed, 261 insertions(+) create mode 100644 thirdparty/libxslt/HPKBUILD create mode 100644 thirdparty/libxslt/HPKCHECK create mode 100644 thirdparty/libxslt/OAT.xml create mode 100644 thirdparty/libxslt/README.OpenSource create mode 100644 thirdparty/libxslt/README_zh.md create mode 100644 thirdparty/libxslt/SHA512SUM create mode 100644 thirdparty/libxslt/docs/hap_integrate.md create mode 100644 thirdparty/libxslt/docs/pic/libxslt_install.png create mode 100644 thirdparty/libxslt/docs/pic/libxslt_test.png diff --git a/thirdparty/libxslt/HPKBUILD b/thirdparty/libxslt/HPKBUILD new file mode 100644 index 00000000..5a6085a3 --- /dev/null +++ b/thirdparty/libxslt/HPKBUILD @@ -0,0 +1,88 @@ +# Contributor: chengkan +# Maintainer: chengkan +pkgname=libxslt +pkgver=1.1.38 +pkgrel=0 +pkgdesc="libxslt itself is a an XML language to define transformation for XML" +url="https://gitlab.gnome.org/GNOME/libxslt/-/wikis/home" +archs=("armeabi-v7a" "arm64-v8a") +license=("MIT license") +depends=("libxml2") +makedepends=() + +source="https://mirror.ossplanet.net/gnome/sources/$pkgname/1.1/$pkgname-$pkgver.tar.xz" + +autounpack=true +downloadpackage=true +buildtools="configure" + +builddir=$pkgname-${pkgver} +packagename=$builddir.tar.xz + +source envset.sh +host= + +prepare() { + + cp -arf $builddir $builddir-$ARCH-build + if [ $ARCH == "armeabi-v7a" ]; then + setarm32ENV + host=arm-linux + elif [ $ARCH == "arm64-v8a" ]; then + setarm64ENV + host=aarch64-linux + else + echo "$ARCH not support!" + return -1 + fi +} + +build() { + cd $builddir-$ARCH-build + PKG_CONFIG_LIBDIR=$pkgconfigpath ./configure "$@" --enable-static --without-python --host=$host >> `pwd`/build.log 2>&1 + + # 增加check_test目标用来执行测试程序,禁止make check阶段运行测试程序 + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xmlspec/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/XSLTMark/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/fuzz/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/multiple/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xinclude/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/docbook/Makefile + + make -j4 >> `pwd`/build.log 2>&1 + # 编译测试程序 + make check >> `pwd`/build.log 2>&1 + + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir-$ARCH-build + make install >> `pwd`/build.log 2>&1 + cd $OLDPWD + + if [ $ARCH == "armeabi-v7a" ]; then + unsetarm32ENV + elif [ $ARCH == "arm64-v8a" ]; then + unsetarm64ENV + else + echo "$ARCH not support!" + fi + + unset host +} + +check() { + echo "The test must be on an OpenHarmony device!" + ## real test CMD + ## 进入到编译目录下的tests目录执行 + ## make check_test +} + +# 清理环境 +cleanbuild() { + rm -rf ${PWD}/$builddir ${PWD}/$builddir-${archs[0]}-build ${PWD}/$builddir-${archs[1]}-build #${PWD}/$packagename +} diff --git a/thirdparty/libxslt/HPKCHECK b/thirdparty/libxslt/HPKCHECK new file mode 100644 index 00000000..97cf04cf --- /dev/null +++ b/thirdparty/libxslt/HPKCHECK @@ -0,0 +1,31 @@ +# Contributor: chengkan +# Maintainer: chengkan +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log +HASSED=false +checkprepare(){ + export LIBXSLT_PLUGINS_PATH=`pwd`/$builddir-$ARCH-build/tests/.libs + + # 检查/usr/bin目录下是否存在sed软连接 + if [ ! -L "/usr/bin/sed" ]; then + # 创建软连接 + ln -s /usr/bin/busybox /usr/bin/sed + else + HASSED = true + fi +} +openharmonycheck() { + res=0 + cd $builddir-$ARCH-build/tests + /usr/bin/make check_test >> ${logfile} 2>&1 + res=$? + + unset LIBXSLT_PLUGINS_PATH + cd $OLDPWD + + if [ $HASSED == false ];then + rm -rf /usr/bin/sed + fi + + return $res +} diff --git a/thirdparty/libxslt/OAT.xml b/thirdparty/libxslt/OAT.xml new file mode 100644 index 00000000..5eecdd62 --- /dev/null +++ b/thirdparty/libxslt/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/libxslt/README.OpenSource b/thirdparty/libxslt/README.OpenSource new file mode 100644 index 00000000..f837ce81 --- /dev/null +++ b/thirdparty/libxslt/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "libxslt", + "License": "MIT license", + "License File": "https://gitlab.gnome.org/GNOME/libxslt/-/wikis/home", + "Version Number": "1.1.38", + "Owner": "kanchengc@isoftstone.com", + "Upstream URL": "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.38.tar.xz", + "Description": "libxslt itself is a an XML language to define transformation for XML." + } +] diff --git a/thirdparty/libxslt/README_zh.md b/thirdparty/libxslt/README_zh.md new file mode 100644 index 00000000..cb1640d7 --- /dev/null +++ b/thirdparty/libxslt/README_zh.md @@ -0,0 +1,14 @@ +# libxslt三方库说明 +## 功能简介 +Libxslt库用于处理和转换XML文档。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release + +- SDK:ohos_sdk_public 4.0.8.1 (API Version 10 Release) + +- 三方库版本:1.1.38 + +- 当前适配功能:允许通过使用XSLT样式表来转换XML文档的结构和内容。 + +## 集成方式 ++ [系统hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/libxslt/SHA512SUM b/thirdparty/libxslt/SHA512SUM new file mode 100644 index 00000000..fbf0cadd --- /dev/null +++ b/thirdparty/libxslt/SHA512SUM @@ -0,0 +1 @@ +2836bd2990b95680db0960ac4c465d0c6c28a293ad095a224c05021a1c8d2576a45e41da8947a31f4ef3e6ef368cbda65243661e311c9886c19694be5a7c9a8e libxslt-1.1.38.tar.xz diff --git a/thirdparty/libxslt/docs/hap_integrate.md b/thirdparty/libxslt/docs/hap_integrate.md new file mode 100644 index 00000000..06705647 --- /dev/null +++ b/thirdparty/libxslt/docs/hap_integrate.md @@ -0,0 +1,96 @@ +# libxslt集成到应用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 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/libxslt #三方库libxslt的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── HPKCHECK #自动化测试脚本 + ├── OAT.xml #版权检验文件 + ├── README_zh.md + ``` + + +- 在lycium目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ``` + + cd lycium + ./build.sh libxslt + ``` +- 三方库头文件及生成的库 + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + libxslt/arm64-v8a libxslt/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下.如下图所示 + ![libxslt_install](pic/libxslt_install.png) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + + #将三方库加入工程中 + target_link_libraries(entry PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/lib/libexslt.a + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/lib/libxslt.a + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib/${OHOS_ARCH}/lib/libz.a) + + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxml2/${OHOS_ARCH}/include + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/include + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xz/${OHOS_ARCH}/include + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib/${OHOS_ARCH}/include) + ``` +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + + + +- 将测试资源导入到开发板 +mount -o remount,rw / #重新挂载系统 +ln -s /usr/bin/busybox /usr/bin/sed #创建sed软连接 +- 设置依赖服务程序路径 +``` +32位系统 +export LD_LIBRARY_PATH=/data/local/tmp/tpc_c_cplusplus/lycium/usr/libxml2/armeabi-v7a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/libxslt/armeabi-v7a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/xz/armeabi-v7a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/zlib/armeabi-v7a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/main/libxslt/libxslt-1.1.38-armeabi-v7a-build/tests/.libs + +export LIBXSLT_PLUGINS_PATH=/data/local/tmp/tpc_c_cplusplus/lycium/main/libxslt/libxslt-1.1.38-armeabi-v7a-build/tests/.libs + +##64位系统 +export LD_LIBRARY_PATH=/data/local/tmp/tpc_c_cplusplus/lycium/usr/libxml2/arm64-v8a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/libxslt/arm64-v8a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/xz/arm64-v8a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/usr/zlib/arm64-v8a/lib:/data/local/tmp/tpc_c_cplusplus/lycium/main/libxslt/libxslt-1.1.38-arm64-v8a-build/tests/.libs + +export LIBXSLT_PLUGINS_PATH=/data/local/tmp/tpc_c_cplusplus/lycium/main/libxslt/libxslt-1.1.38-arm64-v8a-build/tests/.libs + +``` +- 进入到构建目录$ARCH-build/tests下执行 /usr/bin/make check_test 运行测试用例,如下截图(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + + +![libxslt](pic/libxslt_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/libxslt/docs/pic/libxslt_install.png b/thirdparty/libxslt/docs/pic/libxslt_install.png new file mode 100644 index 0000000000000000000000000000000000000000..2983fa7dd089b1544a68a308ae5244c418af38c4 GIT binary patch literal 17975 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 F{|~4-gcAS& literal 0 HcmV?d00001 diff --git a/thirdparty/libxslt/docs/pic/libxslt_test.png b/thirdparty/libxslt/docs/pic/libxslt_test.png new file mode 100644 index 0000000000000000000000000000000000000000..d279c54f99ca783ec4f24d692ebc28f84f2ec198 GIT binary patch literal 45227 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

4l8V>@lVKF#>3<>Ie9 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 literal 0 HcmV?d00001 -- Gitee From 0a03d2f31467ed6c45ac01f7a732c154a8e3e6e9 Mon Sep 17 00:00:00 2001 From: chengkan Date: Wed, 16 Aug 2023 16:57:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9libxslt=E7=9A=84=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chengkan --- thirdparty/libxslt/docs/hap_integrate.md | 27 ++++++++++-------- .../libxslt/docs/pic/libxslt_install.png | Bin 17975 -> 15238 bytes 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/thirdparty/libxslt/docs/hap_integrate.md b/thirdparty/libxslt/docs/hap_integrate.md index 06705647..eec161b7 100644 --- a/thirdparty/libxslt/docs/hap_integrate.md +++ b/thirdparty/libxslt/docs/hap_integrate.md @@ -44,23 +44,26 @@ - [测试三方库](#测试三方库) ## 应用中使用三方库 -- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下.如下图所示 +- 在IDE的libs目录下,将编译生成的库拷贝到该目录下.如下图所示  ![libxslt_install](pic/libxslt_install.png) -- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 +- 在entry/src/main/cpp目录下的CMakeLists.txt中添加如下语句 ``` #将三方库加入工程中 - target_link_libraries(entry PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/lib/libexslt.a - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/lib/libxslt.a - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib/${OHOS_ARCH}/lib/libz.a) - + target_link_libraries(entry PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libxslt.a + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libexslt.a + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libz.a + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libxml2.so.2 + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/liblzma.so.5 + ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libz.so.1) #将三方库的头文件加入工程中 - target_include_directories(entry PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxml2/${OHOS_ARCH}/include - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/include - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xz/${OHOS_ARCH}/include - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib/${OHOS_ARCH}/include) + target_include_directories(entry PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxml2/${OHOS_ARCH}/include/libxml2/libxml + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/include/libexslt + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libxslt/${OHOS_ARCH}/include/libxslt + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xz/${OHOS_ARCH}/include + ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib/${OHOS_ARCH}/include) ``` ## 测试三方库 三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) diff --git a/thirdparty/libxslt/docs/pic/libxslt_install.png b/thirdparty/libxslt/docs/pic/libxslt_install.png index 2983fa7dd089b1544a68a308ae5244c418af38c4..973527ce5c54403810ce830677b6bf7db5e6a356 100644 GIT binary patch literal 15238 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 F{|~4-gcAS& -- Gitee From 10a390220a600a6eec43ac3f2d7a4bab755a6ab6 Mon Sep 17 00:00:00 2001 From: chengkan Date: Thu, 17 Aug 2023 09:37:31 +0800 Subject: [PATCH 3/4] add libxslt Copyright Signed-off-by: chengkan --- thirdparty/libxslt/HPKBUILD | 12 ++++++++++++ thirdparty/libxslt/HPKCHECK | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/thirdparty/libxslt/HPKBUILD b/thirdparty/libxslt/HPKBUILD index 5a6085a3..ed2188fc 100644 --- a/thirdparty/libxslt/HPKBUILD +++ b/thirdparty/libxslt/HPKBUILD @@ -1,3 +1,15 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Contributor: chengkan # Maintainer: chengkan pkgname=libxslt diff --git a/thirdparty/libxslt/HPKCHECK b/thirdparty/libxslt/HPKCHECK index 97cf04cf..65eaf30a 100644 --- a/thirdparty/libxslt/HPKCHECK +++ b/thirdparty/libxslt/HPKCHECK @@ -1,3 +1,15 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Contributor: chengkan # Maintainer: chengkan source HPKBUILD > /dev/null 2>&1 -- Gitee From 78bc8d760573c03ee54f96c78581bcb982272ae0 Mon Sep 17 00:00:00 2001 From: chengkan Date: Thu, 17 Aug 2023 10:15:29 +0800 Subject: [PATCH 4/4] modify libxslt Signed-off-by: chengkan --- thirdparty/libxslt/HPKBUILD | 26 ++++++++++++++------------ thirdparty/libxslt/HPKCHECK | 6 +++--- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/thirdparty/libxslt/HPKBUILD b/thirdparty/libxslt/HPKBUILD index ed2188fc..2724820a 100644 --- a/thirdparty/libxslt/HPKBUILD +++ b/thirdparty/libxslt/HPKBUILD @@ -52,19 +52,7 @@ prepare() { build() { cd $builddir-$ARCH-build PKG_CONFIG_LIBDIR=$pkgconfigpath ./configure "$@" --enable-static --without-python --host=$host >> `pwd`/build.log 2>&1 - - # 增加check_test目标用来执行测试程序,禁止make check阶段运行测试程序 - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xmlspec/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/XSLTMark/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/fuzz/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/multiple/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xinclude/Makefile - sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/docbook/Makefile - make -j4 >> `pwd`/build.log 2>&1 - # 编译测试程序 - make check >> `pwd`/build.log 2>&1 ret=$? cd $OLDPWD @@ -88,6 +76,20 @@ package() { } check() { + cd $builddir-$ARCH-build + # 增加check_test目标用来执行测试程序,禁止make check阶段运行测试程序 + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xmlspec/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/XSLTMark/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/fuzz/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/multiple/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/xinclude/Makefile + sed -i 's/\t$(MAKE) $(AM_MAKEFLAGS) check-local/check_test: $(MAKE) $(AM_MAKEFLAGS) check-local/g' ./tests/docbook/Makefile + + # 编译测试程序 + make check >> `pwd`/build.log 2>&1 + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" ## real test CMD ## 进入到编译目录下的tests目录执行 diff --git a/thirdparty/libxslt/HPKCHECK b/thirdparty/libxslt/HPKCHECK index 65eaf30a..d788dc50 100644 --- a/thirdparty/libxslt/HPKCHECK +++ b/thirdparty/libxslt/HPKCHECK @@ -14,7 +14,7 @@ # Maintainer: chengkan source HPKBUILD > /dev/null 2>&1 logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log -HASSED=false +hassed=false checkprepare(){ export LIBXSLT_PLUGINS_PATH=`pwd`/$builddir-$ARCH-build/tests/.libs @@ -23,7 +23,7 @@ checkprepare(){ # 创建软连接 ln -s /usr/bin/busybox /usr/bin/sed else - HASSED = true + hassed = true fi } openharmonycheck() { @@ -35,7 +35,7 @@ openharmonycheck() { unset LIBXSLT_PLUGINS_PATH cd $OLDPWD - if [ $HASSED == false ];then + if [ $hassed == false ];then rm -rf /usr/bin/sed fi -- Gitee