# TODO
-# - user varnish
-# - varnishlog initscript
+# - make tests use secure dir, not /tmp, see varnish-2.0.6/bin/varnishtest
+# - hungs ac builders: tests/a00009.vtc
+
+# Conditional build:
+%bcond_without doc # build documentation
+%bcond_without tests # build without tests. binds daemon on 127.0.0.1 9080, 9081, 9001 ports
+%bcond_without source # build source package
+
Summary: Varnish - a high-performance HTTP accelerator
Summary(pl.UTF-8): Varnish - wydajny akcelerator HTTP
Name: varnish
-Version: 1.1.2
+Version: 3.0.7
Release: 1
License: BSD
-Group: Daemons
-Source0: http://dl.sourceforge.net/varnish/%{name}-%{version}.tar.gz
-# Source0-md5: d9f74dae59a2158cdc31f446b6d92397
+Group: Networking/Daemons/HTTP
+Source0: http://repo.varnish-cache.org/source/%{name}-%{version}.tar.gz
+# Source0-md5: aa63a7808d775c005d020c41f152b7af
Source1: %{name}.init
-Source2: %{name}.sysconfig
-Source3: %{name}.conf
+Source3: %{name}ncsa.init
+Source4: %{name}.sysconfig
+Source5: %{name}ncsa.sysconfig
+Source6: %{name}.logrotate
+Source8: %{name}.tmpfiles
+#Patch100: branch.diff
+Patch0: no-ccache.patch
+Patch1: no-sysctl.patch
+Patch2: ac.patch
URL: http://www.varnish-cache.org/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libstdc++-devel
-BuildRequires: libtool >= 2:1.5
+BuildRequires: libtool >= 2:2.0
BuildRequires: ncurses-devel
-Requires(post): /sbin/ldconfig
+BuildRequires: pcre-devel
+BuildRequires: pkgconfig
+BuildRequires: rpmbuild(macros) >= 1.647
+BuildRequires: sed >= 4.0
+%if %{with doc}
+BuildRequires: docutils
+BuildRequires: groff
+BuildRequires: libxslt-progs
+%endif
+Requires(postun): /usr/sbin/groupdel
+Requires(postun): /usr/sbin/userdel
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+Requires: %{name}-libs = %{version}-%{release}
Requires: gcc
Requires: glibc-devel
+Requires: rc-scripts >= 0.4.1.26
+Suggests: vim-syntax-vcl
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _sysconfdir /etc/%{name}
+%define _localstatedir /var/run
%description
The goal of the Varnish project is to develop a state-of-the-art,
2.6 i będzie wykorzystywał w pełni zaawansowane możliwości we/we
oferowane przez te systemy operacyjne.
+%package libs
+Summary: Libraries for Varnish
+Group: Libraries
+Conflicts: varnish < 2.0.4-2
+
+%description libs
+Libraies for Varnish.
+
%package devel
Summary: Header files for varnish library
Summary(pl.UTF-8): Pliki nagłówkowe biblioteki varnish
Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
%description devel
Header files for varnish library.
%description static -l pl.UTF-8
Statyczna biblioteka varnish.
+%package source
+Summary: Source code of Varnish for building VMODs
+Group: Documentation
+Requires: %{name}-devel = %{version}-%{release}
+
+%description source
+Source code of Varnish for building VMODs.
+
%prep
%setup -q
+#%patch100 -p0
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+
+#%{__sed} -i -e 's,$(srcdir)/,,' bin/varnishtest/Makefile.am
+
+%{__sed} -i -e '1s,^#!.*python,#!%{__python},' lib/libvmod_std/vmod.py
%build
export CPPFLAGS="-I/usr/include/ncurses"
-%{__aclocal}
+%{__aclocal} -I m4
%{__libtoolize}
%{__autoheader}
%{__automake}
%{__autoconf}
-%configure
+%configure \
+%ifarch hppa s390 sparc ppc
+ --disable-jemalloc
+%endif
+
%{__make}
+%if %{with tests}
+%{__make} check \
+ LD_LIBRARY_PATH="../../lib/libvarnish/.libs:../../lib/libvarnishcompat/.libs:../../lib/libvarnishapi/.libs:../../lib/libvcl/.libs"
+%endif
+
%install
rm -rf $RPM_BUILD_ROOT
-
%{__make} install \
+ INSTALL="install -p" \
DESTDIR=$RPM_BUILD_ROOT
# make dirs after make install to know which ones needs spec and which ones make install
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig},/var/{run,lib}/varnish}
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{logrotate.d,rc.d/init.d,sysconfig},/var/{run,lib}/varnish} \
+ $RPM_BUILD_ROOT/var/log/{archive/,}varnish \
+ $RPM_BUILD_ROOT%{systemdtmpfilesdir}
+
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/varnish
+install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/varnishncsa
+cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/varnish
+cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/varnishncsa
+cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/varnish
+cp -p %{SOURCE8} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
+touch $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/secret
+
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/*.la
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/vmods/*.la
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/varnish
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/varnish
-install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/default.vcl
+%if %{with source}
+# prepare tree for VMOD build
+install -d $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/{include,bin/{varnishtest,varnishd},lib/libvmod_std}
+
+# add extra headers
+cp -pn include/*.h $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/include
+cp -p bin/varnishd/*.h $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/bin/varnishd
+
+for a in $RPM_BUILD_ROOT%{_includedir}/%{name}/*.h; do
+ f=${a#$RPM_BUILD_ROOT}
+ ln -sf $f $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/include
+done
+
+ln -s %{_bindir}/varnishtest $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/bin/varnishtest
+ln -s %{_sbindir}/varnishd $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/bin/varnishd
+cp -p lib/libvmod_std/vmod.py $RPM_BUILD_ROOT%{_usrsrc}/%{name}-%{version}/lib/libvmod_std
+
+# add pkg config variable for eash access
+%{__sed} -i -e '/^vmoddir/a srcdir=%{_usrsrc}/%{name}-%{version}' \
+ $RPM_BUILD_ROOT%{_pkgconfigdir}/varnishapi.pc
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%post
-/sbin/ldconfig
/sbin/chkconfig --add varnish
-%service %{name} restart
+/sbin/chkconfig --add varnishncsa
+%service varnish restart
+%service varnishncsa restart
-%postun -p /sbin/ldconfig
+%pre
+%groupadd -g 241 %{name}
+%useradd -u 241 -d /var/lib/%{name} -g %{name} -c "Varnishd User" %{name}
+
+%postun
+if [ "$1" = "0" ]; then
+ %userremove %{name}
+ %groupremove %{name}
+fi
%preun
if [ "$1" = "0" ]; then
- %service -q %{name} stop
- /sbin/chkconfig --del %{name}
+ %service -q varnish stop
+ %service -q varnishncsa stop
+ /sbin/chkconfig --del varnish
+ /sbin/chkconfig --del varnishncsa
fi
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
-%doc LICENSE README ChangeLog
-%dir %{_sysconfdir}
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/default.vcl
+%doc LICENSE README ChangeLog etc/*.vcl
+%dir %attr(750,root,root) %{_sysconfdir}/%{name}
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/default.vcl
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/varnish
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/varnishncsa
+%ghost %attr(600,root,root) %{_sysconfdir}/%{name}/secret
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/varnish
%attr(754,root,root) /etc/rc.d/init.d/varnish
+%attr(754,root,root) /etc/rc.d/init.d/varnishncsa
%attr(755,root,root) %{_sbindir}/varnishd
-%attr(755,root,root) %{_bindir}/*
-%attr(755,root,root) %{_libdir}/*.so.*.*.*
-/var/lib/varnish
-/var/run/varnish
-%{_mandir}/man1/*
-%{_mandir}/man7/*
+%attr(755,root,root) %{_bindir}/varnishadm
+%attr(755,root,root) %{_bindir}/varnishhist
+%attr(755,root,root) %{_bindir}/varnishlog
+%attr(755,root,root) %{_bindir}/varnishncsa
+%attr(755,root,root) %{_bindir}/varnishreplay
+%attr(755,root,root) %{_bindir}/varnishsizes
+%attr(755,root,root) %{_bindir}/varnishstat
+%attr(755,root,root) %{_bindir}/varnishtest
+%attr(755,root,root) %{_bindir}/varnishtop
+%dir %{_libdir}/%{name}
+%attr(755,root,root) %{_libdir}/%{name}/libvarnish.so
+%attr(755,root,root) %{_libdir}/%{name}/libvarnishcompat.so
+%attr(755,root,root) %{_libdir}/%{name}/libvcl.so
+%attr(755,root,root) %{_libdir}/%{name}/libvgz.so
+%dir %{_libdir}/%{name}/vmods
+%attr(755,root,root) %{_libdir}/%{name}/vmods/libvmod_std.so
+%{_mandir}/man1/varnishadm.1*
+%{_mandir}/man1/varnishd.1*
+%{_mandir}/man1/varnishhist.1*
+%{_mandir}/man1/varnishlog.1*
+%{_mandir}/man1/varnishncsa.1*
+%{_mandir}/man1/varnishreplay.1*
+%{_mandir}/man1/varnishsizes.1*
+%{_mandir}/man1/varnishstat.1*
+%{_mandir}/man1/varnishtest.1*
+%{_mandir}/man1/varnishtop.1*
+%{_mandir}/man3/vmod_std.3*
+%{_mandir}/man7/varnish-cli.7*
+%{_mandir}/man7/varnish-counters.7*
+%{_mandir}/man7/vcl.7*
+%dir /var/lib/varnish
+%dir /var/run/varnish
+%{systemdtmpfilesdir}/%{name}.conf
+
+%dir %attr(751,root,root) /var/log/varnish
+%dir %attr(750,root,root) /var/log/archive/varnish
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libvarnishapi.so.*.*.*
+%ghost %{_libdir}/libvarnishapi.so.1
%files devel
%defattr(644,root,root,755)
%{_includedir}/varnish
-%attr(755,root,root) %{_libdir}/*.so
-%{_libdir}/*.la
-%{_pkgconfigdir}/*.pc
+%{_libdir}/libvarnishapi.la
+%{_libdir}/libvarnishapi.so
+%{_pkgconfigdir}/varnishapi.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/*.a
+%{_libdir}/libvarnishapi.a
+%{_libdir}/%{name}/libvarnish.a
+%{_libdir}/%{name}/libvarnishcompat.a
+%{_libdir}/%{name}/libvcl.a
+%{_libdir}/%{name}/libvgz.a
+%{_libdir}/%{name}/vmods/libvmod_std.a
+
+%if %{with source}
+%files source
+%defattr(644,root,root,755)
+%{_usrsrc}/%{name}-%{version}
+%endif