Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

curl: Split package to openssl, winssl and gnutls #8469

Merged
merged 3 commits into from
Jul 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/ci-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ for package in "${packages[@]}"; do
echo "::endgroup::"

echo "::group::[install] ${package}"
execute 'Installing' yes:pacman --noprogressbar --upgrade '*.pkg.tar.*'
execute 'Installing' install_packages
orgads marked this conversation as resolved.
Show resolved Hide resolved
echo "::endgroup::"

echo "::group::[diff] ${package}"
Expand Down
10 changes: 10 additions & 0 deletions .ci/ci-library.sh
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,16 @@ list_packages() {
return 0
}

install_packages() {
if [ -f .ci-sequential ]; then
for pkg in *.pkg.tar.*; do
pacman --noprogressbar --upgrade --noconfirm $pkg
done
else
pacman --noprogressbar --upgrade --noconfirm *.pkg.tar.*
fi
}

# Recipe quality
check_recipe_quality() {
# TODO: remove this option when not anymore needed
Expand Down
Empty file added mingw-w64-curl/.ci-sequential
Empty file.
105 changes: 71 additions & 34 deletions mingw-w64-curl/PKGBUILD
Original file line number Diff line number Diff line change
@@ -1,49 +1,36 @@
# Maintainer: Alexey Pavlov <[email protected]>

_variant=-openssl
#_variant=-winssl
#_variant=-gnutls

if [ "${_variant}" = "-openssl" ]; then
_namesuff=
else
_namesuff="${_variant}"
fi

_realname=curl
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}${_namesuff}"
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-gnutls"
"${MINGW_PACKAGE_PREFIX}-${_realname}-winssl")
orgads marked this conversation as resolved.
Show resolved Hide resolved
pkgver=7.77.0
pkgrel=1
pkgrel=2
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=("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}-gcc"
"${MINGW_PACKAGE_PREFIX}-pkg-config")
"${MINGW_PACKAGE_PREFIX}-pkg-config"
"${_cert_depends[@]}"
"${_openssl_depends[@]}"
"${_gnutls_depends[@]}")
orgads marked this conversation as resolved.
Show resolved Hide resolved
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
"${MINGW_PACKAGE_PREFIX}-c-ares"
"${MINGW_PACKAGE_PREFIX}-brotli"
"${MINGW_PACKAGE_PREFIX}-libidn2"
"${MINGW_PACKAGE_PREFIX}-libmetalink"
"${MINGW_PACKAGE_PREFIX}-libpsl"
"${MINGW_PACKAGE_PREFIX}-libssh2"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-zstd"
$([[ "$_variant" == "-openssl" ]] && echo \
"${MINGW_PACKAGE_PREFIX}-ca-certificates" \
"${MINGW_PACKAGE_PREFIX}-openssl" \
"${MINGW_PACKAGE_PREFIX}-nghttp2")
$([[ "$_variant" == "-gnutls" ]] && echo \
"${MINGW_PACKAGE_PREFIX}-rtmpdump" \
"${MINGW_PACKAGE_PREFIX}-ca-certificates" \
"${MINGW_PACKAGE_PREFIX}-gnutls")
)
if [ -n "${_namesuff}" ]; then
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
fi
"${MINGW_PACKAGE_PREFIX}-zstd")
options=('staticlibs')
source=("https://github.com/curl/curl/releases/download/${_realname}-${pkgver//./_}/${_realname}-${pkgver}.tar.xz"{,.asc}
"0001-Make-cURL-relocatable.patch"
Expand All @@ -67,7 +54,12 @@ prepare() {
autoreconf -vfi
}

build() {
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 )
Expand Down Expand Up @@ -98,7 +90,7 @@ build() {
_variant_config+=("--without-librtmp")
fi

mkdir -p "${srcdir}/build-static-${MSYSTEM}" && cd "${srcdir}/build-static-${MSYSTEM}"
mkdir -p "${_destdir}-static" && cd "${_destdir}-static"
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
Expand All @@ -122,7 +114,7 @@ build() {
sed -i "s|\/curl > \$\@|\/curl\$\{EXEEXT\} > \$\@|" scripts/Makefile
make

mkdir -p "${srcdir}/build-shared-${MSYSTEM}" && cd "${srcdir}/build-shared-${MSYSTEM}"
mkdir -p "${_destdir}-shared" && cd "${_destdir}-shared"
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
Expand All @@ -147,13 +139,58 @@ build() {
make
}

package() {
cd "${srcdir}/build-static-${MSYSTEM}"
build() {
do_build -openssl
do_build -winssl
do_build -gnutls
orgads marked this conversation as resolved.
Show resolved Hide resolved
}

do_package() {
cd "${srcdir}/build-${MSYSTEM}$1-static"
make DESTDIR="${pkgdir}" install

cd "${srcdir}/build-shared-${MSYSTEM}"
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
}

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;
Empty file.
62 changes: 49 additions & 13 deletions mingw-w64-libssh2/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,85 @@

_realname=libssh2
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-wincng")
pkgver=1.9.0
pkgrel=3
pkgrel=4
pkgdesc="A library implementing the SSH2 protocol as defined by Internet Drafts (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://libssh2.org"
license=("BSD")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"${MINGW_PACKAGE_PREFIX}-pkg-config")
depends=("${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-zlib")
"${MINGW_PACKAGE_PREFIX}-pkg-config"
"${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-zlib")
options=('staticlibs' 'strip')
source=("${url}/download/${_realname}-${pkgver}.tar.gz"
fix-pkgconfig.patch
fix-configure-ac.patch)
fix-configure-ac.patch
fix-wincng-multiple.patch)
sha256sums=('d5fb8bd563305fd1074dda90bd053fb2d29fc4bce048d182f96eaa466dfadafd'
'7a6545f6d457ad008aacefe04a60727c02d33927c8a903745bf191f69cc8ba55'
'956b2518618646f9134f0eee7c539ebfb3ddeeff48019831b53997464edbf4f1')
'956b2518618646f9134f0eee7c539ebfb3ddeeff48019831b53997464edbf4f1'
'fa6a0f26df1086883b88d2f94e0c9b8ba80867dda8271df565d7a177af267c9e')

