1
0
Fork 0
mirror of https://github.com/apache/apr.git synced 2026-09-19 20:51:09 +00:00
Mirror of Apache Portable Runtime
apr
  • C 93.9%
  • M4 3%
  • Python 0.8%
  • C++ 0.7%
  • Shell 0.5%
  • Other 1.1%
Find a file
Eric Covener c5db070f08 use sub-pools for memcache tests
so they can be cleaned up while sigpipe is still
ignored (quit on closed socket?)


git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1936970 13f79535-47bb-0310-9956-ffa450edef68
2026-08-07 14:16:46 +00:00
.github/workflows CI: Add concurrency group definitions. 2026-08-03 13:06:13 +00:00
atomic Remove support for Netware operating system. Netware EOL'ed in 2009. 2026-05-06 12:47:39 +00:00
buckets * buckets/apr_brigade.c 2025-05-17 14:39:49 +00:00
buffer apr_buffer: Advance buffer during apr_buffer_pstrncat(). 2024-08-30 15:07:05 +00:00
build * build/gen-build.py: codecs.open() is deprecated since Python 3.14. 2026-06-19 07:41:21 +00:00
crypto use timing safe comparison 2026-08-03 12:07:22 +00:00
dbd * We need to return const char *. No need to lose const'ness 2026-08-06 13:34:36 +00:00
dbm Remove Visual C++ 5.0 (.dsw/.dsp) and NMake files. 2026-05-16 17:47:46 +00:00
docs Fix some warnings from doxygen. 2025-08-08 16:49:52 +00:00
dso Remove support for BeOS: BeOS was released in 1995 and the latest release was 2026-05-19 12:19:46 +00:00
encoding apr_escape_json(): Don't truncate escaped \uXXXX characters. 2024-03-18 15:31:41 +00:00
file_io Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
helpers Limit the renames performed in apr_rename.pl to the newest ones only. 2002-11-30 16:34:41 +00:00
hooks Cleanup #ifdef NETWARE from source code. Support for Netware was removed in 2026-05-07 13:38:54 +00:00
include Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
jose apr_jose: Allow a user specified context to be passed with a signature or 2023-05-22 17:07:53 +00:00
json * json/apr_json.c 2025-12-16 13:18:23 +00:00
ldap apr_ldap: Reset apr_ldap_bind_interact_t each time in case the 2025-07-04 15:15:46 +00:00
locks Remove support for BeOS: BeOS was released in 1995 and the latest release was 2026-05-19 12:19:46 +00:00
memcache fix memcache version processing 2026-08-07 13:17:10 +00:00
memory/unix Register unmanaged pools with Valgrind, otherwise it complains at 2026-06-15 06:21:23 +00:00
misc Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
mmap Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
network_io Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
passwd Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
poll Cleanup #ifdef NETWARE from source code. Support for Netware was removed in 2026-05-07 13:38:54 +00:00
random/unix Remove trailing whitespaces in *.c. 2022-11-20 07:14:38 +00:00
redis apr_redis error checking 2026-08-03 12:25:18 +00:00
shmem Remove support for BeOS: BeOS was released in 1995 and the latest release was 2026-05-19 12:19:46 +00:00
strings * strings/apr_fnmatch.c (apr_match_glob): Avoid GCC warnings on Fedora 2026-08-03 16:13:10 +00:00
strmatch Convert various APU_DECLARE into APR_DECLARE. 2009-07-16 04:52:56 +00:00
support Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
tables apr_table: Use APR_TABLE_POOL_DEBUG rather than general APR_POOL_DEBUG 2024-06-26 15:48:53 +00:00
test use sub-pools for memcache tests 2026-08-07 14:16:46 +00:00
threadproc Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
time Remove BeOS related code from generic (unix) sources. 2026-05-20 12:16:17 +00:00
tools apr_escape: Add apr_escape_json() and apr_pescape_json(). 2023-12-20 22:46:22 +00:00
uri Fix GCC warnings with strchr()/strrchr() on Fedora 44: 2026-08-03 16:18:06 +00:00
user Remove support for Netware operating system. Netware EOL'ed in 2009. 2026-05-06 12:47:39 +00:00
util-misc The apu_dso_load() function accepts a NULL dlhandleptr. Avoid 2025-06-20 11:49:17 +00:00
xlate avoid NULL inbytesleft directly to system iconv 2026-08-03 14:46:36 +00:00
xml limit XML processing depth 2026-08-03 12:12:58 +00:00
.editorconfig .editorconfig: Configure guidelines to 78 characters. 2024-09-01 11:41:57 +00:00
.gitignore Add .gitignore, generated with: 2023-12-19 09:01:50 +00:00
apr-config.in Fix crosscompiling detection in apr-1-config 2023-03-10 10:54:03 +00:00
apr.pc.in fix the apr.pc.in file to include the cppflags in the Cflags varaible. 2005-04-07 00:27:03 +00:00
build.conf Remove support for generating Visual C++ 6.0 and NMake files. 2026-05-16 16:52:13 +00:00
buildconf * build/buildcheck.sh, buildconf: Detect and run under Python 3 or 2, 2018-06-27 11:41:30 +00:00
CHANGES Remove support for BeOS: BeOS was released in 1995 and the latest release was 2026-05-19 12:19:46 +00:00
CMakeLists.txt limit XML processing depth 2026-08-03 12:12:58 +00:00
config.layout Remove support for BeOS: BeOS was released in 1995 and the latest release was 2026-05-19 12:19:46 +00:00
configure.in Remove BeOS support from autoconf/configure scripts. 2026-05-19 13:15:22 +00:00
emacs-mode Help idiots like me who use emacs. 2003-11-06 00:26:06 +00:00
libapr.rc Remove more Win9x support (trunk only). 2014-01-18 20:15:12 +00:00
LICENSE Seems we forgot to merge apr-util/LICENSE while folding apr-util into apr 2016-02-25 15:08:43 +00:00
Makefile.in apr_ldap: Add the new APR LDAP API. 2024-04-18 07:32:13 +00:00
NOTICE Happy New Year 2026 2026-01-04 15:00:27 +00:00
README * README: Document that CMake is only way to build APR on Windows. 2026-05-16 16:07:52 +00:00
README.cmake * README.cmake: Update to current state. 2024-09-16 11:06:46 +00:00
README.FREETDS Add missing svn:eol-style = native flags. 2018-06-11 22:20:14 +00:00
SConscript Revert testcstr.c for the time being while tests are structured 2016-01-27 16:46:00 +00:00
SConstruct SCons: Remove unneeded file copy. 2009-03-24 14:38:24 +00:00
STATUS * STATUS 2026-06-23 08:08:53 +00:00

