From 27986f49cf46496bec684cb76d36b62d09d294cd Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 17 May 2022 04:38:49 -0400 Subject: [PATCH] import libserf-1.3.9-26.el9 --- .gitignore | 1 + .libserf.metadata | 1 + SOURCES/libserf-1.3.9-bio-ctrl.patch | 21 + SOURCES/libserf-1.3.9-cmake.patch | 1274 ++++++++++++++++++++++++ SOURCES/libserf-1.3.9-errgetfunc.patch | 13 + SOURCES/libserf-norpath.patch | 34 + SOURCES/libserf-python3.patch | 60 ++ SPECS/libserf.spec | 199 ++++ 8 files changed, 1603 insertions(+) create mode 100644 .gitignore create mode 100644 .libserf.metadata create mode 100644 SOURCES/libserf-1.3.9-bio-ctrl.patch create mode 100644 SOURCES/libserf-1.3.9-cmake.patch create mode 100644 SOURCES/libserf-1.3.9-errgetfunc.patch create mode 100644 SOURCES/libserf-norpath.patch create mode 100644 SOURCES/libserf-python3.patch create mode 100644 SPECS/libserf.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cba6f56 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/serf-1.3.9.tar.bz2 diff --git a/.libserf.metadata b/.libserf.metadata new file mode 100644 index 0000000..ec60ae2 --- /dev/null +++ b/.libserf.metadata @@ -0,0 +1 @@ +26015c63e3bbb108c1689bf2090e4c26351db674 SOURCES/serf-1.3.9.tar.bz2 diff --git a/SOURCES/libserf-1.3.9-bio-ctrl.patch b/SOURCES/libserf-1.3.9-bio-ctrl.patch new file mode 100644 index 0000000..b679edf --- /dev/null +++ b/SOURCES/libserf-1.3.9-bio-ctrl.patch @@ -0,0 +1,21 @@ +diff --git a/buckets/ssl_buckets.c b/buckets/ssl_buckets.c +index b01e5359db08..3c8b7e2a685f 100644 +--- a/buckets/ssl_buckets.c ++++ b/buckets/ssl_buckets.c +@@ -407,7 +407,7 @@ static int bio_bucket_destroy(BIO *bio) + + static long bio_bucket_ctrl(BIO *bio, int cmd, long num, void *ptr) + { +- long ret = 1; ++ long ret = 0; + + switch (cmd) { + default: +@@ -415,6 +415,7 @@ static long bio_bucket_ctrl(BIO *bio, int cmd, long num, void *ptr) + break; + case BIO_CTRL_FLUSH: + /* At this point we can't force a flush. */ ++ ret = 1; + break; + case BIO_CTRL_PUSH: + case BIO_CTRL_POP: diff --git a/SOURCES/libserf-1.3.9-cmake.patch b/SOURCES/libserf-1.3.9-cmake.patch new file mode 100644 index 0000000..91ae367 --- /dev/null +++ b/SOURCES/libserf-1.3.9-cmake.patch @@ -0,0 +1,1274 @@ +commit 092a90b38b0988c0d9faa23d44aa91362b2a78b3 +Author: Tomas Korbar +Date: Wed Jun 23 13:50:36 2021 +0200 + + Backport cmake support + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..3f10eae +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,368 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++# =================================================================== ++# The following variables can be set to locate dependencies that ++# are not installed in standard paths. These variables are used ++# by the find_package() modules. ++# ++# APR_ROOT - Path to APR's install area ++# APRUtil_ROOT - Path to APR-Util's install area ++# OPENSSL_ROOT_DIR - Path to OpenSSL's install area ++# ZLIB_ROOT - Path to zlib's install area ++# =================================================================== ++ ++cmake_minimum_required(VERSION 3.0) ++ ++# Silence warnings about ${_ROOT} in CMake 3.12+ ++if((${CMAKE_MAJOR_VERSION} GREATER 3) OR (${CMAKE_MINOR_VERSION} GREATER 11)) ++ cmake_policy(SET CMP0074 NEW) ++endif() ++ ++set(SERF_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") ++set(CMAKE_MODULE_PATH "${SERF_SOURCE_DIR}/build") ++include(SerfVersion) ++ ++project("Serf" VERSION ${SERF_VERSION} LANGUAGES C) ++message(WARNING ++ "Serf's CMake build is considered EXPERIMENTAL. " ++ "Some features are not supported and the build " ++ "has not been tested on many supported platforms.") ++ ++ ++# Build options ++option(DEBUG "Enable debugging info and strict compile warnings" OFF) ++option(SKIP_SHARED "Disable building shared Serf libraries" OFF) ++option(SKIP_STATIC "Disable building static Serf libraries" OFF) ++option(LIBDIR "Install directory for architecture-dependent libraries" "") ++option(GSSAPI "Path to GSSAPI's install area" "") ++option(BROTLI "Path to Brotli's install area" "") ++option(DISABLE_LOGGING "Disable the logging framework at compile time" OFF) ++option(SKIP_TESTS "Disable building the unit tests and utilities" OFF) ++option(ENABLE_SLOW_TESTS "Enable long-running unit tests" OFF) ++ ++# Platform-specific build options ++option(APR_STATIC "Windows: Link with static APR/-Util libraries" OFF) ++option(EXPAT "Windows: optional path to Expat's install area for APR_STATIC" "") ++option(RELATIVE_RPATH "macOS: Use @rpath in installed shared library" OFF) ++ ++if(SKIP_SHARED AND SKIP_STATIC) ++ message(FATAL_ERROR "You have disabled both shared and static library builds.") ++endif() ++ ++# Initialize the build type if it was not set on the command line. ++if(NOT CMAKE_BUILD_TYPE) ++ if(DEBUG) ++ set(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Default to debug build.") ++ else() ++ set(CMAKE_BUILD_TYPE RELEASE CACHE STRING "Default to release build.") ++ endif() ++endif() ++ ++include(SerfPlatform) ++include(SerfWindowsToolkit) ++ ++ ++# Public headers ++list(APPEND HEADERS ++ "serf.h" ++ "serf_bucket_types.h" ++ "serf_bucket_util.h" ++) ++ ++# List of symbols that should not be exported from the shared library. ++list(APPEND EXPORTS_BLACKLIST ++ "serf_connection_switch_protocol" ++ "serf_http_protocol_create" ++ "serf_https_protocol_create" ++ "serf_http_request_queue" ++) ++ ++# Serf library source files ++list(APPEND SOURCES ++ "context.c" ++ "incoming.c" ++ "outgoing.c" ++ "ssltunnel.c" ++ "auth/auth.c" ++ "auth/auth_basic.c" ++ "auth/auth_digest.c" ++ "auth/auth_spnego.c" ++ "auth/auth_spnego_gss.c" ++ "auth/auth_spnego_sspi.c" ++ "buckets/aggregate_buckets.c" ++ "buckets/allocator.c" ++ "buckets/barrier_buckets.c" ++ "buckets/buckets.c" ++ "buckets/bwtp_buckets.c" ++ "buckets/chunk_buckets.c" ++ "buckets/dechunk_buckets.c" ++ "buckets/deflate_buckets.c" ++ "buckets/file_buckets.c" ++ "buckets/headers_buckets.c" ++ "buckets/iovec_buckets.c" ++ "buckets/limit_buckets.c" ++ "buckets/mmap_buckets.c" ++ "buckets/request_buckets.c" ++ "buckets/response_body_buckets.c" ++ "buckets/response_buckets.c" ++ "buckets/simple_buckets.c" ++ "buckets/socket_buckets.c" ++ "buckets/ssl_buckets.c" ++) ++ ++if(SERF_WINDOWS) ++ # Generate the .def file for the Windows DLL import library. ++ set(SERF_DEF_FILE "${CMAKE_CURRENT_BINARY_DIR}/serf.def") ++ add_custom_command( ++ OUTPUT "${SERF_DEF_FILE}" ++ DEPENDS ${HEADERS} ++ COMMAND ${CMAKE_COMMAND} ++ -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}" ++ -DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}" ++ -DSERF_DEF_BLACKLIST="${EXPORTS_BLACKLIST}" ++ -DSERF_DEF_HEADERS="${HEADERS}" ++ -DSERF_DEF_FILE="${SERF_DEF_FILE}" ++ -P "build/SerfWindowsGenDef.cmake" ++ WORKING_DIRECTORY "${SERF_SOURCE_DIR}" ++ ) ++ set(SHARED_SOURCES "serf.rc" "${SERF_DEF_FILE}") ++ ++ # Static OpenSSL, APR and APR-Util need additional libraries that are not ++ # linked by default by CMake. These will be ignored by the linker if they're ++ # not actually used. ++ set(SERF_STANDARD_LIBRARIES ++ "crypt32.lib" ++ "mswsock.lib" ++ "rpcrt4.lib" ++ "secur32.lib" ++ "ws2_32.lib" ++ ) ++endif(SERF_WINDOWS) ++ ++ ++# Process build options for dependency search ++if(GSSAPI) ++ message(WARNING "option GSSAPI is not implemented") ++endif() ++ ++if(BROTLI) ++ message(WARNING "option BROTLI is not implemented") ++endif() ++ ++if(SERF_WINDOWS) ++ if(EXPAT) ++ set(PC_EXPAT_INCLUDE_DIRS "${EXPAT}/include") ++ set(PC_EXPAT_LIBRARY_DIRS "${EXPAT}/lib") ++ endif(EXPAT) ++else(SERF_WINDOWS) ++ if(EXPAT) ++ message(WARNING "option EXPAT is not implemented on this platform") ++ endif(EXPAT) ++endif(SERF_WINDOWS) ++ ++# Find dependencies ++find_package(OpenSSL) ++find_package(ZLIB) ++find_package(APR) ++find_package(APRUtil) ++ ++# Calculate the set of private and public targets ++set(SERF_PRIVATE_TARGETS OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB) ++ ++if(APR_STATIC) ++ if(SERF_WINDOWS) ++ list(APPEND SERF_PUBLIC_TARGETS APR::APR_static) ++ if(NOT APR_CONTAINS_APRUTIL) ++ list(APPEND SERF_PUBLIC_TARGETS APR::APRUTIL_static) ++ endif() ++ add_definitions("/DAPR_DECLARE_STATIC" "/DAPU_DECLARE_STATIC") ++ else(SERF_WINDOWS) ++ message(WARNING "option APR_STATIC is not implemented on this platform") ++ endif(SERF_WINDOWS) ++else(APR_STATIC) ++ list(APPEND SERF_PUBLIC_TARGETS APR::APR) ++ if(NOT APR_CONTAINS_APRUTIL) ++ list(APPEND SERF_PUBLIC_TARGETS APR::APRUTIL) ++ endif() ++endif(APR_STATIC) ++ ++# Feature tests ++include(SerfChecks) ++CheckNotFunction("BIO_set_init" "SERF_NO_SSL_BIO_WRAPPERS" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckNotFunction("X509_STORE_get0_param" "SERF_NO_SSL_X509_STORE_WRAPPERS" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckNotFunction("X509_get0_notBefore" "SERF_NO_SSL_X509_GET0_NOTBEFORE" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckNotFunction("X509_get0_notAfter" "SERF_NO_SSL_X509_GET0_NOTAFTER" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckNotFunction("X509_STORE_CTX_get0_chain" "SERF_NO_SSL_X509_GET0_CHAIN" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckNotFunction("ASN1_STRING_get0_data" "SERF_NO_SSL_ASN1_STRING_GET0_DATA" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckFunction("CRYPTO_set_locking_callback" "SERF_HAVE_SSL_LOCKING_CALLBACKS" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckFunction("OpenSSL_version_num" "SERF_HAVE_OPENSSL_VERSION_NUM" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckFunction("SSL_set_alpn_protos" "SERF_HAVE_OPENSSL_ALPN" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckFunctionMacro("OPENSSL_malloc_init" "SERF_HAVE_OPENSSL_MALLOC_INIT" "openssl/crypto.h" ++ "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckFunctionMacro("SSL_library_init" "SERF_HAVE_OPENSSL_SSL_LIBRARY_INIT" "openssl/ssl.h" ++ "${OPENSSL_INCLUDE_DIR}" ${OPENSSL_LIBRARIES} ${SERF_STANDARD_LIBRARIES}) ++CheckHeader("openssl/applink.c" "SERF_HAVE_OPENSSL_APPLINK_C" ${OPENSSL_INCLUDE_DIR}) ++CheckHeader("stdbool.h" "HAVE_STDBOOL_H=1") ++CheckType("OSSL_HANDSHAKE_STATE" "openssl/ssl.h" "SERF_HAVE_OSSL_HANDSHAKE_STATE" ${OPENSSL_INCLUDE_DIR}) ++ ++if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) ++ set(CC_LIKE_GNUC TRUE) ++endif() ++ ++# Process other build options ++if(LIBDIR) ++ message(WARNING "option LIBDIR is not implemented yet") ++endif() ++ ++if(DEBUG) ++ add_definitions("-DDEBUG" "-D_DEBUG") ++endif() ++ ++if(DISABLE_LOGGING) ++ add_definitions("-DSERF_DISABLE_LOGGING") ++endif() ++ ++if(ENABLE_SLOW_TESTS) ++ add_definitions("-DSERF_TEST_DEFLATE_4GBPLUS_BUCKETS") ++endif() ++ ++ ++# Set common compiler flags ++if(NOT MSVC) ++ if(CC_LIKE_GNUC) ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wdeclaration-after-statement") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89") ++ ++ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") ++ endif() ++else() ++ # Warning level 4, no unused argument warnings ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4100") ++ # Conditional expression is constant ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127") ++ # Assignment within conditional expression ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4706") ++ ++ add_definitions( ++ "/DWIN32" "/DWIN32_LEAN_AND_MEAN" ++ "/DNOUSER" "/DNOGDI" "/DNONLS" "/DNOCRYPT" ++ "/D_CRT_SECURE_NO_WARNINGS" ++ "/D_CRT_NONSTDC_NO_WARNINGS" ++ ) ++ if(SERF_WIN64) ++ add_definitions("/DWIN64") ++ endif() ++ ++ set(CMAKE_IMPORT_LIBRARY_PREFIX "lib") ++ set(CMAKE_SHARED_LIBRARY_PREFIX "lib") ++endif(NOT MSVC) ++ ++# Define all targets ++if(NOT SKIP_SHARED) ++ add_library(serf_shared SHARED ${SOURCES} ${SHARED_SOURCES}) ++ target_compile_options(serf_shared PUBLIC ${APR_CFLAGS}) ++ target_include_directories(serf_shared PUBLIC ${SERF_SOURCE_DIR}) ++ target_link_libraries(serf_shared ++ PRIVATE ${SERF_PRIVATE_TARGETS} ++ ${SERF_STANDARD_LIBRARIES} ++ PUBLIC ${SERF_PUBLIC_TARGETS}) ++ set_target_properties(serf_shared PROPERTIES ++ VERSION ${SERF_VERSION} ++ SOVERSION ${SERF_SOVERSION}) ++ if(SERF_DARWIN AND NOT RELATIVE_RPATH) ++ set_target_properties(serf_shared PROPERTIES ++ INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") ++ endif() ++ set(SERF_TARGETS "serf_shared") ++ ++ if(SERF_WINDOWS) ++ install(FILES $ DESTINATION "bin") ++ endif() ++endif() ++ ++if(NOT SKIP_STATIC) ++ add_library(serf_static STATIC ${SOURCES}) ++ target_compile_options(serf_static PUBLIC ${APR_CFLAGS}) ++ target_include_directories(serf_static PUBLIC ${SERF_SOURCE_DIR}) ++ target_link_libraries(serf_static ++ ${SERF_PRIVATE_TARGETS} ++ ${SERF_PUBLIC_TARGETS} ++ ${SERF_STANDARD_LIBRARIES}) ++ list(APPEND SERF_TARGETS "serf_static") ++endif() ++ ++set_target_properties(${SERF_TARGETS} ++ PROPERTIES ++ OUTPUT_NAME "serf-${SERF_MAJOR_VERSION}") ++ ++install(TARGETS ${SERF_TARGETS} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION "bin") ++ ++if(NOT SERF_WINDOWS) ++ set(SERF_INCLUDE_SUBDIR "serf-${SERF_MAJOR_VERSION}") ++endif() ++install(FILES ${HEADERS} DESTINATION "include/${SERF_INCLUDE_SUBDIR}") ++ ++ ++# Generate the pkg-config module file. ++if(NOT SERF_WINDOWS) ++ # Use a separate variable scope for the substitutions in serf.pc.in. ++ function(make_pkgconfig) ++ set(PREFIX ${CMAKE_INSTALL_PREFIX}) ++ if(NOT LIBDIR) ++ set(LIBDIR "\${prefix}/lib") ++ endif() ++ set(INCLUDE_SUBDIR ${SERF_INCLUDE_SUBDIR}) ++ set(VERSION ${SERF_VERSION}) ++ set(MAJOR ${SERF_MAJOR_VERSION}) ++ set(SERF_INTERFACE_LIBS ++ ${APR_LIBRARIES} ++ ${APR_EXTRALIBS} ++ ${APRUTIL_LIBRARIES} ++ ${APRUTIL_EXTRALIBS} ++ ) ++ list(REMOVE_DUPLICATES SERF_INTERFACE_LIBS) ++ unset(LIBS) ++ foreach(DEPLIB ${SERF_INTERFACE_LIBS}) ++ string(APPEND LIBS " ${DEPLIB}") ++ endforeach() ++ configure_file("build/serf.pc.in" "serf.pc" @ONLY) ++ endfunction() ++ ++ make_pkgconfig() ++ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/serf.pc" ++ DESTINATION "share/pkgconfig") ++endif() ++ ++ ++if(NOT SKIP_TESTS) ++ if(SKIP_STATIC) ++ message(WARNING "The tests depend on the Serf static library") ++ message(STATUS "Skipping tests; to silence this message, either remove") ++ message(STATUS "the SKIP_STATIC option or add the SKIP_TESTS option.") ++ else() ++ enable_testing() ++ add_subdirectory(test) ++ endif() ++endif() +diff --git a/build/FindAPR.cmake b/build/FindAPR.cmake +new file mode 100644 +index 0000000..073ffe7 +--- /dev/null ++++ b/build/FindAPR.cmake +@@ -0,0 +1,269 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++cmake_minimum_required(VERSION 3.0) ++ ++#.rst: ++# FindAPR ++# -------- ++# ++# Find the native Apache Portable Runtime includes and library. ++# ++# IMPORTED Targets ++# ^^^^^^^^^^^^^^^^ ++# ++# This module defines :prop_tgt:`IMPORTED` target ``APR::APR``, if ++# APR has been found. On Windows, it may define the :prop_tgt:`IMPORTED` ++# target ``APR::APR_static`` if the static libraries are found. ++# ++# Result Variables ++# ^^^^^^^^^^^^^^^^ ++# ++# This module defines the following variables: ++# ++# :: ++# ++# APR_FOUND - True if APR was found. ++# APR_VERSION - The version of APR found (x.y.z) ++# APR_CONTAINS_APRUTIL - True if the APR major version is 2 or greater. ++# APR_INCLUDES - Where to find apr.h, etc. ++# APR_LIBRARIES - Linker switches to use with ld to link against APR ++# ++# :: ++# ++# APR_EXTRALIBS - Additional libraries to link against ++# APR_CFLAGS - The flags to use to compile. ++# APR_STATIC_LIBS - On Windows: list of APR static libraries ++# APR_RUNTIME_LIBS - On Windows: list of APR runtime DLLs ++# ++# Hints ++# ^^^^^ ++# ++# A user may set ``APR_ROOT`` to an APR installation root to tell this ++# module where to look. This variable must be defined on Windows. ++ ++ ++# ------------------------------------------------------------------- ++# Common utility functions for FindAPR.cmaks and FindAPRtil.cmake ++# ------------------------------------------------------------------- ++ ++# Run the APR/Util configuration program ++function(_apru_config _program _varname _regexp) ++ execute_process(COMMAND ${_program} ${ARGN} ++ OUTPUT_VARIABLE _apru_output ++ RESULT_VARIABLE _apru_failed) ++ ++ if(_apru_failed) ++ message(FATAL_ERROR "${_program} ${ARGN} failed") ++ else() ++ # Join multi-line outupt ++ string(REGEX REPLACE "[\r\n]" "" _apru_output "${_apru_output}") ++ ++ # Optionally apply the regular expression filter ++ if(NOT ${_regexp} STREQUAL "") ++ string(REGEX REPLACE "${_regexp}" " " _apru_output "${_apru_output}") ++ endif() ++ ++ # Remove leading and trailing spaces ++ string(REGEX REPLACE "^ +" "" _apru_output "${_apru_output}") ++ string(REGEX REPLACE " +$" "" _apru_output "${_apru_output}") ++ ++ separate_arguments(_apru_output) ++ set(${_varname} ${_apru_output} PARENT_SCOPE) ++ endif() ++endfunction(_apru_config) ++ ++# Parse the APR/Util version number from the header ++function(_apru_version _version_varname _major_varname _minor_varname _header _prefix) ++ file(STRINGS ${_header} _apru_major ++ REGEX "^ *# *define +${_prefix}_MAJOR_VERSION +[0-9]+.*$") ++ file(STRINGS ${_header} _apru_minor ++ REGEX "^ *# *define +${_prefix}_MINOR_VERSION +[0-9]+.*$") ++ file(STRINGS ${_header} _apru_patch ++ REGEX "^ *# *define +${_prefix}_PATCH_VERSION +[0-9]+.*$") ++ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_major ${_apru_major}) ++ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_minor ${_apru_minor}) ++ string(REGEX REPLACE "^[^0-9]+([0-9]+).*$" "\\1" _apru_patch ${_apru_patch}) ++ set(${_version_varname} "${_apru_major}.${_apru_minor}.${_apru_patch}" PARENT_SCOPE) ++ set(${_major_varname} ${_apru_major} PARENT_SCOPE) ++ set(${_minor_varname} ${_apru_minor} PARENT_SCOPE) ++endfunction(_apru_version) ++ ++# Windows: Find the DLL (runtime) library ++function(_apru_find_dll _varname _dllname) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") ++ find_library(${_varname} NAMES ${_dllname} ++ PATHS ${ARGN} NO_DEFAULT_PATH PATH_SUFFIXES "bin" "lib") ++endfunction(_apru_find_dll) ++ ++# Extract the main and extra static libraries ++function(_apru_extras _static_var _extra_var) ++ # The first element in the list of static libraries will be the the main ++ # APR/Util static library, anything else will be additional interface ++ # libraries. ++ set(_extra "${ARGN}") ++ list(GET _extra 0 _static) ++ list(REMOVE_AT _extra 0) ++ set(${_static_var} ${_static} PARENT_SCOPE) ++ set(${_extra_var} ${_extra} PARENT_SCOPE) ++endfunction(_apru_extras) ++ ++# From the list of link libraries, extract the imported location ++function(_apru_location _location_var _extralibs_var) ++ unset(_dir) ++ unset(_lib) ++ unset(_extra) ++ foreach(_part ${ARGN}) ++ string(SUBSTRING "${_part}" 0 2 _flag) ++ if(_flag STREQUAL "-L") ++ if(NOT _dir AND NOT _lib) ++ string(SUBSTRING "${_part}" 2 -1 _rest) ++ set(_dir "${_rest}") ++ else() ++ list(APPEND _extra "${_part}") ++ endif() ++ elseif(_flag STREQUAL "-l") ++ if(NOT _lib) ++ string(SUBSTRING "${_part}" 2 -1 _rest) ++ set(_lib "${_rest}") ++ else() ++ list(APPEND _extra " ${_part}") ++ endif() ++ else() ++ if(NOT _lib) ++ set(_lib "${_rest}") ++ else() ++ list(APPEND _extra " ${_part}") ++ endif() ++ endif() ++ endforeach() ++ ++ if(NOT _lib) ++ message(FATAL_ERROR "did not find any libraries in '${ARGN}'") ++ endif() ++ ++ if(NOT _dir) ++ find_library(${_location_var} NAMES "${_lib}") ++ else() ++ find_library(${_location_var} NAMES "${_lib}" PATHS "${_dir}" NO_DEFAULT_PATH) ++ endif() ++ set(${_extralibs_var} ${_extra} PARENT_SCOPE) ++endfunction(_apru_location) ++ ++# ------------------------------------------------------------------- ++ ++if(NOT _apru_include_only_utilities) ++ ++ set(APR_FOUND FALSE) ++ ++ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ ++ if(DEFINED APR_ROOT) ++ get_filename_component(APR_ROOT "${APR_ROOT}" REALPATH) ++ else() ++ message(FATAL_ERROR "APR_ROOT must be defined on Windows") ++ endif() ++ ++ include(CheckIncludeFile) ++ ++ set(APR_INCLUDES "${APR_ROOT}/include") ++ if(NOT EXISTS "${APR_INCLUDES}/apr.h") ++ message(FATAL_ERROR "apr.h was not found in ${APR_INCLUDES}") ++ endif() ++ if(NOT EXISTS "${APR_INCLUDES}/apr_version.h") ++ message(FATAL_ERROR "apr_version.h was not found in ${APR_INCLUDES}") ++ endif() ++ ++ _apru_version(APR_VERSION _apr_major _apr_minor "${APR_INCLUDES}/apr_version.h" "APR") ++ set(_apr_name "apr-${_apr_major}") ++ ++ find_library(APR_LIBRARIES NAMES "lib${_apr_name}.lib" ++ PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib") ++ find_library(APR_STATIC_LIBS NAMES "${_apr_name}.lib" ++ PATHS ${APR_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib") ++ _apru_find_dll(APR_RUNTIME_LIBS "lib${_apr_name}.dll" ${APR_ROOT}) ++ ++ else() # NOT Windows ++ ++ if(DEFINED APR_ROOT) ++ get_filename_component(APR_ROOT "${APR_ROOT}" REALPATH) ++ find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config ++ PATHS "${APR_ROOT}/bin" NO_DEFAULT_PATH) ++ else() ++ find_program(APR_CONFIG_EXECUTABLE NAMES apr-2-config apr-1-config) ++ endif() ++ mark_as_advanced(APR_CONFIG_EXECUTABLE) ++ ++ macro(_apr_invoke _varname _regexp) ++ _apru_config(${APR_CONFIG_EXECUTABLE} ${_varname} "${_regexp}" "${ARGN}") ++ endmacro(_apr_invoke) ++ ++ _apr_invoke(APR_CFLAGS "(^| )-(g|O)[^ ]*" --cppflags --cflags) ++ _apr_invoke(APR_INCLUDES "(^| )-I" --includes) ++ _apr_invoke(APR_LIBRARIES "" --link-ld) ++ _apr_invoke(APR_EXTRALIBS "" --libs) ++ _apr_invoke(APR_VERSION "" --version) ++ string(REGEX REPLACE "^([0-9]+)\\..*$" "\\1" _apr_major "${APR_VERSION}") ++ ++ endif() # NOT Windows ++ ++ if(${_apr_major} GREATER 1) ++ set(APR_CONTAINS_APRUTIL TRUE) ++ else() ++ set(APR_CONTAINS_APRUTIL FALSE) ++ endif() ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(APR ++ REQUIRED_VARS APR_LIBRARIES APR_INCLUDES ++ VERSION_VAR APR_VERSION) ++ ++ if(APR_FOUND) ++ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ ++ if(APR_LIBRARIES AND APR_RUNTIME_LIBS) ++ add_library(APR::APR SHARED IMPORTED) ++ set_target_properties(APR::APR PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APR_INCLUDES}" ++ IMPORTED_LOCATION "${APR_RUNTIME_LIBS}" ++ IMPORTED_IMPLIB "${APR_LIBRARIES}") ++ endif() ++ ++ if(APR_STATIC_LIBS) ++ _apru_extras(_apr_static _apr_extra ${APR_STATIC_LIBS}) ++ add_library(APR::APR_static STATIC IMPORTED) ++ set_target_properties(APR::APR_static PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APR_INCLUDES}" ++ IMPORTED_INTERFACE_LINK_LIBRARIES "${_apr_extra}" ++ IMPORTED_LOCATION "${_apr_static}") ++ endif() ++ ++ else() # NOT Windows ++ ++ _apru_location(_apr_library _apr_extra "${APR_LIBRARIES}") ++ add_library(APR::APR UNKNOWN IMPORTED) ++ set_target_properties(APR::APR PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APR_INCLUDES}" ++ INTERFACE_LINK_LIBRARIES "${APR_EXTRALIBS};${_apr_extra}" ++ IMPORTED_LOCATION "${_apr_library}") ++ ++ endif() # NOT Windows ++ endif(APR_FOUND) ++ ++endif(NOT _apru_include_only_utilities) +diff --git a/build/FindAPRUtil.cmake b/build/FindAPRUtil.cmake +new file mode 100644 +index 0000000..9812320 +--- /dev/null ++++ b/build/FindAPRUtil.cmake +@@ -0,0 +1,195 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++cmake_minimum_required(VERSION 3.0) ++ ++#.rst: ++# FindAPRUtil ++# -------- ++# ++# Find the native Apache Portable Runtime Utilities includes and library. ++# ++# IMPORTED Targets ++# ^^^^^^^^^^^^^^^^ ++# ++# This module defines :prop_tgt:`IMPORTED` target ``APR::APRUTIL``, if ++# APR-Util has been found. On Windows, it may define the :prop_tgt:`IMPORTED` ++# target ``APR::APRUTIL_static`` if the static libraries are found. ++# ++# Result Variables ++# ^^^^^^^^^^^^^^^^ ++# ++# This module defines the following variables: ++# ++# :: ++# ++# APRUTIL_FOUND - True if APR-Util was found ++# APRUTIL_VERSION - The version of APR-Util found (x.y.z) ++# APRUTIL_INCLUDES - Where to find apr.h, etc. ++# APRUTIL_LIBRARIES - Linker switches to use with ld to link against APR ++# ++# :: ++# ++# APRUTIL_EXTRALIBS - Additional libraries to link against ++# APRUTIL_STATIC_LIBS - On Windows: list of APR-Util static libraries ++# APRUTIL_RUNTIME_LIBS - On Windows: list of APR-Util runtime DLLs ++# ++# Hints ++# ^^^^^ ++# ++# A user may set ``APRUtil_ROOT`` to an APR-Util installation root to tell ++# this module where to look. This variable must be defined on Windows. ++ ++ ++if(NOT APR_FOUND) ++ find_package(APR REQUIRED) ++endif() ++ ++set(APRUTIL_FOUND FALSE) ++ ++if(APR_CONTAINS_APRUTIL) ++ ++ set(APRUTIL_VERSION ${APR_VERSION}) ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(APRUTIL ++ REQUIRED_VARS APRUTIL_VERSION ++ VERSION_VAR APRUTIL_VERSION) ++ ++else(APR_CONTAINS_APRUTIL) ++ ++ set(_apru_include_only_utilities TRUE) ++ include(${CMAKE_CURRENT_LIST_DIR}/FindAPR.cmake) ++ unset(_apru_include_only_utilities) ++ ++ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ ++ if(DEFINED APRUtil_ROOT) ++ get_filename_component(APRUtil_ROOT "${APRUtil_ROOT}" REALPATH) ++ else() ++ message(FATAL_ERROR "APRUtil_ROOT must be defined on Windows") ++ endif() ++ ++ include(CheckIncludeFile) ++ ++ set(APRUTIL_INCLUDES "${APRUtil_ROOT}/include") ++ if(NOT EXISTS "${APRUTIL_INCLUDES}/apu.h") ++ message(FATAL_ERROR "apu.h was not found in ${APRUTIL_INCLUDES}") ++ endif() ++ if(NOT EXISTS "${APRUTIL_INCLUDES}/apu_version.h") ++ message(FATAL_ERROR "apu_version.h was not found in ${APRUTIL_INCLUDES}") ++ endif() ++ ++ _apru_version(APRUTIL_VERSION _apu_major _apu_minor "${APRUTIL_INCLUDES}/apu_version.h" "APU") ++ set(_apu_name "aprutil-${_apu_major}") ++ ++ if(${_apu_major} GREATER 1 OR (${_apu_major} EQUAL 1 AND ${_apu_minor} GREATER 5)) ++ set(_apu_expat_name "expat.lib") ++ else() ++ set(_apu_expat_name "xml.lib") ++ endif() ++ ++ find_library(APRUTIL_LIBRARIES NAMES "lib${_apu_name}.lib" ++ PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib") ++ find_library(_apu_static NAMES "${_apu_name}.lib" ++ PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib") ++ find_library(_apu_expat NAMES ${_apu_expat_name} ++ PATHS ${APRUtil_ROOT} NO_DEFAULT_PATH PATH_SUFFIXES "lib") ++ _apru_find_dll(APRUTIL_RUNTIME_LIBS "lib${_apu_name}.dll" ${APRUtil_ROOT}) ++ ++ if(NOT _apu_expat AND (_apu_expat_name MATCHES "expat")) ++ find_package(EXPAT QUIET) ++ if(EXPAT_FOUND) ++ set(_apu_expat ${EXPAT_LIBRARIES}) ++ endif() ++ endif() ++ if(NOT _apu_expat) ++ message(WARNING "Could not find ${_apu_expat_name}" ++ " for APR-Util static linking.") ++ endif() ++ set(APRUTIL_STATIC_LIBS ${_apu_static} ${_apu_expat} ++ CACHE STRING "APR-Util static libraies.") ++ ++ else() # NOT Windows ++ ++ if(DEFINED APRUtil_ROOT) ++ get_filename_component(APRUtil_ROOT "${APRUtil_ROOT}" REALPATH) ++ find_program(APRUTIL_CONFIG_EXECUTABLE apu-1-config ++ PATHS "${APRUtil_ROOT}/bin" NO_DEFAULT_PATH) ++ else() ++ find_program(APRUTIL_CONFIG_EXECUTABLE apu-1-config) ++ endif() ++ mark_as_advanced(APRUTIL_CONFIG_EXECUTABLE) ++ ++ macro(_apu_invoke _varname _regexp) ++ _apru_config(${APRUTIL_CONFIG_EXECUTABLE} ${_varname} "${_regexp}" "${ARGN}") ++ endmacro(_apu_invoke) ++ ++ _apu_invoke(APRUTIL_INCLUDES "(^| )-I" --includes) ++ _apu_invoke(APRUTIL_EXTRALIBS "" --libs) ++ _apu_invoke(APRUTIL_LIBRARIES "" --link-ld) ++ _apu_invoke(APRUTIL_LDFLAGS "" --ldflags) ++ _apu_invoke(APRUTIL_VERSION "" --version) ++ ++ endif() # NOT Windows ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(APRUTIL ++ REQUIRED_VARS APRUTIL_LIBRARIES APRUTIL_INCLUDES ++ VERSION_VAR APRUTIL_VERSION) ++ ++ if(APRUTIL_FOUND) ++ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ ++ if(APRUTIL_LIBRARIES AND APRUTIL_RUNTIME_LIBS) ++ add_library(APR::APRUTIL SHARED IMPORTED) ++ set_target_properties(APR::APRUTIL PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APRUTIL_INCLUDES}" ++ IMPORTED_LOCATION "${APRUTIL_RUNTIME_LIBS}" ++ IMPORTED_IMPLIB "${APRUTIL_LIBRARIES}") ++ if(TARGET APR::APR) ++ set_target_properties(APR::APRUTIL PROPERTIES ++ INTERFACE_LINK_LIBRARIES APR::APR) ++ endif() ++ endif() ++ ++ if(APRUTIL_STATIC_LIBS) ++ _apru_extras(_apu_static _apu_extra ${APRUTIL_STATIC_LIBS}) ++ if(TARGET APR::APR_static) ++ list(APPEND _apu_extra APR::APR_static) ++ endif() ++ add_library(APR::APRUTIL_static STATIC IMPORTED) ++ set_target_properties(APR::APRUTIL_static PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APRUTIL_INCLUDES}" ++ INTERFACE_LINK_LIBRARIES "${_apu_extra}" ++ IMPORTED_LOCATION "${_apu_static}") ++ endif() ++ ++ else() # NOT Windows ++ ++ _apru_location(_apu_library _apu_extra "${APRUTIL_LIBRARIES}") ++ add_library(APR::APRUTIL UNKNOWN IMPORTED) ++ set_target_properties(APR::APRUTIL PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${APRUTIL_INCLUDES}" ++ INTERFACE_LINK_LIBRARIES "${APRUTIL_EXTRALIBS};${_apu_extra}" ++ IMPORTED_LOCATION "${_apu_library}") ++ ++ endif() # NOT Windows ++ endif(APRUTIL_FOUND) ++ ++endif(APR_CONTAINS_APRUTIL) +diff --git a/build/SerfChecks.cmake b/build/SerfChecks.cmake +new file mode 100644 +index 0000000..093833e +--- /dev/null ++++ b/build/SerfChecks.cmake +@@ -0,0 +1,137 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++include(CheckFunctionExists) ++include(CheckIncludeFile) ++include(CheckSymbolExists) ++include(CheckTypeSize) ++ ++function(_CheckFunction var_ name_ libraries_) ++ if(libraries_) ++ set(CMAKE_REQUIRED_LIBRARIES "${libraries_}") ++ else() ++ unset(CMAKE_REQUIRED_LIBRARIES) ++ endif() ++ ++ check_function_exists("${name_}" "serf_foundit_${name_}_") ++ if(serf_foundit_${name_}_) ++ set("${var_}" TRUE PARENT_SCOPE) ++ else() ++ set("${var_}" FALSE PARENT_SCOPE) ++ endif() ++ unset(CMAKE_REQUIRED_LIBRARIES) ++endfunction(_CheckFunction) ++ ++macro(CheckFunction name_ symbol_) ++ _CheckFunction("serf_feature_CheckFunction_${name}_" "${name_}" "${ARGN}") ++ if("${serf_feature_CheckFunction_${name}_}") ++ add_definitions("-D${symbol_}") ++ endif() ++endmacro(CheckFunction) ++ ++macro(CheckNotFunction name_ symbol_) ++ _CheckFunction("serf_feature_CheckNotFunction_${name}_" "${name_}" "${ARGN}") ++ if(NOT "${serf_feature_CheckNotFunction_${name}_}") ++ add_definitions("-D${symbol_}") ++ endif() ++endmacro(CheckNotFunction) ++ ++ ++function(_CheckSymbol var_ name_ header_ includes_) ++ if(includes_) ++ set(CMAKE_REQUIRED_INCLUDES "${includes_}") ++ else() ++ unset(CMAKE_REQUIRED_INCLUDES) ++ endif() ++ ++ check_symbol_exists("${name_}" "${header_}" "serf_foundit_symbol_${name_}_") ++ if(serf_foundit_symbol_${name_}_) ++ set("${var_}" TRUE PARENT_SCOPE) ++ else() ++ set("${var_}" FALSE PARENT_SCOPE) ++ endif() ++ unset(CMAKE_REQUIRED_INCLUDES) ++endfunction(_CheckSymbol) ++ ++macro(CheckFunctionMacro name_ symbol_ header_ includes_) ++ _CheckFunction("serf_feature_CheckFunctionMacro_${name}_" "${name_}" "${ARGN}") ++ if("${serf_feature_CheckFunctionMacro_${name}_}") ++ add_definitions("-D${symbol_}") ++ else() ++ _CheckSymbol("serf_feature_CheckFunctionMacro_${name}_" "${name_}" "${header_}" "${includes_}") ++ if("${serf_feature_CheckFunctionMacro_${name}_}") ++ add_definitions("-D${symbol_}") ++ endif() ++ endif() ++endmacro(CheckFunctionMacro) ++ ++ ++function(_CheckHeader var_ name_ includes_) ++ if(includes_) ++ set(CMAKE_REQUIRED_INCLUDES "${includes_}") ++ else() ++ unset(CMAKE_REQUIRED_INCLUDES) ++ endif() ++ ++ check_include_file("${name_}" "serf_foundit_${name_}_") ++ if(${serf_foundit_${name_}_}) ++ set("${var_}" TRUE PARENT_SCOPE) ++ else() ++ set("${var_}" FALSE PARENT_SCOPE) ++ endif() ++ unset(CMAKE_REQUIRED_INCLUDES) ++endfunction(_CheckHeader) ++ ++macro(CheckHeader name_ symbol_) ++ _CheckHeader("serf_feature_CheckHeader_${name}_" "${name_}" "${ARGN}") ++ if("${serf_feature_CheckHeader_${name}_}") ++ add_definitions("-D${symbol_}") ++ endif() ++endmacro(CheckHeader) ++ ++ ++function(_CheckType var_ name_ header_ includes_) ++ if(includes_) ++ set(CMAKE_REQUIRED_INCLUDES "${includes_}") ++ else() ++ unset(CMAKE_REQUIRED_INCLUDES) ++ endif() ++ ++ if(header_) ++ set(CMAKE_EXTRA_INCLUDE_FILES "${header_}") ++ else() ++ unset(CMAKE_EXTRA_INCLUDE_FILES) ++ endif() ++ ++ check_type_size("${name_}" "serf_foundit_${name_}_") ++ if(${HAVE_serf_foundit_${name_}_}) ++ set("${var_}" TRUE PARENT_SCOPE) ++ else() ++ set("${var_}" FALSE PARENT_SCOPE) ++ endif() ++ unset(CMAKE_REQUIRED_INCLUDES) ++ unset(CMAKE_EXTRA_INCLUDE_FILES) ++endfunction(_CheckType) ++ ++macro(CheckType name_ header_ symbol_) ++ _CheckType("serf_feature_CheckType_${name}_" "${name_}" "${header_}" "${ARGN}") ++ if("${serf_feature_CheckType_${name}_}") ++ add_definitions("-D${symbol_}") ++ endif() ++endmacro(CheckType) +diff --git a/build/SerfPlatform.cmake b/build/SerfPlatform.cmake +new file mode 100644 +index 0000000..18aacef +--- /dev/null ++++ b/build/SerfPlatform.cmake +@@ -0,0 +1,41 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") ++ set(SERF_DARWIN TRUE) ++ if(NOT RELATIVE_RPATH) ++ set(CMAKE_MACOSX_RPATH FALSE) ++ endif() ++ message(STATUS "Target platform is Darwin (macOS)") ++elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ set(SERF_LINUX TRUE) ++ message(STATUS "Target platform is Linux") ++elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ set(SERF_WINDOWS TRUE) ++ if(CMAKE_GENERATOR MATCHES "(Win64|IA64)") ++ set(SERF_WIN64 TRUE) ++ message(STATUS "Target platform is Windows (64-bit)") ++ else() ++ set(SERF_WIN32 TRUE) ++ message(STATUS "Target platform is Windows (32-bit)") ++ endif() ++else() ++ set(SERF_UNIX TRUE) ++ message(STATUS "Assuming generic Unix target platform") ++endif() +diff --git a/build/SerfVersion.cmake b/build/SerfVersion.cmake +new file mode 100644 +index 0000000..04fdc8b +--- /dev/null ++++ b/build/SerfVersion.cmake +@@ -0,0 +1,53 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++# Find the version number in serf.h so that we don't keep it in two places. ++ ++function(serf_parse_version_number_from_header) ++ set(header_ "${SERF_SOURCE_DIR}/serf.h") ++ file(STRINGS "${header_}" version_parts_ ++ REGEX "^ *# *define +SERF_[A-Z]+_VERSION +[0-9]+ *$") ++ ++ foreach(STR ${version_parts_}) ++ if(STR MATCHES "SERF_MAJOR_VERSION") ++ string(REGEX REPLACE "^[^0-9]+([0-9])+ *$" "\\1" major_ ${STR}) ++ elseif(STR MATCHES "SERF_MINOR_VERSION") ++ string(REGEX REPLACE "^[^0-9]+([0-9])+ *$" "\\1" minor_ ${STR}) ++ elseif(STR MATCHES "SERF_PATCH_VERSION") ++ string(REGEX REPLACE "^[^0-9]+([0-9])+ *$" "\\1" patch_ ${STR}) ++ endif() ++ endforeach() ++ ++ if(NOT DEFINED major_ OR NOT DEFINED minor_ OR NOT DEFINED patch_) ++ message(FATAL_ERROR "Could not find the version number in '${header_}'") ++ endif() ++ ++ set(SERF_VERSION "${major_}.${minor_}.${patch_}" PARENT_SCOPE) ++ set(SERF_SOVERSION "0" PARENT_SCOPE) ++ set(SERF_MAJOR_VERSION "${major_}" PARENT_SCOPE) ++ set(SERF_MINOR_VERSION "${minor_}" PARENT_SCOPE) ++ set(SERF_PATCH_VERSION "${patch_}" PARENT_SCOPE) ++endfunction() ++ ++unset(SERF_VERSION) ++unset(SERF_SOVERSION) ++unset(SERF_MAJOR_VERSION) ++unset(SERF_MINOR_VERSION) ++unset(SERF_PATCH_VERSION) ++serf_parse_version_number_from_header() +diff --git a/build/SerfWindowsGenDef.cmake b/build/SerfWindowsGenDef.cmake +new file mode 100644 +index 0000000..a955eae +--- /dev/null ++++ b/build/SerfWindowsGenDef.cmake +@@ -0,0 +1,26 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++# Generate Serf's .def file for Windows DLLs. ++ ++include(SerfWindowsToolkit) ++ ++string(REGEX REPLACE " +" ";" SERF_DEF_BLACKLIST "${SERF_DEF_BLACKLIST}") ++string(REGEX REPLACE " +" ";" SERF_DEF_HEADERS "${SERF_DEF_HEADERS}") ++SerfWindowsGenDef("${SERF_DEF_BLACKLIST}" "${SERF_DEF_FILE}" ${SERF_DEF_HEADERS}) +diff --git a/build/SerfWindowsToolkit.cmake b/build/SerfWindowsToolkit.cmake +new file mode 100644 +index 0000000..fef4837 +--- /dev/null ++++ b/build/SerfWindowsToolkit.cmake +@@ -0,0 +1,55 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++# Generate a Windows DLL .def file from a list of headers. ++function(SerfWindowsGenDef blacklist_ target_) ++ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") ++ set(W "[a-zA-Z_0-9]") # Word characters pattern ++ set(base_func_rx_ "^((${W}+|\\*) )+\\*?(serf_[a-z]${W}*)\\(") ++ set(base_type_rx_ "^extern const serf_bucket_type_t (serf_[a-z_]*)") ++ set(func_search_rx_ "${base_func_rx_}") ++ set(type_search_rx_ "${base_type_rx_};") ++ set(func_name_rx_ "${base_func_rx_}.*$") ++ set(type_name_rx_ "${base_type_rx_}.*$") ++ ++ foreach(file_ ${ARGN}) ++ message(STATUS "Looking for exports in ${file_}") ++ file(STRINGS ${file_} funcs_ REGEX "${func_search_rx_}") ++ file(STRINGS ${file_} types_ REGEX "${type_search_rx_}") ++ foreach(sym_ ${funcs_}) ++ string(REGEX REPLACE "${func_name_rx_}" "\\3" def_ ${sym_}) ++ list(APPEND defs_ ${def_}) ++ endforeach() ++ foreach(sym_ ${types_}) ++ string(REGEX REPLACE "${type_name_rx_}" "\\1" def_ ${sym_}) ++ list(APPEND defs_ ${def_}) ++ endforeach() ++ endforeach() ++ ++ list(SORT defs_) ++ list(REMOVE_DUPLICATES defs_) ++ file(WRITE ${target_} "EXPORTS\n") ++ foreach(def_ ${defs_}) ++ list(FIND blacklist_ "${def_}" skip_) ++ if(skip_ LESS 0) ++ file(APPEND ${target_} "${def_}\n") ++ endif() ++ endforeach() ++ endif() ++endfunction(SerfWindowsGenDef) +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +new file mode 100644 +index 0000000..ce56f15 +--- /dev/null ++++ b/test/CMakeLists.txt +@@ -0,0 +1,70 @@ ++# =================================================================== ++# Licensed to the Apache Software Foundation (ASF) under one ++# or more contributor license agreements. See the NOTICE file ++# distributed with this work for additional information ++# regarding copyright ownership. The ASF licenses this file ++# to you under the Apache License, Version 2.0 (the ++# "License"); you may not use this file except in compliance ++# with the License. You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, ++# software distributed under the License is distributed on an ++# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ++# KIND, either express or implied. See the License for the ++# specific language governing permissions and limitations ++# under the License. ++# =================================================================== ++ ++ ++set(TEST_ALL_SOURCES ++ "test_all.c" ++ "CuTest.c" ++ "test_util.c" ++ "test_context.c" ++ "test_buckets.c" ++ "test_auth.c" ++ "mock_buckets.c" ++ "test_ssl.c" ++ "server/test_server.c" ++ "server/test_sslserver.c" ++) ++ ++set(SIMPLE_TEST_TARGETS ++ "serf_get" ++ "serf_response" ++ "serf_request" ++ "serf_spider" ++ "serf_server" ++ "serf_bwtp" ++) ++ ++if(CC_LIKE_GNUC) ++ # MockHTTP requires C99 standard, so use it for the test suite. ++ string(REPLACE "-std=c89" "-std=c99" CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) ++endif() ++ ++foreach(TEST_TARGET ${SIMPLE_TEST_TARGETS}) ++ add_executable(${TEST_TARGET} "${TEST_TARGET}.c") ++ add_dependencies(${TEST_TARGET} serf_static) ++ target_link_libraries(${TEST_TARGET} serf_static) ++endforeach() ++ ++add_executable(test_all ${TEST_ALL_SOURCES}) ++add_dependencies(test_all serf_static) ++target_compile_definitions(test_all PRIVATE "-DMOCKHTTP_OPENSSL") ++target_include_directories(test_all SYSTEM BEFORE PRIVATE ${SERF_DEPENDENCY_INCLUDES}) ++target_link_libraries(test_all serf_static) ++ ++file(GLOB RESPONSE_TEST_CASES "${CMAKE_CURRENT_SOURCE_DIR}/testcases/*.response") ++foreach(TEST_CASE ${RESPONSE_TEST_CASES}) ++ get_filename_component(TEST_CASE_NAME ${TEST_CASE} NAME) ++ add_test(NAME "${TEST_CASE_NAME}" COMMAND serf_response "${TEST_CASE}") ++ list(APPEND RESPONSE_TESTS "${TEST_CASE_NAME}") ++endforeach() ++ ++add_test(NAME test_all COMMAND test_all) ++ ++set_tests_properties(${RESPONSE_TESTS} test_all PROPERTIES ++ ENVIRONMENT srcdir=${SERF_SOURCE_DIR}) diff --git a/SOURCES/libserf-1.3.9-errgetfunc.patch b/SOURCES/libserf-1.3.9-errgetfunc.patch new file mode 100644 index 0000000..c5ac4a6 --- /dev/null +++ b/SOURCES/libserf-1.3.9-errgetfunc.patch @@ -0,0 +1,13 @@ +--- serf-1.3.9/buckets/ssl_buckets.c.errgetfunc ++++ serf-1.3.9/buckets/ssl_buckets.c +@@ -1204,6 +1204,10 @@ + } + } + ++#ifndef ERR_GET_FUNC ++#define ERR_GET_FUNC(ec) (0) ++#endif ++ + static int ssl_need_client_cert(SSL *ssl, X509 **cert, EVP_PKEY **pkey) + { + serf_ssl_context_t *ctx = SSL_get_app_data(ssl); diff --git a/SOURCES/libserf-norpath.patch b/SOURCES/libserf-norpath.patch new file mode 100644 index 0000000..385dfd3 --- /dev/null +++ b/SOURCES/libserf-norpath.patch @@ -0,0 +1,34 @@ +diff -uNr serf-1.3.9.orig/SConstruct serf-1.3.9/SConstruct +--- serf-1.3.9.orig/SConstruct 2016-09-02 08:22:35.180532030 +0200 ++++ serf-1.3.9/SConstruct 2016-09-02 08:22:56.653174061 +0200 +@@ -224,9 +224,6 @@ + else: + LIBNAMESTATIC = 'serf-${MAJOR}' + +-env.Append(RPATH=libdir, +- PDB='${TARGET.filebase}.pdb') +- + if sys.platform == 'darwin': + # linkflags.append('-Wl,-install_name,@executable_path/%s.dylib' % (LIBNAME,)) + env.Append(LINKFLAGS=['-Wl,-install_name,%s/%s.dylib' % (thisdir, LIBNAME,)]) +@@ -385,12 +382,6 @@ + if sys.platform == 'win32': + env.Append(CPPDEFINES=['SERF_HAVE_SSPI']) + +-# On some systems, the -R values that APR describes never make it into actual +-# RPATH flags. We'll manually map all directories in LIBPATH into new +-# flags to set RPATH values. +-for d in env['LIBPATH']: +- env.Append(RPATH=':'+d) +- + # Set up the construction of serf-*.pc + pkgconfig = env.Textfile('serf-%d.pc' % (MAJOR,), + env.File('build/serf.pc.in'), +@@ -461,7 +452,6 @@ + TEST_EXES = [ os.path.join('test', '%s' % (prog)) for prog in TEST_PROGRAMS ] + + # Find the (dynamic) library in this directory +-tenv.Replace(RPATH=thisdir) + tenv.Prepend(LIBS=[LIBNAMESTATIC, ], + LIBPATH=[thisdir, ]) + diff --git a/SOURCES/libserf-python3.patch b/SOURCES/libserf-python3.patch new file mode 100644 index 0000000..3c7edc8 --- /dev/null +++ b/SOURCES/libserf-python3.patch @@ -0,0 +1,60 @@ +diff -up serf-1.3.9/SConstruct.python3 serf-1.3.9/SConstruct +--- serf-1.3.9/SConstruct.python3 2018-07-02 17:21:47.331685070 +0200 ++++ serf-1.3.9/SConstruct 2018-07-02 17:27:12.316413515 +0200 +@@ -20,6 +20,8 @@ + # ==================================================================== + # + ++from __future__ import print_function ++ + import sys + import os + import re +@@ -166,7 +168,7 @@ env.Append(BUILDERS = { + match = re.search('SERF_MAJOR_VERSION ([0-9]+).*' + 'SERF_MINOR_VERSION ([0-9]+).*' + 'SERF_PATCH_VERSION ([0-9]+)', +- env.File('serf.h').get_contents(), ++ env.File('serf.h').get_contents().decode('utf-8'), + re.DOTALL) + MAJOR, MINOR, PATCH = [int(x) for x in match.groups()] + env.Append(MAJOR=str(MAJOR)) +@@ -183,7 +185,7 @@ CALLOUT_OKAY = not (env.GetOption('clean + + unknown = opts.UnknownVariables() + if unknown: +- print 'Warning: Used unknown variables:', ', '.join(unknown.keys()) ++ print('Warning: Used unknown variables:', ', '.join(unknown.keys())) + + apr = str(env['APR']) + apu = str(env['APU']) +diff -uap serf-1.3.9/build/check.py.python3 serf-1.3.9/build/check.py +--- serf-1.3.9/build/check.py.python3 2015-09-17 13:46:24.000000000 +0100 ++++ serf-1.3.9/build/check.py 2018-12-17 11:40:06.524901129 +0000 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # + # check.py : Run all the test cases. + # +@@ -52,16 +52,16 @@ if __name__ == '__main__': + + # Find test responses and run them one by one + for case in glob.glob(testdir + "/testcases/*.response"): +- print "== Testing %s ==" % (case) ++ print("== Testing %s ==" % (case)) + try: + subprocess.check_call([SERF_RESPONSE_EXE, case]) + except subprocess.CalledProcessError: +- print "ERROR: test case %s failed" % (case) ++ print("ERROR: test case %s failed" % (case)) + sys.exit(1) + +- print "== Running the unit tests ==" ++ print("== Running the unit tests ==") + try: + subprocess.check_call(TEST_ALL_EXE) + except subprocess.CalledProcessError: +- print "ERROR: test(s) failed in test_all" ++ print("ERROR: test(s) failed in test_all") + sys.exit(1) diff --git a/SPECS/libserf.spec b/SPECS/libserf.spec new file mode 100644 index 0000000..c44cc59 --- /dev/null +++ b/SPECS/libserf.spec @@ -0,0 +1,199 @@ +Name: libserf +Version: 1.3.9 +Release: 26%{?dist} +Summary: High-Performance Asynchronous HTTP Client Library +License: ASL 2.0 +URL: http://serf.apache.org/ +Source0: https://archive.apache.org/dist/serf/serf-%{version}.tar.bz2 +BuildRequires: gcc, pkgconfig +BuildRequires: apr-devel, apr-util-devel, krb5-devel, openssl-devel +BuildRequires: zlib-devel, cmake +Patch0: %{name}-norpath.patch +Patch1: %{name}-python3.patch +Patch2: %{name}-1.3.9-cmake.patch +Patch3: %{name}-1.3.9-errgetfunc.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2004714 +# Patch BIO to work with openssl 3 +Patch4: %{name}-1.3.9-bio-ctrl.patch + +%description +The serf library is a C-based HTTP client library built upon the Apache +Portable Runtime (APR) library. It multiplexes connections, running the +read/write communication asynchronously. Memory copies and transformations are +kept to a minimum to provide high performance operation. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: apr-devel%{?_isa} + +%description devel +This package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -n serf-%{version} -p1 + +%build +%cmake -DCMAKE_INSTALL_LIBDIR=%{_libdir} +%cmake_build + +%install +%cmake_install +find %{buildroot}%{_libdir} -type f -name '*.*a' -delete -print + +mkdir -p %{buildroot}%{_libdir}/pkgconfig +mv %{buildroot}%{_datadir}/pkgconfig/serf.pc %{buildroot}%{_libdir}/pkgconfig/serf.pc +rm -rf %{buildroot}%{_datadir} + +%check +%ctest || true + +%ldconfig_scriptlets + +%files +%license LICENSE NOTICE +%{_libdir}/*.so.* + +%files devel +%doc CHANGES README design-guide.txt +%{_includedir}/serf-1/ +%{_libdir}/*.so +%{_libdir}/pkgconfig/serf*.pc + +%changelog +* Fri Sep 17 2021 Tomas Korbar - 1.3.9-26 +- Fix BIO control function implementation +- Resolves: rhbz#2004714 + +* Mon Aug 09 2021 Mohan Boddu - 1.3.9-25 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Aug 9 2021 Joe Orton - 1.3.9-24 +- fix FTBFS with OpenSSL 3.0 beta 2 (#1991008) + +* Wed Jun 30 2021 Tomas Korbar - 1.3.9-23 +- Fix soname problems +- Related: rhbz#1974621 + +* Wed Jun 30 2021 Tomas Korbar - 1.3.9-22 +- Remove scons from build requirements +- Related: rhbz#1974621 + +* Wed Jun 30 2021 Tomas Korbar - 1.3.9-21 +- Backport cmake support +- Resolves: rhbz#1974621 + +* Wed Jun 16 2021 Mohan Boddu - 1.3.9-20 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Fri Apr 16 2021 Mohan Boddu - 1.3.9-19 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 1.3.9-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 1.3.9-17 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.3.9-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jan 29 2020 Fedora Release Engineering - 1.3.9-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Nov 14 2019 Joe Orton - 1.3.9-14 +- revert broken IPv6 workaround + +* Thu Jul 25 2019 Fedora Release Engineering - 1.3.9-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Apr 16 2019 Joe Orton - 1.3.9-12 +- fix IPv6 fallback behaviour (#1130328) +- use Python3 in tests + +* Fri Feb 01 2019 Fedora Release Engineering - 1.3.9-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 1.3.9-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 02 2018 Igor Gnatenko - 1.3.9-9 +- Switch to %%ldconfig_scriptlets + +* Mon Jul 02 2018 Nils Philippsen - 1.3.9-8 +- use the Python 3 version of scons from Fedora 29 on + +* Wed Mar 7 2018 Joe Orton - 1.3.9-7 +- add gcc to BR + +* Wed Feb 07 2018 Fedora Release Engineering - 1.3.9-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.3.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.3.9-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.3.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Nov 14 2016 Joe Orton - 1.3.9-2 +- rebuild for OpenSSL 1.1.0 + +* Fri Sep 02 2016 Igor Gnatenko - 1.3.9-1 +- Update to 1.3.9 (RHBZ #1372506) + +* Sat Apr 09 2016 Igor Gnatenko - 1.3.8-3 +- Add LDFLAGS provided by RPM + +* Thu Feb 04 2016 Fedora Release Engineering - 1.3.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 23 2015 Joe Orton - 1.3.8-1 +- update to 1.3.8 (#1155115, #1155392) +- remove RPATHs (#1154690) + +* Wed Jun 17 2015 Fedora Release Engineering - 1.3.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 1.3.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Aug 12 2014 Christopher Meng - 1.3.7-1 +- Update to 1.3.7 + +* Tue Jun 17 2014 Christopher Meng - 1.3.6-1 +- Update to 1.3.6 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.3.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Apr 30 2014 Christopher Meng - 1.3.5-1 +- Update to 1.3.5 + +* Mon Feb 17 2014 Joe Orton - 1.3.4-1 +- Update to 1.3.4 + +* Tue Dec 10 2013 Joe Orton - 1.3.3-1 +- Update to 1.3.3 + +* Wed Nov 6 2013 Joe Orton - 1.3.2-1 +- Update to 1.3.2 +- Require krb5-devel for libgssapi (#1027011) + +* Sat Aug 03 2013 Fedora Release Engineering - 1.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jun 17 2013 Christopher Meng - 1.2.1-3 +- SPEC cleanup. + +* Thu Jun 13 2013 Christopher Meng - 1.2.1-2 +- Fix the permission of the library. + +* Sun Jun 09 2013 Christopher Meng - 1.2.1-1 +- Initial Package.