Date: Thursday, September 16, 2021 @ 09:56:26 Author: eworm Revision: 1016147
upgpkg: lib32-curl 7.79.0-2: make lib32-{curl,libcurl{-compat,-gnutls}} split packages Added: lib32-curl/trunk/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch Modified: lib32-curl/trunk/PKGBUILD -----------------------------------------------------------------------------+ 0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch | 47 +++ PKGBUILD | 142 +++++++--- 2 files changed, 155 insertions(+), 34 deletions(-) Added: 0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch =================================================================== --- 0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch (rev 0) +++ 0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch 2021-09-16 09:56:26 UTC (rev 1016147) @@ -0,0 +1,47 @@ +From 901804ef95777b8e735a55b77f8dd630a58c575b Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg <dan...@haxx.se> +Date: Thu, 16 Sep 2021 08:50:54 +0200 +Subject: [PATCH] Curl_http2_setup: don't change connection data on repeat + invokes + +Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved +transfer oriented inits to before the check but also erroneously moved a +few connection oriented ones, which causes problems. + +Reported-by: Evangelos Foutras +Fixes #7730 +Closes #7731 +--- + lib/http2.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/http2.c b/lib/http2.c +index a3de607c7d24..6d63f43636a5 100644 +--- a/lib/http2.c ++++ b/lib/http2.c +@@ -2221,12 +2221,6 @@ CURLcode Curl_http2_setup(struct Curl_easy *data, + stream->mem = data->state.buffer; + stream->len = data->set.buffer_size; + +- httpc->inbuflen = 0; +- httpc->nread_inbuf = 0; +- +- httpc->pause_stream_id = 0; +- httpc->drain_total = 0; +- + multi_connchanged(data->multi); + /* below this point only connection related inits are done, which only needs + to be done once per connection */ +@@ -2252,6 +2246,12 @@ CURLcode Curl_http2_setup(struct Curl_easy *data, + conn->httpversion = 20; + conn->bundle->multiuse = BUNDLE_MULTIPLEX; + ++ httpc->inbuflen = 0; ++ httpc->nread_inbuf = 0; ++ ++ httpc->pause_stream_id = 0; ++ httpc->drain_total = 0; ++ + infof(data, "Connection state changed (HTTP/2 confirmed)"); + + return CURLE_OK; Modified: PKGBUILD =================================================================== --- PKGBUILD 2021-09-16 09:52:52 UTC (rev 1016146) +++ PKGBUILD 2021-09-16 09:56:26 UTC (rev 1016147) @@ -5,57 +5,131 @@ # Contributor: Lucien Immink <l.imm...@student.fnt.hvu.nl> # Contributor: Daniel J Griffiths <ghost1...@archlinux.us> -pkgname=lib32-curl -_pkgname=curl +pkgbase=lib32-curl +pkgname=(lib32-curl lib32-libcurl-compat lib32-libcurl-gnutls) pkgver=7.79.0 -pkgrel=1 -pkgdesc="An URL retrieval utility and library (32-bit)" +pkgrel=2 +pkgdesc='An URL retrieval utility and library (32-bit)' arch=('x86_64') -url="https://curl.haxx.se" +url='https://curl.haxx.se' license=('MIT') -depends=('lib32-libidn2' 'lib32-libssh2' 'lib32-krb5' 'lib32-openssl' - 'lib32-libpsl' 'lib32-zlib' 'lib32-zstd' "${_pkgname}") -source=("https://curl.haxx.se/download/$_pkgname-$pkgver.tar.gz"{,.asc}) +depends=('curl' 'lib32-brotli' 'lib32-libidn2' 'lib32-libssh2' 'lib32-krb5' + 'lib32-libpsl' 'lib32-zlib' 'lib32-zstd') +makedepends=('lib32-gnutls' 'lib32-openssl') +source=("https://curl.haxx.se/download/curl-${pkgver}.tar.gz"{,.asc} + '0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch') sha512sums=('6529645774bd2687535cfaec5949281f305c2910da3bd4de22713ab370fde0d05c416579b46aef7eaaf5f73d882e96b8268b80b6802b978f9c54b0a837420dad' - 'SKIP') + 'SKIP' + 'f83ba83073a90ab369c7c0e06d440d6d8be87c72800095c35d803bca246ea5ee73b811b210ce9d8a7ee137583ca3e839afd8eb9accf699f655e9db82a7bdef71') validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg +_configure_options=( + --prefix='/usr' + --disable-dependency-tracking + --disable-ldap + --disable-ldaps + --enable-ipv6 + --enable-manual + --enable-threaded-resolver + --with-gssapi + --with-libssh2 + --with-openssl + --with-random='/dev/urandom' + --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' + --libdir='/usr/lib32' +) + +prepare() { + cd "curl-${pkgver}" + + patch -Np1 < ../0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch +} + build() { - cd "$_pkgname-$pkgver" - export CC="gcc -m32" export CXX="g++ -m32" export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" - ./configure \ - --prefix=/usr \ - --mandir=/usr/share/man \ - --disable-dependency-tracking \ - --disable-ldap \ - --disable-ldaps \ - --enable-ipv6 \ - --enable-manual \ - --enable-versioned-symbols \ - --enable-threaded-resolver \ - --with-gssapi \ - --with-libssh2 \ - --with-openssl \ - --with-random=/dev/urandom \ - --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \ - --libdir=/usr/lib32 + mkdir build-curl{,-compat,-gnutls} + # build lib32-curl + cd "${srcdir}"/build-curl + + "${srcdir}/curl-${pkgver}"/configure \ + "${_configure_options[@]}" \ + --enable-versioned-symbols sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool - make + make -C lib + make libcurl.pc + + # build lib32-libcurl-compat + cd "${srcdir}"/build-curl-compat + + "${srcdir}/curl-${pkgver}"/configure \ + "${_configure_options[@]}" \ + --disable-versioned-symbols + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make -C lib + + # build lib32-libcurl-gnutls + cd "${srcdir}"/build-curl-gnutls + + "${srcdir}/curl-${pkgver}"/configure \ + "${_configure_options[@]}" \ + --disable-versioned-symbols \ + --without-ssl \ + --with-gnutls='/usr' + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make -C lib } -package() { - cd "$_pkgname-$pkgver" +package_lib32-curl() { + depends+=('lib32-openssl') - make DESTDIR="$pkgdir" install + cd "${srcdir}"/build-curl - rm -rf "${pkgdir}"/usr/{share,bin,include} + make -C lib DESTDIR="${pkgdir}" install + make DESTDIR="${pkgdir}" install-pkgconfigDATA # license - install -d "$pkgdir/usr/share/licenses" - ln -s "$_pkgname" "$pkgdir/usr/share/licenses/$pkgname" + install -d "${pkgdir}/usr/share/licenses" + ln -s curl "${pkgdir}/usr/share/licenses/${pkgname}" } + +package_lib32-libcurl-compat() { + pkgdesc='An URL retrieval utility and library (32-bit, without versioned symbols)' + depends+=('lib32-openssl') + + cd "${srcdir}"/build-curl-compat + + make -C lib DESTDIR="${pkgdir}" install + + mv "${pkgdir}"/usr/lib32/libcurl{,-compat}.so.4.7.0 + rm "${pkgdir}"/usr/lib32/libcurl.{a,so}* + for version in 3 4.0.0 4.1.0 4.2.0 4.3.0 4.4.0 4.5.0 4.6.0; do + ln -s libcurl-compat.so.4.7.0 "${pkgdir}"/usr/lib32/libcurl.so.${version} + done + + # license + install -d "${pkgdir}/usr/share/licenses" + ln -s curl "${pkgdir}/usr/share/licenses/${pkgname}" +} + +package_lib32-libcurl-gnutls() { + pkgdesc='An URL retrieval utility and library (32-bit, without versioned symbols and linked against gnutls)' + depends+=('lib32-gnutls') + + cd "${srcdir}"/build-curl-gnutls + + make -C lib DESTDIR="${pkgdir}" install + + mv "${pkgdir}"/usr/lib32/libcurl{,-gnutls}.so.4.7.0 + rm "${pkgdir}"/usr/lib32/libcurl.{a,so}* + for version in 3 4 4.0.0 4.1.0 4.2.0 4.3.0 4.4.0 4.5.0 4.6.0; do + ln -s libcurl-gnutls.so.4.7.0 "${pkgdir}"/usr/lib32/libcurl-gnutls.so.${version} + done + + # license + install -d "${pkgdir}/usr/share/licenses" + ln -s curl "${pkgdir}/usr/share/licenses/${pkgname}" +}