194 lines
6.2 KiB
Bash
194 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:
|