+#
+# Conditional build:
+%bcond_without verbose # verbose build (V=1)
+
# NOTE
-# - use make < 3.82 (from th-obsolete) to hack on code, because 3.82
-# invalidates built objects and it's annoying to wait if all is recompiled
-# each time you invoke make
+# - http://code.google.com/p/modpagespeed/wiki/HowToBuild
# - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
# TODO
-# - c++ errors on 64bit/32bit gcc 4.5.1-4:
-# /usr/include/c++/4.5.1/bits/stl_map.h:87:5: instantiated from here
-# /usr/include/c++/4.5.1/bits/stl_pair.h:77:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type
-# ./net/instaweb/util/public/cache_interface.h:28:7: error: forward declaration of ‘struct net_instaweb::SharedString’
-# make[1]: *** [out/Release/obj.target/mod_pagespeed_test/net/instaweb/util/cache_fetcher_test.o] Error 1
-# http://pastebin.com/Eu88BPSQ
-# - sizeof(apr_int32_t) == sizeof(apr_int64_t) on 32bit (!?!):
-# third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t':
-# third_party/apache/apr/src/strings/apr_snprintf.c:500:5: error: duplicate case value
-# third_party/apache/apr/src/strings/apr_snprintf.c:498:5: error: previously used here
-# third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t_hex':
-# third_party/apache/apr/src/strings/apr_snprintf.c:671:5: error: duplicate case value
-# third_party/apache/apr/src/strings/apr_snprintf.c:669:5: error: previously used here
+# - add unit tests running
+# - use only source for modpagespeed if system headers are used (remove copies from tarball)
# - possible sysdeps (uses release tags)
# "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1",
-# "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2",
-# "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9",
-# "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15",
-# "opencv_src": "https://code.ros.org/svn/opencv/tags/2.1",
# "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src",
# "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
-%define svndate 20101104
+# protobuf_lite
+
+%if "%{pld_release}" == "ac"
+# add suffix, but allow ccache, etc in ~/.rpmmacros
+%{expand:%%define __cc %(echo '%__cc' | sed -e 's,-gcc,-gcc4,')}
+%{expand:%%define __cxx %(echo '%__cxx' | sed -e 's,-g++,-g++4,')}
+%{expand:%%define __cpp %(echo '%__cpp' | sed -e 's,-gcc,-gcc4,')}
+%endif
+
%define mod_name pagespeed
%define apxs %{_sbindir}/apxs
Summary: Apache module for rewriting web pages to reduce latency and bandwidth
Name: apache-mod_%{mod_name}
-Version: 0.9.0.0
-Release: 0.3
+Version: 0.10.22.4
+Release: 0.11
License: Apache v2.0
Group: Networking/Daemons/HTTP
-# wget -c http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz
-# test -d depot_tools || tar xzf depot_tools.tar.gz
-# install -d modpagespeed
-# cd modpagespeed
-# test -f .gclient || ../depot_tools/gclient config http://modpagespeed.googlecode.com/svn/trunk/src
-# ../depot_tools/gclient sync
-# Populate the LASTCHANGE file template as we will not include VCS info in tarball
-# (cd src/build && svnversion > LASTCHANGE.in)
-# cd ..
-# tar -cjf modpagespeed-$(date +%Y%m%d).tar.bz2 --exclude-vcs modpagespeed
-# ../dropin modpagespeed-$(date +%Y%m%d).tar.bz2 &
-Source0: modpagespeed-%{svndate}.tar.bz2
-# Source0-md5: 1640f3c7226ffd3ba4a67f0064241495
-URL: http://code.google.com/p/modpagespeed/
+Source0: modpagespeed-%{version}.tar.bz2
+# Source0-md5: 447f11184ab8b82f59b07a3e3b99425a
+Source1: get-source.sh
+Patch0: system-libs.patch
+Patch1: gcc-headers.patch
+URL: https://developers.google.com/speed/pagespeed/
BuildRequires: %{apxs}
BuildRequires: apache-devel >= 2.2
+BuildRequires: dbus-glib-devel
+BuildRequires: fontconfig-devel
+BuildRequires: freetype-devel
+BuildRequires: glib2-devel
+BuildRequires: gperf
+BuildRequires: gtk+2-devel
+BuildRequires: python-gyp >= 1-1175
+BuildRequires: libgcrypt-devel
+BuildRequires: libgnome-keyring-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+BuildRequires: libselinux-devel
+BuildRequires: libstdc++-devel >= 5:4.1
+BuildRequires: opencv-devel
+BuildRequires: openssl-devel
+BuildRequires: pkgconfig
+BuildRequires: python-devel >= 1:2.6
BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXext-devel
+BuildRequires: xorg-lib-libXi-devel
+BuildRequires: zlib-devel
+# gcc4 might be installed, but not current __cc
+%if "%(echo %{cc_version} | cut -d. -f1,2)" < "4.0"
+BuildRequires: __cc >= 4.0
+%endif
Requires: apache(modules-api) = %apache_modules_api
+Requires: apache-mod_authz_host
+Requires: apache-mod_headers
Suggests: apache-mod_deflate
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%prep
%setup -q -n modpagespeed
+%patch0 -p1
+%patch1 -p1
%build
# re-gen makefiles
cd src
CC="%{__cc}" \
CXX="%{__cxx}" \
-%{__python} build/gyp_chromium --format=make build/all.gyp
+%{__python} build/gyp_chromium --format=make build/all.gyp \
+ -Dlinux_link_gsettings=1 \
+ -Dlinux_link_gnome_keyring=1 \
+ -Duse_gnome_keyring=1 \
+ -Duse_openssl=1 \
+ -Duse_system_apache_dev=1 \
+ -Duse_system_libjpeg=1 \
+ -Duse_system_libpng=1 \
+ -Duse_system_opencv=1 \
+ -Duse_system_zlib=1 \
+ %{nil}
+
cd ..
# makefile wrapper so we could just invoke "make" from shell
cat > Makefile <<'EOF'
+# target names from build/all.gyp
default:
- $(MAKE) -C src \
+ $(MAKE) -C src mod_pagespeed \
BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
%{?with_verbose:V=1} \
CC="%{__cc}" \
LINK.host="%{__cxx}" \
CFLAGS="%{rpmcflags} %{rpmcppflags}" \
CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
+ $(MAKEFLAGS) \
EOF
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} -j1 -C src/install staging \
+install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{cachedir}/{cache,files}}
+%{__make} -j1 -C src/install staging_except_module \
HOSTNAME=localhost \
APACHE_ROOT=%{_pkgrootdir} \
- APACHE_MODULES=%{_pkglibdir} \
+ APACHE_MODULES=modules \
APACHE_DOC_ROOT=%{htdocsdir} \
MOD_PAGESPEED_FILE_ROOT=%{cachedir} \
STAGING_DIR=staging
-cd staging
-install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir}}
-install -p mod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}
-install -d $RPM_BUILD_ROOT%{cachedir}/{cache,files}
+install -p src/out/Release/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
+cd src/install/staging
cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
$(cat pagespeed.conf)
EOF
+install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+
%clean
rm -rf $RPM_BUILD_ROOT
%defattr(644,root,root,755)
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
%attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
+%{_examplesdir}/%{name}-%{version}
%dir %attr(710,root,http) %{cachedir}
%dir %attr(770,root,http) %{cachedir}/cache