subversion/subversion.spec
Stefan Sperling 0b4fd41e51 - Pass --enable-broken-httpd-auth to configure. Assumes all apache2
packages contain security patches regardless of their version number.
  Should fix the build on SLES12 and perhaps elsewhere.

OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm:svn/subversion?expand=0&rev=213
2015-08-06 11:30:01 +00:00

616 lines
19 KiB
RPMSpec

#
# spec file for package subversion
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2013 Andreas Stieger <andreas.stieger@gmx.de>
# Copyright (c) 2009-2010 Pascal Bleser <pascal.bleser@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define svngroup svn
%define svnuser svn
%global _tmpfilesdir %{_libexecdir}/tmpfiles.d
%define _fwdefdir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
%define apxs %{_sbindir}/apxs2
%define apache_libexecdir %(%{apxs} -q LIBEXECDIR)
%define apache_sysconfdir %(%{apxs} -q SYSCONFDIR)
%define apache_mmn %(MMN="$(%{apxs} -q LIBEXECDIR)_MMN"; test -x "$MMN" && "$MMN")
%define sqlite_minimum_version 3.7.12
%define with_kde 0%{?suse_version} != 1315
%if 0%{?suse_version} > 1140
%define with_systemd 1
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
%endif
%bcond_without python_ctypes
%bcond_with all_regression_tests
Name: subversion
Version: 1.8.14
Release: 0
Summary: Subversion version control system
License: Apache-2.0
Group: Development/Tools/Version Control
Url: https://subversion.apache.org
Source0: https://www.apache.org/dist/subversion/%{name}-%{version}.tar.bz2
Source1: subversion.conf
Source2: subversion.README.SUSE
Source4: contrib-1485350.tar.bz2
Source9: subversion.rcsvnserve
Source10: subversion.sysconfig.svnserve
Source12: subversion.sysconfig.svnserve.remoteaccess
Source13: subversion.xinetd.svnserve
Source14: svnserve.service
Source15: svnserve.tmpfiles
Source42: subversion.svngrep.sh
Source43: subversion.svndiff.sh
# https://people.apache.org/keys/group/subversion-pmc.asc
Source50: subversion.keyring
Source51: https://www.apache.org/dist/subversion/%{name}-%{version}.tar.bz2.asc
Source92: %{name}.rpmlintrc
Patch11: subversion.libtool-verbose.patch
Patch20: subversion-swig-perl-install_vendor.patch
Patch23: subversion-swig-perl-Wall.patch
Patch30: subversion-1.8.0-rpath.patch
Patch37: subversion-no-build-date.patch
Patch38: subversion-1.8.9-allow-httpd-2.4.6.patch
Patch39: subversion-fix-parallel-build-support-for-perl-bindings.patch
Patch40: subversion-perl-underlinking.patch
Patch41: subversion-1.8.10-fix-bashisms.patch
Patch42: subversion-1.8.11-swig-py-comment.patch
Patch43: subversion-1.8.11-swig-py-comment-2.patch
Patch44: subversion-1.8.11-swig-py-comment-3.patch
Patch45: subversion-1.8.11-autocheck-time.patch
Patch46: subversion-1.8.14-httpd-version-number-detection.patch
Patch47: subversion-1.8.14-unused-var-authnrequired.patch
BuildRequires: apache2-devel
BuildRequires: apache2-prefork
BuildRequires: cyrus-sasl-devel
BuildRequires: db-devel
BuildRequires: dbus-1-devel
BuildRequires: doxygen
BuildRequires: file-devel
BuildRequires: gcc-c++
BuildRequires: glib2-devel
BuildRequires: java-devel >= 1.6.0
BuildRequires: junit
BuildRequires: krb5-devel
BuildRequires: libgnome-keyring-devel
BuildRequires: libserf-devel >= 1.2.1
BuildRequires: libstdc++-devel
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: python-devel
BuildRequires: python-xml
BuildRequires: ruby-devel >= 1.8.2
BuildRequires: sqlite3-devel >= %{sqlite_minimum_version}
BuildRequires: swig
BuildRequires: update-alternatives
BuildRequires: zlib-devel
Requires: libsqlite3-0 >= %{sqlite_minimum_version}
Requires(post): %fillup_prereq
Requires(pre): pwdutils
Provides: subversion-javahl = %{version}-%{release}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} < 1210
Requires(post): %insserv_prereq
%endif
%if 0%{?suse_version} > 1130
BuildRequires: bash-completion
# Test dependency
BuildRequires: python-pysqlite
%endif
%if %{with all_regression_tests}
# tools required for network based tests
BuildRequires: net-tools
BuildRequires: wget
%if %{?suse_version} >= 1310
BuildRequires: time
%endif
%endif
%if %{with python_ctypes}
BuildRequires: ctypesgen
%endif
%if %{with_kde}
BuildRequires: kdelibs4-core
BuildRequires: libkde4-devel
BuildRequires: libqt4-devel
%endif
%if 0%{?suse_version}
Recommends: %{name}-bash-completion
Recommends: %{name}-password-store
%endif
%description
Subversion exists to be universally recognized and adopted as an open-source,
centralized version control system characterized by its reliability as a safe
haven for valuable data; the simplicity of its model and usage; and its ability
to support the needs of a wide variety of users and projects, from individuals
to large-scale enterprise operations.
%package devel
Summary: Development package for Subversion developers
Group: Development/Libraries/C and C++
# this pulls in libapr1-devel and libexpat-devel
Requires: libapr-util1-devel
Requires: subversion = %{version}
%description devel
The subversion-devel package includes the static libraries and include
files for developers interacting with the subversion package.
%package tools
Summary: Tools for Subversion
Group: Development/Tools/Version Control
%description tools
This package contains some tools for subversion server and
repository admins.
%package perl
Summary: Allows Perl scripts to directly use Subversion repositories
Group: Development/Tools/Version Control
Requires: perl = %{perl_version}
Requires: perl >= 5.8
Requires: subversion = %{version}
%description perl
Provides Perl (SWIG) support for Subversion version control system.
%package python
Summary: Allows Python scripts to directly use Subversion repositories
Group: Development/Tools/Version Control
Requires: subversion = %{version}
%description python
Provides Python (SWIG) support for Subversion version control system.
%if %{with python_ctypes}
%package python-ctypes
Summary: High-Level Python Bindings for Subversion
Group: Development/Tools/Version Control
Requires: subversion = %{version}
%description python-ctypes
Provides high-level Python support for Subversion, based on ctypes.
%endif
%package ruby
Summary: Allows Ruby scripts to directly use Subversion repositories
Group: Development/Tools/Version Control
Requires: subversion = %{version}
%description ruby
Provides Ruby (SWIG) support for Subversion version control system.
%package server
Summary: Apache server module for Subversion server
Group: Development/Tools/Version Control
Requires: %{apache_mmn}
Requires: apache2
Requires: subversion = %{version}
%description server
The subversion-server package adds the Subversion server Apache module
to the Apache directories and configuration.
%if %{with_kde}
%package -n libsvn_auth_kwallet-1-0
Summary: KWallet support for Subversion
Group: Development/Tools/Version Control
Requires: %{name} = %{version}
Provides: subversion-password-store = %{version}
%description -n libsvn_auth_kwallet-1-0
Provides KWallet integration for Subversion
%endif
%package -n libsvn_auth_gnome_keyring-1-0
Summary: GNOME keyring sypport for Subversion
Group: Development/Tools/Version Control
Requires: %{name} = %{version}
Provides: subversion-password-store = %{version}
%description -n libsvn_auth_gnome_keyring-1-0
Provides GNOME keyring support for Subversion
%if 0%{?suse_version} > 1130
%package bash-completion
Summary: Bash Completion for %{name}
Group: Development/Tools/Version Control
Requires: %{name} = %{version}
Requires: bash-completion
BuildArch: noarch
%description bash-completion
Bash command line completion support for %{name} - completion of subcommands,
parameters and keywords for the svn command and other tools.
%endif
%prep
%setup -q -n subversion-%{version} -a 4
%patch11 -p1
%patch20 -p1
%patch23 -p1
%patch30 -p1
%patch37 -p1
%patch38 -p1
%patch39
%patch40 -p1
%patch41 -p1
%patch42
%patch43
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch47
%build
# Re-boot strap, needed for patch37
PATH=%{_prefix}/bin:$PATH ./autogen.sh --release
# Fix timestamp in doxygen
echo "HTML_TIMESTAMP = NO" >> doc/doxygen.conf
cat > with_jdk.files <<EOF-JAVA
%{_libdir}/libsvnjavahl*.so.*
%{_libdir}/libsvnjavahl*.so
%dir %{_libdir}/svn-javahl
%{_libdir}/svn-javahl/svn-javahl.jar
%{_datadir}/java/svn-javahl.jar
EOF-JAVA
# ### these possibly need further discussion
# swig_pydir = @libdir@/svn-python/libsvn
# swig_pydir_extra = @libdir@/svn-python/svn
sed --in-place=~ "
s@^swig_pydir = .*@swig_pydir = %{python_sitearch}/libsvn@
s@^swig_pydir_extra = .*@swig_pydir_extra = %{python_sitearch}/svn@
" Makefile.in
diff -u Makefile.in~ Makefile.in || true
sh -x autogen.sh
for i in subversion/bindings/javahl/native/*.cpp
do
d=$(sed -n '/^#include "..\/include/{s@^[^/]\+\([^"]\+\).*@subversion/bindings/javahl\1@;H};${x;s@\n@ @gp}' $i)
echo
echo "# $i"
if ! test -z "$d"
then
echo ${i%.cpp}.lo: $d
fi
echo
done >> build-outputs.mK
export CFLAGS="$(%{apxs} -q CFLAGS) %{optflags} -fstack-protector -fpie"
export CXXFLAGS="$CFLAGS"
export APACHE_LDFLAGS="-Wl,-z,relro,-z,now"
export LDFLAGS="-pie"
%configure \
--enable-local-library-preloading \
--with-editor="vim -c 'set tw=72 et' " \
--with-serf=%{_prefix} \
--with-apr=%{_prefix} \
--with-apr-util=%{_prefix} \
--with-apxs=%{apxs} \
--with-zlib=%{_prefix} \
--with-berkeley-db=db.h:db.h:%{_prefix}:db \
--with-apache-libexecdir=%{apache_libexecdir} \
--with-jdk=%{_libdir}/jvm/java --enable-javahl \
--with-junit="%{_datadir}/java/junit.jar" \
--with-jikes=no \
--with-sqlite="%{_prefix}" \
--enable-sqlite-compatibility-version=%{sqlite_minimum_version} \
--with-gnome-keyring \
%if %{with_kde}
--with-kwallet \
%endif
--disable-mod-activation \
--with-libmagic \
--disable-static \
--enable-broken-httpd-auth
make %{?_smp_mflags}
make doc-api %{?_smp_mflags}
# Bindings
make extraclean-bindings %{?_smp_mflags}
make %{?_smp_mflags} swig-py swig-rb swig-pl
%if %{with python_ctypes}
make %{?_smp_mflags} ctypes-python
%endif
# Java is not thread safe
make -j1 JAVAC_FLAGS=" -encoding iso8859-1" javahl doc-javahl
%install
%if 0%{?suse_version} == 1110
export NO_BRP_CHECK_BYTECODE_VERSION=true
%endif
make DESTDIR=%{buildroot} install -j1
make DESTDIR=%{buildroot} install-swig-py install-swig-pl install-javahl install-swig-rb
%if %{with python_ctypes}
make DESTDIR=%{buildroot} install-ctypes-python
# remove csvn .pyc files and recompile them because they contain the $RPM_BUILD_ROOT path:
find "%{buildroot}%{python_sitelib}/csvn/" -name "*.pyc" | xargs rm -f
python "%{py_libdir}/compileall.py" -f -d "%{python_sitelib}/csvn" "%{buildroot}/%{python_sitelib}/csvn"
%endif
%perl_process_packlist
%find_lang %{name}
cp -Lav %{SOURCE42} %{buildroot}%{_bindir}/svngrep
cp -Lav %{SOURCE43} %{buildroot}%{_bindir}/svndiff
mkdir -p %{buildroot}%{_datadir}/emacs/site-lisp/
cp -avL contrib/client-side/emacs/*.el %{buildroot}%{_datadir}/emacs/site-lisp/
rm -f %{buildroot}%{_datadir}/emacs/site-lisp/vc-svn.el
cp -avL contrib/client-side/svn_apply_autoprops.py %{buildroot}%{_prefix}/bin
mkdir -p %{buildroot}/%{apache_sysconfdir}/conf.d
cp -av %{SOURCE1} %{buildroot}/%{apache_sysconfdir}/conf.d/subversion.conf
cp -avL %{SOURCE2} README.SUSE
cp -avL subversion/mod_authz_svn/INSTALL README.mod_authz_svn
cat %{name}.lang > files.subversion
cat with_jdk.files >> files.subversion
# tools
make DESTDIR=%{buildroot} install-tools
mv %{buildroot}%{_bindir}/svn-tools/{svn-populate-node-origins-index,svn-rep-sharing-stats,svnauthz-validate,svn-bench,fsfs-stats} %{buildroot}%{_bindir}
# discard all other tools
rm -rf %{buildroot}%{_bindir}/svn-tools
mkdir -p %{buildroot}%{_prefix}/sbin
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
install -m 644 -D %{SOURCE13} %{buildroot}%{_sysconfdir}/xinetd.d/svnserve
install -m 644 -D %{SOURCE10} %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.svnserve
install -m 644 -D %{SOURCE12} %{buildroot}/%{_fwdefdir}/svnserve
install -d -m 0755 %{buildroot}/srv/svn
%if 0%{?with_systemd}
install -m 644 -D %{SOURCE14} %{buildroot}/%{_unitdir}/svnserve.service
ln -sv %{_sbindir}/service %{buildroot}%{_sbindir}/rcsvnserve
install -d -m 0755 %{buildroot}/%{_tmpfilesdir}
install -m 0644 %{SOURCE15} %{buildroot}/%{_tmpfilesdir}/svnserve.conf
%else
install -m 755 -D %{SOURCE9} %{buildroot}%{_initddir}/svnserve
ln -sv %{_initddir}/svnserve %{buildroot}%{_sbindir}/rcsvnserve
%endif
#useless libtool stuff
rm -rf %{buildroot}%{python_sitearch}/*/*.{a,la}
rm -rf %{buildroot}%{_libdir}/libsvn_swig_*.{so,la,a}
rm -rf %{buildroot}%{rb_sitelib}/svn/ext/*.*a
find %{buildroot} -type f -name "*.la" -delete -print
# remove stuff produced with Perl modules
find %{buildroot} -type f \
-a \( -name .packlist -o \( -name '*.bs' -a -empty \) \) \
-print0 | xargs -0 rm -f
# make Perl modules writable so they get stripped
%if 0%{?suse_version} > 1130
find %{buildroot}%{_libexecdir}/perl5 -type f -perm 555 -print0 |
xargs -0 chmod 755
%endif
install -d -m 0755 %{buildroot}/%{_datadir}/java
ln -sv %{_libdir}/svn-javahl/svn-javahl.jar %{buildroot}/%{_datadir}/java/svn-javahl.jar
rm -f %{buildroot}%{_localstatedir}/adm/perl-modules/subversion
%if 0%{?suse_version} > 1130
install -D -m0644 tools/client-side/bash_completion "%{buildroot}%{_sysconfdir}/bash_completion.d/%{name}"
%endif
# examples
mkdir -p %{buildroot}%{_docdir}/%{name}
cp -r tools/hook-scripts tools/backup tools/bdb tools/examples tools/xslt %{buildroot}%{_docdir}/%{name}
find %{buildroot}%{_docdir}/%{name} -type f -print0 | xargs -0 chmod 644
# clean tools for doc
rm -rf tools/*/*.in
rm -rf doc/doxygen/html/installdox
%check
#
# double check that the essential repository access schemes have been compiled in
#
schemes=$(LD_LIBRARY_PATH="%{buildroot}%{_libdir}" "%{buildroot}%{_bindir}/svn" --version | grep "'" | cut -d\' -f2 | sort -u)
# reset vim syntax: '
test "$schemes" = "file
http
https
svn"
export LANG=C LC_ALL=C
make %{?_smp_mflags} check CLEANUP=true || (cat fails.log; exit 1)
make %{?_smp_mflags} check-javahl || (cat fails.log; exit 1)
make %{?_smp_mflags} check-swig-pl || (cat fails.log; exit 1)
%if 0%{?suse_version} <= 1320
# swig bindings check failing from swig 3.0.3 and later
make %{?_smp_mflags} check-swig-py || (cat fails.log; exit 1)
# same for ruby bindings
make %{?_smp_mflags} check-swig-rb || (cat fails.log; exit 1)
%endif
%if %{with all_regression_tests}
make %{?_smp_mflags} svnserveautocheck CLEANUP=true FS_TYPE=fsfs || (cat fails.log; exit 1)
make %{?_smp_mflags} svnserveautocheck CLEANUP=true FS_TYPE=bdb || (cat fails.log; exit 1)
make %{?_smp_mflags} davautocheck CLEANUP=true FS_TYPE=fsfs || (cat fails.log; exit 1)
make %{?_smp_mflags} davautocheck CLEANUP=true FS_TYPE=bdb || (cat fails.log; exit 1)
%endif
%pre
getent group %{svngroup} >/dev/null || groupadd -r %{svngroup}
getent passwd %{svnuser} >/dev/null || useradd -r -g %{svngroup} -d /srv/svn -s /sbin/nologin -c "user for Apache Subversion svnserve" %{svnuser}
%if 0%{?with_systemd}
%service_add_pre svnserve.service
%endif
%preun
%if 0%{?with_systemd}
%service_del_preun svnserve.service
%else
%stop_on_removal svnserve
%endif
%post
%{fillup_only -n svnserve svnserve}
%if 0%{?with_systemd}
%service_add_post svnserve.service
systemd-tmpfiles --create %{_tmpfilesdir}/svnserve.conf
%else
%{fillup_and_insserv -n svnserve svnserve}
%endif
/sbin/ldconfig
%postun
%if 0%{?with_systemd}
%service_del_postun svnserve.service
%else
%insserv_cleanup
%endif
/sbin/ldconfig
%post -n subversion-python -p /sbin/ldconfig
%postun -n subversion-python -p /sbin/ldconfig
%post -n subversion-perl -p /sbin/ldconfig
%postun -n subversion-perl -p /sbin/ldconfig
%post -n subversion-ruby -p /sbin/ldconfig
%postun -n subversion-ruby -p /sbin/ldconfig
%post -n libsvn_auth_gnome_keyring-1-0 -p /sbin/ldconfig
%postun -n libsvn_auth_gnome_keyring-1-0 -p /sbin/ldconfig
%if %{with_kde}
%post -n libsvn_auth_kwallet-1-0 -p /sbin/ldconfig
%postun -n libsvn_auth_kwallet-1-0 -p /sbin/ldconfig
%endif
%files -f files.subversion
%defattr(-,root,root)
%doc README.SUSE BUGS CHANGES LICENSE README.mod_authz_svn
%dir %{_docdir}/%{name}/*
%config(noreplace) %{_sysconfdir}/xinetd.d/svnserve
%{_sbindir}/rcsvnserve
%{_localstatedir}/adm/fillup-templates/sysconfig.svnserve
%dir %attr(755,%{svnuser},%{svngroup}) /srv/svn
%config %{_fwdefdir}/*
%if 0%{?with_systemd}
%{_unitdir}/svnserve.service
%{_tmpfilesdir}/svnserve.conf
%else
%{_initddir}/svnserve
%endif
%attr(755,root,root) %{_bindir}/svn
%attr(755,root,root) %{_bindir}/svnadmin
%attr(755,root,root) %{_bindir}/svndumpfilter
%attr(755,root,root) %{_bindir}/svnlook
%attr(755,root,root) %{_bindir}/svnserve
%attr(755,root,root) %{_bindir}/svnversion
%attr(755,root,root) %{_bindir}/svndiff
%attr(755,root,root) %{_bindir}/svngrep
%attr(755,root,root) %{_bindir}/svnsync
%attr(755,root,root) %{_bindir}/svnrdump
%attr(755,root,root) %{_bindir}/svnmucc
%{_libdir}/libsvn_client*.so.*
%{_libdir}/libsvn_delta*.so.*
%{_libdir}/libsvn_diff*.so.*
%{_libdir}/libsvn_fs*.so.*
%{_libdir}/libsvn_ra*.so.*
%{_libdir}/libsvn_repos*.so.*
%{_libdir}/libsvn_subr*.so.*
%{_libdir}/libsvn_wc*.so.*
%{_mandir}/man?/svn*
%{_datadir}/emacs
%files perl
%defattr(-,root,root)
%doc %{_mandir}/man?/SVN::*
%{_libdir}/libsvn_swig_perl-1.so.*
%{perl_vendorarch}/SVN
%{perl_vendorarch}/auto/SVN
%files python
%defattr(-,root,root)
%dir %{python_sitearch}
%dir %{python_sitearch}/svn
%dir %{python_sitearch}/libsvn
%{_libdir}/libsvn_swig_py-1.so.*
%{python_sitearch}/libsvn/*
%{python_sitearch}/svn/*
%if %{with python_ctypes}
%files python-ctypes
%defattr(-,root,root)
%doc subversion/bindings/ctypes-python/examples
%dir %{python_sitelib}
%{python_sitelib}/csvn
%{python_sitelib}/svn_ctypes_python_bindings-*-py%{py_ver}.egg-info
%endif
%files ruby
%defattr(-,root,root)
%dir %{rb_sitelib}
%{rb_sitelib}/svn
%{rb_sitelib}/*/svn
%{_libdir}/libsvn_swig_ruby-1.so.*
%files devel
%defattr(-,root,root)
%dir %{_includedir}/subversion-1
%{_libdir}/libsvn_*.so
%{_includedir}/subversion-1/*
%doc doc/doxygen/html
%files tools
%defattr(-,root,root)
%attr(755,root,root) %{_bindir}/svn_apply_autoprops.py
%{_bindir}/svn-populate-node-origins-index
%{_bindir}/svnauthz-validate
%{_bindir}/svn-rep-sharing-stats
%{_bindir}/svn-bench
%{_bindir}/fsfs-stats
%files server
%defattr(-,root,root)
%dir %{apache_sysconfdir}/conf.d
%config (noreplace) %{apache_sysconfdir}/conf.d/subversion.conf
%dir %{apache_libexecdir}
%{apache_libexecdir}/mod_dav_svn.*
%{apache_libexecdir}/mod_authz_svn.*
%{apache_libexecdir}/mod_dontdothat.*
%files -n libsvn_auth_gnome_keyring-1-0
%defattr(-,root,root)
%{_libdir}/libsvn_auth_gnome_keyring-1.so.0
%{_libdir}/libsvn_auth_gnome_keyring-1.so.0.*
%if %{with_kde}
%files -n libsvn_auth_kwallet-1-0
%defattr(-,root,root)
%{_libdir}/libsvn_auth_kwallet-1.so.0
%{_libdir}/libsvn_auth_kwallet-1.so.0.*
%endif
%if 0%{?suse_version} > 1130
%files bash-completion
%defattr(-,root,root)
%config %{_sysconfdir}/bash_completion.d/%{name}
%endif
%changelog