diff --git a/net/apache/Makefile b/net/apache/Makefile new file mode 100644 index 000000000..8b9a25fbc --- /dev/null +++ b/net/apache/Makefile @@ -0,0 +1,166 @@ +# +# Copyright (C) 2007-2011 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.2.27 +PKG_RELEASE:=1 +PKG_SOURCE_NAME:=httpd +PKG_MAINTAINER:=Thomas Heil +PKG_LICENSE:=Apache License + +PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://mirrors.ibiblio.org/apache/httpd/ \ + http://apache.imsam.info/httpd/ +PKG_MD5SUM:=8faef0decf3fa7e69b2568eb2105a3d8 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION) + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/apache/Default + SECTION:=net + CATEGORY:=Network + SUBMENU:=Web Servers/Proxies + TITLE:=The Apache Web Server + URL:=http://httpd.apache.org/ +endef + +define Package/apache/Default/description + The Apache Web Server is a powerful and flexible HTTP/1.1 compliant + web server. Originally designed as a replacement for the NCSA HTTP + Server, it has grown to be the most popular web server on the Internet. +endef + +define Package/apache +$(call Package/apache/Default) + DEPENDS:=+libapr +libaprutil +libpcre +libopenssl +unixodbc +endef + +define Package/apache/description +$(call Package/apache/Default/description) + . + This package contains the Apache web server and utility programs. + . + Take care that you don't include apache at the moment into your image + please select it only as module because busybox will override + /usr/sbin/httpd. It'll be solved soon. If you need to include this + package in the image anyway, remove httpd from busybox + (Base system --> Configuration --> Networking Utilities --> httpd). + Also you should take care for the initscripts, apache's httpd isn't + compatible with the one from busybox, so if you want to use apache + for running your webif, you'll need to change the parameters in the + scripts and configure the rest in /etc/httpd.conf. +endef + +define Package/apache/conffiles +/etc/apache/httpd.conf +/etc/apache/extra/httpd-autoindex.conf +/etc/apache/extra/httpd-dav.conf +/etc/apache/extra/httpd-default.conf +/etc/apache/extra/httpd-info.conf +/etc/apache/extra/httpd-languages.conf +/etc/apache/extra/httpd-manual.conf +/etc/apache/extra/httpd-mpm.conf +/etc/apache/extra/httpd-multilang-errordoc.conf +/etc/apache/extra/httpd-ssl.conf +/etc/apache/extra/httpd-userdir.conf +/etc/apache/extra/httpd-vhosts.conf +/etc/apache/magic +/etc/apache/mime.types +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 + +TARGET_CFLAGS += $(FPIC) +TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE + +define Build/Configure + $(call Build/Configure/Default, \ + --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \ + --with-apr-util="$(STAGING_DIR)/usr/bin/apu-1-config" \ + --with-pcre="$(STAGING_DIR)/usr/bin/pcre-config" \ + --enable-http \ + --enable-ssl \ + --enable-proxy \ + --disable-disk-cache \ + --enable-maintainer-mode \ + --enable-mime-magic \ + --without-suexec-bin \ + --sysconfdir=/etc/apache \ + ap_cv_void_ptr_lt_long=no \ + logfiledir="/var/log" \ + runtimedir="/var/run" \ + ) +endef + +define Build/InstallDev + rm -rf $(PKG_INSTALL_DIR)/usr/man/ \ + $(PKG_INSTALL_DIR)/usr/share/manual/ + # if you need docs take a look into the build-dir :) + $(INSTALL_DIR) $(1)/etc + $(CP) $(PKG_INSTALL_DIR)/etc/* \ + $(1)/etc + $(INSTALL_DIR) $(1)/usr/include/apache + $(CP) $(PKG_INSTALL_DIR)/usr/include/* \ + $(1)/usr/include/apache + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/httpd.exp \ + $(1)/usr/lib + $(INSTALL_DIR) $(1)/usr/sbin + $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* \ + $(1)/usr/sbin + $(INSTALL_DIR) $(1)/usr/share + $(CP) $(PKG_INSTALL_DIR)/usr/share/* \ + $(1)/usr/share +endef + +define Package/apache/preinst + rm /usr/sbin/httpd + echo -e "You should take a look in the initscripts, busybox's httpd \n\ + uses some parameters which are maybe unsupported by apache." +endef + +define Package/apache/install + $(INSTALL_DIR) $(1)/usr/sbin + # we don't need apxs on the router, it's just for building apache modules. + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{ab,apachectl,checkgid,dbmmanage,envvars,envvars-std,htcacheclean,htdbm,htdigest,htpasswd,httpd,httxt2dbm,logresolve,rotatelogs} $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/httpd.exp $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/share + $(CP) $(PKG_INSTALL_DIR)/usr/share/{error,htdocs,cgi-bin,build} $(1)/usr/share/ + $(INSTALL_DIR) $(1)/etc/apache + $(CP) $(PKG_INSTALL_DIR)/etc/apache/{httpd.conf,magic,mime.types,extra} $(1)/etc/apache/ +endef + +define Package/apache/postrm + rm -rf /usr/sbin/httpd + ln -s /bin/busybox /usr/sbin/httpd + echo -e "You may need to change your initscripts back for the use \n\ + with busybox's httpd." +endef + +define Package/apache-icons/install + $(INSTALL_DIR) $(1)/usr/share + $(CP) $(PKG_INSTALL_DIR)/usr/share/icons $(1)/usr/share/ +endef + +$(eval $(call BuildPackage,apache)) +$(eval $(call BuildPackage,apache-icons)) diff --git a/net/apache/patches/001-Makefile_in.patch b/net/apache/patches/001-Makefile_in.patch new file mode 100644 index 000000000..0bccfd3bd --- /dev/null +++ b/net/apache/patches/001-Makefile_in.patch @@ -0,0 +1,14 @@ +--- a/server/Makefile.in ++++ b/server/Makefile.in +@@ -26,7 +26,10 @@ gen_test_char: $(gen_test_char_OBJECTS) + $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) + + test_char.h: gen_test_char +- ./gen_test_char > test_char.h ++ true ++# ./gen_test_char > test_char.h ++# doesn't matter if you run it on the buildhost or on an wl500gd, ++# same output on both, so i just patched in the test_char.h :). + + util.lo: test_char.h + diff --git a/net/apache/patches/002-test_char_h.patch b/net/apache/patches/002-test_char_h.patch new file mode 100644 index 000000000..e8ea3cd1d --- /dev/null +++ b/net/apache/patches/002-test_char_h.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/server/test_char.h +@@ -0,0 +1,23 @@ ++/* this file is automatically generated by gen_test_char, do not edit */ ++#define T_ESCAPE_SHELL_CMD (1) ++#define T_ESCAPE_PATH_SEGMENT (2) ++#define T_OS_ESCAPE_PATH (4) ++#define T_HTTP_TOKEN_STOP (8) ++#define T_ESCAPE_LOGITEM (16) ++#define T_ESCAPE_FORENSIC (32) ++ ++static const unsigned char test_char_table[256] = { ++ 32,62,62,62,62,62,62,62,62,62,63,62,62,62,62,62,62,62,62,62, ++ 62,62,62,62,62,62,62,62,62,62,62,62,14,0,23,6,1,38,1,1, ++ 9,9,1,0,8,0,0,10,0,0,0,0,0,0,0,0,0,0,40,15, ++ 15,8,15,15,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,0,0,0,0,0,0,0,0,0,0,15,31,15,7,0,7,0,0,0, ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,0,0,15,39,15,1,62,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54, ++ 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 ++}; diff --git a/net/apache/patches/003-logdir_fix.patch b/net/apache/patches/003-logdir_fix.patch new file mode 100644 index 000000000..635c65caa --- /dev/null +++ b/net/apache/patches/003-logdir_fix.patch @@ -0,0 +1,33 @@ +--- a/build/mkconfNW.awk ++++ b/build/mkconfNW.awk +@@ -24,7 +24,7 @@ BEGIN { + A["sysconfdir"] = "conf" + A["iconsdir"] = "icons" + A["manualdir"] = "manual" +- A["runtimedir"] = "logs" ++ A["runtimedir"] = "log" + A["errordir"] = "error" + A["proxycachedir"] = "proxy" + +--- a/config.layout ++++ b/config.layout +@@ -28,8 +28,8 @@ + cgidir: ${datadir}/cgi-bin + includedir: ${prefix}/include + localstatedir: ${prefix} +- runtimedir: ${localstatedir}/logs +- logfiledir: ${localstatedir}/logs ++ runtimedir: ${localstatedir}/log ++ logfiledir: ${localstatedir}/log + proxycachedir: ${localstatedir}/proxy + + +@@ -150,7 +150,7 @@ + includedir: ${prefix}/include + localstatedir: /var${prefix} + runtimedir: ${localstatedir}/run +- logfiledir: ${localstatedir}/logs ++ logfiledir: ${localstatedir}/log + proxycachedir: ${localstatedir}/proxy + + diff --git a/net/apache/patches/004-pidfile_fix.patch b/net/apache/patches/004-pidfile_fix.patch new file mode 100644 index 000000000..e9f0b6de1 --- /dev/null +++ b/net/apache/patches/004-pidfile_fix.patch @@ -0,0 +1,11 @@ +--- a/include/scoreboard.h ++++ b/include/scoreboard.h +@@ -42,7 +42,7 @@ extern "C" { + + /* Scoreboard file, if there is one */ + #ifndef DEFAULT_SCOREBOARD +-#define DEFAULT_SCOREBOARD "logs/apache_runtime_status" ++#define DEFAULT_SCOREBOARD "log/apache_runtime_status" + #endif + + /* Scoreboard info on a process is, for now, kept very brief --- diff --git a/net/apache/patches/005-httpd_conf.patch b/net/apache/patches/005-httpd_conf.patch new file mode 100644 index 000000000..60f0dca9d --- /dev/null +++ b/net/apache/patches/005-httpd_conf.patch @@ -0,0 +1,60 @@ +--- a/docs/conf/httpd.conf.in ++++ b/docs/conf/httpd.conf.in +@@ -51,7 +51,6 @@ Listen @@Port@@ + # Example: + # LoadModule foo_module modules/mod_foo.so + # +-@@LoadModule@@ + + + +@@ -63,8 +62,8 @@ Listen @@Port@@ + # It is usually good practice to create a dedicated user and group for + # running httpd, as with most system services. + # +-User daemon +-Group daemon ++User nobody ++Group nogroup + + + +@@ -191,7 +190,7 @@ ErrorLog "@rel_logfiledir@/error_log" + # Possible values include: debug, info, notice, warn, error, crit, + # alert, emerg. + # +-LogLevel warn ++LogLevel debug + + + # +@@ -336,7 +335,7 @@ DefaultType text/plain + # contents of the file itself to determine its type. The MIMEMagicFile + # directive tells the module where the hint definitions are located. + # +-#MIMEMagicFile @rel_sysconfdir@/magic ++MIMEMagicFile @rel_sysconfdir@/magic + + # + # Customizable error responses come in three flavors: +@@ -358,7 +357,7 @@ DefaultType text/plain + # broken on your system. + # + #EnableMMAP off +-#EnableSendfile off ++EnableSendfile off + + # Supplemental configuration + # +@@ -404,7 +403,7 @@ DefaultType text/plain + # starting without SSL on platforms with no /dev/random equivalent + # but a statically compiled-in mod_ssl. + # +- +-SSLRandomSeed startup builtin +-SSLRandomSeed connect builtin +- ++# ++#SSLRandomSeed startup builtin ++#SSLRandomSeed connect builtin ++#