Package init

This commit is contained in:
dogsheng 2019-12-25 15:41:42 +08:00
parent 8eb86965cd
commit 14b7d9a270
10 changed files with 641 additions and 0 deletions

View File

@ -0,0 +1,103 @@
From 6df2b8ec805230db90677b54afe2d122cf0bd8c8 Mon Sep 17 00:00:00 2001
From: Rainer Jung <rjung@apache.org>
Date: Wed, 17 Jul 2019 11:43:58 +0000
Subject: [PATCH 05/10] Fix pool debugging output so that creation events are
always emitted before allocation events and subpool destruction events are
emitted on pool clear/destroy for proper accounting.
Backport of r1675967 from trunk resp. r1863202 from 1.7.x.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863211 13f79535-47bb-0310-9956-ffa450edef68
---
CHANGES | 4 ++++
memory/unix/apr_pools.c | 27 +++++++++++++--------------
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
index 17fadb42a..9fdd00129 100644
--- a/memory/unix/apr_pools.c
+++ b/memory/unix/apr_pools.c
@@ -1886,10 +1886,6 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
apr_pool_check_lifetime(pool);
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
- apr_pool_log_event(pool, "CLEAR", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
#if APR_HAS_THREADS
if (pool->parent != NULL)
mutex = pool->parent->mutex;
@@ -1905,6 +1901,10 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
pool_clear_debug(pool, file_line);
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+ apr_pool_log_event(pool, "CLEAR", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
#if APR_HAS_THREADS
/* If we had our own mutex, it will have been destroyed by
* the registered cleanups. Recreate the mutex. Unlock
@@ -1929,12 +1929,12 @@ static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
{
apr_pool_check_lifetime(pool);
+ pool_clear_debug(pool, file_line);
+
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
apr_pool_log_event(pool, "DESTROY", file_line, 1);
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
- pool_clear_debug(pool, file_line);
-
/* Remove the pool from the parents child list */
if (pool->parent) {
#if APR_HAS_THREADS
@@ -2043,6 +2043,9 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
pool->owner_proc = (apr_os_proc_t)getnlmhandle();
#endif /* defined(NETWARE) */
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+ apr_pool_log_event(pool, "CREATE", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
if (parent == NULL || parent->allocator != allocator) {
#if APR_HAS_THREADS
@@ -2072,10 +2075,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
*newpool = pool;
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
- apr_pool_log_event(pool, "CREATE", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
return APR_SUCCESS;
}
@@ -2129,6 +2128,10 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo
}
pool->allocator = pool_allocator;
+#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
+ apr_pool_log_event(pool, "CREATEU", file_line, 1);
+#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
+
if (pool->allocator != allocator) {
#if APR_HAS_THREADS
apr_status_t rv;
@@ -2151,10 +2154,6 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpoo
*newpool = pool;
-#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
- apr_pool_log_event(pool, "CREATEU", file_line, 1);
-#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */
-
return APR_SUCCESS;
}
--
2.19.1

View File

@ -0,0 +1,170 @@
This is an upstream patch from: http://svn.apache.org/viewvc?view=revision&revision=1834495
--- 1.7.x/buildconf 2018/06/27 11:41:30 1834494
+++ 1.7.x/buildconf 2018/06/27 11:49:33 1834495
@@ -112,8 +112,10 @@
# Remove autoconf 2.5x's cache directory
rm -rf autom4te*.cache
+PYTHON=${PYTHON-`build/PrintPath python3 python2 python`}
+
echo "buildconf: generating 'make' outputs ..."
-build/gen-build.py $verbose make
+${PYTHON} build/gen-build.py $verbose make
# Create RPM Spec file
if [ -f `which cut` ]; then
--- 1.7.x/build/gen-build.py 2018/06/27 11:41:30 1834494
+++ 1.7.x/build/gen-build.py 2018/06/27 11:49:33 1834495
@@ -10,7 +10,10 @@
import os
-import ConfigParser
+try:
+ import configparser
+except ImportError:
+ import ConfigParser as configparser
import getopt
import string
import glob
@@ -36,7 +39,7 @@
def main():
- parser = ConfigParser.ConfigParser()
+ parser = configparser.ConfigParser()
parser.read('build.conf')
if parser.has_option('options', 'dsp'):
@@ -62,7 +65,7 @@
# write out the platform-independent files
files = get_files(parser.get('options', 'paths'))
objects, dirs = write_objects(f, legal_deps, h_deps, files)
- f.write('\nOBJECTS_all = %s\n\n' % string.join(objects))
+ f.write('\nOBJECTS_all = %s\n\n' % " ".join(objects))
# for each platform and each subdirectory holding platform-specific files,
# write out their compilation rules, and an OBJECT_<subdir>_<plat> symbol.
@@ -86,11 +89,11 @@
inherit_files[-1] = inherit_files[-1][:-2] + '.lo'
# replace the \\'s with /'s
inherit_line = '/'.join(inherit_files)
- if not inherit_parent.has_key(inherit_files[0]):
+ if inherit_files[0] not in inherit_parent:
inherit_parent[inherit_files[0]] = []
inherit_parent[inherit_files[0]].append(inherit_line)
- for subdir in string.split(parser.get('options', 'platform_dirs')):
+ for subdir in parser.get('options', 'platform_dirs').split():
path = '%s/%s' % (subdir, platform)
if not os.path.exists(path):
# this subdir doesn't have a subdir for this platform, so we'll
@@ -106,7 +109,7 @@
files = get_files(path + '/*.c')
objects, _unused = write_objects(f, legal_deps, h_deps, files)
- if inherit_parent.has_key(subdir):
+ if subdir in inherit_parent:
objects = objects + inherit_parent[subdir]
symname = 'OBJECTS_%s_%s' % (subdir, platform)
@@ -114,7 +117,7 @@
objects.sort()
# and write the symbol for the whole group
- f.write('\n%s = %s\n\n' % (symname, string.join(objects)))
+ f.write('\n%s = %s\n\n' % (symname, " ".join(objects)))
# and include that symbol in the group
group.append('$(%s)' % symname)
@@ -122,18 +125,18 @@
group.sort()
# write out a symbol which contains the necessary files
- f.write('OBJECTS_%s = %s\n\n' % (platform, string.join(group)))
+ f.write('OBJECTS_%s = %s\n\n' % (platform, " ".join(group)))
- f.write('HEADERS = $(top_srcdir)/%s\n\n' % string.join(headers, ' $(top_srcdir)/'))
- f.write('SOURCE_DIRS = %s $(EXTRA_SOURCE_DIRS)\n\n' % string.join(dirs.keys()))
+ f.write('HEADERS = $(top_srcdir)/%s\n\n' % ' $(top_srcdir)/'.join(headers))
+ f.write('SOURCE_DIRS = %s $(EXTRA_SOURCE_DIRS)\n\n' % " ".join(dirs.keys()))
if parser.has_option('options', 'modules'):
modules = parser.get('options', 'modules')
- for mod in string.split(modules):
+ for mod in modules.split():
files = get_files(parser.get(mod, 'paths'))
objects, _unused = write_objects(f, legal_deps, h_deps, files)
- flat_objects = string.join(objects)
+ flat_objects = " ".join(objects)
f.write('OBJECTS_%s = %s\n' % (mod, flat_objects))
if parser.has_option(mod, 'target'):
@@ -153,9 +156,9 @@
d = os.path.dirname(d)
# Sort so 'foo' is before 'foo/bar'
- keys = alldirs.keys()
+ keys = list(alldirs.keys())
keys.sort()
- f.write('BUILD_DIRS = %s\n\n' % string.join(keys))
+ f.write('BUILD_DIRS = %s\n\n' % " ".join(keys))
f.write('.make.dirs: $(srcdir)/build-outputs.mk\n' \
'\t@for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done\n' \
@@ -177,12 +180,12 @@
# what headers does this file include, along with the implied headers
deps = extract_deps(file, legal_deps)
- for hdr in deps.keys():
+ for hdr in list(deps.keys()):
deps.update(h_deps.get(hdr, {}))
- vals = deps.values()
+ vals = list(deps.values())
vals.sort()
- f.write('%s: %s .make.dirs %s\n' % (obj, file, string.join(vals)))
+ f.write('%s: %s .make.dirs %s\n' % (obj, file, " ".join(vals)))
objects.sort()
@@ -210,7 +213,7 @@
for hdr, deps in header_deps.items():
# print hdr, deps
start = len(deps)
- for dep in deps.keys():
+ for dep in list(deps.keys()):
deps.update(header_deps.get(dep, {}))
if len(deps) != start:
altered = 1
@@ -220,7 +223,7 @@
def get_files(patterns):
files = [ ]
- for pat in string.split(patterns):
+ for pat in patterns.split():
files.extend(map(clean_path, glob.glob(pat)))
files.sort()
return files
--- 1.7.x/build/buildcheck.sh 2018/06/27 11:41:30 1834494
+++ 1.7.x/build/buildcheck.sh 2018/06/27 11:49:33 1834495
@@ -4,14 +4,14 @@
res=0
# any python
-python=`build/PrintPath python`
+python=${PYTHON-`build/PrintPath python3 python2 python`}
if test -z "$python"; then
echo "buildconf: python not found."
echo " You need python installed"
echo " to build APR from SVN."
res=1
else
- py_version=`python -c 'import sys; print sys.version' 2>&1|sed 's/ .*//;q'`
+ py_version=`$python -c 'import sys; print(sys.version)' 2>&1|sed 's/ .*//;q'`
echo "buildconf: python version $py_version (ok)"
fi

View File

@ -0,0 +1,44 @@
From 39611db20eea29a751162c43f0df61b05f48b00f Mon Sep 17 00:00:00 2001
From: Rainer Jung <rjung@apache.org>
Date: Wed, 17 Jul 2019 11:42:15 +0000
Subject: [PATCH 03/10] Pool debugging fixes
- avoid using a destroyed mutex in apr_pool_clear()
- if we create a sub-pool, we don't need to own the pool.
Backport of r1481186 from trunk resp. r1863200 from 1.7.x.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863209 13f79535-47bb-0310-9956-ffa450edef68
---
memory/unix/apr_pools.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
index 614919ede..cd6b17811 100644
--- a/memory/unix/apr_pools.c
+++ b/memory/unix/apr_pools.c
@@ -1909,6 +1909,11 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
* the mutex we obtained above.
*/
if (mutex != pool->mutex) {
+ /*
+ * Prevent apr_palloc() in apr_thread_mutex_create() from trying to
+ * use the destroyed mutex.
+ */
+ pool->mutex = NULL;
(void)apr_thread_mutex_create(&pool->mutex,
APR_THREAD_MUTEX_NESTED, pool);
@@ -1985,7 +1990,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
parent = global_pool;
}
else {
- apr_pool_check_integrity(parent);
+ apr_pool_check_lifetime(parent);
if (!allocator)
allocator = parent->allocator;
--
2.19.1

View File

@ -0,0 +1,87 @@
From 68710d39de65fa4f16c890110342a249f60a66fa Mon Sep 17 00:00:00 2001
From: Rainer Jung <rjung@apache.org>
Date: Wed, 17 Jul 2019 11:41:21 +0000
Subject: [PATCH 02/10] Split apr_pool_check_integrity() into two parts
Run the pool owner check part only after pre-cleanups have been run, in
order to give them a chance to kill of any threads that may still be
accessing the pool.
Backport of r1460184 from trunk resp. r1863199 from 1.7.x.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.6.x@1863208 13f79535-47bb-0310-9956-ffa450edef68
---
memory/unix/apr_pools.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c
index 3361f7a7d..614919ede 100644
--- a/memory/unix/apr_pools.c
+++ b/memory/unix/apr_pools.c
@@ -1594,7 +1594,7 @@ static int apr_pool_is_child_of(apr_pool_t *pool, apr_pool_t *parent)
}
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
-static void apr_pool_check_integrity(apr_pool_t *pool)
+static void apr_pool_check_lifetime(apr_pool_t *pool)
{
/* Rule of thumb: use of the global pool is always
* ok, since the only user is apr_pools.c. Unless
@@ -1618,7 +1618,10 @@ static void apr_pool_check_integrity(apr_pool_t *pool)
abort();
}
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */
+}
+static void apr_pool_check_owner(apr_pool_t *pool)
+{
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER)
#if APR_HAS_THREADS
if (!apr_os_thread_equal(pool->owner, apr_os_thread_current())) {
@@ -1632,6 +1635,11 @@ static void apr_pool_check_integrity(apr_pool_t *pool)
#endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER) */
}
+static void apr_pool_check_integrity(apr_pool_t *pool)
+{
+ apr_pool_check_lifetime(pool);
+ apr_pool_check_owner(pool);
+}
/*
* Initialization (debug)
@@ -1820,6 +1828,12 @@ static void pool_clear_debug(apr_pool_t *pool, const char *file_line)
run_cleanups(&pool->pre_cleanups);
pool->pre_cleanups = NULL;
+ /*
+ * Now that we have given the pre cleanups the chance to kill of any
+ * threads using the pool, the owner must be correct.
+ */
+ apr_pool_check_owner(pool);
+
/* Destroy the subpools. The subpools will detach themselves from
* this pool thus this loop is safe and easy.
*/
@@ -1868,7 +1882,7 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
apr_thread_mutex_t *mutex = NULL;
#endif
- apr_pool_check_integrity(pool);
+ apr_pool_check_lifetime(pool);
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
apr_pool_log_event(pool, "CLEAR", file_line, 1);
@@ -1906,7 +1920,7 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
static void pool_destroy_debug(apr_pool_t *pool, const char *file_line)
{
- apr_pool_check_integrity(pool);
+ apr_pool_check_lifetime(pool);
#if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE)
apr_pool_log_event(pool, "DESTROY", file_line, 1);
--
2.19.1

18
apr-1.2.2-libdir.patch Normal file
View File

@ -0,0 +1,18 @@
- avoid adding %{_libdir} to --link-ld output
--- apr-1.2.2/apr-config.in.libdir
+++ apr-1.2.2/apr-config.in
@@ -181,8 +181,10 @@
;;
--link-ld)
if test "$location" = "installed"; then
- ### avoid using -L if libdir is a "standard" location like /usr/lib
- flags="$flags -L$libdir -l${APR_LIBNAME}"
+ if test "$prefix" != "/usr"; then
+ flags="$flags -L$libdir"
+ fi
+ flags="$flags -l${APR_LIBNAME}"
else
### this surely can't work since the library is in .libs?
flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}"

56
apr-1.2.7-pkgconf.patch Normal file
View File

@ -0,0 +1,56 @@
This is a fugly hack to make apr-1-config libdir-agnostic, by using
pkg-config to determine the libdir setting. pkg-config will
magically determine the appropriate libdir setting.
This allows apr-devel.i386 and apr-devel.x86_64 to be
installed in parallel.
--- apr-1.2.7/Makefile.in.pkgconf
+++ apr-1.2.7/Makefile.in
@@ -60,7 +60,7 @@
# Create apr-config script suitable for the install tree
apr-config.out: $(APR_CONFIG)
- sed 's,^\(location=\).*$$,\1installed,' < $(APR_CONFIG) > $@
+ sed 's,^\(location=\).*$$,\1installed,;s,^\(APR_.*_DIR\)=.*,\1="$${libdir}/build",' < $(APR_CONFIG) > $@
# Create apr_rules.mk suitable for the install tree
build/apr_rules.out: build/apr_rules.mk
--- apr-1.2.7/apr.pc.in.pkgconf
+++ apr-1.2.7/apr.pc.in
@@ -3,9 +3,10 @@
libdir=@libdir@
APR_MAJOR_VERSION=@APR_MAJOR_VERSION@
includedir=@includedir@
+CPPFLAGS=@EXTRA_CPPFLAGS@
Name: APR
Description: The Apache Portable Runtime library
Version: @APR_DOTTED_VERSION@
Libs: -L${libdir} -l@APR_LIBNAME@ @EXTRA_LIBS@
-Cflags: @EXTRA_CPPFLAGS@ @EXTRA_CFLAGS@ -I${includedir}
+Cflags: ${CPPFLAGS} @EXTRA_CFLAGS@ -I${includedir}
--- apr-1.2.7/apr-config.in.pkgconf
+++ apr-1.2.7/apr-config.in
@@ -24,16 +24,17 @@
prefix="@prefix@"
exec_prefix="@exec_prefix@"
bindir="@bindir@"
-libdir="@libdir@"
datarootdir="@datadir@"
datadir="@datadir@"
-installbuilddir="@installbuilddir@"
includedir="@includedir@"
+libdir=`pkg-config --variable=libdir apr-@APR_MAJOR_VERSION@`
+installbuilddir="${libdir}/apr-@APR_MAJOR_VERSION@/build"
+
CC="@CC@"
CPP="@CPP@"
SHELL="@SHELL@"
-CPPFLAGS="@EXTRA_CPPFLAGS@"
+CPPFLAGS=`pkg-config --variable=CPPFLAGS apr-@APR_MAJOR_VERSION@`
CFLAGS="@EXTRA_CFLAGS@"
LDFLAGS="@EXTRA_LDFLAGS@"
LIBS="@EXTRA_LIBS@"

BIN
apr-1.6.5.tar.bz2 Normal file

Binary file not shown.

22
apr-wrapper.h Normal file
View File

@ -0,0 +1,22 @@
/* This file is here to prevent a file conflict on multiarch systems. A
* conflict will occur because apr.h has arch-specific definitions.
*
* DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */
#if defined(__i386__)
#include "apr-i386.h"
#elif defined(__ia64__)
#include "apr-ia64.h"
#elif defined(__powerpc64__)
#include "apr-ppc64.h"
#elif defined(__powerpc__)
#include "apr-ppc.h"
#elif defined(__s390x__)
#include "apr-s390x.h"
#elif defined(__s390__)
#include "apr-s390.h"
#elif defined(__x86_64__)
#include "apr-x86_64.h"
#else
#error "This apr-devel package does not work your architecture?"
#endif

113
apr.spec Normal file
View File

@ -0,0 +1,113 @@
%define aprver 1
Name: apr
Version: 1.6.5
Release: 4
Summary: Apache Portable Runtime.
License: ASL 2.0 and BSD with advertising and ISC and BSD
URL: http://apr.apache.org
Source0: http://www.apache.org/dist/%{name}/%{name}-%{version}.tar.bz2
Source1: apr-wrapper.h
Patch0: apr-1.2.2-libdir.patch
Patch1: apr-1.2.7-pkgconf.patch
Patch6000: Merge-r1834494-from-trunk.patch
Patch6001: test-testlock.c-test_timeoutcond-Increase-fudge-fact.patch
Patch6002: Split-apr_pool_check_integrity-into-two-parts.patch
Patch6003: Pool-debugging-fixes.patch
Patch6004: Fix-pool-debugging-output-so-that-creation-events-ar.patch
BuildRequires: gcc autoconf libtool libuuid-devel python3 lksctp-tools-devel
%description
The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries
that provide a predictable and consistent interface to underlying platform-specific implementations.
The primary goal is to provide an API to which software developers may code and be assured of
predictable if not identical behaviour 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.
%package devel
Summary: Apache Portable Runtime development kit.
Requires: %{name} = %{version}-%{release} pkgconfig
%description devel
Apache Portable Runtime development kit.
%package_help
%prep
%autosetup -n %{name}-%{version} -p1
%build
./buildconf
export ac_cv_search_shm_open=no
%configure \
--includedir=%{_includedir}/%{name}-%{aprver} --with-installbuilddir=%{_libdir}/%{name}-%{aprver}/build \
--with-devrandom=/dev/urandom
make
%install
rm -rf %{buildroot}
%make_install
install -D -m 0644 build/find_apr.m4 %{buildroot}/%{_datadir}/aclocal/find_apr.m4
sed -ri '/^dependency_libs/{s,-l(uuid|crypt) ,,g}' \
%{buildroot}%{_libdir}/libapr*.la
sed -ri '/^LIBS=/{s,-l(uuid|crypt) ,,g;s/ */ /g}' \
%{buildroot}%{_bindir}/%{name}-%{aprver}-config
sed -ri '/^Libs/{s,-l(uuid|crypt) ,,g}' \
%{buildroot}%{_libdir}/pkgconfig/%{name}-%{aprver}.pc
%ifarch %{multilib_arches}
install -D -m 0644 %{buildroot}%{_includedir}/%{name}-%{aprver}/apr.h \
%{buildroot}%{_includedir}/%{name}-%{aprver}/%{name}-%{_arch}.h
install -D -m 0644 %{SOURCE1} %{buildroot}%{_includedir}/%{name}-%{aprver}/apr.h
%endif
rm -rf %{buildroot}%{_libdir}/apr.exp
rm -rf %{buildroot}%{_libdir}/libapr-*.a
%check
make check
%ldconfig_scriptlets
%pre
%preun
%post
%postun
%files
%doc CHANGES NOTICE
%license LICENSE
%{_libdir}/libapr-%{aprver}.so.*
%files devel
%{_bindir}/%{name}-%{aprver}-config
%{_libdir}/libapr-%{aprver}.*a
%{_libdir}/libapr-%{aprver}.so
%{_libdir}/pkgconfig/*.pc
%dir %{_libdir}/%{name}-%{aprver}
%dir %{_libdir}/%{name}-%{aprver}/build
%{_libdir}/%{name}-%{aprver}/build/*
%dir %{_includedir}/%{name}-%{aprver}
%{_includedir}/%{name}-%{aprver}/*.h
%{_datadir}/aclocal/*.m4
%files help
%doc docs/APRDesign.html docs/canonical_filenames.html
%doc docs/incomplete_types docs/non_apr_programs
%changelog
* Tue Dec 17 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.6.5-4
- quality enhancement synchronization github patch
* Tue Oct 22 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.6.5-3
- optimize spec file.
* Sat Sep 28 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.6.5-2
- Package rebuild.
* Wed Sep 04 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.6.5-1
- Package init.

View File

@ -0,0 +1,28 @@
From d6d48ddd4c3a5ef04749475ed75d26330a3e0dc6 Mon Sep 17 00:00:00 2001
From: Joe Orton <jorton@apache.org>
Date: Tue, 19 Sep 2017 16:38:40 +0000
Subject: [PATCH] * test/testlock.c (test_timeoutcond): Increase fudge factor
in checking timeout precision; 100ms failed regularly in Fedora builds,
500ms has Never Failed(TM).
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1808910 13f79535-47bb-0310-9956-ffa450edef68
---
test/testlock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/testlock.c b/test/testlock.c
index 40da791b7..cd48768ca 100644
--- a/test/testlock.c
+++ b/test/testlock.c
@@ -334,7 +334,7 @@ static void test_timeoutcond(abts_case *tc, void *data)
continue;
}
ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(s));
- ABTS_ASSERT(tc, "Timer returned too late", end - begin - timeout < 100000);
+ ABTS_ASSERT(tc, "Timer returned too late", end - begin - timeout < 500000);
break;
}
ABTS_ASSERT(tc, "Too many retries", i < MAX_RETRY);
--
2.19.1