diff --git a/repo/curl-http3/Makefile b/repo/curl-http3/Makefile new file mode 100644 index 0000000..7b07cba --- /dev/null +++ b/repo/curl-http3/Makefile @@ -0,0 +1,6 @@ +.PHONY: all + +all: + @rm -f *.tar.* .SRCINFO + @updpkgsums + @makepkg --printsrcinfo > .SRCINFO diff --git a/repo/curl-http3/PKGBUILD b/repo/curl-http3/PKGBUILD new file mode 100644 index 0000000..afa56d8 --- /dev/null +++ b/repo/curl-http3/PKGBUILD @@ -0,0 +1,85 @@ +# Maintainer: Hendrik 'T4cC0re' Meyer +pkgname=curl-http3 +pkgver=8.1.2 +pkgrel=1 +pkgdesc="An URL retrieval utility and library - compiled with HTTP/3 support - binary is called curl3" +arch=('x86_64') +url="https://curl.haxx.se" +license=('MIT') +depends=('ca-certificates' 'brotli' 'libbrotlidec.so' 'libgssapi_krb5.so' + 'krb5' 'libidn2' 'libidn2.so' 'libnghttp2' 'libpsl' 'libpsl.so' + 'libssh2' 'libssh2.so' 'openssl' 'zlib' 'zstd' 'libzstd.so') +makedepends=('rust' 'git' 'go' 'cmake') +_quiche_ref=0.17.1 +source=("https://curl.haxx.se/download/curl-$pkgver.tar.gz"{,.asc} + "git+https://github.com/cloudflare/quiche.git#tag=${_quiche_ref}" + "git+https://github.com/google/boringssl.git") +validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg + +prepare() { + cd quiche + git submodule init + git config submodule.boringssl.url "${srcdir}"/boringssl + git -c protocol.file.allow=always submodule update quiche/deps/boringssl +} +build() { + #Build quiche + cd quiche + CFLAGS+=' -ffat-lto-objects' + cargo build --package quiche --release --features ffi,pkg-config-meta,qlog + mkdir quiche/deps/boringssl/src/lib + ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/ + cd .. + + ## Build curl + cd "curl-${pkgver}" + + autoreconf -fi +## Arch Linux build flags + BoringSSL and quiche + ./configure \ + LDFLAGS="-Wl,-L,${PWD}/../quiche/target/release" \ + --with-openssl=$PWD/../quiche/quiche/deps/boringssl/src \ + --with-quiche=$PWD/../quiche/target/release \ + --enable-alt-svc \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --disable-ldap \ + --disable-ldaps \ + --disable-manual \ + --disable-shared \ + --enable-ipv6 \ + --enable-threaded-resolver \ + --with-gssapi \ + --with-libssh2 \ + --with-random=/dev/urandom \ + --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt + make +} + +package() { + cd "curl-${pkgver}" + + make DESTDIR="$pkgdir" install + LD_LIBRARY_PATH=$PWD/../quiche/target/release make DESTDIR="$pkgdir" install -C scripts + + cd .. + + # rename curl to avoid conflicts + mv "${pkgdir}/usr/bin/curl" "${pkgdir}/usr/bin/curl3" + mv "${pkgdir}/usr/bin/curl-config" "${pkgdir}/usr/bin/curl-config3" + + # Remove stuff that would conflict with core/curl + rm -rf "${pkgdir}/usr/lib" "${pkgdir}/usr/share" "${pkgdir}/usr/include" + + # libquice is required + install -Dm755 quiche/target/release/libquiche.so "${pkgdir}/usr/lib/libquiche.so" + + # license + install -Dm644 "curl-${pkgver}"/COPYING -t "${pkgdir}/usr/share/licenses/${pkgname}" + install -Dm644 quiche/COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING-quiche" + install -Dm644 quiche/quiche/deps/boringssl/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-boringssl" +} +sha512sums=('41f4edb9c75870b713a2ecdaae2f8888651f2db3e689b991e70f1ee4e0da86d861eba1a9d24374e7b99deb0fdb218b9fbbd6cd624363d940a27d82b90c0e5c1b' + 'SKIP' + 'SKIP' + 'SKIP')