From e1d33e6fb6d214f3cedb107d3b6288c60e391cf2 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Oct 12 2010 11:05:55 +0000 Subject: Added patches for compatibility with R12B5 Signed-off-by: Peter Lemenkov --- diff --git a/couchdb-0001-Force-init-script-installation.patch b/couchdb-0001-Force-init-script-installation.patch index 0419aa9..98df718 100644 --- a/couchdb-0001-Force-init-script-installation.patch +++ b/couchdb-0001-Force-init-script-installation.patch @@ -1,7 +1,7 @@ -From 3e55695afb015dbc4e478739a1c467bf7ad859b0 Mon Sep 17 00:00:00 2001 +From 0928d966e2f378efc7dc393d2664276c71f6c5a4 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Thu, 27 May 2010 15:17:20 +0400 -Subject: [PATCH 01/11] Force init script installation +Subject: [PATCH 01/13] Force init script installation --- configure.ac | 16 +++------------- @@ -35,5 +35,5 @@ index c609a08..cd8c807 100644 if test "$use_launchd" = "yes"; then -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0002-Install-into-erllibdir-by-default.patch b/couchdb-0002-Install-into-erllibdir-by-default.patch index 17f65e5..c1a0f0e 100644 --- a/couchdb-0002-Install-into-erllibdir-by-default.patch +++ b/couchdb-0002-Install-into-erllibdir-by-default.patch @@ -1,7 +1,7 @@ -From 9fbd5b93c786bfd0454679147c253ad432fad46f Mon Sep 17 00:00:00 2001 +From 2024b34484f62475cf320aca1386f7142466329d Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Thu, 27 May 2010 15:18:29 +0400 -Subject: [PATCH 02/11] Install into erllibdir by default +Subject: [PATCH 02/13] Install into erllibdir by default --- configure | 4 ++-- @@ -30,5 +30,5 @@ index 8d47467..239eff7 100755 localerlanglibdir=${locallibdir}/erlang/lib -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0003-Remove-bundled-erlang-oauth-library.patch b/couchdb-0003-Remove-bundled-erlang-oauth-library.patch index a9896d9..4072b52 100644 --- a/couchdb-0003-Remove-bundled-erlang-oauth-library.patch +++ b/couchdb-0003-Remove-bundled-erlang-oauth-library.patch @@ -1,7 +1,7 @@ -From 85a48df82cd6add8fd40f0ef7e548cfbc9fb447e Mon Sep 17 00:00:00 2001 +From 4691f6311bbf0e46e7fb1fd2139bdc14426ce5a5 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Wed, 14 Jul 2010 17:57:54 +0400 -Subject: [PATCH 03/11] Remove bundled erlang-oauth library +Subject: [PATCH 03/13] Remove bundled erlang-oauth library --- configure | 3 - @@ -1000,5 +1000,5 @@ index 4c42edb..79b0417 100644 code:add_pathz(filename:join([builddir(), "src", Name])) end, Paths). -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0004-Remove-bundled-erlang-etap-library.patch b/couchdb-0004-Remove-bundled-erlang-etap-library.patch index b98fd8c..9cc3460 100644 --- a/couchdb-0004-Remove-bundled-erlang-etap-library.patch +++ b/couchdb-0004-Remove-bundled-erlang-etap-library.patch @@ -1,7 +1,7 @@ -From 6c9b556d411d14e9dadd550b6b8ff9088cf5bfbf Mon Sep 17 00:00:00 2001 +From 138d0cc7848e305bbd0ad92aa352a9ca5d978164 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Wed, 14 Jul 2010 18:00:03 +0400 -Subject: [PATCH 04/11] Remove bundled erlang-etap library +Subject: [PATCH 04/13] Remove bundled erlang-etap library --- configure | 3 - @@ -1908,5 +1908,5 @@ index 79b0417..c57d7a8 100644 code:add_pathz(filename:join([builddir(), "src", Name])) end, Paths). -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0005-Remove-bundled-mochiweb-library.patch b/couchdb-0005-Remove-bundled-mochiweb-library.patch index e7dd308..dfd1856 100644 --- a/couchdb-0005-Remove-bundled-mochiweb-library.patch +++ b/couchdb-0005-Remove-bundled-mochiweb-library.patch @@ -1,7 +1,7 @@ -From bad54224de05d8ba1f2ec2b270b1b61b9d9eab7e Mon Sep 17 00:00:00 2001 +From fd2a4e300e7c56608402cd851a73d5824be02fdb Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Wed, 14 Jul 2010 18:01:45 +0400 -Subject: [PATCH 05/11] Remove bundled mochiweb library +Subject: [PATCH 05/13] Remove bundled mochiweb library --- configure | 3 - @@ -7746,5 +7746,5 @@ index c57d7a8..948958c 100644 code:add_pathz(filename:join([builddir(), "src", Name])) end, Paths). -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0006-Remove-bundled-ibrowse-library.patch b/couchdb-0006-Remove-bundled-ibrowse-library.patch index 3d599c2..46e5834 100644 --- a/couchdb-0006-Remove-bundled-ibrowse-library.patch +++ b/couchdb-0006-Remove-bundled-ibrowse-library.patch @@ -1,7 +1,7 @@ -From 179b20af1a2dff0f8976e4e0071c4b31c04bcfb8 Mon Sep 17 00:00:00 2001 +From a69bb8849d0cc2d1e872a0334fde6a34ea7741b3 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Fri, 6 Aug 2010 16:05:02 +0400 -Subject: [PATCH 06/11] Remove bundled ibrowse library +Subject: [PATCH 06/13] Remove bundled ibrowse library Signed-off-by: Peter Lemenkov --- @@ -4085,5 +4085,5 @@ index 948958c..2650fbb 100644 code:add_pathz(filename:join([builddir(), "src", Name])) end, Paths). -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0007-Workaround-for-system-wide-ibrowse.patch b/couchdb-0007-Workaround-for-system-wide-ibrowse.patch index 1249b01..d14d671 100644 --- a/couchdb-0007-Workaround-for-system-wide-ibrowse.patch +++ b/couchdb-0007-Workaround-for-system-wide-ibrowse.patch @@ -1,7 +1,7 @@ -From 279688f94b56ddd85a6311c426780c6eda787edf Mon Sep 17 00:00:00 2001 +From d09bcecb010af30c2bc034b15982f72e6ae93c45 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Tue, 8 Jun 2010 17:30:49 +0400 -Subject: [PATCH 07/11] Workaround for system-wide ibrowse +Subject: [PATCH 07/13] Workaround for system-wide ibrowse --- src/couchdb/couch_rep_changes_feed.erl | 2 +- @@ -64,5 +64,5 @@ index 3edc1f3..8722f3f 100644 -record (state, { parent, -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0008-Remove-pid-file-after-stop.patch b/couchdb-0008-Remove-pid-file-after-stop.patch index 6f71b25..be11df9 100644 --- a/couchdb-0008-Remove-pid-file-after-stop.patch +++ b/couchdb-0008-Remove-pid-file-after-stop.patch @@ -1,7 +1,7 @@ -From 16ee55f5fa6d1e8f85de6fd17d4195e176bfca0c Mon Sep 17 00:00:00 2001 +From f62be09cd73dcf53703971c1aecb4a3356adc83c Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Mon, 7 Jun 2010 15:08:42 +0400 -Subject: [PATCH 08/11] Remove pid-file after stop +Subject: [PATCH 08/13] Remove pid-file after stop --- bin/couchdb.tpl.in | 4 +--- @@ -24,5 +24,5 @@ index 94d4743..af5cb01 100644 if kill -1 $PID 2> /dev/null; then if test "$1" = "false"; then -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0009-deleting-a-DB-while-it-was-being-opened-would-crash-.patch b/couchdb-0009-deleting-a-DB-while-it-was-being-opened-would-crash-.patch index 0274891..ad0cbcd 100644 --- a/couchdb-0009-deleting-a-DB-while-it-was-being-opened-would-crash-.patch +++ b/couchdb-0009-deleting-a-DB-while-it-was-being-opened-would-crash-.patch @@ -1,7 +1,7 @@ -From b1ed77ec73f756b820e7c8269cb126ffa46a1bbc Mon Sep 17 00:00:00 2001 +From bfbe8a8a727f5ddeb80a268ef4915aba27464868 Mon Sep 17 00:00:00 2001 From: Adam Kocoloski Date: Sun, 11 Jul 2010 01:00:50 +0000 -Subject: [PATCH 09/11] deleting a DB while it was being opened would crash couch_server +Subject: [PATCH 09/13] deleting a DB while it was being opened would crash couch_server git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@962964 13f79535-47bb-0310-9956-ffa450edef68 --- @@ -22,5 +22,5 @@ index 43fd904..88bd610 100644 [{_, {opened, Pid, LruTime}}] -> couch_util:shutdown_sync(Pid), -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0010-Do-not-install-gzipped-docs.patch b/couchdb-0010-Do-not-install-gzipped-docs.patch index 0228c8c..e225265 100644 --- a/couchdb-0010-Do-not-install-gzipped-docs.patch +++ b/couchdb-0010-Do-not-install-gzipped-docs.patch @@ -1,7 +1,7 @@ -From 4d79cfe314d2b08a46cf25460402e8d7db788576 Mon Sep 17 00:00:00 2001 +From 25e110362bcadbd8f2100fc33f6041d702622cc2 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Thu, 26 Aug 2010 13:07:33 +0400 -Subject: [PATCH 10/11] Do not install gzipped docs +Subject: [PATCH 10/13] Do not install gzipped docs Signed-off-by: Peter Lemenkov --- @@ -216,5 +216,5 @@ index 0e9f10a..bc76e26 100644 check: dev $(top_builddir)/test/etap/run -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0011-Fix-respawn-timeout-to-match-default-value.patch b/couchdb-0011-Fix-respawn-timeout-to-match-default-value.patch index 99cce6e..bf545dc 100644 --- a/couchdb-0011-Fix-respawn-timeout-to-match-default-value.patch +++ b/couchdb-0011-Fix-respawn-timeout-to-match-default-value.patch @@ -1,7 +1,7 @@ -From 3dae034d5c30263c9d28c060422f89847cdb3c53 Mon Sep 17 00:00:00 2001 +From b112a376b24b831ca7e3160e0e421734982131a9 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Thu, 26 Aug 2010 13:22:56 +0400 -Subject: [PATCH 11/11] Fix respawn timeout to match default value +Subject: [PATCH 11/13] Fix respawn timeout to match default value Signed-off-by: Peter Lemenkov --- @@ -20,5 +20,5 @@ index c2a3f2a..f589c0a 100644 +COUCHDB_RESPAWN_TIMEOUT=0 COUCHDB_OPTIONS= -- -1.7.2.1 +1.7.2.3 diff --git a/couchdb-0012-Relax-curl-dependency-to-7.15-for-RHEL5.patch b/couchdb-0012-Relax-curl-dependency-to-7.15-for-RHEL5.patch new file mode 100644 index 0000000..e2c3406 --- /dev/null +++ b/couchdb-0012-Relax-curl-dependency-to-7.15-for-RHEL5.patch @@ -0,0 +1,100 @@ +From a3d55325758f58cff0c56574f084fe8cac29c089 Mon Sep 17 00:00:00 2001 +From: Peter Lemenkov +Date: Sat, 21 Aug 2010 12:49:21 +0400 +Subject: [PATCH 12/13] Relax curl dependency to 7.15 (for RHEL5) + +Signed-off-by: Peter Lemenkov +--- + configure | 8 ++++---- + configure.ac | 2 +- + src/couchdb/priv/couch_js/http.c | 14 -------------- + 3 files changed, 5 insertions(+), 19 deletions(-) + +diff --git a/configure b/configure +index 3fbc92b..9859f0c 100755 +--- a/configure ++++ b/configure +@@ -11835,9 +11835,9 @@ fi + echo "*** Or see http://curl.haxx.se/" + else + CURL_VERSION=`$CURL_CONFIG --version | cut -d" " -f2` +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl >= 7.18.0" >&5 +-$as_echo_n "checking for curl >= 7.18.0... " >&6; } +- VERSION_CHECK=`expr $CURL_VERSION \>\= 7.18.0` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl >= 7.15.0" >&5 ++$as_echo_n "checking for curl >= 7.15.0... " >&6; } ++ VERSION_CHECK=`expr $CURL_VERSION \>\= 7.15.0` + if test "$VERSION_CHECK" = "1" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } +@@ -11859,7 +11859,7 @@ $as_echo "$CURL_LIBS" >&6; } + CURL_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. +- echo "can't find curl >= 7.18.0" ++ echo "can't find curl >= 7.15.0" + fi + + +diff --git a/configure.ac b/configure.ac +index 905f6d1..0fa689e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -214,7 +214,7 @@ AC_ARG_WITH([win32-curl], [AC_HELP_STRING([--with-win32-curl=PATH], + CURL_LIBS="$withval/lib/libcurl" + CURL_LDFLAGS="-l$CURL_LIBS -lWs2_32 -lkernel32 -luser32 -ladvapi32 -lWldap32" + ], [ +- AC_CHECK_CURL([7.18.0]) ++ AC_CHECK_CURL([7.15.0]) + CURL_LDFLAGS=-lcurl + ]) + +diff --git a/src/couchdb/priv/couch_js/http.c b/src/couchdb/priv/couch_js/http.c +index 6c2a8a8..a672b66 100644 +--- a/src/couchdb/priv/couch_js/http.c ++++ b/src/couchdb/priv/couch_js/http.c +@@ -377,7 +377,6 @@ CURL* HTTP_HANDLE = NULL; + char ERRBUF[CURL_ERROR_SIZE]; + + static size_t send_body(void *ptr, size_t size, size_t nmem, void *data); +-static int seek_body(void *ptr, curl_off_t offset, int origin); + static size_t recv_body(void *ptr, size_t size, size_t nmem, void *data); + static size_t recv_header(void *ptr, size_t size, size_t nmem, void *data); + +@@ -404,8 +403,6 @@ go(JSContext* cx, JSObject* obj, HTTPData* http, char* body, size_t bodylen) + { + HTTP_HANDLE = curl_easy_init(); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_READFUNCTION, send_body); +- curl_easy_setopt(HTTP_HANDLE, CURLOPT_SEEKFUNCTION, +- (curl_seek_callback) seek_body); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_HEADERFUNCTION, recv_header); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_WRITEFUNCTION, recv_body); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_NOPROGRESS, 1); +@@ -458,7 +455,6 @@ go(JSContext* cx, JSObject* obj, HTTPData* http, char* body, size_t bodylen) + curl_easy_setopt(HTTP_HANDLE, CURLOPT_URL, http->url); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_HTTPHEADER, http->req_headers); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_READDATA, &state); +- curl_easy_setopt(HTTP_HANDLE, CURLOPT_SEEKDATA, &state); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_WRITEHEADER, &state); + curl_easy_setopt(HTTP_HANDLE, CURLOPT_WRITEDATA, &state); + +@@ -555,16 +551,6 @@ send_body(void *ptr, size_t size, size_t nmem, void *data) + return towrite; + } + +-static int +-seek_body(void* ptr, curl_off_t offset, int origin) +-{ +- CurlState* state = (CurlState*) ptr; +- if(origin != SEEK_SET) return -1; +- +- state->sent = (size_t) offset; +- return (int) state->sent; +-} +- + static size_t + recv_header(void *ptr, size_t size, size_t nmem, void *data) + { +-- +1.7.2.3 + diff --git a/couchdb-0013-No-erlang-min-2-and-erlang-max-2-in-R12B.patch b/couchdb-0013-No-erlang-min-2-and-erlang-max-2-in-R12B.patch new file mode 100644 index 0000000..60038c8 --- /dev/null +++ b/couchdb-0013-No-erlang-min-2-and-erlang-max-2-in-R12B.patch @@ -0,0 +1,78 @@ +From 5d519860e6b83723b2db0f81b1250c702f4f5d2b Mon Sep 17 00:00:00 2001 +From: Peter Lemenkov +Date: Tue, 12 Oct 2010 14:09:37 +0400 +Subject: [PATCH 13/13] No erlang:min/2 and erlang:max/2 in R12B + +Signed-off-by: Peter Lemenkov +--- + src/couchdb/couch_auth_cache.erl | 2 +- + src/couchdb/couch_query_servers.erl | 4 ++-- + src/couchdb/couch_util.erl | 13 +++++++++++++ + 3 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/src/couchdb/couch_auth_cache.erl b/src/couchdb/couch_auth_cache.erl +index 078bfcc..0b7d27f 100644 +--- a/src/couchdb/couch_auth_cache.erl ++++ b/src/couchdb/couch_auth_cache.erl +@@ -175,7 +175,7 @@ handle_call({new_max_cache_size, NewSize}, _From, State) -> + end, + NewState = State#state{ + max_cache_size = NewSize, +- cache_size = erlang:min(NewSize, State#state.cache_size) ++ cache_size = couch_util:min(NewSize, State#state.cache_size) + }, + {reply, ok, NewState}; + +diff --git a/src/couchdb/couch_query_servers.erl b/src/couchdb/couch_query_servers.erl +index c4f1bf0..97d06cf 100644 +--- a/src/couchdb/couch_query_servers.erl ++++ b/src/couchdb/couch_query_servers.erl +@@ -166,7 +166,7 @@ builtin_sum_rows(KVs) -> + + builtin_stats(reduce, [[_,First]|Rest]) when is_number(First) -> + Stats = lists:foldl(fun([_K,V], {S,C,Mi,Ma,Sq}) when is_number(V) -> +- {S+V, C+1, erlang:min(Mi,V), erlang:max(Ma,V), Sq+(V*V)}; ++ {S+V, C+1, couch_util:min(Mi,V), couch_util:max(Ma,V), Sq+(V*V)}; + (_, _) -> + throw({invalid_value, + <<"builtin _stats function requires map values to be numbers">>}) +@@ -178,7 +178,7 @@ builtin_stats(rereduce, [[_,First]|Rest]) -> + {[{sum,Sum0}, {count,Cnt0}, {min,Min0}, {max,Max0}, {sumsqr,Sqr0}]} = First, + Stats = lists:foldl(fun([_K,Red], {S,C,Mi,Ma,Sq}) -> + {[{sum,Sum}, {count,Cnt}, {min,Min}, {max,Max}, {sumsqr,Sqr}]} = Red, +- {Sum+S, Cnt+C, erlang:min(Min,Mi), erlang:max(Max,Ma), Sqr+Sq} ++ {Sum+S, Cnt+C, couch_util:min(Min,Mi), couch_util:max(Max,Ma), Sqr+Sq} + end, {Sum0,Cnt0,Min0,Max0,Sqr0}, Rest), + {Sum, Cnt, Min, Max, Sqr} = Stats, + {[{sum,Sum}, {count,Cnt}, {min,Min}, {max,Max}, {sumsqr,Sqr}]}. +diff --git a/src/couchdb/couch_util.erl b/src/couchdb/couch_util.erl +index 8217a26..2ca001b 100644 +--- a/src/couchdb/couch_util.erl ++++ b/src/couchdb/couch_util.erl +@@ -27,6 +27,7 @@ + -export([get_value/2, get_value/3]). + -export([md5/1, md5_init/0, md5_update/2, md5_final/1]). + -export([reorder_results/2]). ++-export([min/2, max/2]). + + -include("couch_db.hrl"). + -include_lib("kernel/include/file.hrl"). +@@ -452,3 +453,15 @@ reorder_results(Keys, SortedResults) when length(Keys) < 100 -> + reorder_results(Keys, SortedResults) -> + KeyDict = dict:from_list(SortedResults), + [dict:fetch(Key, KeyDict) || Key <- Keys]. ++ ++min(A,B) -> ++ case (A < B) of ++ true -> A; ++ _ -> B ++ end. ++ ++max(A,B) -> ++ case (A > B) of ++ true -> A; ++ _ -> B ++ end. +-- +1.7.2.3 + diff --git a/couchdb.spec b/couchdb.spec index b1144a4..253feb4 100644 --- a/couchdb.spec +++ b/couchdb.spec @@ -4,7 +4,7 @@ Name: couchdb Version: 1.0.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A document database server, accessible via a RESTful JSON API Group: Applications/Databases @@ -23,8 +23,11 @@ Patch8: couchdb-0008-Remove-pid-file-after-stop.patch Patch9: couchdb-0009-deleting-a-DB-while-it-was-being-opened-would-crash-.patch Patch10: couchdb-0010-Do-not-install-gzipped-docs.patch Patch11: couchdb-0011-Fix-respawn-timeout-to-match-default-value.patch +Patch12: couchdb-0012-Relax-curl-dependency-to-7.15-for-RHEL5.patch +Patch13: couchdb-0013-No-erlang-min-2-and-erlang-max-2-in-R12B.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + BuildRequires: curl-devel BuildRequires: erlang-erts BuildRequires: erlang-etap @@ -78,6 +81,11 @@ JavaScript acting as the default view definition language. %patch9 -p1 -b .fix_crash %patch10 -p1 -b .gzipped_docs %patch11 -p1 -b .fix_respawn +%if 0%{?el5} +# Erlang/OTP R12B5 +%patch12 -p1 -b .curl_7_15 +%patch13 -p1 -b .min_max +%endif # Restore original timestamps to avoid reconfiguring touch -r configure.ac.initenabled configure.ac touch -r configure.fix_lib_path configure @@ -151,6 +159,9 @@ fi %changelog +* Tue Oct 12 2010 Peter Lemenkov 1.0.1-4 +- Added patches for compatibility with R12B5 + * Mon Oct 11 2010 Peter Lemenkov 1.0.1-3 - Narrowed list of BuildRequires