Apache Portable Runtime Library (APR)
=====================================

   The Apache Portable Runtime Library provides a predictable and
   consistent interface to underlying platform-specific
   implementations, with an API to which software developers may code
   and be assured of predictable if not identical behavior regardless
   of the platform on which their software is built, relieving them of
   the need to code special-case conditions to work around or take
   advantage of platform-specific deficiencies or features.

   APR and its companion libraries are implemented entirely in C
   and provide a common programming interface across a wide variety
   of operating system platforms without sacrificing performance.
   Currently supported platforms include:

     UNIX variants
     Windows
     Mac OS X
     OS/2

   To give a brief overview, the primary core
   subsystems of APR 1.3 include the following:

     Atomic operations
     Dynamic Shared Object loading
     File I/O
     Locks (mutexes, condition variables, etc)
     Memory management (high performance allocators)
     Memory-mapped files
     Multicast Sockets
     Network I/O
     Shared memory
     Thread and Process management
     Various data structures (tables, hashes, priority queues, etc)

   APR 2.0 also provides a number of utility functions and library
   compatibility interfaces.  These were formerly part of APR-util,
   a seperate utility library in version 1 releases.  These include;

     Hashing and UUID services
     Multiple SQL DBD client interfaces
     Multiple flat-database DBM client interfaces
     Typesafe function Hooks abstraction
     MemCache interface
     Date parsing rourtines
     Resource Lists
     Thread Pools
     Queues
     Relocatable Memory Management functions
     String filename-style pattern matching
     URI Parsing
     Charset translation (iconv based)
     XML parsing (expat based)

   For a more complete list, please refer to the following URLs:

     http://apr.apache.org/docs/apr/modules.html

   Users of APR 0.9 should be aware that migrating to the APR 1.x
   programming interfaces may require some adjustments; APR 1.x is
   neither source nor binary compatible with earlier APR 0.9 releases.
   Users of APR 1.x can expect consistent interfaces and binary backwards
   compatibility throughout the entire APR 1.x release cycle, as defined
   in our versioning rules:

     http://apr.apache.org/versioning.html

   APR is already used extensively by the Apache HTTP Server
   version 2 and the Subversion revision control system, to
   name but a few.  We list all known projects using APR at
   http://apr.apache.org/projects.html -- so please let us know
   if you find our libraries useful in your own projects!


