Apache and APR Updates 1. Introduction 1.1. Project/Component Working Name: Integrate APR 1.3.3, APR-util 1.3.4 and Update Apache HTTP Server to 2.2.9 within OpenSolaris 1.2. Name of Document Author/Supplier: Author: Seema Alevoor (seema.alevoor@sun.com) 1.3. Date of This Document: 21 August, 2008 2. Summary 2.1. Integrate APR 1.3.3 and APR-util 1.3.4 This project delivers Apache Portable Runtime (APR) 1.3.3 [1] and Apache Portable Runtime Utility (APR-util) 1.3.4 [1]. According to the official announcement of APR [5], "The Apache Software Foundation and the Apache Portable Runtime Project are proud to announce the General Availability of version 1.3.3 of the APR Apache Portable Runtime library. The Project further announces the General Availability of APR-util version 1.3.4, the companion Apache Portable Utility library. This version of APR is principally a bug fix release, including fixes for specific platforms' configuration, feature detection, and run time behavior. Most developers and users are encouraged to adopt the latest APR 1.x version to ensure the most comprehensive support and access to the latest features and enhancements.¨ [2] APR 1.3.3 ChangeLog is at: http://www.apache.org/dist/apr/CHANGES-APR-1.3 APR-util 1.3.4 ChangeLog is at: http://www.apache.org/dist/apr/CHANGES-APR-UTIL-1.3 This case seeks Minor Release Binding. 2.2. Update Apache HTTP Server to 2.2.9 PSARC/2008/118 "Update Apache to 2.2.8" approved the integration of Apache 2.2.8. Now that Apache has released the next stable version, 2.2.9, this project updates the integrated Apache version to 2.2.9. [3][4] This version includes a number of general bug fixes and security fixes. This release also updates APR and APR-util to 1.3.0. But this project will use the newly integrated, updated version of APR and APR-util [2.1] There are no other changes nor any other interface changes introduced by this case. Apache 2.2.9 ChangeLog can be found here: http://www.apache.org/dist/httpd/CHANGES_2.2.9 2.3. Previous Relevant ARC Case PSARC 2008/118 Update Apache to 2.2.8 PSARC 2007/586 Including Apache 2.2.6 with Solaris 3. Technical description 3.1. Decoupling APR, APR-util from Apache HTTP Server The Apache Portable Runtime is a set of libraries providing many of the basic interfaces between the Apache Web Server and the operating system. It can be used to make a program truly portable across platforms. APR core library supports a range of platform-independent functionality like Memory allocation and Memory pool functionality, atomic operations, dynamic library handling, file I/O. APR-util library contains additional utility interfaces for APR including support for XML, LDAP, database interfaces, URI parsing and more. Previously integrated Apache 2.2.x (current version is 2.2.8), bundled a specific version of APR, APR-util components and these components were built as part of Apache 2.2.x build and the binaries were included in SUNWapch22u package. Because of this, other components (e.g., Subversion) which required only APR, APR-util libraries, had to depend on SUNWapch22u package or in other words had to depend on Apache 2.2.x server installation. This caused unnecessary overhead on the installation of the depended components. To fix the above issue, this project will deliver APR and APR-util as two separate components and Apache HTTP Server 2.2.x (as of today, the latest version is 2.2.9) will depend on them, both at build-time and runtime. This project will deliver both 32-bit and 64-bit APR, APR-util libraries. 3.2. Versioning In order to accommodate the development model of the Apache Portable Runtime community and to provide a mechanism for updating to future minor releases of APR, APR-util (such as 1.4) in the lifetime of a given minor release of OpenSolaris, this project will deliver a file layout where the string "[version]" is expanded to "MAJOR.MINOR" (e.g. /usr/apr/1.3/* - refer to Appendix 1 and 2 for a complete file listing). 3.3. Symbolic Links to commonly used utilities The common utilities like apxs, logrotate, ab etc., are installed in /usr/apache2/[version]/bin (32-bit) and /usr/apache2/[version]/bin/${ISAINFO} (64-bit) directories. To enable easy execution of these utilities, this project will provide the symbolic links from /usr/bin/[utility] to /usr/apache2/[version]/bin/[utility] and /usr/bin/${ISAINFO}/[utility] to /usr/apache2/[version]/bin/${ISAINFO}/[utility] The complete list of utilities with the symbolic links is provided in Appendix 3. 3.4. APR, APR-util Directory Naming and Structure The APR and APR-util distribution will install objects under two distinct directory hierarchies: /usr/apr/[version], /usr/apr-util/[version]. /usr/apr/ [version]/bin/ [version]/bin/${ISAINFO}/ [version]/build/ [version]/build/${ISAINFO}/ [version]/include/ [version]/lib/ [version]/lib/${ISAINFO}/ [version]/manual/ /usr/apr-util/ [version]/bin/ [version]/bin/${ISAINFO}/ [version]/include/ [version]/lib/ [version]/lib/${ISAINFO}/ [version]/manual/ The detailed directory and file layout for APR and APR-util is provided in Appendix 1 and 2, respectively. 3.5. Packaging and Delivery The project allows for the coexistence of multiple versions of APR 1.MINOR and APR-util 1.MINOR by keeping each installation under a version-specific subdirectory. APR-util 1.3.x supports building database (DBD) drivers as dynamic shared objects (DSOs), by default. This project will leverage this feature and provide supported DBD drivers in a separate package to give clients (dependent components) a choice of the available DBD drivers. It also provides LDAP support and this is also built as a DSO. This project will include this in a separate package as this is an optional feature and not all clients require it. The following package naming convention will be followed: SUNWapr13lib Apache Portable Runtime (APR) 1.3 shared libraries SUNWapr13dev Apache Portable Runtime (APR) 1.3 development header files and libraries SUNWapr13doc Apache Portable Runtime (APR) 1.3 documentation SUNWapu13lib Apache Portable Runtime Utility (APR-util) 1.3 shared libraries SUNWapu13dev Apache Portable Runtime Utility (APR-util) 1.3 development header files and libraries SUNWapu13doc Apache Portable Runtime Utility (APR-util) 1.3 documentation SUNWapu13dbd-mysql Apache Portable Runtime Utility (APR-util) 1.3 DB Driver for MySQL 5.0 SUNWapu13dbd-pgsql Apache Portable Runtime Utility (APR-util) 1.3 DB Driver for PostgresSQL 8.3 SUNWapu13dbd-sqlite Apache Portable Runtime Utility (APR-util) 1.3 DB Driver for SQLite 3.5 SUNWapu13-ldap Apache Portable Runtime Utility (APR-util) 1.3 LDAP´s stub 4. Internationalization. APR-util provides iconv compatible I18N support via libaprutil-1.so. 5. Documentation APR, APR-util 1.3.x does not provide any documentation. Source make target supports doc generation using Doxygen tool. This project will use this tool to generate the docs in html format (English language) and will deliver them in a separate package. 6. Interfaces 6.1. Interface Stability Apache Portable Runtime interfaces have been available for a long time in the open source community and were stable and compatible between the minor release family. But, since we do not fully own and control the source, the compatibility cannot be guaranteed. Hence, we will classify APR, APR-util Interfaces as Uncommitted. 6.2. Imported Interfaces APR, APR-util imports interfaces from the Standard C Library, the Network Services Layer Library and the Pthreads Library. In addition, the following Interfaces are imported: NAME STABILITY NOTES OpenSSL External/Volatile PSARC/2003/500 Perl5 Standard PSARC/1999/192 LibEXPAT Evolving LSARC/2004/324 LDAP Evolving PSARC/1997/276 et seq. GSSAPI auth for Apache External PSARC/2004/278 Zip Compression Library Committed PSARC/2006/537 SQLite3 Uncommitted PSARC/2008/120 PostgresSQL 8.3 Uncommitted LSARC/2006/655 MySQL 5.0 Committed LSARC/2007/608 6.3. Exported Interfaces NAME STABILITY NOTES /usr/apr/[version]/ bin/ Uncommitted Script location bin/${ISAINFO}/ Uncommitted 64-bit Script location build/ Uncommitted location of the scripts to build modules, libtool build/${ISAINFO}/ Uncommitted location of the 64-bit specific scripts to build modules, libtool include/ Uncommitted Include directory lib/ lib/${ISAINFO}/ apr.exp Uncommitted Linker Map File libapr-1.so.0.3.3 Volatile Shared Library libapr-1.so -> libapr-1.so.0.3.3 Volatile Symbolic Link libapr-1.so.0 -> libapr-1.so.0.3.3 Uncommitted Symbolic Link manual/ Uncommitted HTML format Manual Pages /usr/apr-util/[version]/ bin/ Uncommitted Script location bin/${ISAINFO}/ Uncommitted 64-bit Script location include/ Uncommitted Include directory lib/ lib/${ISAINFO}/ aprutil.exp Uncommitted Linker Map File libaprutil-1.so.0.3.4 Volatile Shared Library libaprutil-1.so -> libaprutil-1.so.0.3.4 Volatile Symbolic Link libaprutil-1.so.0 -> libaprutil-1.so.0.3.4 Uncommitted Symbolic Link manual/ Uncommitted HTML format Manual Pages 7. References [1] http://apr.apache.org/ [2] http://apr.apache.org/download.cgi [3] http://www.apache.org/ [4] http://httpd.apache.org/download.cgi [5] http://www.apache.org/dist/apr/Announcement1.3.html [6] http://sac.sfbay/PSARC/2008/118/ [7] http://sac.sfbay/PSARC/2007/586/ [8] http://apr.apache.org/docs/apr/1.3/ [9] http://apr.apache.org/docs/apr-util/1.3/ ------------------------------------------------------------------------------ Appendix 1: APR 1.3 Integration Directory and File Structure. /usr/apr/1.3/ bin/ apr-1-config bin/${ISAINFO}/ apr-1-config build/ apr_rules.mk libtool ltlib.mk make_exports.awk make_var_export.awk mkdir.sh build/${ISAINFO}/ apr_rules.mk libtool ltlib.mk make_exports.awk make_var_export.awk mkdir.sh include/ apr.h apr_allocator.h apr_atomic.h apr_dso.h apr_env.h apr_errno.h apr_file_info.h apr_file_io.h apr_fnmatch.h apr_general.h apr_getopt.h apr_global_mutex.h apr_hash.h apr_inherit.h apr_lib.h apr_mmap.h apr_network_io.h apr_poll.h apr_pools.h apr_portable.h apr_proc_mutex.h apr_random.h apr_ring.h apr_shm.h apr_signal.h apr_strings.h apr_support.h apr_tables.h apr_thread_cond.h apr_thread_mutex.h apr_thread_proc.h apr_thread_rwlock.h apr_time.h apr_user.h apr_version.h apr_want.h lib/ apr.exp libapr-1.a libapr-1.so -> libapr-1.so.0.3.3* libapr-1.so.0 -> libapr-1.so.0.3.3* libapr-1.so.0.3.3 pkgconfig/ apr-1.pc lib/${ISAINFO}/ apr.exp libapr-1.a libapr-1.so -> libapr-1.so.0.3.3* libapr-1.so.0 -> libapr-1.so.0.3.3* libapr-1.so.0.3.3 pkgconfig/ apr-1.pc manual/ annotated.html apr_8h.html apr_8h-source.html apr__allocator_8h.html apr__allocator_8h-source.html apr__atomic_8h.html apr__atomic_8h-source.html apr__dso_8h.html apr__dso_8h-source.html apr__env_8h.html apr__env_8h-source.html apr__errno_8h.html apr__errno_8h-source.html apr__file__info_8h.html apr__file__info_8h-source.html apr__file__io_8h.html apr__file__io_8h-source.html apr__fnmatch_8h.html apr__fnmatch_8h-source.html apr__general_8h.html apr__general_8h-source.html apr__getopt_8h.html apr__getopt_8h-source.html apr__global__mutex_8h.html apr__global__mutex_8h-source.html apr__hash_8h.html apr__hash_8h-source.html apr__inherit_8h.html apr__inherit_8h-source.html apr__lib_8h.html apr__lib_8h-source.html apr__mmap_8h.html apr__mmap_8h-source.html apr__network__io_8h.html apr__network__io_8h-source.html apr__poll_8h.html apr__poll_8h-source.html apr__pools_8h.html apr__pools_8h-source.html apr__portable_8h.html apr__portable_8h-source.html apr__proc__mutex_8h.html apr__proc__mutex_8h-source.html apr__random_8h.html apr__random_8h-source.html apr__ring_8h.html apr__ring_8h-source.html apr__shm_8h.html apr__shm_8h-source.html apr__signal_8h.html apr__signal_8h-source.html apr__strings_8h.html apr__strings_8h-source.html apr__support_8h.html apr__support_8h-source.html apr__tables_8h.html apr__tables_8h-source.html apr__thread__cond_8h.html apr__thread__cond_8h-source.html apr__thread__mutex_8h.html apr__thread__mutex_8h-source.html apr__thread__proc_8h.html apr__thread__proc_8h-source.html apr__thread__rwlock_8h.html apr__thread__rwlock_8h-source.html apr__time_8h.html apr__time_8h-source.html apr__user_8h.html apr__user_8h-source.html apr__version_8h.html apr__version_8h-source.html apr__want_8h.html apr__want_8h-source.html bug.html deprecated.html doxygen.css doxygen.png examples.html files.html functions_func.html functions.html functions_vars.html globals_0x66.html globals_0x68.html globals_0x74.html globals_defs_0x66.html globals_defs_0x68.html globals_defs_0x74.html globals_defs.html globals_enum.html globals_eval.html globals_func.html globals.html globals_type.html globals_vars.html group__apr__allocator.html group__apr__atomic.html group__apr__ctype.html group__apr__dir.html group__apr__dso.html group__apr__env.html group__apr__errno.html group___a_p_r___error.html group___a_p_r___e_r_r_o_r__map.html group__apr__file__attrs__set__flags.html group__apr__file__info.html group__apr__file__io.html group__apr__file__lock__types.html group__apr__file__open__flags.html group__apr__filepath.html group__apr__file__permissions.html group__apr__file__seek__flags.html group__apr__file__stat.html group__apr__file__writev.html group__apr__fnmatch.html group__apr__general.html group__apr__getopt.html group___a_p_r___global_mutex.html group__apr__hash.html group___a_p_r.html group__apr__lib.html group__apr__library.html group__apr__mcast.html group__apr__mmap.html group__apr__network__io.html group___a_p_r___o_c.html group__apr__os__dso.html group__apr__os__thread.html group__apr__platform.html group__apr__poll.html group__apr__pools.html group__apr__portabile.html group__apr__proc__mutex.html group__apr__random.html group__apr__ring.html group__apr__shm.html group__apr__signal.html group__apr__sockopt.html group___a_p_r___s_t_a_t_u_s___i_s.html group__apr__strings.html group___a_p_r___strings___snprintf.html group__apr__support.html group__apr__tables.html group__apr__thread__cond.html group__apr__thread__mutex.html group__apr__thread__proc.html group__apr__thread__rwlock.html group__apr__time.html group__apr__user.html group___i_p___proto.html group___pool_cleanup.html group___pool_debug.html include_2apr__hash_8h-example.html index.html modules.html pages.html sha2_8h-source.html structapr__array__header__t.html structapr__finfo__t.html structapr__getopt__option__t.html structapr__getopt__t.html structapr__hdtr__t.html structapr__memnode__t.html structapr__mmap__t.html structapr__os__proc__mutex__t.html structapr__os__sock__info__t.html structapr__pollfd__t.html structapr__proc__t.html structapr__sockaddr__t.html structapr__table__entry__t.html structapr__time__exp__t.html structapr__version__t.html structapr__vformatter__buff__t.html tab_b.gif tab_l.gif tab_r.gif tabs.css unionapr__descriptor.html ------------------------------------------------------------------------------ Appendix 2: APR-util 1.3 Integration Directory and File Structure. /usr/apr-util/1.3/ bin/ apu-1-config bin/${ISAINFO}/ apu-1-config include/ apr_anylock.h apr_base64.h apr_buckets.h apr_date.h apr_dbd.h apr_dbm.h apr_hooks.h apr_ldap.h apr_ldap_init.h apr_ldap_option.h apr_ldap_rebind.h apr_ldap_url.h apr_md4.h apr_md5.h apr_memcache.h apr_optional.h apr_optional_hooks.h apr_queue.h apr_reslist.h apr_rmm.h apr_sdbm.h apr_sha1.h apr_strmatch.h apr_thread_pool.h apr_uri.h apr_uuid.h apr_xlate.h apr_xml.h apu.h apu_version.h apu_want.h lib/ aprutil.exp libaprutil-1.a libaprutil-1.so -> libaprutil-1.so.0.3.4* libaprutil-1.so.0 -> libaprutil-1.so.0.3.4* libaprutil-1.so.0.3.4 apr-util-1/ apr_dbd_mysql-1.so apr_dbd_mysql.so -> apr_dbd_mysql-1.so apr_dbd_pgsql-1.so apr_dbd_pgsql.so -> apr_dbd_pgsql-1.so apr_dbd_sqlite3-1.so apr_dbd_sqlite3.so -> apr_dbd_sqlite3-1.so apr_ldap-1.so apr_ldap.so -> apr_ldap-1.so pkgconfig/ apr-util-1.pc lib/${ISAINFO}/ aprutil.exp libaprutil-1.a libaprutil-1.so -> libaprutil-1.so.0.3.4* libaprutil-1.so.0 -> libaprutil-1.so.0.3.4* libaprutil-1.so.0.3.4 apr-util-1/ apr_dbd_mysql-1.so apr_dbd_mysql.so -> apr_dbd_mysql-1.so apr_dbd_pgsql-1.so apr_dbd_pgsql.so -> apr_dbd_pgsql-1.so apr_dbd_sqlite3-1.so apr_dbd_sqlite3.so -> apr_dbd_sqlite3-1.so apr_ldap-1.so apr_ldap.so -> apr_ldap-1.so pkgconfig/ apr-util-1.pc manual/ abts_8h-source.html abts__tests_8h-source.html acconfig_8h-source.html annotated.html apr__anylock_8h.html apr__anylock_8h-source.html apr__base64_8h.html apr__base64_8h-source.html apr__buckets_8h.html apr__buckets_8h-source.html apr__date_8h.html apr__date_8h-source.html apr__dbd_8h.html apr__dbd_8h-source.html apr__dbd__internal_8h-source.html apr__dbd__odbc__v2_8h-source.html apr__dbm_8h.html apr__dbm_8h-source.html apr__dbm__private_8h-source.html apr__hooks_8h.html apr__hooks_8h-source.html apr__ldap_8h.html apr__ldap_8h-source.html apr__ldap__init_8h.html apr__ldap__init_8h-source.html apr__ldap__option_8h.html apr__ldap__option_8h-source.html apr__ldap__rebind_8h-source.html apr__ldap__url_8h.html apr__ldap__url_8h-source.html apr__md4_8h.html apr__md4_8h-source.html apr__md5_8h.html apr__md5_8h-source.html apr__memcache_8h.html apr__memcache_8h-source.html apr__optional_8h.html apr__optional_8h-source.html apr__optional__hooks_8h.html apr__optional__hooks_8h-source.html apr__queue_8h.html apr__queue_8h-source.html apr__reslist_8h.html apr__reslist_8h-source.html apr__rmm_8h.html apr__rmm_8h-source.html apr__sdbm_8h.html apr__sdbm_8h-source.html apr__sha1_8h.html apr__sha1_8h-source.html apr__strmatch_8h.html apr__strmatch_8h-source.html apr__thread__pool_8h.html apr__thread__pool_8h-source.html apr__uri_8h.html apr__uri_8h-source.html apr__uuid_8h.html apr__uuid_8h-source.html apr__xlate_8h.html apr__xlate_8h-source.html apr__xml_8h.html apr__xml_8h-source.html apu_8h-source.html apu__config_8h-source.html apu__internal_8h-source.html apu__select__dbm_8h-source.html apu__version_8h.html apu__version_8h-source.html apu__want_8h.html apu__want_8h-source.html ascii_8h-source.html asciitab_8h-source.html doxygen.css doxygen.png files.html functions_enum.html functions_eval.html functions_func.html functions.html functions_vars.html globals_defs.html globals_enum.html globals_eval.html globals_func.html globals.html globals_type.html globals_vars.html group___a_p_r___m_d5.html group___a_p_r___util___base64.html group___a_p_r___util___bucket___brigades.html group___a_p_r___util___date.html group___a_p_r___util___d_b_d.html group___a_p_r___util___d_b_m.html group___a_p_r___util___d_b_m___s_d_b_m.html group___a_p_r___util___f_i_f_o.html group___a_p_r___util___hook.html group___a_p_r___util.html group___a_p_r___util___l_d_a_p.html group___a_p_r___util___m_c.html group___a_p_r___util___m_d4.html group___a_p_r___util___o_p_t___h_o_o_k.html group___a_p_r___util___opt.html group___a_p_r___util___r_l.html group___a_p_r___util___r_m_m.html group___a_p_r___util___str_match.html group___a_p_r___util___t_p.html group___a_p_r___util___u_r_i.html group___a_p_r___util___x_m_l.html group___a_p_r___u_u_i_d.html group___a_p_r___x_l_a_t_e.html iasciitab_8h-source.html index.html latin1tab_8h-source.html map__osd__ebcdic__df04__1_8h-source.html modules.html namespace_apache.html namespaces.html nametab_8h-source.html osd__ebcdic__df04__1_8h-source.html pages.html sdbm__pair_8h-source.html sdbm__private_8h-source.html sdbm__tune_8h-source.html structapr__anylock__t.html structapr__bucket__brigade.html structapr__bucket__file.html structapr__bucket__heap.html structapr__bucket.html structapr__bucket__mmap.html structapr__bucket__pool.html structapr__bucket__refcount.html structapr__bucket__type__t.html structapr__datum__t.html structapr__dbm__t.html structapr__dbm__type__t.html structapr__ldap__err__t.html structapr__md4__ctx__t.html structapr__md5__ctx__t.html structapr__memcache__t.html structapr__memcache__value__t.html structapr__sdbm__datum__t.html structapr__sha1__ctx__t.html structapr__strmatch__pattern.html structapr__text__header.html structapr__text.html structapr__uri__t.html structapr__uuid__t.html structapr__xml__attr.html structapr__xml__doc.html structapr__xml__elem.html tab_b.gif tab_l.gif tab_r.gif tabs.css test__apu_8h-source.html testutil_8h-source.html todo.html unionapr__anylock__t_1_1apr__anylock__u__t.html unionapr__bucket__structs.html utf8tab_8h-source.html winconfig_8h-source.html xmlrole_8h-source.html xmltok_8h-source.html xmltok__impl_8h-source.html ------------------------------------------------------------------------------ Appendix 3: Symbolic links to APR and APR-util and Apache 2.2 utilities /usr/bin/ ab -> ../apache2/2.2/bin/ab apxs -> ../apache2/2.2/bin/apxs dbmmanage -> ../apache2/2.2/bin/dbmmanage htcacheclean -> ../apache2/2.2/bin/htcacheclean htdbm -> ../apache2/2.2/bin/htdbm htdigest -> ../apache2/2.2/bin/htdigest htpasswd -> ../apache2/2.2/bin/htpasswd httxt2dbm -> ../apache2/2.2/bin/httxt2dbm logresolve -> ../apache2/2.2/bin/logresolve mp2bug -> ../apache2/2.2/bin/mp2bug rotatelogs -> ../apache2/2.2/bin/rotatelogs apr-1-config -> ../apr/1.3/bin/apr-1-config apu-1-config -> ../apr-util/1.3/bin/apu-1-config /usr/bin/amd64/ ab -> ../../apache2/2.2/bin/amd64/ab apxs -> ../../apache2/2.2/bin/amd64/apxs dbmmanage -> ../../apache2/2.2/bin/amd64/dbmmanage htcacheclean -> ../../apache2/2.2/bin/amd64/htcacheclean htdbm -> ../../apache2/2.2/bin/amd64/htdbm htdigest -> ../../apache2/2.2/bin/amd64/htdigest htpasswd -> ../../apache2/2.2/bin/amd64/htpasswd httxt2dbm -> ../../apache2/2.2/bin/amd64/httxt2dbm logresolve -> ../../apache2/2.2/bin/amd64/logresolve rotatelogs -> ../../apache2/2.2/bin/amd64/rotatelogs apr-1-config -> ../apr/1.3/bin/amd64/apr-1-config apu-1-config -> ../apr-util/1.3/bin/amd64/apu-1-config