diff mbox series

[v6] package/apache: add option to disable server

Message ID 20231001163629.2635480-1-giulio.benetti@benettiengineering.com
State New
Headers show
Series [v6] package/apache: add option to disable server | expand

Commit Message

Giulio Benetti Oct. 1, 2023, 4:36 p.m. UTC
From: Giulio Benetti <giulio.benetti+tekvox@benettiengineering.com>

Other packages (e.g. mongoose) can use htdigest and htpasswd, but those
are only available with apache.

We don't want to build the whole apache server just for those tools, so
we add an option to disable the server; it is enabled by default for
legacy purposes (so that existing (def)configs still work).

However, there is no way to tell the apache buildsystem to only build
those two tools, so we have to provide custom build and install
commands.

Cc: Jim Reinhart <jimr@tekvox.com>
Cc: James Autry <jautry@tekvox.com>
Cc: Matthew Maron <matthewm@tekvox.com>
Signed-off-by: Giulio Benetti <giulio.benetti+tekvox@benettiengineering.com>
---
V1->V2:
* Hide "External Apache modules" if BR2_PACKAGE_APACHE_UTILS_ONLY is enabled
V2->V3:
as suggested by Arnout:
* change negative option BR2_PACKAGE_APACHE_UTILS_ONLY to BR2_PACKAGE_APACHE_DAEMON
* set a common APACHE_CONF_OPTS and only add specific options for
  BR2_PACKAGE_APACHE_DAEMON enabled or not
V3->V4:
* drop --with-static-* options as suggested by Arnout
V4->V5:
as suggested by Yann:
* drop BR2_PACKAGE_APACHE check in package/Config.in for
  package/modsecurity2/Config.in
* make BR2_PACKAGE_PHP_SAPI_APACHE depends on BR2_PACKAGE_APACHE_DAEMON
* improve commit log
V5->V6:
as suggested by Romain:
* update apparmor BR2_PACKAGE_APACHE to BR2_PACKAGE_APACHE_DAEMON
---
 package/Config.in              |  2 --
 package/apache/Config.in       |  9 +++++++++
 package/apache/apache.mk       | 20 +++++++++++++++++---
 package/apparmor/apparmor.mk   |  2 +-
 package/modsecurity2/Config.in |  2 +-
 package/php/Config.in          |  2 +-
 6 files changed, 29 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index 90cfe25d05..a037fd50de 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2289,11 +2289,9 @@  menu "Networking applications"
 	source "package/alfred/Config.in"
 	source "package/aoetools/Config.in"
 	source "package/apache/Config.in"
-if BR2_PACKAGE_APACHE
 menu "External Apache modules"
 	source "package/modsecurity2/Config.in"
 endmenu
-endif
 	source "package/argus/Config.in"
 	source "package/arp-scan/Config.in"
 	source "package/arptables/Config.in"
diff --git a/package/apache/Config.in b/package/apache/Config.in
index 270296bce4..5e9e4c5f9d 100644
--- a/package/apache/Config.in
+++ b/package/apache/Config.in
@@ -17,6 +17,14 @@  config BR2_PACKAGE_APACHE
 
 if BR2_PACKAGE_APACHE
 
+config BR2_PACKAGE_APACHE_DAEMON
+	bool "apache-daemon"
+	default y
+	help
+	  Provide entire Apache daemon, otherwise only htdigest and htpasswd
+	  will be built and installed.
+
+if BR2_PACKAGE_APACHE_DAEMON
 choice
 	prompt "Multi-Processing Module (MPM)"
 	default BR2_PACKAGE_APACHE_MPM_WORKER
@@ -40,6 +48,7 @@  config BR2_PACKAGE_APACHE_MPM_WORKER
 	  Implements a hybrid multi-threaded multi-process web server
 
 endchoice
+endif
 
 endif
 
