# Maintainer: DasSkelett # Contributor: Kasei Wang # Contributor: Bartłomiej Piotrowski # Contributor: Sébastien Luttringer # Contributor: Drew DeVault _pkgbase=nginx pkgbase=nginx-quic _pkgrev=5f1d05a21287 pkgname=(nginx-quic nginx-quic-src) pkgver=1.23.4 pkgrel=1 pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server, HTTP/3 QUIC branch' arch=('amd64') url='https://nginx.org' license=('custom') depends=('libgeoip-dev' 'libxcrypt-source' 'mailcap' 'libpcre2-dev' 'zlib1g-dev') makedepends=('cmake' 'git' 'golang') backup=('/etc/nginx/fastcgi.conf' '/etc/nginx/fastcgi_params' '/etc/nginx/koi-win' '/etc/nginx/koi-utf' '/etc/nginx/nginx.conf' '/etc/nginx/scgi_params' '/etc/nginx/uwsgi_params' '/etc/nginx/win-utf' '/etc/logrotate.d/nginx') install=nginx.install provides=('nginx' 'nginx-mainline') conflicts=('nginx') source=("git+https://git.zzls.xyz/Fijxu/nginx-quic#branch=quic" "git+https://boringssl.googlesource.com/boringssl" "service" "logrotate") sha256sums=('SKIP' 'SKIP' '05fdc0c0483410944b988d7f4beabb00bec4a44a41bd13ebc9b78585da7d3f9b' 'b9af19a75bbeb1434bba66dd1a11295057b387a2cbff4ddf46253133909c311e') _common_flags=( --with-compat --with-debug --with-file-aio --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-pcre-jit --with-stream --with-stream_geoip_module --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads ) _mainline_flags=( ) _quic_flags=( --with-http_v3_module --with-stream_quic_module ) prepare() { # Backup pristine version of nginx source for -src package test -d ${srcdir}/${pkgname}-src && rm -r ${srcdir}/${pkgname}-src cp -r ${srcdir}/${pkgname} ${srcdir}/${pkgname}-src } build() { # Clear -D_FORTIFY_SOURCE from C++ build flags, it causes Boringssl tests to fail to compile #export CPPFLAGS=${CPPFLAGS/-D_FORTIFY_SOURCE=[1-9]/-D_FORTIFY_SOURCE=0} #export CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=[1-9]/-D_FORTIFY_SOURCE=0} export CXXFLAGS="$CXXFLAGS -fPIC" export CFLAGS="$CFLAGS -fPIC" if [[ $CC == "clang" ]];then _cc_opt="-flto" _ld_opt="-flto -fuse-ld=lld" else _cc_opt="" _ld_opt="" # Disable some warnings that make Boringssl fail to compile due to a forced -Werror in CMakeLists.txt # -Wno-array-bounds: 2022-05-21 for compatiblity with GCC 12.1 (https://bugs.chromium.org/p/boringssl/issues/detail?id=492&sort=-modified) export CFLAGS="$CFLAGS -Wno-stringop-overflow -Wno-array-parameter -Wno-array-bounds" fi cd ${srcdir}/boringssl mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ../ && make crypto ssl cd ${srcdir}/boringssl mkdir -p .openssl/lib && cd .openssl && ln -s ../include . && cd ../ cp ${srcdir}/boringssl/build/crypto/libcrypto.a ${srcdir}/boringssl/build/ssl/libssl.a .openssl/lib && cd .. cd ${srcdir}/$pkgname ./auto/configure \ --prefix=/usr/share/nginx \ --conf-path=/etc/nginx/nginx.conf \ --sbin-path=/usr/sbin/nginx \ --pid-path=/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --modules-path=/usr/lib/nginx/modules \ --user=www-data \ --group=www-data \ --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ --with-openssl=${srcdir}/boringssl \ --with-cc-opt="${_cc_opt} -I../boringssl/include" \ --with-ld-opt="${_ld_opt} -L../boringssl/build/ssl -L../boringssl/build/crypto" \ ${_common_flags[@]} \ ${_mainline_flags[@]} \ ${_quic_flags[@]} touch ${srcdir}/boringssl/.openssl/include/openssl/ssl.h make } package_nginx-quic() { cd $pkgname make DESTDIR="$pkgdir" install sed -e 's|\ "$pkgdir"/usr/share/man/man8/nginx.8.gz for i in ftdetect indent syntax; do install -Dm644 contrib/vim/${i}/nginx.vim \ "${pkgdir}/usr/share/vim/vimfiles/${i}/nginx.vim" done } package_nginx-quic-src() { pkgdesc="Source code of nginx-quic $pkgver, useful for building modules" arch=('any') provides=('nginx-src' 'nginx-mainline-src') conflicts=($_pkgbase-src) depends=() backup=() install -d "$pkgdir/usr/src" test -d "$pkgdir/usr/src/nginx" && rm -r "$pkgdir/usr/src/nginx" cp -r ${srcdir}/${pkgname} "$pkgdir/usr/src/nginx" # Delete the .hg directory, it is huge and not needed #rm -r ${pkgdir}/usr/src/nginx/{.hg,.hgtags} # Link the 'configure' script to its location in release tarballs, # as this is where modules expect it ln -s /usr/src/nginx/auto/configure "$pkgdir/usr/src/nginx" } # vim:set ts=2 sw=2 et: