summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--php-pecl-sundown.spec241
-rw-r--r--sundown-pr37.patch40
3 files changed, 285 insertions, 0 deletions
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/php-pecl-sundown.spec b/php-pecl-sundown.spec
new file mode 100644
index 0000000..22a7b60
--- /dev/null
+++ b/php-pecl-sundown.spec
@@ -0,0 +1,241 @@
+# spec file for php-pecl-sundown
+#
+# Copyright (c) 2013 Remi Collet
+# License: CC-BY-SA
+# http://creativecommons.org/licenses/by-sa/3.0/
+#
+# Please, preserve the changelog entries
+#
+%{?scl: %scl_package php-pecl-sundown}
+%{!?php_incldir: %global php_incldir %{_includedir}/php}
+%{!?__pecl: %global __pecl %{_bindir}/pecl}
+%{!?__php: %global __php %{_bindir}/php}
+
+%global with_zts 0%{?__ztsphp:1}
+%global pecl_name sundown
+%global with_tests %{?_without_tests:0}%{!?_without_tests:1}
+
+Summary: Sundown is a fast, robust Markdown parsing library for PHP
+Name: %{?scl_prefix}php-pecl-%{pecl_name}
+Version: 0.3.10
+Release: 1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
+# See https://github.com/chobie/php-sundown/issues/35
+# Extension is PHP, sundown library is MIT
+License: PHP and MIT
+Group: Development/Languages
+URL: http://pecl.php.net/package/%{pecl_name}
+Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+
+# https://github.com/chobie/php-sundown/pull/37
+Patch0: %{pecl_name}-pr37.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: %{?scl_prefix}php-devel >= 5.3.1
+BuildRequires: %{?scl_prefix}php-pear
+%if %{with_tests}
+BuildRequires: %{?scl_prefix}php-tidy
+%endif
+
+Requires(post): %{__pecl}
+Requires(postun): %{__pecl}
+Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api}
+Requires: %{?scl_prefix}php(api) = %{php_core_api}
+
+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 0%{!?scl:1}
+# Other third party repo stuff
+%if "%{php_version}" > "5.4"
+Obsoletes: php53-pecl-%{pecl_name}
+Obsoletes: php53u-pecl-%{pecl_name}
+Obsoletes: php54-pecl-%{pecl_name}
+%endif
+%if "%{php_version}" > "5.5"
+Obsoletes: php55u-pecl-%{pecl_name}
+%endif
+%endif
+
+%if 0%{?fedora} < 20
+# Filter shared private
+%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
+%{?filter_setup}
+%endif
+
+
+%description
+Sundown is a fast, robust Markdown parsing library, originally created
+by Natacha Porté and improved Vicent Marti.
+This extension inspired Redcarpet ruby extension which created by Vicent.
+
+PECL Sundown provides straight forward object oriented Markdown API and
+customizable Renders.
+
+
+%prep
+%setup -q -c
+mv %{pecl_name}-%{version} NTS
+
+cd NTS
+
+%patch0 -p1 -b .fix
+
+# Fix perms
+chmod -x sundown/html/html.c
+
+# https://github.com/chobie/php-sundown/issues/36
+# Honor RPM default flags
+sed -e 's/CFLAGS/IGNORED/' -i config.m4
+
+# Sanity check, really often broken
+extver=$(sed -n '/#define PHP_SUNDOWN_VERSION/{s/.* "//;s/".*$//;p}' php_sundown.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 %{pecl_name}.ini
+; %{summary}
+; Enable %{pecl_name} extension module
+extension=%{pecl_name}.so
+EOF
+
+
+%build
+cd NTS
+%{_bindir}/phpize
+%configure \
+ --with-php-config=%{_bindir}/php-config
+make %{?_smp_mflags}
+
+%if %{with_zts}
+cd ../ZTS
+%{_bindir}/zts-phpize
+%configure \
+ --with-php-config=%{_bindir}/zts-php-config
+make %{?_smp_mflags}
+%endif
+
+
+%install
+rm -rf %{buildroot}
+
+make -C NTS \
+ install INSTALL_ROOT=%{buildroot}
+
+# install config file
+install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_inidir}/%{pecl_name}.ini
+
+# 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 %{pecl_name}.ini %{buildroot}%{php_ztsinidir}/%{pecl_name}.ini
+%endif
+
+# Test & Documentation
+for i in $(grep 'role="test"' package.xml | sed -e 's/^.*name="//;s/".*$//')
+do install -Dpm 644 NTS/$i %{buildroot}%{pecl_testdir}/%{pecl_name}/$i
+done
+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
+
+# Fix encoding
+iconv -f iso-8859-1 -t utf8 NTS/CREDITS >%{buildroot}%{pecl_testdir}/%{pecl_name}/CREDITS
+touch -r NTS/CREDITS %{buildroot}%{pecl_testdir}/%{pecl_name}/CREDITS
+
+
+%post
+%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
+
+
+%postun
+if [ $1 -eq 0 ] ; then
+ %{pecl_uninstall} %{pecl_name} >/dev/null || :
+fi
+
+
+%check
+%if "%{php_version}" < "5.5"
+# PHP 5.3/5.4 reports XFAIL tests as failed
+rm -f ?TS/tests/markdown-testsuite/advanced/blockquote-multiline-1-space-end.phpt \
+ ?TS/tests/markdown-testsuite/basic/blockquote-multiline-1-space-end.phpt
+%endif
+
+cd NTS
+: Minimal load test for NTS extension
+%{__php} --no-php-ini \
+ --define extension=modules/%{pecl_name}.so \
+ --modules | grep %{pecl_name}
+
+%if %{with_tests}
+for mod in tidy; do
+ if [ -f %{php_extdir}/${mod}.so ]; then
+ modules="$modules -d extension=${mod}.so"
+ fi
+done
+
+
+: Upstream test suite for NTS extension
+TEST_PHP_EXECUTABLE=%{__php} \
+TEST_PHP_ARGS="-n $modules -d extension=$PWD/modules/%{pecl_name}.so" \
+NO_INTERACTION=1 \
+REPORT_EXIT_STATUS=1 \
+%{__php} -n run-tests.php
+%endif
+
+%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}
+
+%if %{with_tests}
+: Upstream test suite for ZTS extension
+TEST_PHP_EXECUTABLE=%{__ztsphp} \
+TEST_PHP_ARGS="-n $modules -d extension=$PWD/modules/%{pecl_name}.so" \
+NO_INTERACTION=1 \
+REPORT_EXIT_STATUS=1 \
+%{__ztsphp} -n run-tests.php
+%endif
+%endif
+
+
+%clean
+rm -rf %{buildroot}
+
+
+%files
+%defattr(-,root,root,-)
+%doc %{pecl_docdir}/%{pecl_name}
+%doc %{pecl_testdir}/%{pecl_name}
+%{pecl_xmldir}/%{name}.xml
+%config(noreplace) %{php_inidir}/%{pecl_name}.ini
+%{php_extdir}/%{pecl_name}.so
+
+%if %{with_zts}
+%config(noreplace) %{php_ztsinidir}/%{pecl_name}.ini
+%{php_ztsextdir}/%{pecl_name}.so
+%endif
+
+
+%changelog
+* Sun Dec 15 2013 Remi Collet <remi@fedoraproject.org> - 0.3.10
+- initial package, version 0.3.10 (beta)
+- open https://github.com/chobie/php-sundown/issues/35 - licensing
+- open https://github.com/chobie/php-sundown/issues/36 - build flags
+- open https://github.com/chobie/php-sundown/pull/37 - segfault
diff --git a/sundown-pr37.patch b/sundown-pr37.patch
new file mode 100644
index 0000000..ec2f8f6
--- /dev/null
+++ b/sundown-pr37.patch
@@ -0,0 +1,40 @@
+From 9f2d92ada380fce3abf3d68d890c3a9cac6194eb Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Sun, 15 Dec 2013 09:28:29 +0100
+Subject: [PATCH] fix segfault in sundown_render_base
+
+---
+ php_sundown.h | 2 +-
+ render_base.c | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/php_sundown.h b/php_sundown.h
+index 45db836..1593f1d 100644
+--- a/php_sundown.h
++++ b/php_sundown.h
+@@ -163,7 +163,7 @@ static int call_user_function_v(HashTable *function_table, zval **object_pp, zva
+ TSRMLS_FETCH();
+
+ if (param_count > 0) {
+- params = emalloc(sizeof(zval**) * param_count);
++ params = emalloc(sizeof(zval*) * param_count);
+ va_start(ap, param_count);
+ for (i=0; i<param_count;i++) {
+ params[i] = va_arg(ap, zval*);
+diff --git a/render_base.c b/render_base.c
+index d9aee24..3cec492 100644
+--- a/render_base.c
++++ b/render_base.c
+@@ -227,7 +227,8 @@ zend_object_value php_sundown_render_base_new(zend_class_entry *ce TSRMLS_DC)
+ PHP_METHOD(sundown_render_base, header)
+ {
+ char *htext;
+- int htext_len, header_level;
++ int htext_len;
++ long header_level;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+ "sl", &htext, &htext_len, &header_level) == FAILURE) {
+--
+1.8.5.1
+