Browse code

apache with patch for h2 scheduling

Hanno Böck authored on 31/12/2017 14:16:03
Showing 8 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+AUX 41_mod_http2.conf 189 SHA256 cd047b552a2d336a31316ca60472591992d6b2eac7bab4d8e6b50c3afa0b785e SHA512 3d56a24ea98bc3188e5d6f8e2e0148e4b718e04f23452e77750bca984c44fc7c3acd4521a945b4c415284d0a5dac0f7e846bb60daf70fe61ce2632e8fa201ed6 WHIRLPOOL 4ae759dca0656c61f737c6beaf752677377da90938754ad1b585df38f67f613aa6b68de2460a3be6e1d7ad3200f3b03ac9156b54f8ef607a96b758ff23c3893b
2
+AUX apache-2.4.29-fix-http2-scheduling.patch 1078 SHA256 74e35a8c8fffc21c02560b58f424ad506c2e9a5ac4190dba5d76580345f18524 SHA512 3710835af0cd539204c74a812adcfc82421c23d6360365874861210529186b8788181af89ff2d9bf7f0d3dd85460450dafd196c4da98c126ef375ae3bcc8debb WHIRLPOOL a3c06e9d5ec236628402103185acce39ec412fb05445bc443c9cc74180baab935346077eccbe451ba5b2e8782fc0a5b15e168183ef351a8fd313576758ba0ff2
3
+AUX apache.conf 55 SHA256 ea616c5cc37979a006d69c51bda43fca15a4327d33175762652b29f5cdea1c7b SHA512 3a53beb7a283d17c14383f16ad14c0602681ac1b193cce8f5aca50ae9d9af3a71054ce4a9ab11cbcb72fe913459e1b306fd54660154e66afe10272f8c0f149f3 WHIRLPOOL fa348414f320a9f70001386dfb77d57ca4836c3ef3d251976077b7ad545d7f6752e534efadbf28c7dcb777388e3d844eba84b939dcf48881983388daf6ac23f0
4
+AUX apache2.2-hardened.service 970 SHA256 aaddbfb3953ad24b3714c54769df625d990833a24a075cfc0a10976c60dfa774 SHA512 c206e7103d592dcf4f2d62979a20f7ab3cc7ce357ffe3c06ae8137064c812b9727e01a53fd602a0a55a64ed609664061de680ff42329381db787e2dae9310c48 WHIRLPOOL 0dbec118e471363e84e00b6163ee6e7f7d9062d486523171da9c9df1f9eb3a7733bbc7262daa7f1ac9d47c1d4155d94ffd2f4b8d7905fa9372c1e275ea111b95
5
+AUX apache2.2.service 716 SHA256 e850ad73585fbba52ade58a39ca91adbfd52f56a0bbd426ebcadb340a7dcb62b SHA512 5f736c803772077598248bbb41f76dff396dfd2f11a60d1ba929a619275efb8c1b4c0dab78cbcdf83b9ec94db67b958b3333b01f67d71eb3b2e07dba4bca2a7c WHIRLPOOL 776a928422b8f37a12099111a1503674ca901934b60dca8596dc8bc287390be9a0e912d7ba6226dcb22eb7c669fa298ddc20fd7bf5c275b0cf019bae0d594839
6
+DIST gentoo-apache-2.4.18-r1-20160303.tar.bz2 24505 BLAKE2B 504deabe5ee9e2b32f44e8ea6cde6f01e7f26643ca05eb0aaf860ab6440d821566f83b5c9aacb2201382f9326974c7dddea4f4289d9da5857762611f424f0395 SHA512 68f0c4de38ae05c45839fe692cbb7de641e331ca133b8aaaf69f3659dec15833cda95e6e074edb3a5b6b6d59b3fc5a4ee3589fff810707fe27417a25cd8a4c4d
7
+DIST httpd-2.4.29.tar.bz2 6567926 BLAKE2B 01a83212941abad548f73fc144f9731ff51e0ed8f975e76cb994247601f7c2f89a3f862e011638afb77988eda0ef2b543634fb6bc45b583e9bdba2c30e565731 SHA512 840982fd3d21463bc5c1747f211dfacf3abdf634d149e49bb49fd2e5deda140de602dbdf31e1bbe5337a48f718ab2261c408e83a8dd39a9291ee7b6b7a85639a
8
+EBUILD apache-2.4.29.ebuild 7842 SHA256 6c5fb700858717e6a734f342f674893fb4b84d96dce68d2435d4ed12146ca5cd SHA512 2c61b30123461105ad212ab3b184cc3c13e7dc321cdbf80e384f630fe576fa903cda14571719d766989f835c797d8f9850d665049d8e942de03682414800bee2 WHIRLPOOL 9b88bfd054ae560c0e9870adc53c82b50ec47d3e3f99bb0664e1d04a5992e7788aee90d80c1397b401189320afaf3d07ef0ff6f27ce18bfa06a7aa341967c5ba
9
+MISC metadata.xml 3475 SHA256 22be8b853799e928c03d136ad6da773f7518e45176183a50360784509b69a243 SHA512 3f27045fba988cb5bb5b4a7c19dd7bbcbd50f7e8de00edd8e153b24246263a90e355aa38fa050044c023f5a180af3559b0be708c414eae6d5e895e982629a8d9 WHIRLPOOL ed14e0cd50bf9b92abe4b25b8617065ca9282d2fd8c9a0ff851cdc047be98c62548e8c9967bfb700c940e2dc9ee18d2c5b44938a7a78b666590d4c9ddb975ac0
0 10
new file mode 100644
... ...
@@ -0,0 +1,239 @@
1
+# Copyright 1999-2017 Gentoo Foundation
2
+# Distributed under the terms of the GNU General Public License v2
3
+
4
+EAPI=6
5
+
6
+PATCHES=( "${FILESDIR}/apache-2.4.29-fix-http2-scheduling.patch" )
7
+# latest gentoo apache files
8
+GENTOO_PATCHSTAMP="20160303"
9
+GENTOO_DEVELOPER="polynomial-c"
10
+GENTOO_PATCHNAME="gentoo-apache-2.4.18-r1"
11
+
12
+# IUSE/USE_EXPAND magic
13
+IUSE_MPMS_FORK="prefork"
14
+IUSE_MPMS_THREAD="event worker"
15
+
16
+# << obsolete modules:
17
+# authn_default authz_default mem_cache
18
+# mem_cache is replaced by cache_disk
19
+# ?? buggy modules
20
+# proxy_scgi: startup error: undefined symbol "ap_proxy_release_connection", no fix found
21
+# >> added modules for reason:
22
+# compat: compatibility with 2.2 access control
23
+# authz_host: new module for access control
24
+# authn_core: functionality provided by authn_alias in previous versions
25
+# authz_core: new module, provides core authorization capabilities
26
+# cache_disk: replacement for mem_cache
27
+# lbmethod_byrequests: Split off from mod_proxy_balancer in 2.3
28
+# lbmethod_bytraffic: Split off from mod_proxy_balancer in 2.3
29
+# lbmethod_bybusyness: Split off from mod_proxy_balancer in 2.3
30
+# lbmethod_heartbeat: Split off from mod_proxy_balancer in 2.3
31
+# slotmem_shm: Slot-based shared memory provider (for lbmethod_byrequests).
32
+# socache_shmcb: shared object cache provider. Default config with ssl needs it
33
+# unixd: fixes startup error: Invalid command 'User'
34
+IUSE_MODULES="access_compat actions alias asis auth_basic auth_digest
35
+authn_alias authn_anon authn_core authn_dbd authn_dbm authn_file authz_core
36
+authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex
37
+cache cache_disk cache_socache cern_meta charset_lite cgi cgid dav dav_fs dav_lock
38
+dbd deflate dir dumpio env expires ext_filter file_cache filter headers http2
39
+ident imagemap include info lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness
40
+lbmethod_heartbeat log_config log_forensic logio macro mime mime_magic negotiation
41
+proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_html proxy_http proxy_scgi
42
+proxy_fcgi  proxy_wstunnel rewrite ratelimit remoteip reqtimeout setenvif
43
+slotmem_shm speling socache_shmcb status substitute unique_id userdir usertrack
44
+unixd version vhost_alias watchdog xml2enc"
45
+# The following are also in the source as of this version, but are not available
46
+# for user selection:
47
+# bucketeer case_filter case_filter_in echo http isapi optional_fn_export
48
+# optional_fn_import optional_hook_export optional_hook_import
49
+
50
+# inter-module dependencies
51
+# TODO: this may still be incomplete
52
+MODULE_DEPENDS="
53
+	dav_fs:dav
54
+	dav_lock:dav
55
+	deflate:filter
56
+	cache_disk:cache
57
+	ext_filter:filter
58
+	file_cache:cache
59
+	lbmethod_byrequests:proxy_balancer
60
+	lbmethod_byrequests:slotmem_shm
61
+	lbmethod_bytraffic:proxy_balancer
62
+	lbmethod_bybusyness:proxy_balancer
63
+	lbmethod_heartbeat:proxy_balancer
64
+	log_forensic:log_config
65
+	logio:log_config
66
+	cache_disk:cache
67
+	cache_socache:cache
68
+	mime_magic:mime
69
+	proxy_ajp:proxy
70
+	proxy_balancer:proxy
71
+	proxy_balancer:slotmem_shm
72
+	proxy_connect:proxy
73
+	proxy_ftp:proxy
74
+	proxy_html:proxy
75
+	proxy_html:xml2enc
76
+	proxy_http:proxy
77
+	proxy_scgi:proxy
78
+	proxy_fcgi:proxy
79
+	proxy_wstunnel:proxy
80
+	substitute:filter
81
+"
82
+
83
+# module<->define mappings
84
+MODULE_DEFINES="
85
+	auth_digest:AUTH_DIGEST
86
+	authnz_ldap:AUTHNZ_LDAP
87
+	cache:CACHE
88
+	cache_disk:CACHE
89
+	cache_socache:CACHE
90
+	dav:DAV
91
+	dav_fs:DAV
92
+	dav_lock:DAV
93
+	file_cache:CACHE
94
+	http2:HTTP2
95
+	info:INFO
96
+	ldap:LDAP
97
+	proxy:PROXY
98
+	proxy_ajp:PROXY
99
+	proxy_balancer:PROXY
100
+	proxy_connect:PROXY
101
+	proxy_ftp:PROXY
102
+	proxy_html:PROXY
103
+	proxy_http:PROXY
104
+	proxy_fcgi:PROXY
105
+	proxy_scgi:PROXY
106
+	proxy_wstunnel:PROXY
107
+	socache_shmcb:SSL
108
+	ssl:SSL
109
+	status:STATUS
110
+	suexec:SUEXEC
111
+	userdir:USERDIR
112
+"
113
+
114
+# critical modules for the default config
115
+MODULE_CRITICAL="
116
+	authn_core
117
+	authz_core
118
+	authz_host
119
+	dir
120
+	mime
121
+	unixd
122
+"
123
+inherit eutils apache-2 systemd toolchain-funcs
124
+
125
+DESCRIPTION="The Apache Web Server"
126
+HOMEPAGE="https://httpd.apache.org/"
127
+
128
+# some helper scripts are Apache-1.1, thus both are here
129
+LICENSE="Apache-2.0 Apache-1.1"
130
+SLOT="2"
131
+KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~x64-macos ~x86-macos ~m68k-mint ~sparc64-solaris ~x64-solaris"
132
+
133
+DEPEND+="apache2_modules_http2? ( >=net-libs/nghttp2-1.2.1 )"
134
+
135
+REQUIRED_USE="apache2_modules_http2? ( ssl )"
136
+
137
+pkg_setup() {
138
+	# dependend critical modules which are not allowed in global scope due
139
+	# to USE flag conditionals (bug #499260)
140
+	use ssl && MODULE_CRITICAL+=" socache_shmcb"
141
+	use doc && MODULE_CRITICAL+=" alias negotiation setenvif"
142
+	apache-2_pkg_setup
143
+}
144
+
145
+src_configure() {
146
+	# Brain dead check.
147
+	tc-is-cross-compiler && export ap_cv_void_ptr_lt_long="no"
148
+
149
+	apache-2_src_configure
150
+}
151
+
152
+src_compile() {
153
+	if tc-is-cross-compiler; then
154
+		# This header is the same across targets, so use the build compiler.
155
+		pushd server >/dev/null
156
+		emake gen_test_char
157
+		tc-export_build_env BUILD_CC
158
+		${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} \
159
+			gen_test_char.c -o gen_test_char $(apr-1-config --includes) || die
160
+		popd >/dev/null
161
+	fi
162
+
163
+	default
164
+}
165
+
166
+src_install() {
167
+	apache-2_src_install
168
+	for i in /usr/bin/{htdigest,logresolve,htpasswd,htdbm,ab,httxt2dbm}; do
169
+		rm "${ED}"/$i || die "Failed to prune apache-tools bits"
170
+	done
171
+	for i in /usr/share/man/man8/{rotatelogs.8,htcacheclean.8}; do
172
+		rm "${ED}"/$i || die "Failed to prune apache-tools bits"
173
+	done
174
+	for i in /usr/share/man/man1/{logresolve.1,htdbm.1,htdigest.1,htpasswd.1,dbmmanage.1,ab.1}; do
175
+		rm "${ED}"/$i || die "Failed to prune apache-tools bits"
176
+	done
177
+	for i in /usr/sbin/{checkgid,fcgistarter,htcacheclean,rotatelogs}; do
178
+		rm "${ED}/"$i || die "Failed to prune apache-tools bits"
179
+	done
180
+
181
+	# install apxs in /usr/bin (bug #502384) and put a symlink into the
182
+	# old location until all ebuilds and eclasses have been modified to
183
+	# use the new location.
184
+	local apxs="/usr/bin/apxs"
185
+	cp "${S}"/support/apxs "${ED%/}/${apxs}" || die "Failed to install apxs"
186
+	ln -s ../bin/apxs "${ED%/}/usr/sbin/apxs" || die
187
+	chmod 0755 "${ED%/}${apxs}" || die
188
+
189
+	# Note: wait for mod_systemd to be included in some forthcoming release,
190
+	# Then apache2.4.service can be used and systemd support controlled
191
+	# through --enable-systemd
192
+	systemd_newunit "${FILESDIR}/apache2.2-hardened.service" "apache2.service"
193
+	systemd_dotmpfilesd "${FILESDIR}/apache.conf"
194
+	#insinto /etc/apache2/modules.d
195
+	#doins "${FILESDIR}/00_systemd.conf"
196
+
197
+	# Install http2 module config
198
+	insinto /etc/apache2/modules.d
199
+	doins "${FILESDIR}"/41_mod_http2.conf
200
+}
201
+
202
+pkg_postinst() {
203
+	apache-2_pkg_postinst || die "apache-2_pkg_postinst failed"
204
+	# warnings that default config might not work out of the box
205
+	for mod in $MODULE_CRITICAL; do
206
+		if ! use "apache2_modules_${mod}"; then
207
+			echo
208
+			ewarn "Warning: Critical module not installed!"
209
+			ewarn "Modules 'authn_core', 'authz_core' and 'unixd'"
210
+			ewarn "are highly recomended but might not be in the base profile yet."
211
+			ewarn "Default config for ssl needs module 'socache_shmcb'."
212
+			ewarn "Enabling the following flags is highly recommended:"
213
+			for cmod in $MODULE_CRITICAL; do
214
+				use "apache2_modules_${cmod}" || \
215
+					ewarn "+ apache2_modules_${cmod}"
216
+			done
217
+			echo
218
+			break
219
+		fi
220
+	done
221
+	# warning for proxy_balancer and missing load balancing scheduler
222
+	if use apache2_modules_proxy_balancer; then
223
+		local lbset=
224
+		for mod in lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat; do
225
+			if use "apache2_modules_${mod}"; then
226
+				lbset=1 && break
227
+			fi
228
+		done
229
+		if [ ! ${lbset} ] ; then
230
+			echo
231
+			ewarn "Info: Missing load balancing scheduler algorithm module"
232
+			ewarn "(They were split off from proxy_balancer in 2.3)"
233
+			ewarn "In order to get the ability of load balancing, at least"
234
+			ewarn "one of these modules has to be present:"
235
+			ewarn "lbmethod_byrequests lbmethod_bytraffic lbmethod_bybusyness lbmethod_heartbeat"
236
+			echo
237
+		fi
238
+	fi
239
+}
0 240
new file mode 100644
... ...
@@ -0,0 +1,9 @@
1
+<IfDefine SSL>
2
+  <IfModule http2_module>
3
+    # enable debugging for this module
4
+    #LogLevel http2:info
5
+
6
+    #Enable HTTP/2 support
7
+    Protocols h2 h2c http/1.1
8
+  </IfModule>
9
+</IfDefine>
0 10
new file mode 100644
... ...
@@ -0,0 +1,22 @@
1
+--- a/modules/http2/h2_workers.c	2017-10-13 10:37:45.000000000 +0200
2
+@@ -305,7 +305,18 @@ h2_workers *h2_workers_create(server_rec
3
+     workers->max_workers = max_workers;
4
+     workers->max_idle_secs = (idle_secs > 0)? idle_secs : 10;
5
+ 
6
+-    status = h2_fifo_create(&workers->mplxs, pool, 2 * workers->max_workers);
7
++    /* FIXME: the fifo set we use here has limited capacity. Once the
8
++     * set is full, connections with new requests do a wait. Unfortunately,
9
++     * we have optimizations in place there that makes such waiting "unfair"
10
++     * in the sense that it may take connections a looong time to get scheduled.
11
++     *
12
++     * Need to rewrite this to use one of our double-linked lists and a mutex
13
++     * to have unlimited capacity and fair scheduling.
14
++     *
15
++     * For now, we just make enough room to have many connections inside one
16
++     * process.
17
++     */
18
++    status = h2_fifo_set_create(&workers->mplxs, pool, 8 * 1024);
19
+     if (status != APR_SUCCESS) {
20
+         return NULL;
21
+     }
0 22
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+d /run/apache2 710 root apache
2
+d /run/apache_ssl_mutex
0 3
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+[Unit]
2
+Description=The Apache HTTP Server
3
+After=network.target remote-fs.target nss-lookup.target
4
+
5
+[Service]
6
+EnvironmentFile=/etc/conf.d/apache2
7
+ExecStart=/usr/sbin/apache2 $APACHE2_OPTS -DFOREGROUND
8
+ExecReload=/usr/sbin/apache2 $APACHE2_OPTS -k graceful
9
+ExecStop=/usr/sbin/apache2 $APACHE2_OPTS -k graceful-stop
10
+# We want systemd to give httpd some time to finish gracefully, but still want
11
+# it to kill httpd after TimeoutStopSec if something went wrong during the
12
+# graceful stop. Normally, Systemd sends SIGTERM signal right after the
13
+# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
14
+# httpd time to finish.
15
+KillSignal=SIGCONT
16
+PrivateTmp=true
17
+#Hardening
18
+PrivateTmp=true
19
+CapabilityBoundingSet=CAP_CHOWN CAP_SETGID CAP_SETUID CAP_DAC_OVERRIDE CAP_KILL CAP_NET_BIND_SERVICE CAP_IPC_LOCK
20
+SecureBits=noroot-locked
21
+ProtectSystem=full
22
+NoNewPrivileges=true
23
+PrivateDevices=true
24
+MemoryDenyWriteExecute=true
25
+
26
+[Install]
27
+WantedBy=multi-user.target
0 28
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+[Unit]
2
+Description=The Apache HTTP Server
3
+After=network.target remote-fs.target nss-lookup.target
4
+
5
+[Service]
6
+EnvironmentFile=/etc/conf.d/apache2
7
+ExecStart=/usr/sbin/apache2 $APACHE2_OPTS -DFOREGROUND
8
+ExecReload=/usr/sbin/apache2 $APACHE2_OPTS -k graceful
9
+ExecStop=/usr/sbin/apache2 $APACHE2_OPTS -k graceful-stop
10
+# We want systemd to give httpd some time to finish gracefully, but still want
11
+# it to kill httpd after TimeoutStopSec if something went wrong during the
12
+# graceful stop. Normally, Systemd sends SIGTERM signal right after the
13
+# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
14
+# httpd time to finish.
15
+KillSignal=SIGCONT
16
+PrivateTmp=true
17
+
18
+[Install]
19
+WantedBy=multi-user.target
0 20
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
3
+<pkgmetadata>
4
+	<maintainer type="person">
5
+		<email>polynomial-c@gentoo.org</email>
6
+		<name>Lars Wendler</name>
7
+	</maintainer>
8
+	<longdescription>
9
+		The Apache HTTP Server Project is an effort to develop and maintain an
10
+		open-source HTTP server for modern operating systems. The goal of this
11
+		project is to provide a secure, efficient and extensible server that
12
+		provides HTTP services in sync with the current HTTP standards.
13
+	</longdescription>
14
+	<use>
15
+		<flag name="suexec">Install suexec with apache</flag>
16
+		<flag name="static">Link in apache2 modules statically rather then plugins</flag>
17
+		<flag name="apache2_modules_access_compat">Group authorizations based on host (name or IP address). Available as a compatibility module with previous versions.</flag>
18
+		<flag name="apache2_modules_authn_core">Provides core authentication capabilities common to all authentication providers (functionality provided by authn_alias in previous versions).</flag>
19
+		<flag name="apache2_modules_authz_core">Provides core authorization capabilities to various authorization/authorization modules, such as authn_file and authz_user.</flag>
20
+		<flag name="apache2_modules_authz_dbd">Provides authorization capabilities via SQL database so that authenticated users can be allowed or denied access to portions of the web site by group membership.</flag>
21
+		<flag name="apache2_modules_cache_disk">Disk based storage module for the HTTP caching filter (similar to mem_cache in previous versions).</flag>
22
+		<flag name="apache2_modules_cache_socache">Shared object cache (socache) based storage module for the HTTP caching filter.</flag>
23
+		<flag name="apache2_modules_proxy_html">Module to rewrite links in html pages behind a reverse proxy</flag>
24
+		<flag name="apache2_modules_http2">Enable http2/alpn module</flag>
25
+		<flag name="apache2_modules_lbmethod_byrequests">Request counting load balancer scheduler algorithm for proxy_balancer.</flag>
26
+		<flag name="apache2_modules_lbmethod_bytraffic">Weighted traffic counting load balancer scheduler algorithm for proxy_balancer.</flag>
27
+		<flag name="apache2_modules_lbmethod_bybusyness">Pending request counting load balancer scheduler algorithm for proxy_balancer.</flag>
28
+		<flag name="apache2_modules_lbmethod_heartbeat">Heartbeat traffic counting load balancer scheduler algorithm for proxy_balancer.</flag>
29
+		<flag name="apache2_modules_macro">Macros for the Apache config file.</flag>
30
+		<flag name="apache2_modules_slotmem_shm">Slot-based shared memory provider.</flag>
31
+		<flag name="apache2_modules_socache_shmcb">A shared object cache provider using a high-performance cyclic buffer inside a shared memory segment.</flag>
32
+		<flag name="apache2_modules_unixd">Basic (required) security for Unix-family platforms.</flag>
33
+		<flag name="apache2_modules_proxy_fcgi">FCGI support module for mod_proxy.</flag>
34
+		<flag name="apache2_modules_proxy_wstunnel">Provides support for the tunnelling of web socket connections to a backend websockets server.</flag>
35
+		<flag name="apache2_modules_ratelimit">Ratelimit module for transfer rate management</flag>
36
+		<flag name="apache2_modules_remoteip">Remotip module for logging</flag>
37
+		<flag name="apache2_modules_watchdog">Provides infrastructure for other modules to periodically run tasks</flag>
38
+		<flag name="apache2_modules_xml2enc">Enable xml2 encoding module</flag>
39
+	</use>
40
+</pkgmetadata>