apache: new package
authorBernd Kuhls <bernd.kuhls@t-online.de>
Sat, 7 Feb 2015 10:41:03 +0000 (11:41 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 22 Feb 2015 14:24:54 +0000 (15:24 +0100)
[Thomas:
 - Don't explicitly pass CC_FOR_BUILD and CFLAGS_FOR_BUILD, those are
   already part of the default environment passed by the
   autotools-package infrastructure.
 - Explicitly disable Lua and LuaJIT support to avoid mis-detection of
   host installation.
 - Explicitly handle the optional support of libxml2, OpenSSL and
   zlib. Especially, the absence of explicit handling for libxml2 was
   causing a build failure due to the host libxml2 being detected.
 - Remove /usr/manual and /usr/build from the target. This saves 20+
   MB of target space.]

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/Config.in
package/apache/0001-cross-compile.patch [new file with mode: 0644]
package/apache/Config.in [new file with mode: 0644]
package/apache/apache.hash [new file with mode: 0644]
package/apache/apache.mk [new file with mode: 0644]

index 222ea38ccb4cb8017905e8f61596b0c3bc6807ef..09d49d9db2d599a6b3e4db4b67cbb4f37f651277 100644 (file)
@@ -1053,6 +1053,7 @@ endmenu
 menu "Networking applications"
        source "package/aiccu/Config.in"
        source "package/aircrack-ng/Config.in"
+       source "package/apache/Config.in"
        source "package/argus/Config.in"
        source "package/arptables/Config.in"
        source "package/atftp/Config.in"
diff --git a/package/apache/0001-cross-compile.patch b/package/apache/0001-cross-compile.patch
new file mode 100644 (file)
index 0000000..790b7a0
--- /dev/null
@@ -0,0 +1,63 @@
+Fix cross-compilation
+
+Fetched httpd-2.4.x-cross_compile.diff from upstream bugtracker:
+https://issues.apache.org/bugzilla/show_bug.cgi?id=51257#c6
+
+which is a bundle of upstream revisions:
+    http://svn.apache.org/viewvc?view=revision&revision=1327907
+    http://svn.apache.org/viewvc?view=revision&revision=1328390
+    http://svn.apache.org/viewvc?view=revision&revision=1328714
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+Index: server/Makefile.in
+===================================================================
+--- a/server/Makefile.in       (revision 1328714)
++++ b/server/Makefile.in       (working copy)
+@@ -22,9 +22,14 @@
+ include $(top_builddir)/build/rules.mk
+ include $(top_srcdir)/build/library.mk
++ifdef CC_FOR_BUILD
++gen_test_char: gen_test_char.c
++      $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<
++else
+ gen_test_char_OBJECTS = gen_test_char.lo
+ gen_test_char: $(gen_test_char_OBJECTS)
+       $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
++endif
+ test_char.h: gen_test_char
+       ./gen_test_char > test_char.h
+Index: configure.in
+===================================================================
+--- a/configure.in     (revision 1328714)
++++ b/configure.in     (working copy)
+@@ -193,6 +193,14 @@
+ dnl Try to get c99 support for variadic macros
+ ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless
++dnl we got already CC_FOR_BUILD from environment.
++if test "x${build_alias}" != "x${host_alias}"; then
++  if test "x${CC_FOR_BUILD}" = "x"; then
++    CC_FOR_BUILD=cc
++  fi
++fi
++
+ if test "x${cache_file}" = "x/dev/null"; then
+   # Likewise, ensure that CC and CPP are passed through to the pcre
+   # configure script iff caching is disabled (the autoconf 2.5x default).
+Index: acinclude.m4
+===================================================================
+--- a/acinclude.m4     (revision 1328714)
++++ ab/cinclude.m4     (working copy)
+@@ -53,6 +53,8 @@
+   APACHE_SUBST(CPPFLAGS)
+   APACHE_SUBST(CFLAGS)
+   APACHE_SUBST(CXXFLAGS)
++  APACHE_SUBST(CC_FOR_BUILD)
++  APACHE_SUBST(CFLAGS_FOR_BUILD)
+   APACHE_SUBST(LTFLAGS)
+   APACHE_SUBST(LDFLAGS)
+   APACHE_SUBST(LT_LDFLAGS)
diff --git a/package/apache/Config.in b/package/apache/Config.in
new file mode 100644 (file)
index 0000000..0814a17
--- /dev/null
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_APACHE
+       bool "apache"
+       select BR2_PACKAGE_APR_UTIL
+       select BR2_PACKAGE_PCRE
+       depends on !BR2_STATIC_LIBS
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       depends on BR2_USE_MMU # apr
+       help
+         The Apache HTTP Server Project is an effort to develop and maintain an
+         open-source HTTP server for modern operating systems including UNIX
+         and Windows NT. The goal of this project is to provide a secure,
+         efficient and extensible server that provides HTTP services in sync
+         with the current HTTP standards.
+
+         http://httpd.apache.org
+
+comment "apache needs a toolchain w/ dynamic library, threads"
+       depends on BR2_USE_MMU
+       depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/apache/apache.hash b/package/apache/apache.hash
new file mode 100644 (file)
index 0000000..51fd3ca
--- /dev/null
@@ -0,0 +1,2 @@
+# From http://www.apache.org/dist/httpd/httpd-2.4.12.tar.bz2.sha1
+sha1   bc4681bfd63accec8d82d3cc440fbc8264ce0f17        httpd-2.4.12.tar.bz2
diff --git a/package/apache/apache.mk b/package/apache/apache.mk
new file mode 100644 (file)
index 0000000..296e27e
--- /dev/null
@@ -0,0 +1,85 @@
+################################################################################
+#
+# apache
+#
+################################################################################
+
+APACHE_VERSION = 2.4.12
+APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2
+APACHE_SITE = http://archive.apache.org/dist/httpd
+APACHE_LICENSE = Apache-2.0
+APACHE_LICENSE_FILES = LICENSE
+# 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
+APACHE_DEPENDENCIES = apr apr-util pcre
+
+APACHE_CONF_ENV= \
+       ap_cv_void_ptr_lt_long=no \
+       PCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config
+
+APACHE_CONF_OPTS = \
+       --sysconfdir=/etc/apache2 \
+       --with-apr=$(STAGING_DIR)/usr \
+       --with-apr-util=$(STAGING_DIR)/usr \
+       --with-pcre=$(STAGING_DIR)/usr/bin/pcre-config \
+       --enable-http \
+       --enable-dbd \
+       --enable-proxy \
+       --enable-mime-magic \
+       --without-suexec-bin \
+       --enable-mods-shared=all \
+       --with-mpm=worker \
+       --disable-lua \
+       --disable-luajit
+
+ifeq ($(BR2_ARCH_HAS_ATOMICS),y)
+APACHE_CONF_OPTS += --enable-nonportable-atomics=yes
+endif
+
+ifeq ($(BR2_PACKAGE_LIBXML2),y)
+APACHE_DEPENDENCIES += libxml2
+# Apache wants the path to the header file, where it can find
+# <libxml/parser.h>.
+APACHE_CONF_OPTS += \
+       --enable-xml2enc \
+       --enable-proxy-html \
+       --with-libxml2=$(STAGING_DIR)/usr/include/libxml2
+else
+APACHE_CONF_OPTS += \
+       --disable-xml2enc \
+       --disable-proxy-html
+endif
+
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+APACHE_DEPENDENCIES += openssl
+APACHE_CONF_OPTS += \
+       --enable-ssl \
+       --with-ssl=$(STAGING_DIR)/usr
+else
+APACHE_CONF_OPTS += --disable-ssl
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+APACHE_DEPENDENCIES += zlib
+APACHE_CONF_OPTS += \
+       --enable-deflate \
+       --with-z=$(STAGING_DIR)/usr
+else
+APACHE_CONF_OPTS += --disable-deflate
+endif
+
+define APACHE_FIX_STAGING_APACHE_CONFIG
+       $(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs
+       $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk
+endef
+APACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG
+
+define APACHE_CLEANUP_TARGET
+       $(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build
+endef
+APACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET
+
+$(eval $(autotools-package))