prepare() {
cd ${_realname}-${pkgver}
patch -p1 -i ${srcdir}/fix-pkgconfig.patch
patch -p1 -i ${srcdir}/fix-configure-ac.patch
patch -p1 -i ${srcdir}/fix-wincng-multiple.patch
autoreconf -fi
}

build() {
[[ -d "${srcdir}/build-${CARCH}" ]] && rm -rf "${srcdir}/build-${CARCH}"
mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}"
do_build() {
builddir="${srcdir}/build-${CARCH}-$1"
[[ -d "$builddir" ]] && rm -rf "${builddir}"
mkdir -p "${builddir}" && cd "${builddir}"
../${_realname}-${pkgver}/configure \
--prefix=${MINGW_PREFIX} \
--build=${MINGW_CHOST} \
--host=${MINGW_CHOST} \
--target=${MINGW_CHOST} \
--with-crypto=openssl
--with-crypto=$1

make
}

package() {
cd "${srcdir}/build-${CARCH}"
build() {
do_build openssl
do_build wincng
}

do_package() {
cd "${srcdir}/build-${CARCH}-$1"
make DESTDIR="${pkgdir}" install

install -Dm644 "${srcdir}"/${_realname}-${pkgver}/COPYING "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}

package_libssh2() {
depends=("${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-zlib")
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-wincng")
do_package openssl
}

package_libssh2-wincng() {
depends=("${MINGW_PACKAGE_PREFIX}-zlib")
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
do_package wincng
}

# 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;
56 changes: 56 additions & 0 deletions mingw-w64-libssh2/fix-wincng-multiple.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
From ba149e804ef653cc05ed9803dfc94519ce9328f7 Mon Sep 17 00:00:00 2001
From: Marc Hoersken <[email protected]>
Date: Sun, 31 May 2020 21:24:58 +0200
Subject: [PATCH] wincng: fix multiple definition of `_libssh2_wincng' (#479)

Add missing include guard and move global state
from header to source file by using extern.
---
src/wincng.c | 2 ++
src/wincng.h | 8 ++++++--
2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/wincng.c b/src/wincng.c
index 4bebc64..dffd2ed 100755
--- a/src/wincng.c
+++ b/src/wincng.c
@@ -208,6 +208,8 @@
* Windows CNG backend: Generic functions
*/

+struct _libssh2_wincng_ctx _libssh2_wincng;
+
void
_libssh2_wincng_init(void)
{
diff --git a/src/wincng.h b/src/wincng.h
index f5838d0..c817f09 100755
--- a/src/wincng.h
+++ b/src/wincng.h
@@ -1,5 +1,7 @@
+#ifndef __LIBSSH2_WINCNG_H
+#define __LIBSSH2_WINCNG_H
/*
- * Copyright (C) 2013-2015 Marc Hoersken <[email protected]>
+ * Copyright (C) 2013-2020 Marc Hoersken <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms,
@@ -101,7 +103,7 @@ struct _libssh2_wincng_ctx {
BCRYPT_ALG_HANDLE hAlg3DES_CBC;
};

-struct _libssh2_wincng_ctx _libssh2_wincng;
+extern struct _libssh2_wincng_ctx _libssh2_wincng;


/*******************************************************************/
@@ -569,3 +571,5 @@ _libssh2_dh_secret(_libssh2_dh_ctx *dhctx, _libssh2_bn *secret,
_libssh2_bn *f, _libssh2_bn *p);
extern void
_libssh2_dh_dtor(_libssh2_dh_ctx *dhctx);
+
+#endif /* __LIBSSH2_WINCNG_H */
--
2.31.0.windows.1