-#
+# TODO
+# - pcreposix subpackage?
+
# Conditional build:
-%bcond_without static_libs # don't build static libraries
-#
+%bcond_without pcre16 # 16-bit character support
+%bcond_without pcre32 # 32-bit character support
+%bcond_without static_libs # static libraries build
+%bcond_without tests # don't perform "make check"
+
Summary: Perl-Compatible Regular Expression library
Summary(pl.UTF-8): Biblioteka perlowych wyrażeń regularnych
Summary(pt_BR.UTF-8): Biblioteca de expressões regulares versão
Name: pcre
-Version: 7.2
-Release: 0.1
+Version: 8.39
+Release: 1
License: BSD (see LICENCE)
Group: Libraries
Source0: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/%{name}-%{version}.tar.bz2
-# Source0-md5: 53305db73855f1ff155dcd2c05d448d3
+# Source0-md5: e3fca7650a0556a2647821679d81f585
+Patch0: %{name}-pcreposix-glibc-conflict.patch
URL: http://www.pcre.org/
BuildRequires: autoconf >= 2.57
BuildRequires: automake
+BuildRequires: bzip2-devel
BuildRequires: libstdc++-devel
-BuildRequires: libtool >= 2:1.5
+BuildRequires: libtool >= 2:2
+BuildRequires: readline-devel
+BuildRequires: zlib-devel
Obsoletes: libpcre0
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description cxx-static -l pl.UTF-8
Statyczna wersja biblioteki pcrecpp.
+%package -n pcre16
+Summary: PCRE library with 16-bit character support
+Summary(pl.UTF-8): Biblioteka PCRE z obsługą znaków 16-bitowych
+Group: Libraries
+
+%description -n pcre16
+PCRE (Perl compatible regular expressions) C library with 16-bit
+character support.
+
+%description -n pcre16 -l pl.UTF-8
+Biblioteka C PCRE (perlowych wyrażeń regularnych) z obsługą znaków
+16-bitowych.
+
+%package -n pcre16-devel
+Summary: Development files for PCRE library with 16-bit character support
+Summary(pl.UTF-8): Pliki programistyczne biblioteki PCRE z obsługą znaków 16-bitowych
+Group: Development/Libraries
+# base devel required for (common) headers and man page contents;
+# pulling base pcre doesn't hurt, as it's already required by some basic packages
+Requires: %{name}-devel = %{version}-%{release}
+Requires: pcre16 = %{version}-%{release}
+
+%description -n pcre16-devel
+Development files for PCRE library with 16-bit character support.
+
+%description -n pcre16-devel -l pl.UTF-8
+Pliki programistyczne biblioteki PCRE z obsługą znaków 16-bitowych.
+
+%package -n pcre16-static
+Summary: Static PCRE library with 16-bit character support
+Summary(pl.UTF-8): Biblioteka statyczna PCRE z obsługą znaków 16-bitowych
+Group: Development/Libraries
+Requires: pcre16-devel = %{version}-%{release}
+
+%description -n pcre16-static
+Static PCRE library with 16-bit character support.
+
+%description -n pcre16-static -l pl.UTF-8
+Biblioteka statyczna PCRE z obsługą znaków 16-bitowych.
+
+%package -n pcre32
+Summary: PCRE library with 32-bit character support
+Summary(pl.UTF-8): Biblioteka PCRE z obsługą znaków 32-bitowych
+Group: Libraries
+
+%description -n pcre32
+PCRE (Perl compatible regular expressions) C library with 32-bit
+character support.
+
+%description -n pcre32 -l pl.UTF-8
+Biblioteka C PCRE (perlowych wyrażeń regularnych) z obsługą znaków
+32-bitowych.
+
+%package -n pcre32-devel
+Summary: Development files for PCRE library with 32-bit character support
+Summary(pl.UTF-8): Pliki programistyczne biblioteki PCRE z obsługą znaków 32-bitowych
+Group: Development/Libraries
+# base devel required for (common) headers and man page contents;
+# pulling base pcre doesn't hurt, as it's already required by some basic packages
+Requires: %{name}-devel = %{version}-%{release}
+Requires: pcre32 = %{version}-%{release}
+
+%description -n pcre32-devel
+Development files for PCRE library with 32-bit character support.
+
+%description -n pcre32-devel -l pl.UTF-8
+Pliki programistyczne biblioteki PCRE z obsługą znaków 32-bitowych.
+
+%package -n pcre32-static
+Summary: Static PCRE library with 32-bit character support
+Summary(pl.UTF-8): Biblioteka statyczna PCRE z obsługą znaków 32-bitowych
+Group: Development/Libraries
+Requires: pcre32-devel = %{version}-%{release}
+
+%description -n pcre32-static
+Static PCRE library with 32-bit character support.
+
+%description -n pcre32-static -l pl.UTF-8
+Biblioteka statyczna PCRE z obsługą znaków 32-bitowych.
+
%package -n pcregrep
Summary: Grep using Perl Compatible Regular Expressions
Summary(pl.UTF-8): Grep używający perlowych wyrażeń regularnych
Group: Applications/Text
+Requires: %{name} = %{version}-%{release}
Obsoletes: pgrep
%description -n pcregrep
perlowych wyrażeń regularnych, a nie posiksowych.
%package -n pcretest
-Summary: A program for testing Perl-comaptible regular expressions
-Summary(pl.UTF-8): Program do testowania kompatybilnych z perlem wyrażeń regualarnych
+Summary: A program for testing Perl-compatible regular expressions
+Summary(pl.UTF-8): Program do testowania kompatybilnych z perlem wyrażeń regularnych
Group: Applications/Text
+Requires: %{name} = %{version}-%{release}
+%{?with_pcre16:Requires: pcre16 = %{version}-%{release}}
+%{?with_pcre32:Requires: pcre32 = %{version}-%{release}}
%description -n pcretest
-pcretest is a program which you can use to test regular expression
+pcretest is a program which you can use to test regular expression.
%description -n pcretest -l pl.UTF-8
-pcretest jest programem za pomocą można sprawdzić poprawność wyrażenia regularnego
+pcretest jest programem, za pomocą którego można sprawdzić poprawność
+wyrażenia regularnego.
%package doc-html
Summary: Documentation for PCRE in HTML format
%prep
%setup -q
+%patch0 -p1
%build
%{__libtoolize}
-%{__aclocal}
+%{__aclocal} -I m4
%{__autoconf}
%{__autoheader}
%{__automake}
%configure \
CXXLDFLAGS="%{rpmldflags}" \
- %{!?with_static_libs:--enable-static=no} \
- --enable-utf8 \
- --enable-unicode-properties
+ --disable-silent-rules \
+ %{!?with_static_libs:--disable-static} \
+%ifnarch x32
+ --enable-jit \
+%endif
+ %{?with_pcre16:--enable-pcre16} \
+ %{?with_pcre32:--enable-pcre32} \
+ --enable-pcregrep-libz \
+ --enable-pcregrep-libbz2 \
+ --enable-pcretest-libreadline \
+ --enable-unicode-properties \
+ --enable-utf8
%{__make}
+%if %{with tests}
+# tests need big stack
+ulimit -s 32768
+%{__make} -j1 check
+%endif
+
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/%{_lib},%{_examplesdir}/%{name}-%{version}}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-mv -f $RPM_BUILD_ROOT%{_libdir}/libpcre.so.*.* $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_libdir}/libpcreposix.so.*.* $RPM_BUILD_ROOT/%{_lib}
+mv -f $RPM_BUILD_ROOT%{_libdir}/libpcre.so.* $RPM_BUILD_ROOT/%{_lib}
+mv -f $RPM_BUILD_ROOT%{_libdir}/libpcreposix.so.* $RPM_BUILD_ROOT/%{_lib}
-cd $RPM_BUILD_ROOT%{_libdir}
-ln -sf /%{_lib}/`cd ../../%{_lib} ; echo libpcre.so.*.*.*` libpcre.so
-ln -sf /%{_lib}/`cd ../../%{_lib} ; echo libpcreposix.so.*.*.*` libpcreposix.so
+ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libpcre.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/libpcre.so
+ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libpcreposix.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/libpcreposix.so
-cd -
-install pcredemo.c $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+cp -p pcredemo.c $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
rm -rf $RPM_BUILD_ROOT%{_docdir}/pcre
%post cxx -p /sbin/ldconfig
%postun cxx -p /sbin/ldconfig
+%post -n pcre16 -p /sbin/ldconfig
+%postun -n pcre16 -p /sbin/ldconfig
+
+%post -n pcre32 -p /sbin/ldconfig
+%postun -n pcre32 -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
-%doc README NEWS LICENCE ChangeLog
-%attr(755,root,root) /%{_lib}/libpcre.so.*.*
-%attr(755,root,root) /%{_lib}/libpcreposix.so.*.*
+%doc AUTHORS ChangeLog LICENCE NEWS README
+%attr(755,root,root) /%{_lib}/libpcre.so.*.*.*
+%attr(755,root,root) %ghost /%{_lib}/libpcre.so.1
+%attr(755,root,root) /%{_lib}/libpcreposix.so.*.*.*
+%attr(755,root,root) %ghost /%{_lib}/libpcreposix.so.0
%files devel
%defattr(644,root,root,755)
%{_includedir}/pcre.h
%{_includedir}/pcreposix.h
%{_pkgconfigdir}/libpcre.pc
+%{_pkgconfigdir}/libpcreposix.pc
%{_mandir}/man1/pcre-config.1*
-%{_mandir}/man3/*
-%exclude %{_mandir}/man3/pcrecpp.3*
+%{_mandir}/man3/pcre.3*
+%{_mandir}/man3/pcre_*.3*
+%{_mandir}/man3/pcreapi.3*
+%{_mandir}/man3/pcrebuild.3*
+%{_mandir}/man3/pcrecallout.3*
+%{_mandir}/man3/pcrecompat.3*
+%{_mandir}/man3/pcredemo.3*
+%{_mandir}/man3/pcrejit.3*
+%{_mandir}/man3/pcrelimits.3*
+%{_mandir}/man3/pcrematching.3*
+%{_mandir}/man3/pcrepartial.3*
+%{_mandir}/man3/pcrepattern.3*
+%{_mandir}/man3/pcreperform.3*
+%{_mandir}/man3/pcreposix.3*
+%{_mandir}/man3/pcreprecompile.3*
+%{_mandir}/man3/pcresample.3*
+%{_mandir}/man3/pcrestack.3*
+%{_mandir}/man3/pcresyntax.3*
+%{_mandir}/man3/pcreunicode.3*
%{_examplesdir}/%{name}-%{version}
%if %{with static_libs}
%files cxx
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libpcrecpp.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpcrecpp.so.0
%files cxx-devel
%defattr(644,root,root,755)
%{_libdir}/libpcrecpp.a
%endif
+%if %{with pcre16}
+%files -n pcre16
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libpcre16.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpcre16.so.0
+
+%files -n pcre16-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libpcre16.so
+%{_libdir}/libpcre16.la
+%{_pkgconfigdir}/libpcre16.pc
+%{_mandir}/man3/pcre16.3*
+%{_mandir}/man3/pcre16_*.3*
+
+%if %{with static_libs}
+%files -n pcre16-static
+%defattr(644,root,root,755)
+%{_libdir}/libpcre16.a
+%endif
+%endif
+
+%if %{with pcre32}
+%files -n pcre32
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libpcre32.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libpcre32.so.0
+
+%files -n pcre32-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libpcre32.so
+%{_libdir}/libpcre32.la
+%{_pkgconfigdir}/libpcre32.pc
+%{_mandir}/man3/pcre32.3*
+%{_mandir}/man3/pcre32_*.3*
+
+%if %{with static_libs}
+%files -n pcre32-static
+%defattr(644,root,root,755)
+%{_libdir}/libpcre32.a
+%endif
+%endif
+
%files -n pcregrep
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/pcregrep