# Contributor: 小肉头君 <chenbaodi@huawei.com>
# Maintainer: 小肉头君 <chenbaodi@huawei.com>
pkgname=c-ares
pkgver=cares-1_19_0
pkgrel=0
pkgdesc="A C library for asynchronous DNS requests"
url="https://github.com/c-ares/c-ares"
archs=("armeabi-v7a" "arm64-v8a")
license=("MIT License")
depends=()
makedepends=()
source="https://github.com/$pkgname/$pkgname/archive/refs/tags/$pkgver.tar.gz"
autounpack=true
downloadpackage=true
builddir=$pkgname-$pkgver
packagename=$builddir.tar.gz
prepare() {
mkdir -p $builddir/$ARCH-build
}
build() {
sed -i 's/\/tmp/\/data\/local\/tmp/g' c-ares-cares-1_19_0/test/ares-test-init.cc
sed -i '8214s/\/tmp/\/data\/local\/tmp/' c-ares-cares-1_19_0/test/gmock-1.11.0/gmock-gtest-all.cc
sed -i '11464s/\/tmp/\/data\/local\/tmp/' c-ares-cares-1_19_0/test/gmock-1.11.0/gmock-gtest-all.cc
sed -i '824s/nullptr/"\/data\/local\/tmp"/' c-ares-cares-1_19_0/test/ares-test.cc
cd $builddir
${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -DCARES_BUILD_TESTS=ON -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
}
# 测试,需要在 ohos 设备上进行
check() {
echo "The test must be on an OpenHarmony device!"
# real test 需要连接网络
# ctest
# ctest在ohos设备上运行第一个测试用例会失败,进入Testing/Temporary/LastTest.log观察发现有四个用例不过
# 根据源库的iusse:https://github.com/c-ares/c-ares/issues/476, 作者回答是当前环境原因,ohos设备中没有/etc/services,所以这四个用例无法通过
# [ FAILED ] 4 tests, listed below:
# [ FAILED ] AddressFamiliesAI/MockChannelTestAI.FamilyV4ServiceName/0, where GetParam() = (2, false)
# [ FAILED ] AddressFamiliesAI/MockChannelTestAI.FamilyV4ServiceName/1, where GetParam() = (2, true)
# [ FAILED ] AddressFamiliesAI/MockChannelTestAI.FamilyV4ServiceName/2, where GetParam() = (10, false)
# [ FAILED ] AddressFamiliesAI/MockChannelTestAI.FamilyV4ServiceName/3, where GetParam() = (10, true)
}
# 清理环境
cleanbuild() {
rm -rf ${PWD}/$builddir #${PWD}/$packagename
}