blob: 83ae90c40c945a85b41712a78b8ee879c20b6397 [file] [log] [blame]
Patrick Williamsb48b7b42016-08-17 15:04:38 -05001SUMMARY = "HTTP and reverse proxy server"
2
3DESCRIPTION = "Nginx is a web server and a reverse proxy server for \
4HTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high \
5concurrency, performance and low memory usage."
6
7HOMEPAGE = "http://nginx.org/"
8LICENSE = "BSD-2-Clause"
9
10SECTION = "net"
11
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080012DEPENDS = "libpcre zlib"
Patrick Williamsb48b7b42016-08-17 15:04:38 -050013
14SRC_URI = " \
Patrick Williamsddad1a12017-02-23 20:36:32 -060015 http://nginx.org/download/nginx-${PV}.tar.gz \
16 file://nginx-cross.patch \
Brad Bishop316dfdd2018-06-25 12:45:53 -040017 file://0001-Allow-the-overriding-of-the-endianness-via-the-confi.patch \
Patrick Williamsddad1a12017-02-23 20:36:32 -060018 file://nginx.conf \
Brad Bishop19323692019-04-05 15:28:33 -040019 file://default_server.site \
20 file://proxy_params \
Patrick Williamsddad1a12017-02-23 20:36:32 -060021 file://nginx.init \
22 file://nginx-volatile.conf \
23 file://nginx.service \
Andrew Geissler82c905d2020-04-13 13:39:40 -050024 file://nginx-fix-pidfile.patch \
Andrew Geissler20137392023-10-12 04:59:14 -060025 file://0001-configure-libxslt-conf.patch \
Patrick Williamsb48b7b42016-08-17 15:04:38 -050026"
27
Brad Bishop316dfdd2018-06-25 12:45:53 -040028inherit siteinfo update-rc.d useradd systemd
Brad Bishop6e60e8b2018-02-01 10:27:11 -050029
Patrick Williams213cb262021-08-07 19:21:33 -050030SYSTEMD_SERVICE:${PN} = "nginx.service"
Patrick Williamsb48b7b42016-08-17 15:04:38 -050031
Patrick Williams213cb262021-08-07 19:21:33 -050032CFLAGS:append = " -fPIE -pie"
33CXXFLAGS:append = " -fPIE -pie"
Patrick Williamsb48b7b42016-08-17 15:04:38 -050034
35NGINX_WWWDIR ?= "${localstatedir}/www/localhost"
36NGINX_USER ?= "www"
37
38EXTRA_OECONF = ""
39DISABLE_STATIC = ""
40
Patrick Williams2390b1b2022-11-03 13:47:49 -050041PACKAGECONFIG ??= "ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080042
Andrew Geissler9aee5002022-03-30 16:27:02 +000043PACKAGECONFIG[gunzip] = "--with-http_gunzip_module,,"
Patrick Williamsddad1a12017-02-23 20:36:32 -060044PACKAGECONFIG[http2] = "--with-http_v2_module,,"
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080045PACKAGECONFIG[ssl] = "--with-http_ssl_module,,openssl"
Brad Bishop15ae2502019-06-18 21:44:24 -040046PACKAGECONFIG[http-auth-request] = "--with-http_auth_request_module,,"
Patrick Williams2390b1b2022-11-03 13:47:49 -050047PACKAGECONFIG[ipv6] = "--with-ipv6,,"
Patrick Williams8e7b46e2023-05-01 14:19:06 -050048PACKAGECONFIG[webdav] = "--with-http_dav_module,,"
Andrew Geissler8f840682023-07-21 09:09:43 -050049PACKAGECONFIG[stream] = "--with-stream,,"
Patrick Williamsf52e3dd2024-01-26 13:04:43 -060050PACKAGECONFIG[http-sub-module] = "--with-http_sub_module,,"
Patrick Williamsddad1a12017-02-23 20:36:32 -060051
Andrew Geissler20137392023-10-12 04:59:14 -060052PACKAGECONFIG[xslt] = "--with-http_xslt_module,,libxslt"
53
Patrick Williamsb48b7b42016-08-17 15:04:38 -050054do_configure () {
Patrick Williamsddad1a12017-02-23 20:36:32 -060055 if [ "${SITEINFO_BITS}" = "64" ]; then
56 PTRSIZE=8
57 else
58 PTRSIZE=4
59 fi
Patrick Williamsb48b7b42016-08-17 15:04:38 -050060
Patrick Williamsddad1a12017-02-23 20:36:32 -060061 echo $CFLAGS
62 echo $LDFLAGS
Patrick Williamsb48b7b42016-08-17 15:04:38 -050063
Patrick Williamsddad1a12017-02-23 20:36:32 -060064 # Add the LDFLAGS to the main nginx link to avoid issues with missing GNU_HASH
65 echo "MAIN_LINK=\"\${MAIN_LINK} ${LDFLAGS}\"" >> auto/cc/conf
66
67 ./configure \
68 --crossbuild=Linux:${TUNE_ARCH} \
Brad Bishop316dfdd2018-06-25 12:45:53 -040069 --with-endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
Patrick Williamsddad1a12017-02-23 20:36:32 -060070 --with-int=4 \
71 --with-long=${PTRSIZE} \
72 --with-long-long=8 \
73 --with-ptr-size=${PTRSIZE} \
74 --with-sig-atomic-t=${PTRSIZE} \
75 --with-size-t=${PTRSIZE} \
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050076 --with-off-t=8 \
Patrick Williamsddad1a12017-02-23 20:36:32 -060077 --with-time-t=${PTRSIZE} \
78 --with-sys-nerr=132 \
79 --conf-path=${sysconfdir}/nginx/nginx.conf \
80 --http-log-path=${localstatedir}/log/nginx/access.log \
81 --error-log-path=${localstatedir}/log/nginx/error.log \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050082 --http-client-body-temp-path=/run/nginx/client_body_temp \
83 --http-proxy-temp-path=/run/nginx/proxy_temp \
84 --http-fastcgi-temp-path=/run/nginx/fastcgi_temp \
85 --http-uwsgi-temp-path=/run/nginx/uwsgi_temp \
86 --http-scgi-temp-path=/run/nginx/scgi_temp \
Patrick Williamsddad1a12017-02-23 20:36:32 -060087 --pid-path=/run/nginx/nginx.pid \
88 --prefix=${prefix} \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080089 --with-threads \
Patrick Williamsddad1a12017-02-23 20:36:32 -060090 --with-http_gzip_static_module \
Brad Bishopd7bf8c12018-02-25 22:55:05 -050091 ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS}
Patrick Williamsb48b7b42016-08-17 15:04:38 -050092}
93
94do_install () {
Patrick Williamsddad1a12017-02-23 20:36:32 -060095 oe_runmake 'DESTDIR=${D}' install
96 rm -fr ${D}${localstatedir}/run ${D}/run
97 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
98 install -d ${D}${sysconfdir}/tmpfiles.d
99 echo "d /run/${BPN} - - - -" \
100 > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
Andrew Geissler7f40b712020-05-15 14:09:53 -0500101 echo "d ${localstatedir}/log/${BPN} 0755 root root -" \
Patrick Williamsddad1a12017-02-23 20:36:32 -0600102 >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
103 fi
104 install -d ${D}${sysconfdir}/${BPN}
Andrew Geissler595f6302022-01-24 19:11:47 +0000105 ln -rs ${D}${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
Patrick Williamsddad1a12017-02-23 20:36:32 -0600106 install -d ${D}${NGINX_WWWDIR}
Brad Bishop23eaf032019-11-20 05:15:02 -0500107 mv ${D}${exec_prefix}/html ${D}${NGINX_WWWDIR}/
Patrick Williamsddad1a12017-02-23 20:36:32 -0600108 chown ${NGINX_USER}:www-data -R ${D}${NGINX_WWWDIR}
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500109
Patrick Williamsddad1a12017-02-23 20:36:32 -0600110 install -d ${D}${sysconfdir}/init.d
111 install -m 0755 ${WORKDIR}/nginx.init ${D}${sysconfdir}/init.d/nginx
112 sed -i 's,/usr/sbin/,${sbindir}/,g' ${D}${sysconfdir}/init.d/nginx
113 sed -i 's,/etc/,${sysconfdir}/,g' ${D}${sysconfdir}/init.d/nginx
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500114
Patrick Williamsddad1a12017-02-23 20:36:32 -0600115 install -d ${D}${sysconfdir}/nginx
116 install -m 0644 ${WORKDIR}/nginx.conf ${D}${sysconfdir}/nginx/nginx.conf
Brad Bishop19323692019-04-05 15:28:33 -0400117 sed -i 's,/etc/,${sysconfdir}/,g' ${D}${sysconfdir}/nginx/nginx.conf
Patrick Williamsddad1a12017-02-23 20:36:32 -0600118 sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/nginx/nginx.conf
119 sed -i 's/^user.*/user ${NGINX_USER};/g' ${D}${sysconfdir}/nginx/nginx.conf
Brad Bishop19323692019-04-05 15:28:33 -0400120 install -Dm 0644 ${WORKDIR}/default_server.site ${D}${sysconfdir}/nginx/sites-available/default_server
121 sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/nginx/sites-available/default_server
Patrick Williamsddad1a12017-02-23 20:36:32 -0600122 install -d ${D}${sysconfdir}/nginx/sites-enabled
Brad Bishop19323692019-04-05 15:28:33 -0400123 ln -s ../sites-available/default_server ${D}${sysconfdir}/nginx/sites-enabled/
124
125 install -m 0644 ${WORKDIR}/proxy_params ${D}${sysconfdir}/nginx/proxy_params
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500126
Patrick Williamsddad1a12017-02-23 20:36:32 -0600127 install -d ${D}${sysconfdir}/default/volatiles
128 install -m 0644 ${WORKDIR}/nginx-volatile.conf ${D}${sysconfdir}/default/volatiles/99_nginx
129 sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/default/volatiles/99_nginx
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500130 sed -i 's,@NGINX_USER@,${NGINX_USER},g' ${D}${sysconfdir}/default/volatiles/99_nginx
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500131
Brad Bishop19323692019-04-05 15:28:33 -0400132 # cleanup configuration folder
133 rm ${D}${sysconfdir}/nginx/*.default
134
135 # add additional configuration folders
136 install -d ${D}${sysconfdir}/nginx/modules-available
137 install -d ${D}${sysconfdir}/nginx/modules-enabled
138 install -d ${D}${sysconfdir}/nginx/server-conf.d
139 install -d ${D}${sysconfdir}/nginx/conf.d
140
Patrick Williamsddad1a12017-02-23 20:36:32 -0600141 if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
142 install -d ${D}${systemd_unitdir}/system
143 install -m 0644 ${WORKDIR}/nginx.service ${D}${systemd_unitdir}/system/
144 sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
145 -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
146 -e 's,@SBINDIR@,${sbindir},g' \
Brad Bishop15ae2502019-06-18 21:44:24 -0400147 -e 's,@BASE_BINDIR@,${base_bindir},g' \
Patrick Williamsddad1a12017-02-23 20:36:32 -0600148 ${D}${systemd_unitdir}/system/nginx.service
149 fi
Andrew Geissler7f40b712020-05-15 14:09:53 -0500150
151 rm -rf ${D}${localstatedir}/log/
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500152}
153
Patrick Williams213cb262021-08-07 19:21:33 -0500154pkg_postinst:${PN} () {
Patrick Williamsddad1a12017-02-23 20:36:32 -0600155 if [ -z "$D" ]; then
Patrick Williams8e7b46e2023-05-01 14:19:06 -0500156 if type systemd-tmpfiles >/dev/null 2>&1; then
Patrick Williamsddad1a12017-02-23 20:36:32 -0600157 systemd-tmpfiles --create
158 elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
159 ${sysconfdir}/init.d/populate-volatile.sh update
160 fi
161 fi
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500162}
163
Patrick Williams213cb262021-08-07 19:21:33 -0500164FILES:${PN} += " \
Patrick Williamsddad1a12017-02-23 20:36:32 -0600165 ${localstatedir}/ \
166 ${systemd_unitdir}/system/nginx.service \
167"
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500168
Patrick Williams213cb262021-08-07 19:21:33 -0500169CONFFILES:${PN} = " \
Patrick Williamsddad1a12017-02-23 20:36:32 -0600170 ${sysconfdir}/nginx/nginx.conf \
171 ${sysconfdir}/nginx/fastcgi.conf \
172 ${sysconfdir}/nginx/fastcgi_params \
173 ${sysconfdir}/nginx/koi-utf \
174 ${sysconfdir}/nginx/koi-win \
175 ${sysconfdir}/nginx/mime.types \
176 ${sysconfdir}/nginx/scgi_params \
177 ${sysconfdir}/nginx/uwsgi_params \
178 ${sysconfdir}/nginx/win-utf \
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500179"
180
181INITSCRIPT_NAME = "nginx"
182INITSCRIPT_PARAMS = "defaults 92 20"
183
184USERADD_PACKAGES = "${PN}"
Patrick Williams213cb262021-08-07 19:21:33 -0500185USERADD_PARAM:${PN} = " \
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500186 --system --no-create-home \
187 --home ${NGINX_WWWDIR} \
188 --groups www-data \
Patrick Williams44b3caf2024-04-12 16:51:14 -0500189 --shell ${base_sbindir}/nologin \
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500190 --user-group ${NGINX_USER}"