commit f1266da45d302953978214dccf017983524d3fc1 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 10:31:32 2019 -0400 Package init diff --git a/apr-1.2.2-libdir.patch b/apr-1.2.2-libdir.patch new file mode 100644 index 0000000..aeb7ee1 --- /dev/null +++ b/apr-1.2.2-libdir.patch @@ -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}" diff --git a/apr-1.2.2-locktimeout.patch b/apr-1.2.2-locktimeout.patch new file mode 100644 index 0000000..73f3994 --- /dev/null +++ b/apr-1.2.2-locktimeout.patch @@ -0,0 +1,11 @@ +--- apr-1.2.2/test/testlock.c.locktimeout ++++ apr-1.2.2/test/testlock.c +@@ -295,7 +295,7 @@ + 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); diff --git a/apr-1.2.7-pkgconf.patch b/apr-1.2.7-pkgconf.patch new file mode 100644 index 0000000..bd6d65c --- /dev/null +++ b/apr-1.2.7-pkgconf.patch @@ -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@" diff --git a/apr-1.6.3-r1834495.patch b/apr-1.6.3-r1834495.patch new file mode 100644 index 0000000..015f15b --- /dev/null +++ b/apr-1.6.3-r1834495.patch @@ -0,0 +1,171 @@ +# ./pullrev.sh 1834495 +http://svn.apache.org/viewvc?view=revision&revision=1834495 + +--- apr-1.6.3/buildconf ++++ apr-1.6.3/buildconf +@@ -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 +--- apr-1.6.3/build/gen-build.py ++++ apr-1.6.3/build/gen-build.py +@@ -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__ 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 +--- apr-1.6.3/build/buildcheck.sh ++++ apr-1.6.3/build/buildcheck.sh +@@ -4,7 +4,7 @@ + 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" +@@ -11,7 +11,7 @@ + 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 + diff --git a/apr-1.6.5.tar.bz2 b/apr-1.6.5.tar.bz2 new file mode 100644 index 0000000..a2601cb Binary files /dev/null and b/apr-1.6.5.tar.bz2 differ diff --git a/apr-wrapper.h b/apr-wrapper.h new file mode 100644 index 0000000..2641f76 --- /dev/null +++ b/apr-wrapper.h @@ -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 diff --git a/apr.spec b/apr.spec new file mode 100644 index 0000000..53cd675 --- /dev/null +++ b/apr.spec @@ -0,0 +1,100 @@ +%define aprver 1 + +Name: apr +Version: 1.6.5 +Release: 2 +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/apr/%{name}-%{version}.tar.bz2 +Source1: apr-wrapper.h +#Patch0: +# *build/buildcheck.sh, buildconf: Detect and run under Python 3 or 2,and respect $PYTHON. +# *build/gen-build.py: Fix various Python 3 compatibility issues. +# http://svn.apache.org/viewvc?view=revision&revision=1834495 +Patch0: apr-1.6.3-r1834495.patch +Patch1: apr-1.2.2-locktimeout.patch +Patch2: apr-1.2.2-libdir.patch +Patch3: apr-1.2.7-pkgconf.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: apr = %{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 + +%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 +* Sat Sep 28 2019 openEuler Buildteam - 1.6.5-2 +- Package rebuild. + +* Wed Sep 4 2019 openEuler Buildteam - 1.6.5-1 +- Package init.