# # Copyright (C) 2007-2015 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=apache PKG_VERSION:=2.4.51 PKG_RELEASE:=1 PKG_SOURCE_NAME:=httpd PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@APACHE/httpd/ PKG_HASH:=20e01d81fecf077690a4439e3969a9b22a09a8d43c525356e863407741b838f4 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION) PKG_MAINTAINER:=Thomas Heil PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE PKG_CPE_ID:=cpe:/a:apache:http_server PKG_BUILD_DEPENDS:=openssl PKG_BUILD_PARALLEL:=1 PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_apache-mod-deflate \ CONFIG_PACKAGE_apache-mod-http2 \ CONFIG_PACKAGE_apache-mod-ldap \ CONFIG_PACKAGE_apache-mod-lua \ CONFIG_PACKAGE_apache-mod-md \ CONFIG_PACKAGE_apache-mod-proxy \ CONFIG_PACKAGE_apache-mod-proxy-html \ CONFIG_PACKAGE_apache-mod-session-crypto \ CONFIG_PACKAGE_apache-mod-suexec \ CONFIG_PACKAGE_apache-mod-webdav \ CONFIG_PACKAGE_apache-suexec PKG_FIXUP:=autoreconf PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk # without nls.mk mod_xml2enc might not find the iconv headers include $(INCLUDE_DIR)/nls.mk define Package/apache/Default SECTION:=net CATEGORY:=Network SUBMENU:=Web Servers/Proxies TITLE:=The Apache Web Server URL:=https://httpd.apache.org/ endef define Package/apache/Default/description The Apache HTTP Server Project is a collaborative software development effort aimed at creating a robust, commercial-grade, featureful, and freely-available source code implementation of an HTTP (Web) server. endef define Package/apache $(call Package/apache/Default) USERID:=apache=377:apache=377 DEPENDS:=+libapr +libaprutil +libpcre endef define Package/apache/description $(call Package/apache/Default/description) This package contains the Apache web server and utility programs. endef define Package/apache/conffiles /etc/apache2/apache2.conf /etc/apache2/extra/httpd-autoindex.conf /etc/apache2/extra/httpd-dav.conf /etc/apache2/extra/httpd-default.conf /etc/apache2/extra/httpd-info.conf /etc/apache2/extra/httpd-languages.conf /etc/apache2/extra/httpd-manual.conf /etc/apache2/extra/httpd-mpm.conf /etc/apache2/extra/httpd-multilang-errordoc.conf /etc/apache2/extra/httpd-ssl.conf /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-vhosts.conf /etc/apache2/extra/proxy-html.conf /etc/apache2/magic /etc/apache2/mime.types /etc/init.d/apache2 endef define Package/apache/postinst #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then echo echo "o-------------------------------------------------------------------o" echo "| Apache package changes |" echo "o-------------------------------------------------------------------o" echo "| - The server binary was renamed from httpd to apache2 |" echo "| - A simple init script is installed (/etc/init.d/apache2) |" echo "| - The server runs as user apache by default now |" echo "| - Configuration resides in /etc/apache2 instead of /etc/apache |" echo "| - Modules are installed to /usr/lib/apache2 |" echo "o-------------------------------------------------------------=^_^=-o" echo fi exit 0 endef define Package/apache-ab $(call Package/apache/Default) TITLE:=Apache benchmark utility DEPENDS:=apache +libopenssl endef define Package/apache-ab/description $(call Package/apache/Default/description) Apache server benchmarking utility. endef define Package/apache-error $(call Package/apache/Default) TITLE:=Error documents DEPENDS:=apache endef define Package/apache-error/description $(call Package/apache/Default/description) Apache multi language custom error documents. endef define Package/apache-icons $(call Package/apache/Default) TITLE:=Icons from Apache DEPENDS:=apache endef define Package/apache-icons/description $(call Package/apache/Default/description) This package contains the icons from Apache. endef define Package/apache-suexec $(call Package/apache/Default) TITLE:=Apache suEXEC DEPENDS:=apache endef define Package/apache-suexec/description $(call Package/apache/Default/description) This package contains the suEXEC utility from Apache. endef define Package/apache-utils $(call Package/apache/Default) TITLE:=Apache utilities DEPENDS:=apache endef define Package/apache-utils/description $(call Package/apache/Default/description) Apache utility programs for webservers. endef define Package/apache/install/mod $(INSTALL_DIR) $(1)/usr/lib/apache2 $(INSTALL_BIN) \ $(PKG_INSTALL_DIR)/usr/lib/apache2/mod_$(2).so \ $(1)/usr/lib/apache2 endef CONFIGURE_ARGS+= \ --$(if $(CONFIG_PACKAGE_apache-mod-http2),en,dis)able-http2 \ --$(if $(CONFIG_PACKAGE_apache-mod-lua),en,dis)able-lua \ --$(if $(CONFIG_PACKAGE_apache-mod-md),en,dis)able-md \ --$(if $(CONFIG_PACKAGE_apache-mod-proxy),en,dis)able-proxy \ --$(if $(CONFIG_PACKAGE_apache-mod-session-crypto),en,dis)able-session-crypto \ --$(if $(CONFIG_PACKAGE_apache-mod-ssl),en,dis)able-ssl \ --datadir=/usr/share/apache2 \ --disable-imagemap \ --disable-luajit \ --enable-authn-alias \ --enable-authn-anon \ --enable-cache \ --enable-cgi \ --enable-cgid \ --enable-dbd \ --enable-disk-cache \ --enable-exception-hook \ --enable-file-cache \ --enable-layout=OpenWrt \ --enable-mem-cache \ --enable-mods-shared=all \ --enable-mpms-shared=all \ --enable-so \ --libexecdir=/usr/lib/apache2 \ --sysconfdir=/etc/apache2 \ --with-apr-util="$(STAGING_DIR)/usr/bin/apu-1-config" \ --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \ --with-mpm=prefork \ --with-pcre="$(STAGING_DIR)/usr/bin/pcre-config" \ --with-program-name=apache2 \ --with-ssl ifneq ($(CONFIG_PACKAGE_apache-mod-deflate),) CONFIGURE_ARGS+= \ --enable-deflate \ --with-z="$(STAGING_DIR)/usr" else CONFIGURE_ARGS+= \ --disable-deflate \ --without-z endif ifneq ($(CONFIG_PACKAGE_apache-mod-ldap),) CONFIGURE_ARGS+= \ --enable-authnz-ldap \ --enable-ldap else CONFIGURE_ARGS+= \ --disable-authnz-ldap \ --disable-ldap endif ifneq ($(CONFIG_PACKAGE_apache-mod-proxy),) CONFIGURE_ARGS+= \ --enable-proxy \ --enable-proxy-connect \ --enable-proxy-ftp \ --enable-proxy-http else CONFIGURE_ARGS+= \ --disable-proxy endif ifneq ($(CONFIG_PACKAGE_apache-mod-proxy-html),) CONFIGURE_ARGS+= \ --enable-proxy-html \ --enable-xml2enc \ --with-libxml2="$(STAGING_DIR)/usr" else CONFIGURE_ARGS+= \ --disable-proxy-html \ --disable-xml2enc endif ifneq ($(CONFIG_PACKAGE_apache-mod-suexec)$(CONFIG_PACKAGE_apache-suexec),) CONFIGURE_ARGS+= \ --enable-suexec \ --with-suexec-bin=/usr/lib/apache2/suexec_dir/suexec \ --with-suexec-caller=apache \ --with-suexec-logfile=/var/log/apache2/suexec.log else CONFIGURE_ARGS+= \ --disable-suexec endif ifneq ($(CONFIG_PACKAGE_apache-mod-webdav),) CONFIGURE_ARGS+= \ --enable-dav \ --enable-dav-fs \ --enable-dav-lock else CONFIGURE_ARGS+= \ --disable-dav endif CONFIGURE_VARS += \ ac_cv_gettid=yes \ ap_cv_void_ptr_lt_long=no define Build/InstallDev $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/apxs $(1)/usr/bin $(INSTALL_DIR) $(1)/usr/include/apache2 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/apache2/* \ $(1)/usr/include/apache2 $(INSTALL_DIR) $(1)/usr/lib/apache2 $(INSTALL_DIR) $(1)/usr/share/apache2/build $(CP) $(PKG_INSTALL_DIR)/usr/share/apache2/build/* \ $(1)/usr/share/apache2/build $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' \ $(1)/usr/share/apache2/build/config_vars.mk endef define Package/apache/install $(INSTALL_DIR) $(1)/etc/apache2/extra $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/apache2/extra/* \ $(1)/etc/apache2/extra $(SED) '/^LoadModule session_crypto_module/s/^/#/' \ $(PKG_INSTALL_DIR)/etc/apache2/apache2.conf $(INSTALL_DATA) \ $(PKG_INSTALL_DIR)/etc/apache2/{apache2.conf,magic,mime.types} \ $(1)/etc/apache2 $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/apache2.init $(1)/etc/init.d/apache2 $(INSTALL_DIR) $(1)/usr/lib/apache2 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/apache2/*.so \ $(1)/usr/lib/apache2 rm -f $(1)/usr/lib/apache2/mod_{*ldap,dav*,deflate,http2,lbmethod_*,lua,md,proxy*,proxy_html,session_crypto,ssl,suexec,xml2enc}.so $(INSTALL_DIR) $(1)/usr/share/apache2/{cgi-bin,htdocs} $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/apache2/cgi-bin/* \ $(1)/usr/share/apache2/cgi-bin $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/apache2/htdocs/* \ $(1)/usr/share/apache2/htdocs $(INSTALL_DIR) $(1)/usr/{,s}bin $(INSTALL_BIN) \ $(PKG_INSTALL_DIR)/usr/bin/{dbmmanage,htdbm,htdigest,htpasswd,httxt2dbm,logresolve} \ $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{apachectl,apache2} \ $(1)/usr/sbin endef define Package/apache-ab/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ab $(1)/usr/bin endef define Package/apache-error/install $(INSTALL_DIR) $(1)/usr/share/apache2/error $(CP) $(PKG_INSTALL_DIR)/usr/share/apache2/error/* \ $(1)/usr/share/apache2/error endef define Package/apache-icons/install $(INSTALL_DIR) $(1)/usr/share/apache2 $(CP) $(PKG_INSTALL_DIR)/usr/share/apache2/icons \ $(1)/usr/share/apache2 endef define Package/apache-suexec/install $(INSTALL_DIR) -m0750 $(1)/usr/lib/apache2/suexec_dir $(INSTALL_SUID) $(PKG_INSTALL_DIR)/usr/sbin/suexec \ $(1)/usr/lib/apache2/suexec_dir endef define Package/apache-utils/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) \ $(PKG_INSTALL_DIR)/usr/sbin/{checkgid,envvars*,htcacheclean,rotatelogs} \ $(1)/usr/sbin endef # Directory "suexec_dir" is installed with '-m0750' above and contains # SUID binary "suexec". Below post-install script changes the group of # "suexec_dir" to apache, so user apache can access the folder (and the # SUID binary). The script only changes the group if the directory is # currently owned by "root:root". define Package/apache-suexec/postinst #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then dir="/usr/lib/apache2/suexec_dir" if ! [ -L "$$dir" ] && [ -d "$$dir" ] && [ -O "$$dir" ] && [ -G "$$dir" ]; then chown :apache "$$dir" fi fi exit 0 endef define Package/apache/Module define Package/apache-mod-$(1) $(call Package/apache/Default) TITLE:=$(2) module DEPENDS:=apache $(patsubst +%,+PACKAGE_apache-mod-$(1):%,$(4)) endef define Package/apache-mod-$(1)/description $(subst \n,$(newline),$(3)) endef define Package/apache-mod-$(1)/install $(foreach m,$(5),$(call Package/apache/install/mod,$$(1),$(m));) endef $$(eval $$(call BuildPackage,apache-mod-$(1))) endef $(eval $(call BuildPackage,apache)) $(eval $(call BuildPackage,apache-ab)) $(eval $(call BuildPackage,apache-error)) $(eval $(call BuildPackage,apache-icons)) $(eval $(call BuildPackage,apache-suexec)) $(eval $(call BuildPackage,apache-utils)) $(eval $(call Package/apache/Module,deflate,Deflate,Deflate support for the Apache HTTP server.,+zlib,deflate)) $(eval $(call Package/apache/Module,http2,HTTP2,HTTP/2 transport layer for the Apache HTTP Server.,+libnghttp2 +libopenssl,http2)) $(eval $(call Package/apache/Module,ldap,LDAP,LDAP authentication/authorization module for the Apache HTTP Server.,+libaprutil-ldap,authnz_ldap ldap)) $(eval $(call Package/apache/Module,lua,Lua,Lua support for the Apache HTTP server.,+liblua,lua)) $(eval $(call Package/apache/Module,md,Managed Domain handling,Managed Domain handling.,+libcurl +jansson +libopenssl,md)) $(eval $(call Package/apache/Module,proxy,Proxy,Proxy modules for the Apache HTTP Server.,,proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_hcheck proxy_http proxy_scgi proxy_uwsgi proxy_wstunnel lbmethod_byrequests lbmethod_heartbeat lbmethod_bytraffic lbmethod_bybusyness)) $(eval $(call Package/apache/Module,proxy-html,Proxy HTML,HTML and XML content filters for the Apache HTTP Server.,+apache-mod-proxy +libxml2,proxy_html xml2enc)) $(eval $(call Package/apache/Module,session-crypto,Session crypto,Session encryption support for the Apache HTTP Server.,+libaprutil-crypto-openssl,session_crypto)) $(eval $(call Package/apache/Module,ssl,SSL/TLS,SSL/TLS module for the Apache HTTP Server.,+libopenssl,ssl)) $(eval $(call Package/apache/Module,suexec,suEXEC,suEXEC module for the Apache HTTP Server.,+apache-suexec,suexec)) $(eval $(call Package/apache/Module,webdav,WebDAV,WebDAV support for the Apache HTTP Server.,,dav dav_fs dav_lock))