nginx-quic-pkgbuild/PKGBUILD

195 lines
6.2 KiB
Bash

# Maintainer: DasSkelett <dasskelett@dasskelett.dev>
# Contributor: Kasei Wang <kasei@kasei.im>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# 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|\<user\s\+\w\+;|user html;|g' \
-e '44s|html|/usr/share/nginx/html|' \
-e '54s|html|/usr/share/nginx/html|' \
-i "$pkgdir"/etc/nginx/nginx.conf
rm "$pkgdir"/etc/nginx/*.default
rm "$pkgdir"/etc/nginx/mime.types # in mailcap
install -d "$pkgdir"/var/lib/nginx
install -dm700 "$pkgdir"/var/lib/nginx/proxy
chmod 755 "$pkgdir"/var/log/nginx
chown root:root "$pkgdir"/var/log/nginx
install -d "$pkgdir"/usr/share/nginx
#mv "$pkgdir"/etc/nginx/html/ "$pkgdir"/usr/share/nginx
install -Dm644 ../logrotate "$pkgdir"/etc/logrotate.d/nginx
install -Dm644 ../service "$pkgdir"/usr/lib/systemd/system/nginx.service
install -Dm644 docs/text/LICENSE "$pkgdir"/usr/share/licenses/$provides/LICENSE
install -d "$pkgdir"/usr/share/licenses/$pkgname
ln -s /usr/share/licenses/$provides/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
rmdir "$pkgdir"/run
install -d "$pkgdir"/usr/share/man/man8/
gzip -9c docs/man/nginx.8 > "$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: