summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2016-05-04 10:05:05 +0200
committerRemi Collet <fedora@famillecollet.com>2016-05-04 10:05:05 +0200
commit2a13d8647bd9f0ef47fc0d2efe28590aedc1d75f (patch)
tree40dca999ea05889cb159ba8f7102c6688066efda
php-pecl-svn: 1.0.3 (php 5 only, new package)
-rw-r--r--3_01.txt68
-rw-r--r--Makefile4
-rw-r--r--REFLECTION442
-rw-r--r--php-pecl-svn.spec239
-rw-r--r--svn-upstream.patch70
5 files changed, 823 insertions, 0 deletions
diff --git a/3_01.txt b/3_01.txt
new file mode 100644
index 0000000..6059c80
--- /dev/null
+++ b/3_01.txt
@@ -0,0 +1,68 @@
+--------------------------------------------------------------------
+ The PHP License, version 3.01
+Copyright (c) 1999 - 2014 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group@php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group@php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP software, freely available from
+ <http://www.php.net/software/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+PHP includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..13af741
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../../../common/Makefile
+
diff --git a/REFLECTION b/REFLECTION
new file mode 100644
index 0000000..7f33ff0
--- /dev/null
+++ b/REFLECTION
@@ -0,0 +1,442 @@
+Extension [ <persistent> extension #165 svn version 1.0.3 ] {
+
+ - Constants [60] {
+ Constant [ string SVN_AUTH_PARAM_DEFAULT_USERNAME ] { svn:auth:username }
+ Constant [ string SVN_AUTH_PARAM_DEFAULT_PASSWORD ] { svn:auth:password }
+ Constant [ string SVN_AUTH_PARAM_NON_INTERACTIVE ] { svn:auth:non-interactive }
+ Constant [ string SVN_AUTH_PARAM_DONT_STORE_PASSWORDS ] { svn:auth:dont-store-passwords }
+ Constant [ string SVN_AUTH_PARAM_NO_AUTH_CACHE ] { svn:auth:no-auth-cache }
+ Constant [ string SVN_AUTH_PARAM_SSL_SERVER_FAILURES ] { svn:auth:ssl:failures }
+ Constant [ string SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO ] { svn:auth:ssl:cert-info }
+ Constant [ string SVN_AUTH_PARAM_CONFIG ] { svn:auth:config-category-servers }
+ Constant [ string SVN_AUTH_PARAM_SERVER_GROUP ] { svn:auth:server-group }
+ Constant [ string SVN_AUTH_PARAM_CONFIG_DIR ] { svn:auth:config-dir }
+ Constant [ string PHP_SVN_AUTH_PARAM_IGNORE_SSL_VERIFY_ERRORS ] { php:svn:auth:ignore-ssl-verify-errors }
+ Constant [ string SVN_FS_CONFIG_FS_TYPE ] { fs-type }
+ Constant [ string SVN_FS_TYPE_BDB ] { bdb }
+ Constant [ string SVN_FS_TYPE_FSFS ] { fsfs }
+ Constant [ string SVN_PROP_REVISION_DATE ] { svn:date }
+ Constant [ string SVN_PROP_REVISION_ORIG_DATE ] { svn:original-date }
+ Constant [ string SVN_PROP_REVISION_AUTHOR ] { svn:author }
+ Constant [ string SVN_PROP_REVISION_LOG ] { svn:log }
+ Constant [ integer SVN_REVISION_INITIAL ] { 1 }
+ Constant [ integer SVN_REVISION_HEAD ] { -1 }
+ Constant [ integer SVN_REVISION_BASE ] { -2 }
+ Constant [ integer SVN_REVISION_COMMITTED ] { -3 }
+ Constant [ integer SVN_REVISION_PREV ] { -4 }
+ Constant [ integer SVN_REVISION_UNSPECIFIED ] { -5 }
+ Constant [ integer SVN_NON_RECURSIVE ] { 1 }
+ Constant [ integer SVN_DISCOVER_CHANGED_PATHS ] { 2 }
+ Constant [ integer SVN_OMIT_MESSAGES ] { 4 }
+ Constant [ integer SVN_STOP_ON_COPY ] { 8 }
+ Constant [ integer SVN_ALL ] { 16 }
+ Constant [ integer SVN_SHOW_UPDATES ] { 32 }
+ Constant [ integer SVN_NO_IGNORE ] { 64 }
+ Constant [ integer SVN_IGNORE_EXTERNALS ] { 128 }
+ Constant [ integer SVN_DEPTH_UNKNOWN ] { -2 }
+ Constant [ integer SVN_DEPTH_EXCLUDE ] { -1 }
+ Constant [ integer SVN_DEPTH_EMPTY ] { 0 }
+ Constant [ integer SVN_DEPTH_FILES ] { 1 }
+ Constant [ integer SVN_DEPTH_IMMEDIATES ] { 2 }
+ Constant [ integer SVN_DEPTH_INFINITY ] { 3 }
+ Constant [ integer SVN_WC_STATUS_NONE ] { 1 }
+ Constant [ integer SVN_WC_STATUS_UNVERSIONED ] { 2 }
+ Constant [ integer SVN_WC_STATUS_NORMAL ] { 3 }
+ Constant [ integer SVN_WC_STATUS_ADDED ] { 4 }
+ Constant [ integer SVN_WC_STATUS_MISSING ] { 5 }
+ Constant [ integer SVN_WC_STATUS_DELETED ] { 6 }
+ Constant [ integer SVN_WC_STATUS_REPLACED ] { 7 }
+ Constant [ integer SVN_WC_STATUS_MODIFIED ] { 8 }
+ Constant [ integer SVN_WC_STATUS_MERGED ] { 9 }
+ Constant [ integer SVN_WC_STATUS_CONFLICTED ] { 10 }
+ Constant [ integer SVN_WC_STATUS_IGNORED ] { 11 }
+ Constant [ integer SVN_WC_STATUS_OBSTRUCTED ] { 12 }
+ Constant [ integer SVN_WC_STATUS_EXTERNAL ] { 13 }
+ Constant [ integer SVN_WC_STATUS_INCOMPLETE ] { 14 }
+ Constant [ integer SVN_NODE_NONE ] { 0 }
+ Constant [ integer SVN_NODE_FILE ] { 1 }
+ Constant [ integer SVN_NODE_DIR ] { 2 }
+ Constant [ integer SVN_NODE_UNKNOWN ] { 3 }
+ Constant [ integer SVN_WC_SCHEDULE_NORMAL ] { 0 }
+ Constant [ integer SVN_WC_SCHEDULE_ADD ] { 1 }
+ Constant [ integer SVN_WC_SCHEDULE_DELETE ] { 2 }
+ Constant [ integer SVN_WC_SCHEDULE_REPLACE ] { 3 }
+ }
+
+ - Functions {
+ Function [ <internal:svn> function svn_checkout ] {
+ }
+ Function [ <internal:svn> function svn_cat ] {
+ }
+ Function [ <internal:svn> function svn_ls ] {
+ }
+ Function [ <internal:svn> function svn_log ] {
+ }
+ Function [ <internal:svn> function svn_auth_set_parameter ] {
+ }
+ Function [ <internal:svn> function svn_auth_get_parameter ] {
+ }
+ Function [ <internal:svn> function svn_client_version ] {
+ }
+ Function [ <internal:svn> function svn_config_ensure ] {
+ }
+ Function [ <internal:svn> function svn_diff ] {
+ }
+ Function [ <internal:svn> function svn_cleanup ] {
+ }
+ Function [ <internal:svn> function svn_revert ] {
+ }
+ Function [ <internal:svn> function svn_resolved ] {
+ }
+ Function [ <internal:svn> function svn_commit ] {
+ }
+ Function [ <internal:svn> function svn_lock ] {
+ }
+ Function [ <internal:svn> function svn_unlock ] {
+ }
+ Function [ <internal:svn> function svn_add ] {
+ }
+ Function [ <internal:svn> function svn_status ] {
+ }
+ Function [ <internal:svn> function svn_update ] {
+ }
+ Function [ <internal:svn> function svn_update2 ] {
+ }
+ Function [ <internal:svn> function svn_import ] {
+ }
+ Function [ <internal:svn> function svn_info ] {
+ }
+ Function [ <internal:svn> function svn_export ] {
+ }
+ Function [ <internal:svn> function svn_copy ] {
+ }
+ Function [ <internal:svn> function svn_switch ] {
+ }
+ Function [ <internal:svn> function svn_blame ] {
+ }
+ Function [ <internal:svn> function svn_delete ] {
+ }
+ Function [ <internal:svn> function svn_mkdir ] {
+ }
+ Function [ <internal:svn> function svn_move ] {
+ }
+ Function [ <internal:svn> function svn_proplist ] {
+ }
+ Function [ <internal:svn> function svn_propget ] {
+ }
+ Function [ <internal:svn> function svn_propset ] {
+ }
+ Function [ <internal:svn> function svn_prop_delete ] {
+ }
+ Function [ <internal:svn> function svn_revprop_get ] {
+ }
+ Function [ <internal:svn> function svn_revprop_set ] {
+ }
+ Function [ <internal:svn> function svn_revprop_delete ] {
+ }
+ Function [ <internal:svn> function svn_repos_create ] {
+ }
+ Function [ <internal:svn> function svn_repos_recover ] {
+ }
+ Function [ <internal:svn> function svn_repos_hotcopy ] {
+ }
+ Function [ <internal:svn> function svn_repos_open ] {
+ }
+ Function [ <internal:svn> function svn_repos_fs ] {
+ }
+ Function [ <internal:svn> function svn_repos_fs_begin_txn_for_commit ] {
+ }
+ Function [ <internal:svn> function svn_repos_fs_commit_txn ] {
+ }
+ Function [ <internal:svn> function svn_fs_revision_root ] {
+ }
+ Function [ <internal:svn> function svn_fs_check_path ] {
+ }
+ Function [ <internal:svn> function svn_fs_revision_prop ] {
+ }
+ Function [ <internal:svn> function svn_fs_dir_entries ] {
+ }
+ Function [ <internal:svn> function svn_fs_node_created_rev ] {
+ }
+ Function [ <internal:svn> function svn_fs_youngest_rev ] {
+ }
+ Function [ <internal:svn> function svn_fs_file_contents ] {
+ }
+ Function [ <internal:svn> function svn_fs_file_length ] {
+ }
+ Function [ <internal:svn> function svn_fs_txn_root ] {
+ }
+ Function [ <internal:svn> function svn_fs_make_file ] {
+ }
+ Function [ <internal:svn> function svn_fs_make_dir ] {
+ }
+ Function [ <internal:svn> function svn_fs_apply_text ] {
+ }
+ Function [ <internal:svn> function svn_fs_copy ] {
+ }
+ Function [ <internal:svn> function svn_fs_delete ] {
+ }
+ Function [ <internal:svn> function svn_fs_begin_txn2 ] {
+ }
+ Function [ <internal:svn> function svn_fs_is_dir ] {
+ }
+ Function [ <internal:svn> function svn_fs_is_file ] {
+ }
+ Function [ <internal:svn> function svn_fs_node_prop ] {
+ }
+ Function [ <internal:svn> function svn_fs_change_node_prop ] {
+ }
+ Function [ <internal:svn> function svn_fs_contents_changed ] {
+ }
+ Function [ <internal:svn> function svn_fs_props_changed ] {
+ }
+ Function [ <internal:svn> function svn_fs_abort_txn ] {
+ }
+ Function [ <internal:svn> function svn_fs_open_txn ] {
+ }
+ Function [ <internal:svn> function svn_fs_txn_prop ] {
+ }
+ }
+
+ - Classes [4] {
+ Class [ <internal:svn> class Svn ] {
+
+ - Constants [20] {
+ Constant [ integer NON_RECURSIVE ] { 1 }
+ Constant [ integer DISCOVER_CHANGED_PATHS ] { 2 }
+ Constant [ integer OMIT_MESSAGES ] { 4 }
+ Constant [ integer STOP_ON_COPY ] { 8 }
+ Constant [ integer ALL ] { 16 }
+ Constant [ integer SHOW_UPDATES ] { 32 }
+ Constant [ integer NO_IGNORE ] { 64 }
+ Constant [ integer IGNORE_EXTERNALS ] { 128 }
+ Constant [ integer INITIAL ] { 1 }
+ Constant [ integer HEAD ] { -1 }
+ Constant [ integer BASE ] { -2 }
+ Constant [ integer COMMITTED ] { -3 }
+ Constant [ integer PREV ] { -4 }
+ Constant [ integer UNSPECIFIED ] { -5 }
+ Constant [ integer DEPTH_UNKNOWN ] { -2 }
+ Constant [ integer DEPTH_EXCLUDE ] { -1 }
+ Constant [ integer DEPTH_EMPTY ] { 0 }
+ Constant [ integer DEPTH_FILES ] { 1 }
+ Constant [ integer DEPTH_IMMEDIATES ] { 2 }
+ Constant [ integer DEPTH_INFINITY ] { 3 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [42] {
+ Method [ <internal:svn> static public method checkout ] {
+ }
+
+ Method [ <internal:svn> static public method cat ] {
+ }
+
+ Method [ <internal:svn> static public method ls ] {
+ }
+
+ Method [ <internal:svn> static public method log ] {
+ }
+
+ Method [ <internal:svn> static public method auth_set_parameter ] {
+ }
+
+ Method [ <internal:svn> static public method auth_get_parameter ] {
+ }
+
+ Method [ <internal:svn> static public method client_version ] {
+ }
+
+ Method [ <internal:svn> static public method config_ensure ] {
+ }
+
+ Method [ <internal:svn> static public method diff ] {
+ }
+
+ Method [ <internal:svn> static public method cleanup ] {
+ }
+
+ Method [ <internal:svn> static public method revert ] {
+ }
+
+ Method [ <internal:svn> static public method resolved ] {
+ }
+
+ Method [ <internal:svn> static public method commit ] {
+ }
+
+ Method [ <internal:svn> static public method lock ] {
+ }
+
+ Method [ <internal:svn> static public method unlock ] {
+ }
+
+ Method [ <internal:svn> static public method add ] {
+ }
+
+ Method [ <internal:svn> static public method status ] {
+ }
+
+ Method [ <internal:svn> static public method update ] {
+ }
+
+ Method [ <internal:svn> static public method update2 ] {
+ }
+
+ Method [ <internal:svn> static public method import ] {
+ }
+
+ Method [ <internal:svn> static public method info ] {
+ }
+
+ Method [ <internal:svn> static public method export ] {
+ }
+
+ Method [ <internal:svn> static public method copy ] {
+ }
+
+ Method [ <internal:svn> static public method switch ] {
+ }
+
+ Method [ <internal:svn> static public method blame ] {
+ }
+
+ Method [ <internal:svn> static public method delete ] {
+ }
+
+ Method [ <internal:svn> static public method mkdir ] {
+ }
+
+ Method [ <internal:svn> static public method move ] {
+ }
+
+ Method [ <internal:svn> static public method proplist ] {
+ }
+
+ Method [ <internal:svn> static public method propget ] {
+ }
+
+ Method [ <internal:svn> static public method propset ] {
+ }
+
+ Method [ <internal:svn> static public method prop_delete ] {
+ }
+
+ Method [ <internal:svn> static public method revprop_get ] {
+ }
+
+ Method [ <internal:svn> static public method revprop_set ] {
+ }
+
+ Method [ <internal:svn> static public method revprop_delete ] {
+ }
+
+ Method [ <internal:svn> static public method repos_create ] {
+ }
+
+ Method [ <internal:svn> static public method repos_recover ] {
+ }
+
+ Method [ <internal:svn> static public method repos_hotcopy ] {
+ }
+
+ Method [ <internal:svn> static public method repos_open ] {
+ }
+
+ Method [ <internal:svn> static public method repos_fs ] {
+ }
+
+ Method [ <internal:svn> static public method repos_fs_begin_txn_for_commit ] {
+ }
+
+ Method [ <internal:svn> static public method repos_fs_commit_txn ] {
+ }
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [0] {
+ }
+ }
+
+ Class [ <internal:svn> class SvnWc ] {
+
+ - Constants [14] {
+ Constant [ integer NONE ] { 1 }
+ Constant [ integer UNVERSIONED ] { 2 }
+ Constant [ integer NORMAL ] { 3 }
+ Constant [ integer ADDED ] { 4 }
+ Constant [ integer MISSING ] { 5 }
+ Constant [ integer DELETED ] { 6 }
+ Constant [ integer REPLACED ] { 7 }
+ Constant [ integer MODIFIED ] { 8 }
+ Constant [ integer MERGED ] { 9 }
+ Constant [ integer CONFLICTED ] { 10 }
+ Constant [ integer IGNORED ] { 11 }
+ Constant [ integer OBSTRUCTED ] { 12 }
+ Constant [ integer EXTERNAL ] { 13 }
+ Constant [ integer INCOMPLETE ] { 14 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [0] {
+ }
+ }
+
+ Class [ <internal:svn> class SvnWcSchedule ] {
+
+ - Constants [4] {
+ Constant [ integer NORMAL ] { 0 }
+ Constant [ integer ADD ] { 1 }
+ Constant [ integer DELETE ] { 2 }
+ Constant [ integer REPLACE ] { 3 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [0] {
+ }
+ }
+
+ Class [ <internal:svn> class SvnNode ] {
+
+ - Constants [4] {
+ Constant [ integer NONE ] { 0 }
+ Constant [ integer FILE ] { 1 }
+ Constant [ integer DIR ] { 2 }
+ Constant [ integer UNKNOWN ] { 3 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [0] {
+ }
+ }
+ }
+}
+
diff --git a/php-pecl-svn.spec b/php-pecl-svn.spec
new file mode 100644
index 0000000..eee1705
--- /dev/null
+++ b/php-pecl-svn.spec
@@ -0,0 +1,239 @@
+# remirepo spec file for php-pecl-svn
+#
+# Copyright (c) 2016 Remi Collet
+# License: CC-BY-SA
+# http://creativecommons.org/licenses/by-sa/4.0/
+#
+# Please, preserve the changelog entries
+#
+%if 0%{?scl:1}
+%if "%{scl}" == "rh-php56"
+%global sub_prefix more-php56-
+%else
+%global sub_prefix %{scl_prefix}
+%endif
+%scl_package php-pecl-svn
+%endif
+
+%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
+%global pecl_name svn
+%if "%{php_version}" < "5.6"
+%global ini_name %{pecl_name}.ini
+%else
+%global ini_name 40-%{pecl_name}.ini
+%endif
+
+Summary: PHP Bindings for the Subversion Revision control system
+Name: %{?sub_prefix}php-pecl-%{pecl_name}
+Version: 1.0.3
+Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+License: PHP
+Group: Development/Languages
+URL: http://pecl.php.net/package/%{pecl_name}
+Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+# From headers
+Source1: http://www.php.net/license/3_01.txt
+
+# http://svn.php.net/viewvc?view=revision&revision=339128 - for apr < 1.5
+# http://svn.php.net/viewvc?view=revision&revision=339129 - fix ZTS
+Patch0: %{pecl_name}-upstream.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: %{?scl_prefix}php-devel
+BuildRequires: %{?scl_prefix}php-pear
+BuildRequires: subversion-devel >= 1.3
+BuildRequires: neon-devel
+
+Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api}
+Requires: %{?scl_prefix}php(api) = %{php_core_api}
+Requires: %{?scl_prefix}php-sockets%{?_isa}
+%{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}}
+
+Provides: %{?scl_prefix}php-%{pecl_name} = %{version}
+Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version}
+Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version}
+Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version}
+%if "%{?scl_prefix}" != "%{?sub_prefix}"
+Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{release}
+Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release}
+%endif
+
+%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1}
+# Other third party repo stuff
+Obsoletes: php53-pecl-%{pecl_name} <= %{version}
+Obsoletes: php53u-pecl-%{pecl_name} <= %{version}
+Obsoletes: php54-pecl-%{pecl_name} <= %{version}
+Obsoletes: php54w-pecl-%{pecl_name} <= %{version}
+%if "%{php_version}" > "5.5"
+Obsoletes: php55u-pecl-%{pecl_name} <= %{version}
+Obsoletes: php55w-pecl-%{pecl_name} <= %{version}
+%endif
+%if "%{php_version}" > "5.6"
+Obsoletes: php56u-pecl-%{pecl_name} <= %{version}
+Obsoletes: php56w-pecl-%{pecl_name} <= %{version}
+%endif
+%if "%{php_version}" > "7.0"
+Obsoletes: php70u-pecl-%{pecl_name} <= %{version}
+Obsoletes: php70w-pecl-%{pecl_name} <= %{version}
+%endif
+%endif
+
+%if 0%{?fedora} < 20 && 0%{?rhel} < 7
+# Filter shared private
+%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
+%{?filter_setup}
+%endif
+
+
+%description
+Bindings for the Subversion revision control system, providing a
+method for manipulating a working copy or repository with PHP.
+
+Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}.
+
+
+%prep
+%setup -q -c
+mv %{pecl_name}-%{version} NTS
+
+# Don't install/register tests, install examples as doc
+sed -e 's/role="test"/role="src"/' \
+ -e '/EXPERIMENTAL/d' \
+ %{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \
+ -i package.xml
+
+
+cd NTS
+cp %{SOURCE1} LICENSE
+%patch0 -p3 -b .up
+chmod -x *.c *.h
+
+# Sanity check, really often broken
+extver=$(sed -n '/#define PHP_SVN_VERSION/{s/.* "//;s/".*$//;p}' php_svn.h)
+if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then
+ : Error: Upstream extension version is ${extver}, expecting %{version}%{?prever:-%{prever}}.
+ exit 1
+fi
+cd ..
+
+%if %{with_zts}
+# Duplicate source tree for NTS / ZTS build
+cp -pr NTS ZTS
+%endif
+
+# Create configuration file
+cat << 'EOF' | tee %{ini_name}
+; Enable %{summary} extension module
+extension=%{pecl_name}.so
+EOF
+
+
+%build
+peclbuild() {
+%configure \
+ --with-svn \
+ --with-php-config=$1
+
+make %{?_smp_mflags}
+}
+
+cd NTS
+%{_bindir}/phpize
+peclbuild %{_bindir}/php-config
+
+%if %{with_zts}
+cd ../ZTS
+%{_bindir}/zts-phpize
+peclbuild %{_bindir}/zts-php-config
+%endif
+
+
+%install
+rm -rf %{buildroot}
+
+make -C NTS install INSTALL_ROOT=%{buildroot}
+
+# install config file
+install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name}
+
+# Install XML package description
+install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
+
+%if %{with_zts}
+make -C ZTS install INSTALL_ROOT=%{buildroot}
+
+install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
+%endif
+
+# Documentation
+for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//')
+do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i
+done
+
+%{!?_licensedir:install -Dpm 644 NTS/LICENSE %{buildroot}%{pecl_docdir}/%{pecl_name}/LICENSE } \
+
+
+%if 0%{?fedora} < 24
+# when pear installed alone, after us
+%triggerin -- %{?scl_prefix}php-pear
+if [ -x %{__pecl} ] ; then
+ %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
+fi
+
+# posttrans as pear can be installed after us
+%posttrans
+if [ -x %{__pecl} ] ; then
+ %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
+fi
+
+%postun
+if [ $1 -eq 0 -a -x %{__pecl} ] ; then
+ %{pecl_uninstall} %{pecl_name} >/dev/null || :
+fi
+%endif
+
+
+%check
+cd NTS
+: Minimal load test for NTS extension
+%{__php} --no-php-ini \
+ --define extension=modules/%{pecl_name}.so \
+ --modules | grep %{pecl_name}
+
+%if %{with_zts}
+cd ../ZTS
+: Minimal load test for ZTS extension
+%{__ztsphp} --no-php-ini \
+ --define extension=modules/%{pecl_name}.so \
+ --modules | grep %{pecl_name}
+%endif
+
+
+%clean
+rm -rf %{buildroot}
+
+
+%files
+%defattr(-,root,root,-)
+%{?_licensedir:%license NTS/LICENSE}
+%doc %{pecl_docdir}/%{pecl_name}
+%{pecl_xmldir}/%{name}.xml
+
+%config(noreplace) %{php_inidir}/%{ini_name}
+%{php_extdir}/%{pecl_name}.so
+
+%if %{with_zts}
+%config(noreplace) %{php_ztsinidir}/%{ini_name}
+%{php_ztsextdir}/%{pecl_name}.so
+%endif
+
+
+%changelog
+* Wed May 4 2016 Remi Collet <remi@fedoraproject.org> - 1.0.3-1
+- initial package, version 1.0.3 (stable)
+- fix sources permission (upstream rev 339125)
+- add LICENSE file (upstream rev 339126)
+- drop EXPERIMENTAL file (upstream rev 339127)
+- add fix for apr < 1.5 (upstream rev 339128)
+- add fix for ZTS (upstream rev 339129)
+
diff --git a/svn-upstream.patch b/svn-upstream.patch
new file mode 100644
index 0000000..e60571d
--- /dev/null
+++ b/svn-upstream.patch
@@ -0,0 +1,70 @@
+--- pecl/svn/trunk/svn.c 2016/05/04 06:34:26 339127
++++ pecl/svn/trunk/svn.c 2016/05/04 07:26:03 339128
+@@ -977,6 +977,7 @@
+ apr_pool_t *subpool;
+ svn_opt_revision_t peg_revision;
+ const char *true_path;
++ apr_hash_index_t *hi;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lbb",
+ &repos_url, &repos_url_len, &revision.value.number, &recurse, &peg) == FAILURE) {
+@@ -1021,7 +1022,7 @@
+
+ array_init(return_value);
+
+- for (apr_hash_index_t *hi = apr_hash_first(subpool, dirents); hi; hi = apr_hash_next(hi)) {
++ for (hi = apr_hash_first(subpool, dirents); hi; hi = apr_hash_next(hi)) {
+ const char *utf8_entryname;
+ svn_dirent_t *dirent;
+ apr_time_t now = apr_time_now();
+@@ -1031,9 +1032,10 @@
+ char timestr[20];
+ const char *utf8_timestr;
+ zval *row;
++ const char *key;
+
+- svn_utf_cstring_to_utf8 (&utf8_entryname, apr_hash_this_key(hi), subpool);
+- dirent = apr_hash_this_val(hi);
++ apr_hash_this(hi, &key, NULL, &dirent);
++ svn_utf_cstring_to_utf8 (&utf8_entryname, key, subpool);
+
+ /* svn_time_to_human_cstring gives us something *way* too long
+ to use for this, so we have to roll our own. We include
+@@ -1101,6 +1103,7 @@
+ {
+ struct php_svn_log_receiver_baton *baton = (struct php_svn_log_receiver_baton*) ibaton;
+ zval *row, *paths;
++ apr_hash_index_t *hi;
+ TSRMLS_FETCH();
+
+ if (rev == 0) {
+@@ -1127,7 +1130,7 @@
+ MAKE_STD_ZVAL(paths);
+ array_init(paths);
+
+- for (apr_hash_index_t *hi = apr_hash_first(pool, changed_paths); hi; hi = apr_hash_next(hi)) {
++ for (hi = apr_hash_first(pool, changed_paths); hi; hi = apr_hash_next(hi)) {
+ svn_log_changed_path_t *log_item;
+ zval *zpaths;
+ const char *path;
+@@ -1135,8 +1138,7 @@
+ MAKE_STD_ZVAL(zpaths);
+ array_init(zpaths);
+
+- path = apr_hash_this_key(hi);
+- log_item = apr_hash_this_val(hi);
++ apr_hash_this(hi, &path, NULL, &log_item);
+
+ add_assoc_stringl(zpaths, "action", &(log_item->action), 1,1);
+ add_assoc_string(zpaths, "path", path, 1);
+--- pecl/svn/trunk/svn.c 2016/05/04 07:26:03 339128
++++ pecl/svn/trunk/svn.c 2016/05/04 07:32:45 339129
+@@ -1154,7 +1154,7 @@
+ add_assoc_zval(paths, path, zpaths);
+ }
+
+- zend_hash_sort(Z_ARRVAL_P(paths), zend_qsort, compare_keys_as_paths, 1);
++ zend_hash_sort(Z_ARRVAL_P(paths), zend_qsort, compare_keys_as_paths, 1 TSRMLS_CC);
+ add_assoc_zval(row,"paths",paths);
+ }
+