[1/2] apr and aprutil: Added as requirement for apache 2.4

Message ID 20170815204356.2928-1-wolfgang.apolinarski@googlemail.com
State New
Headers show

Message

Wolfgang Apolinarski Aug. 15, 2017, 8:43 p.m.
- APR 1.6.2 is a requirement for building apache httpd 2.4
- APR-Util 1.6.0 is a requirement for building apache httpd 2.4
---
 config/rootfiles/common/apache2 |  8 ++--
 config/rootfiles/common/apr     | 57 ++++++++++++++++++++++++++++
 config/rootfiles/common/aprutil | 52 +++++++++++++++++++++++++
 lfs/apr                         | 84 +++++++++++++++++++++++++++++++++++++++++
 lfs/aprutil                     | 84 +++++++++++++++++++++++++++++++++++++++++
 make.sh                         |  2 +
 6 files changed, 283 insertions(+), 4 deletions(-)
 create mode 100644 config/rootfiles/common/apr
 create mode 100644 config/rootfiles/common/aprutil
 create mode 100644 lfs/apr
 create mode 100644 lfs/aprutil

Comments

Michael Tremer Aug. 16, 2017, 1:36 p.m. | #1
Hi,

a few questions regarding this patch. Please see below.

Also: Why is nobody else reviewing this and testing this? I know that
there is many people out there who want to update Apache and have
tried, but this is just not good enough to want something. We also need
people who work on it to make it happen.

So thank you Wolfgang for working on this. But I want to see more
people reviewing this!

On Tue, 2017-08-15 at 22:43 +0200, Wolfgang Apolinarski wrote:
> - APR 1.6.2 is a requirement for building apache httpd 2.4
> - APR-Util 1.6.0 is a requirement for building apache httpd 2.4
> ---
>  config/rootfiles/common/apache2 |  8 ++--
>  config/rootfiles/common/apr     | 57 ++++++++++++++++++++++++++++
>  config/rootfiles/common/aprutil | 52 +++++++++++++++++++++++++
>  lfs/apr                         | 84
> +++++++++++++++++++++++++++++++++++++++++
>  lfs/aprutil                     | 84
> +++++++++++++++++++++++++++++++++++++++++
>  make.sh                         |  2 +
>  6 files changed, 283 insertions(+), 4 deletions(-)
>  create mode 100644 config/rootfiles/common/apr
>  create mode 100644 config/rootfiles/common/aprutil
>  create mode 100644 lfs/apr
>  create mode 100644 lfs/aprutil
> 
> diff --git a/config/rootfiles/common/apache2
> b/config/rootfiles/common/apache2
> index 7e33a155e..360f5ae61 100644
> --- a/config/rootfiles/common/apache2
> +++ b/config/rootfiles/common/apache2
> @@ -1342,22 +1342,22 @@ usr/lib/apache/mod_usertrack.so
>  usr/lib/apache/mod_version.so
>  usr/lib/apache/mod_vhost_alias.so
>  #usr/lib/apr-util-1
> -usr/lib/apr-util-1/apr_dbd_sqlite3-1.so
> +#usr/lib/apr-util-1/apr_dbd_sqlite3-1.so
>  #usr/lib/apr-util-1/apr_dbd_sqlite3.a
>  #usr/lib/apr-util-1/apr_dbd_sqlite3.la
> -usr/lib/apr-util-1/apr_dbd_sqlite3.so
> +#usr/lib/apr-util-1/apr_dbd_sqlite3.so
>  #usr/lib/apr.exp
>  #usr/lib/aprutil.exp
>  #usr/lib/libapr-1.a
>  #usr/lib/libapr-1.la
>  usr/lib/libapr-1.so
>  usr/lib/libapr-1.so.0
> -usr/lib/libapr-1.so.0.5.1
> +#usr/lib/libapr-1.so.0.5.1
>  #usr/lib/libaprutil-1.a
>  #usr/lib/libaprutil-1.la
>  usr/lib/libaprutil-1.so
>  usr/lib/libaprutil-1.so.0
> -usr/lib/libaprutil-1.so.0.5.3
> +#usr/lib/libaprutil-1.so.0.5.3
>  #usr/lib/pkgconfig/apr-1.pc
>  #usr/lib/pkgconfig/apr-util-1.pc
>  #usr/sbin/ab

You don't need to package the .so files. They are just needed for
linking which we never do on the firewall system.

Just ship the .so.X and .so.X.Y files.

Here it seems taht you are not shipping libaprutil at all. Can we not
disable it in the build since it is being compiled in an extra package?