diff --git a/package/apache/apache.mk b/package/apache/apache.mk
index 320a6ad20e..994842b455 100644
--- a/package/apache/apache.mk
+++ b/package/apache/apache.mk
@@ -12,8 +12,6 @@  APACHE_LICENSE_FILES = LICENSE
 APACHE_CPE_ID_VENDOR = apache
 APACHE_CPE_ID_PRODUCT = http_server
 APACHE_SELINUX_MODULES = apache
-# Needed for mod_php
-APACHE_INSTALL_STAGING = YES
 # We have a patch touching configure.in and Makefile.in,
 # so we need to autoreconf:
 APACHE_AUTORECONF = YES
@@ -32,10 +30,16 @@  APACHE_MPM = worker
 endif
 
 APACHE_CONF_OPTS = \
-	--sysconfdir=/etc/apache2 \
 	--with-apr=$(STAGING_DIR)/usr \
 	--with-apr-util=$(STAGING_DIR)/usr \
 	--with-pcre=$(STAGING_DIR)/usr/bin/pcre2-config \
+
+ifeq ($(BR2_PACKAGE_APACHE_DAEMON),y)
+# Needed for mod_php
+APACHE_INSTALL_STAGING = YES
+
+APACHE_CONF_OPTS += \
+	--sysconfdir=/etc/apache2 \
 	--enable-http \
 	--enable-dbd \
 	--enable-proxy \
@@ -121,5 +125,15 @@  define APACHE_INSTALL_INIT_SYSTEMD
 	$(INSTALL) -D -m 644 package/apache/apache.service \
 		$(TARGET_DIR)/usr/lib/systemd/system/apache.service
 endef
+else
+define APACHE_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/support htdigest htpasswd
+endef
+
+define APACHE_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/support/htdigest $(TARGET_DIR)/usr/bin/htdigest
+	$(INSTALL) -m 0755 -D $(@D)/support/htpasswd $(TARGET_DIR)/usr/bin/htpasswd
+endef
+endif
 
 $(eval $(autotools-package))
diff --git a/package/apparmor/apparmor.mk b/package/apparmor/apparmor.mk
index eeedd805e6..f3ac27c5ed 100644
--- a/package/apparmor/apparmor.mk
+++ b/package/apparmor/apparmor.mk
@@ -50,7 +50,7 @@  APPARMOR_DEPENDENCIES += linux-pam
 APPARMOR_TOOLS += changehat/pam_apparmor
 endif
 
-ifeq ($(BR2_PACKAGE_APACHE),y)
+ifeq ($(BR2_PACKAGE_APACHE_DAEMON),y)
 APPARMOR_DEPENDENCIES += apache
 APPARMOR_TOOLS += changehat/mod_apparmor
 APPARMOR_MAKE_OPTS += APXS=$(STAGING_DIR)/usr/bin/apxs
diff --git a/package/modsecurity2/Config.in b/package/modsecurity2/Config.in
index fb1bfc960e..40c5fc55bc 100644
--- a/package/modsecurity2/Config.in
+++ b/package/modsecurity2/Config.in
@@ -1,6 +1,6 @@ 
 config BR2_PACKAGE_MODSECURITY2
 	bool "modsecurity2"
-	depends on BR2_PACKAGE_APACHE
+	depends on BR2_PACKAGE_APACHE_DAEMON
 	select BR2_PACKAGE_LIBXML2
 	select BR2_PACKAGE_PCRE2
 	help
diff --git a/package/php/Config.in b/package/php/Config.in
index 69b4268c1d..3a9e37dab6 100644
--- a/package/php/Config.in
+++ b/package/php/Config.in
@@ -36,7 +36,7 @@  if BR2_PACKAGE_PHP
 
 config BR2_PACKAGE_PHP_SAPI_APACHE
 	bool "Apache interface"
-	depends on BR2_PACKAGE_APACHE
+	depends on BR2_PACKAGE_APACHE_DAEMON
 	help
 	  Apache module