Christoph Reiter aa5852e6c4 pathtools: expose sanitise_path() again
this doesn't really work if the private headers aren't included since the
prototype is missing then
2023-10-30 21:01:44 +01:00

221 lines
7.3 KiB
Bash

# Maintainer: Alexey Pavlov <alexpux@gmail.com>
_realname=curl
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-gnutls"
"${MINGW_PACKAGE_PREFIX}-${_realname}-winssl")
pkgver=8.4.0
pkgrel=1
pkgdesc="Command line tool and library for transferring data with URLs (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://curl.se/"
license=("spdx:MIT")
_cert_depends=("${MINGW_PACKAGE_PREFIX}-ca-certificates"
"${MINGW_PACKAGE_PREFIX}-libssh2")
_openssl_depends=("${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-nghttp2")
_gnutls_depends=("${MINGW_PACKAGE_PREFIX}-rtmpdump"
"${MINGW_PACKAGE_PREFIX}-gnutls")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-autotools"
"${_cert_depends[@]}"
"${_openssl_depends[@]}"
"${_gnutls_depends[@]}")
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
"${MINGW_PACKAGE_PREFIX}-c-ares"
"${MINGW_PACKAGE_PREFIX}-brotli"
"${MINGW_PACKAGE_PREFIX}-libidn2"
"${MINGW_PACKAGE_PREFIX}-libpsl"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-zstd")
source=("https://github.com/curl/curl/releases/download/${_realname}-${pkgver//./_}/${_realname}-${pkgver}.tar.xz"{,.asc}
"pathtools.c"
"pathtools.h"
"0001-Make-cURL-relocatable.patch"
"0002-nghttp2-static.patch"
"0003-libpsl-static-libs.patch"
"0004-more-static-fixes.patch")
sha256sums=('16c62a9c4af0f703d28bda6d7bbf37ba47055ad3414d70dec63e2e6336f2a82d'
'SKIP'
'ebf471173f5ee9c4416c10a78760cea8afaf1a4a6e653977321e8547ce7bf3c0'
'1585ef1b61cf53a2ca27049c11d49e0834683dfda798f03547761375df482a90'
'c4e6bfd5b58f944d75293128effbd22fe42ee0131b915d9230ceb3c004c0322d'
'3ee9c75a3046f86f91290c143170179230c9adc6eabfbb79eb26f708a165b719'
'7492d019036b5bec251bfbc3c0b40e5f16d3dd6b2515068835e087a6c21f19ad'
'590eb65e90e756eaad993d52a101f29091ada2c742c5a607684e88fc5c560d54')
validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying ${_patch}"
patch -Nbp1 -i "${srcdir}/${_patch}"
done
}
prepare() {
test ! -d "${startdir}/../mingw-w64-pathtools" || {
cmp "${startdir}/../mingw-w64-pathtools/pathtools.c" "${srcdir}/pathtools.c" &&
cmp "${startdir}/../mingw-w64-pathtools/pathtools.h" "${srcdir}/pathtools.h"
} || exit 1
cd "${srcdir}/${_realname}-${pkgver}"
cp -fHv "${srcdir}"/pathtools.[ch] lib/
apply_patch_with_msg \
0001-Make-cURL-relocatable.patch \
0002-nghttp2-static.patch \
0003-libpsl-static-libs.patch \
0004-more-static-fixes.patch
autoreconf -vfi
}
do_build() {
_variant=$1
_destdir="${srcdir}/build-${MSYSTEM}"
if [ "${_variant}" != "-openssl" ]; then
_destdir="${_destdir}${_variant}"
fi
local -a extra_config
if check_option "debug" "y"; then
extra_config+=( --enable-debug )
else
extra_config+=( --disable-debug )
fi
local -a _variant_config
if [ "${_variant}" = "-winssl" ]; then
_variant_config+=("--with-schannel")
_variant_config+=('--without-nghttp2')
_variant_config+=("--without-ca-bundle")
_variant_config+=("--without-ca-path")
_variant_config+=("--without-librtmp")
elif [ "${_variant}" = "-gnutls" ]; then
_variant_config+=("--with-default-ssl-backend=gnutls")
_variant_config+=("--with-gnutls")
_variant_config+=("--with-schannel")
_variant_config+=('--without-nghttp2')
_variant_config+=("--with-ca-bundle=${MINGW_PREFIX}/etc/ssl/certs/ca-bundle.crt")
_variant_config+=("--with-librtmp")
elif [ "${_variant}" = "-openssl" ]; then
_variant_config+=("--with-default-ssl-backend=openssl")
_variant_config+=("--with-openssl")
_variant_config+=("--with-schannel")
_variant_config+=("--with-ca-bundle=${MINGW_PREFIX}/etc/ssl/certs/ca-bundle.crt")
_variant_config+=("--with-nghttp2=${MINGW_PREFIX}")
_variant_config+=("--without-librtmp")
fi
msg2 "Building static library"
mkdir -p "${_destdir}-static" && cd "${_destdir}-static"
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--target=${MINGW_CHOST} \
--disable-pthreads \
--without-random \
--enable-static \
--disable-shared \
--enable-sspi \
--enable-ldap \
--enable-ldaps \
--with-brotli \
--with-ldap-lib=wldap32 \
--with-libssh2 \
--with-zstd \
"${_variant_config[@]}" \
"${extra_config[@]}"
# there's a bug with zsh completion generation script and Windows.
# curl has to be specified with the file extension.
sed -i "s|\/curl > \$\@|\/curl\$\{EXEEXT\} > \$\@|" scripts/Makefile
make
msg2 "Building shared library"
mkdir -p "${_destdir}-shared" && cd "${_destdir}-shared"
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--target=${MINGW_CHOST} \
--disable-pthreads \
--without-random \
--disable-static \
--enable-shared \
--enable-sspi \
--enable-ldap \
--enable-ldaps \
--with-brotli \
--with-ldap-lib=wldap32 \
--with-libssh2 \
--with-zstd \
"${_variant_config[@]}" \
"${extra_config[@]}"
# there's a bug with zsh completion generation script and Windows.
# curl has to be specified with the file extension.
sed -i "s|\/curl > \$\@|\/curl\$\{EXEEXT\} > \$\@|" scripts/Makefile
make
}
build() {
do_build -openssl
do_build -winssl
do_build -gnutls
}
do_package() {
cd "${srcdir}/build-${MSYSTEM}$1-static"
make DESTDIR="${pkgdir}" install
cd "${srcdir}/build-${MSYSTEM}$1-shared"
make DESTDIR="${pkgdir}" install
local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX})
sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i ${pkgdir}${MINGW_PREFIX}/bin/curl-config
sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/libcurl.pc
install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}
package_curl() {
depends=("${depends[@]}"
"${_cert_depends[@]}"
"${_openssl_depends[@]}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-winssl"
"${MINGW_PACKAGE_PREFIX}-${_realname}-gnutls")
do_package
}
package_curl-winssl() {
depends=("${depends[@]}"
"${MINGW_PACKAGE_PREFIX}-libssh2-wincng")
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-gnutls")
do_package -winssl
}
package_curl-gnutls() {
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
depends=("${depends[@]}"
"${_cert_depends[@]}"
"${_gnutls_depends[@]}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-winssl")
do_package -gnutls
}
# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :
# generate wrappers
for _name in "${pkgname[@]}"; do
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
_func="$(declare -f "${_short}")"
eval "${_func/#${_short}/package_${_name}}"
done
# template end;