> diff --git a/config/rootfiles/common/apr
> b/config/rootfiles/common/apr
> new file mode 100644
> index 000000000..abc825623
> --- /dev/null
> +++ b/config/rootfiles/common/apr
> @@ -0,0 +1,57 @@
> +usr/bin/apr-1-config
> +#usr/include/apr-1
> +#usr/include/apr-1/apr.h
> +#usr/include/apr-1/apr_allocator.h
> +#usr/include/apr-1/apr_atomic.h
> +#usr/include/apr-1/apr_cstr.h
> +#usr/include/apr-1/apr_dso.h
> +#usr/include/apr-1/apr_env.h
> +#usr/include/apr-1/apr_errno.h
> +#usr/include/apr-1/apr_escape.h
> +#usr/include/apr-1/apr_file_info.h
> +#usr/include/apr-1/apr_file_io.h
> +#usr/include/apr-1/apr_fnmatch.h
> +#usr/include/apr-1/apr_general.h
> +#usr/include/apr-1/apr_getopt.h
> +#usr/include/apr-1/apr_global_mutex.h
> +#usr/include/apr-1/apr_hash.h
> +#usr/include/apr-1/apr_inherit.h
> +#usr/include/apr-1/apr_lib.h
> +#usr/include/apr-1/apr_mmap.h
> +#usr/include/apr-1/apr_network_io.h
> +#usr/include/apr-1/apr_perms_set.h
> +#usr/include/apr-1/apr_poll.h
> +#usr/include/apr-1/apr_pools.h
> +#usr/include/apr-1/apr_portable.h
> +#usr/include/apr-1/apr_proc_mutex.h
> +#usr/include/apr-1/apr_random.h
> +#usr/include/apr-1/apr_ring.h
> +#usr/include/apr-1/apr_shm.h
> +#usr/include/apr-1/apr_signal.h
> +#usr/include/apr-1/apr_skiplist.h
> +#usr/include/apr-1/apr_strings.h
> +#usr/include/apr-1/apr_support.h
> +#usr/include/apr-1/apr_tables.h
> +#usr/include/apr-1/apr_thread_cond.h
> +#usr/include/apr-1/apr_thread_mutex.h
> +#usr/include/apr-1/apr_thread_proc.h
> +#usr/include/apr-1/apr_thread_rwlock.h
> +#usr/include/apr-1/apr_time.h
> +#usr/include/apr-1/apr_user.h
> +#usr/include/apr-1/apr_version.h
> +#usr/include/apr-1/apr_want.h
> +usr/lib/libapr-1.so.0.6.2
> +usr/lib/apr.exp
> +usr/lib/libapr-1.la
> +usr/lib/libapr-1.so
> +usr/lib/libapr-1.so.0
> +#usr/lib/pkgconfig/apr-1.pc
> +#usr/share/apr-1
> +#usr/share/apr-1/build
> +#usr/share/apr-1/build/apr_common.m4
> +#usr/share/apr-1/build/apr_rules.mk
> +#usr/share/apr-1/build/find_apr.m4
> +#usr/share/apr-1/build/libtool
> +#usr/share/apr-1/build/make_exports.awk
> +#usr/share/apr-1/build/make_var_export.awk
> +#usr/share/apr-1/build/mkdir.sh

Same as above. The static library .a isn't needed on the system either.

Also the alphabetical order of the rootfile is messed up. The build
system should complain about that.

