mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:21:41 +03:00
In the cases observed throughout the last year, `handle64` run once per test run, but with no action (match or task kill). It did not help with flakiness and seems redundant. runtests launched it (if present) in Cygwin/MSYS jobs too, where it probably shouldn't have, because we have seen no flakiness there. In CI the tool was present and launched in MSYS2 jobs, but not in Cygwin. After this patch the "clearlocks" warning remain in the log. They are consistently appearing once in every MSVC CI log, early in the tests: ``` test 3207 SKIPPED: curl lacks OpenSSL support [...START-OF-TESTS...] test 0003...[HTTP POST with auth and contents but with content-length set to 0] --pd---e--- OK (3 out of 1596, remaining: 17:50, took 1.423s, duration: 00:02) test 0007...[HTTP with cookie parser and header recording] --pd--oe--- OK (7 out of 1596, remaining: 07:51, took 1.485s, duration: 00:02) test 0006...[HTTP with simple cookie send] --pd---e--- OK (6 out of 1596, remaining: 09:11, took 1.488s, duration: 00:02) test 0005...[HTTP over proxy] --pd---e--- OK (5 out of 1596, remaining: 11:03, took 1.491s, duration: 00:02) CUSTOMBUILD : error : 169: cleardir(log/8/lock) failed [D:\a\curl\curl\bld\tests\test-ci.vcxproj] test 0001...[HTTP GET] --pd---e--- OK (1 out of 1596, remaining: 55:34, took 1.466s, duration: 00:02) test 0004...[Replaced internal and added custom HTTP headers] ``` Ref: https://github.com/curl/curl/actions/runs/13546192228/job/37858323380?pr=16484#step:14:167 Ref:e53523fef0#14859 Ref:311c31ec8e#6179 Follow-up to3a8920e5ed#16600 Closes #16484
173 lines
6.5 KiB
Bash
173 lines
6.5 KiB
Bash
#!/usr/bin/env bash
|
|
#***************************************************************************
|
|
# _ _ ____ _
|
|
# Project ___| | | | _ \| |
|
|
# / __| | | | |_) | |
|
|
# | (__| |_| | _ <| |___
|
|
# \___|\___/|_| \_\_____|
|
|
#
|
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# This software is licensed as described in the file COPYING, which
|
|
# you should have received as part of this distribution. The terms
|
|
# are also available at https://curl.se/docs/copyright.html.
|
|
#
|
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
# copies of the Software, and permit persons to whom the Software is
|
|
# furnished to do so, under the terms of the COPYING file.
|
|
#
|
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
# KIND, either express or implied.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
#
|
|
###########################################################################
|
|
|
|
# shellcheck disable=SC3040,SC2039
|
|
set -eux; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o pipefail
|
|
|
|
# build
|
|
|
|
case "${TARGET:-}" in
|
|
*Win32) openssl_suffix='-Win32';;
|
|
*) openssl_suffix='-Win64';;
|
|
esac
|
|
|
|
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2022' ]; then
|
|
openssl_root_win="C:/OpenSSL-v34${openssl_suffix}"
|
|
elif [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2019' ]; then
|
|
openssl_root_win="C:/OpenSSL-v11${openssl_suffix}"
|
|
elif [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ]; then
|
|
openssl_root_win="C:/OpenSSL${openssl_suffix}"
|
|
else
|
|
openssl_root_win="C:/OpenSSL-v111${openssl_suffix}"
|
|
fi
|
|
openssl_root="$(cygpath "${openssl_root_win}")"
|
|
|
|
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
|
# Set env CHKPREFILL to the value '_chkprefill' to compare feature detection
|
|
# results with and without the pre-fill feature. They have to match.
|
|
for _chkprefill in '' ${CHKPREFILL:-}; do
|
|
options=''
|
|
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
|
[[ "${TARGET}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
|
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
|
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
|
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
|
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ]; then
|
|
mkdir "_bld${_chkprefill}"
|
|
cd "_bld${_chkprefill}"
|
|
options+=' ..'
|
|
root='..'
|
|
else
|
|
options+=" -B _bld${_chkprefill}"
|
|
options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
|
options+=" -DCMAKE_UNITY_BUILD=${UNITY}"
|
|
root='.'
|
|
fi
|
|
# shellcheck disable=SC2086
|
|
time cmake -G "${PRJ_GEN}" ${TARGET} \
|
|
-DCURL_TEST_BUNDLES=ON \
|
|
-DCURL_WERROR=ON \
|
|
-DBUILD_SHARED_LIBS="${SHARED}" \
|
|
-DCURL_STATIC_CRT=ON \
|
|
-DENABLE_DEBUG="${DEBUG}" \
|
|
-DENABLE_UNICODE="${ENABLE_UNICODE}" \
|
|
-DHTTP_ONLY="${HTTP_ONLY}" \
|
|
-DCURL_USE_SCHANNEL="${SCHANNEL}" \
|
|
-DCURL_USE_OPENSSL="${OPENSSL}" \
|
|
-DCURL_USE_LIBPSL=OFF \
|
|
${options} \
|
|
|| { cat ${root}/_bld/CMakeFiles/CMake* 2>/dev/null; false; }
|
|
[ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ] && cd ..
|
|
done
|
|
if [ -d _bld_chkprefill ] && ! diff -u _bld/lib/curl_config.h _bld_chkprefill/lib/curl_config.h; then
|
|
cat _bld_chkprefill/CMakeFiles/CMake* 2>/dev/null || true
|
|
false
|
|
fi
|
|
echo 'curl_config.h'; grep -F '#define' _bld/lib/curl_config.h | sort || true
|
|
# shellcheck disable=SC2086
|
|
if ! time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}; then
|
|
if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then
|
|
find . -name BuildLog.htm -exec dos2unix '{}' +
|
|
find . -name BuildLog.htm -exec cat '{}' +
|
|
fi
|
|
false
|
|
fi
|
|
[ "${SHARED}" = 'ON' ] && PATH="$PWD/_bld/lib/${PRJ_CFG}:$PATH"
|
|
[ "${OPENSSL}" = 'ON' ] && { PATH="${openssl_root}:$PATH"; cp "${openssl_root}"/*.dll "_bld/src/${PRJ_CFG}"; }
|
|
curl="_bld/src/${PRJ_CFG}/curl.exe"
|
|
elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then
|
|
(
|
|
cd projects
|
|
./generate.bat "${VC_VERSION}"
|
|
msbuild.exe -maxcpucount "-property:Configuration=${PRJ_CFG}" "Windows/${VC_VERSION}/curl-all.sln"
|
|
)
|
|
curl="build/Win32/${VC_VERSION}/${PRJ_CFG}/curld.exe"
|
|
elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2015' ]; then
|
|
(
|
|
cd winbuild
|
|
cat << EOF > _make.bat
|
|
call "C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/SetEnv.cmd" /x64
|
|
call "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat" x86_amd64
|
|
nmake -f Makefile.vc mode=dll VC=14 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE} WINBUILD_ACKNOWLEDGE_DEPRECATED=yes
|
|
EOF
|
|
./_make.bat
|
|
rm _make.bat
|
|
)
|
|
curl="builds/libcurl-vc14-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
|
|
elif [ "${BUILD_SYSTEM}" = 'winbuild_vs2017' ]; then
|
|
(
|
|
cd winbuild
|
|
cat << EOF > _make.bat
|
|
call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat"
|
|
nmake -f Makefile.vc mode=dll VC=14.10 "SSL_PATH=${openssl_root_win}" WITH_SSL=dll MACHINE=x64 DEBUG=${DEBUG} ENABLE_UNICODE=${ENABLE_UNICODE} WINBUILD_ACKNOWLEDGE_DEPRECATED=yes
|
|
EOF
|
|
./_make.bat
|
|
rm _make.bat
|
|
)
|
|
curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
|
|
fi
|
|
|
|
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \;
|
|
if [ -z "${SKIP_RUN:-}" ]; then
|
|
"${curl}" --disable --version
|
|
else
|
|
echo "Skip running curl.exe. Reason: ${SKIP_RUN}"
|
|
fi
|
|
|
|
# build tests
|
|
|
|
if [ "${TFLAGS}" != 'skipall' ] && \
|
|
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
|
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
|
|
fi
|
|
|
|
# run tests
|
|
|
|
if [ "${TFLAGS}" != 'skipall' ] && \
|
|
[ "${TFLAGS}" != 'skiprun' ]; then
|
|
export CURL_DIRSUFFIX="${PRJ_CFG}"
|
|
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
|
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
|
elif [ -x "$(cygpath 'C:/msys64/usr/bin/curl.exe')" ]; then
|
|
TFLAGS+=" -ac $(cygpath 'C:/msys64/usr/bin/curl.exe')"
|
|
fi
|
|
TFLAGS+=' -j0'
|
|
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
|
time cmake --build _bld --config "${PRJ_CFG}" --target test-ci
|
|
else
|
|
(
|
|
TFLAGS="-a -p !flaky -r ${TFLAGS}"
|
|
cd _bld/tests
|
|
time ./runtests.pl
|
|
)
|
|
fi
|
|
fi
|
|
|
|
# build examples
|
|
|
|
if [ "${EXAMPLES}" = 'ON' ] && \
|
|
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
|
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target curl-examples
|
|
fi
|