Database Providers
==================
Interfaces for copy-left licensed MySQL and gdbm DBD drivers, and 
Berkeley DB DBM all ship as part of the distribution.  To avoid licensing
incompatibilities, these are not built by default.  To enable support, 
the corresponding use the --with-{provider} option, but be aware that 
these licenses may introduce licensing implications for your compiled code.
Similarly, the bindings for propritary drivers such as Oracle must also be 
explicitly enabled.

Whenever distributing apr-util in combination with database client 
drivers, always review the license requirements of all components.


Using a Subversion Checkout on Unix
===================================

If you are building APR from SVN, you need to perform a prerequisite
step.  You must have autoconf, libtool and python installed for this 
to work.  The prerequisite is simply;

  ./buildconf

If you are building APR from a distribution tarball, buildconf is
already run for you, and you do not need autoconf, libtool or python
installed or to run buildconf unless you have patched APR's buildconf 
inputs (such as configure.in, build.conf, virtually any file within 
the build/ tree, or you add or remove source files).

Remember when updating from svn that you must rerun ./buildconf again 
to effect any changes made to the build schema in your fresh update.


Configuring and Building APR on Unix
====================================

Simply;

   ./configure --prefix=/desired/path/of/apr
   make
   make test
   make install

Configure has additional options, ./configure --help will offer you
those choices.  You may also add CC=compiler CFLAGS="compiler flags"
etc. prior to the ./configure statement (on the same line).  Please
be warned, some flags must be passed as part of the CC command,
itself, in order for autoconf to make the right determinations. Eg.;

  CC="gcc -m64" ./configure --prefix=/desired/path/of/apr

will inform APR that you are compiling to a 64 bit CPU, and autoconf
must consider that when setting up all of APR's internal and external
type declarations.

For more verbose output from testall, you may wish to invoke testall
with the flag;

   cd test
   ./testall -v


Building APR RPM files on Linux
===============================

Run the following to create SRPMs:

rpmbuild -ts apr-<version>.tar.bz2
rpmbuild -ts apr-util-<version>.tar.bz2

Run the following to create RPMs (or build from the SRPMs):

rpmbuild -tb apr-<version>.tar.bz2
rpmbuild -tb apr-util-<version>.tar.bz2

Resolve dependencies as appropriate.


Configuring and Building APR on Windows
=======================================

APR uses CMake to build on Windows.

Using command line:
  cmake -B out/build -G Ninja -DCMAKE_INSTALL_PREFIX=out/install
  cmake --build out/build
  cmake --install out/build

Using Visual Studio:
  1. Make sure that "C++ CMake tools for Windows" component is installed.
  2. Use Visual Studio Open Folder command to open APR source code directory.
  3. Use Build command to build APR

Please refer to README.cmake for more information about CMake options.

Generating Test Coverage information with gcc
=============================================

If you want to generate test coverage data, use the following steps:

  ./buildconf
  CFLAGS="--coverage -fprofile-abs-path" LDFLAGS="--coverage" ./configure
  make
  cd test
  make
  ./testall
  cd ..
  make gcov


Cryptographic Software Notice
=============================
This distribution includes cryptographic software.  The country in 
which you currently reside may have restrictions on the import, 
possession, use, and/or re-export to another country, of 
encryption software.  BEFORE using any encryption software, please 
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to 
see if this is permitted.  See http://www.wassenaar.org/ for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity 
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms.  The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS 
Export Administration Regulations, Section 740.13) for both object 
code and source code.

The following provides more details on the included cryptographic
software:

  APR provides an abstract interface for symmetrical cryptographic
  functions that make use of a general-purpose encryption library,
  such as OpenSSL, NSS, or the operating system's platform-specific
  facilities. This interface is known as the apr_crypto interface,
  with implementation beneath the /crypto directory.