> diff --git a/config/rootfiles/common/aprutil
> b/config/rootfiles/common/aprutil
> new file mode 100644
> index 000000000..7b0bbb8d7
> --- /dev/null
> +++ b/config/rootfiles/common/aprutil
> @@ -0,0 +1,52 @@
> +usr/bin/apu-1-config
> +#usr/include/apr-1/apr_anylock.h
> +#usr/include/apr-1/apr_base64.h
> +#usr/include/apr-1/apr_buckets.h
> +#usr/include/apr-1/apr_crypto.h
> +#usr/include/apr-1/apr_date.h
> +#usr/include/apr-1/apr_dbd.h
> +#usr/include/apr-1/apr_dbm.h
> +#usr/include/apr-1/apr_hooks.h
> +#usr/include/apr-1/apr_ldap.h
> +#usr/include/apr-1/apr_ldap_init.h
> +#usr/include/apr-1/apr_ldap_option.h
> +#usr/include/apr-1/apr_ldap_rebind.h
> +#usr/include/apr-1/apr_ldap_url.h
> +#usr/include/apr-1/apr_md4.h
> +#usr/include/apr-1/apr_md5.h
> +#usr/include/apr-1/apr_memcache.h
> +#usr/include/apr-1/apr_optional.h
> +#usr/include/apr-1/apr_optional_hooks.h
> +#usr/include/apr-1/apr_queue.h
> +#usr/include/apr-1/apr_redis.h
> +#usr/include/apr-1/apr_reslist.h
> +#usr/include/apr-1/apr_rmm.h
> +#usr/include/apr-1/apr_sdbm.h
> +#usr/include/apr-1/apr_sha1.h
> +#usr/include/apr-1/apr_siphash.h
> +#usr/include/apr-1/apr_strmatch.h
> +#usr/include/apr-1/apr_thread_pool.h
> +#usr/include/apr-1/apr_uri.h
> +#usr/include/apr-1/apr_uuid.h
> +#usr/include/apr-1/apr_xlate.h
> +#usr/include/apr-1/apr_xml.h
> +#usr/include/apr-1/apu.h
> +#usr/include/apr-1/apu_errno.h
> +#usr/include/apr-1/apu_version.h
> +#usr/include/apr-1/apu_want.h
> +#usr/include/apr-1/expat.h
> +usr/lib/libaprutil-1.la
> +usr/lib/libaprutil-1.so
> +usr/lib/libaprutil-1.so.0
> +usr/lib/libaprutil-1.so.0.6.0
> +#usr/lib/libexpat.a
> +#usr/lib/libexpat.la
> +#usr/lib/libexpat.so
> +#usr/lib/libexpat.so.0
> +#usr/lib/libexpat.so.0.5.0
> +#usr/lib/pkgconfig/apr-util-1.pc
> +usr/lib/apr-util-1
> +usr/lib/apr-util-1/apr_crypto_openssl-1.so
> +usr/lib/apr-util-1/apr_crypto_openssl.la
> +usr/lib/apr-util-1/apr_crypto_openssl.so
> +usr/lib/aprutil.exp

The package has a bundled version of libexpat. We have a package for
that. Please disable this here. aprutil is compiled after expat, but it
does not seem to find it or it is not happy with the version.

> diff --git a/lfs/apr b/lfs/apr
> new file mode 100644
> index 000000000..24ab1d79e
> --- /dev/null
> +++ b/lfs/apr
> @@ -0,0 +1,84 @@
> +####################################################################
> ###########
> +#                                                                   
>           #
> +# IPFire.org - A linux based
> firewall                                         #
> +# Copyright (C) 2007-2014   IPFire Team  <info@ipfire.org>          
>           #
> +#                                                                   
>           #
> +# This program is free software: you can redistribute it and/or
> modify        #
> +# it under the terms of the GNU General Public License as published
> by        #
> +# the Free Software Foundation, either version 3 of the License,
> or           #
> +# (at your option) any later
> version.                                         #
> +#                                                                   
>           #
> +# This program is distributed in the hope that it will be
> useful,             #
> +# but WITHOUT ANY WARRANTY; without even the implied warranty
> of              #
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
> the               #
> +# GNU General Public License for more
> details.                                #
> +#                                                                   
>           #
> +# You should have received a copy of the GNU General Public
> License           #
> +# along with this program.  If not, see <http://www.gnu.org/licenses
> />.       #
> +#                                                                   
>           #
> +####################################################################
> ###########
> +
> +
> +####################################################################
> ###########
> +# Definitions
> +####################################################################
> ###########
> +
> +include Config
> +
> +VER        = 1.6.2
> +
> +THISAPP    = apr-$(VER)
> +DL_FILE    = $(THISAPP).tar.bz2
> +DL_FROM    = http://archive.apache.org/dist/apr
> +DIR_APP    = $(DIR_SRC)/$(THISAPP)
> +
> +TARGET     = $(DIR_INFO)/$(THISAPP)
> +
> +####################################################################
> ###########
> +# Top-level Rules
> +####################################################################
> ###########
> +
> +objects = $(DL_FILE)
> +
> +$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
> +
> +$(DL_FILE)_MD5 = e81a851967c79b5ce9bfbc909e4bf735
> +
> +install : $(TARGET)
> +
> +check : $(patsubst %,$(DIR_CHK)/%,$(objects))
> +
> +download :$(patsubst %,$(DIR_DL)/%,$(objects))
> +
> +md5 : $(subst %,%_MD5,$(objects))
> +
> +####################################################################
> ###########
> +# Downloading, checking, md5sum
> +####################################################################
> ###########
> +
> +$(patsubst %,$(DIR_CHK)/%,$(objects)) :
> +	@$(CHECK)
> +
> +$(patsubst %,$(DIR_DL)/%,$(objects)) :
> +	@$(LOAD)
> +
> +$(subst %,%_MD5,$(objects)) :
> +	@$(MD5)
> +
> +####################################################################
> ###########
> +# Installation Details
> +####################################################################
> ###########
> +
> +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
> +	@$(PREBUILD)
> +	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf
> $(DIR_DL)/$(DL_FILE)
> +
> +	cd $(DIR_APP) && sed -i "/seems to be moved/s/^/#/"
> build/ltmain.sh

What is this supposed to do? Please add a comment.

> +
> +	cd $(DIR_APP) && ./configure --prefix=/usr \
> +				--disable-static --with-
> installbuilddir=/usr/share/apr-1/build
> +	cd $(DIR_APP) && make $(MAKETUNING)
> +	cd $(DIR_APP) && make install
> +
> +	@rm -rf $(DIR_APP)
> +	@$(POSTBUILD)
> diff --git a/lfs/aprutil b/lfs/aprutil
> new file mode 100644
> index 000000000..cf8f4a8a9
> --- /dev/null
> +++ b/lfs/aprutil
> @@ -0,0 +1,84 @@
> +####################################################################
> ###########
> +#                                                                   
>           #
> +# IPFire.org - A linux based
> firewall                                         #
> +# Copyright (C) 2007-2014   IPFire Team  <info@ipfire.org>          
>           #
> +#                                                                   
>           #
> +# This program is free software: you can redistribute it and/or
> modify        #
> +# it under the terms of the GNU General Public License as published
> by        #
> +# the Free Software Foundation, either version 3 of the License,
> or           #
> +# (at your option) any later
> version.                                         #
> +#                                                                   
>           #
> +# This program is distributed in the hope that it will be
> useful,             #
> +# but WITHOUT ANY WARRANTY; without even the implied warranty
> of              #
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
> the               #
> +# GNU General Public License for more
> details.                                #
> +#                                                                   
>           #
> +# You should have received a copy of the GNU General Public
> License           #
> +# along with this program.  If not, see <http://www.gnu.org/licenses
> />.       #
> +#                                                                   
>           #
> +####################################################################
> ###########
> +
> +
> +####################################################################
> ###########
> +# Definitions
> +####################################################################
> ###########
> +
> +include Config
> +
> +VER        = 1.6.0
> +
> +THISAPP    = apr-util-$(VER)
> +DL_FILE    = $(THISAPP).tar.bz2
> +DL_FROM    = http://archive.apache.org/dist/apr
> +DIR_APP    = $(DIR_SRC)/$(THISAPP)
> +
> +TARGET     = $(DIR_INFO)/$(THISAPP)
> +
> +DEPS       = "apr"
> +
> +####################################################################
> ###########
> +# Top-level Rules
> +####################################################################
> ###########
> +
> +objects = $(DL_FILE)
> +
> +$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
> +
> +$(DL_FILE)_MD5 = 069a9a980776acab05212c5f37ef8368
> +
> +install : $(TARGET)
> +
> +check : $(patsubst %,$(DIR_CHK)/%,$(objects))
> +
> +download :$(patsubst %,$(DIR_DL)/%,$(objects))
> +
> +md5 : $(subst %,%_MD5,$(objects))
> +
> +####################################################################
> ###########
> +# Downloading, checking, md5sum
> +####################################################################
> ###########
> +
> +$(patsubst %,$(DIR_CHK)/%,$(objects)) :
> +	@$(CHECK)
> +
> +$(patsubst %,$(DIR_DL)/%,$(objects)) :
> +	@$(LOAD)
> +
> +$(subst %,%_MD5,$(objects)) :
> +	@$(MD5)
> +
> +####################################################################
> ###########
> +# Installation Details
> +####################################################################
> ###########
> +
> +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
> +	@$(PREBUILD)
> +	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf
> $(DIR_DL)/$(DL_FILE)
> +
> +	cd $(DIR_APP) && ./configure --prefix=/usr \
> +				--with-apr=/usr --with-gdbm=/usr --
> with-openssl=/usr --with-crypto
> +	cd $(DIR_APP) && make $(MAKETUNING)
> +	cd $(DIR_APP) && make install
> +
> +	@rm -rf $(DIR_APP)
> +	@$(POSTBUILD)
> diff --git a/make.sh b/make.sh
> index 663f23fbb..dd57c914e 100755
> --- a/make.sh
> +++ b/make.sh
> @@ -358,6 +358,7 @@ buildbase() {
>      lfsmake2 bzip2
>      lfsmake2 pcre
>      lfsmake2 pcre-compat
> +    lfsmake2 apr
>      lfsmake2 bash
>      lfsmake2 diffutils
>      lfsmake2 e2fsprogs

Does apr need to be built this early in the processs? Why can we not
have it in the IPFire stage? Is anything suddenly depending on it?

> @@ -497,6 +498,7 @@ buildipfire() {
>    lfsmake2 libevent2
>    lfsmake2 libevent2-compat
>    lfsmake2 expat
> +  lfsmake2 aprutil
>    lfsmake2 unbound
>    lfsmake2 gnutls
>    lfsmake2 bind

Best,
-Michael