3 %bcond_without verbose # verbose build (V=1)
6 # - http://code.google.com/p/modpagespeed/wiki/HowToBuild
7 # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
9 # - add unit tests running
10 # - possible sysdeps (uses release tags)
11 # "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1",
12 # "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src",
13 # "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
16 %if "%{pld_release}" == "ac"
17 # add suffix, but allow ccache, etc in ~/.rpmmacros
18 %{expand:%%define __cc %(echo '%__cc' | sed -e 's,-gcc,-gcc4,')}
19 %{expand:%%define __cxx %(echo '%__cxx' | sed -e 's,-g++,-g++4,')}
20 %{expand:%%define __cpp %(echo '%__cpp' | sed -e 's,-gcc,-gcc4,')}
23 %define mod_name pagespeed
24 %define apxs %{_sbindir}/apxs
25 Summary: Apache module for rewriting web pages to reduce latency and bandwidth
26 Name: apache-mod_%{mod_name}
30 Group: Networking/Daemons/HTTP
31 Source0: modpagespeed-%{version}.tar.xz
32 # Source0-md5: 7df9bf6b1aacec28d81b1678192652ca
33 Source1: get-source.sh
35 Patch0: system-libs.patch
36 Patch1: gcc-headers.patch
38 URL: https://developers.google.com/speed/pagespeed/
39 BuildRequires: %{apxs}
40 BuildRequires: apache-devel >= 2.2
41 BuildRequires: glib2-devel
43 BuildRequires: libjpeg-devel
44 BuildRequires: libselinux-devel
45 BuildRequires: libstdc++-devel >= 5:4.1
46 BuildRequires: opencv-devel >= 2.3.1
47 BuildRequires: openssl-devel
48 BuildRequires: pkgconfig
49 BuildRequires: python-devel >= 1:2.6
50 # This version of gyp is new enough that it knows to use make for Linux 3.x
51 # and FreeBSD, but old enough that 'type': 'settings' works and
52 # LINKER_SUPPORTS_ICF hasn't been removed yet.
53 BuildRequires: python-gyp >= 1-1175
54 BuildRequires: rpmbuild(macros) >= 1.268
55 BuildRequires: tar >= 1:1.22
56 BuildRequires: util-linux
58 BuildRequires: zlib-devel
59 # gcc4 might be installed, but not current __cc
60 %if "%(echo %{cc_version} | cut -d. -f1,2)" < "4.0"
61 BuildRequires: __cc >= 4.0
63 Requires: apache(modules-api) = %apache_modules_api
64 Requires: apache-mod_authz_host
65 Requires: apache-mod_headers
66 Suggests: apache-mod_deflate
67 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69 %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null)
70 %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null)
71 %define _sysconfdir %{_pkgrootdir}/conf.d
72 %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null)
73 %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
76 mod_pagespeed automates the application of those rules in an Apache
77 server. HTML, CSS, JavaScript, and images are changed dynamically
78 during the web serving process, so that the best practices recommended
79 by Page Speed can be used without having to change the way the web
83 %setup -q -n modpagespeed-%{version}
92 %{__python} build/gyp_chromium \
97 -Duse_system_apache_dev=1 \
98 -Duse_system_libjpeg=1 \
99 -Duse_system_libpng=1 \
100 -Duse_system_opencv=1 \
101 -Duse_system_zlib=1 \
102 -Dsystem_include_path_apr=%{_includedir}/apr \
103 -Dsystem_include_path_aprutil=%{_includedir}/apr-util \
104 -Dsystem_include_path_httpd=%{_includedir}/apache \
107 %{__make} mod_pagespeed js_minify css_minify_main \
108 BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
109 %{?with_verbose:V=1} \
113 CXX.host="%{__cxx}" \
114 LINK.host="%{__cxx}" \
115 CFLAGS="%{rpmcflags} %{rpmcppflags}" \
116 CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
120 rm -rf $RPM_BUILD_ROOT
121 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{_bindir},%{cachedir}}
123 %{__make} -j1 -C install staging_except_module \
124 APACHE_ROOT=%{_pkgrootdir} \
125 APACHE_MODULES=modules \
126 APACHE_DOC_ROOT=%{htdocsdir} \
127 MOD_PAGESPEED_CACHE=%{cachedir} \
128 MOD_PAGESPEED_STATS_LOG=/var/log/httpd/mod_pagespeed_stats.log \
131 out=out/%{!?debug:Release}%{?debug:Debug}
132 install -p $out/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
133 install -p $out/js_minify $RPM_BUILD_ROOT%{_bindir}/pagespeed_js_minify
134 install -p $out/css_minify_main $RPM_BUILD_ROOT%{_bindir}/pagespeed_css_minify
137 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
138 LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
140 $(cat pagespeed.conf)
143 cp -p pagespeed_libraries.conf $RPM_BUILD_ROOT%{_sysconfdir}/91_mod_%{mod_name}_libraries.conf
145 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
146 cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
149 rm -rf $RPM_BUILD_ROOT
152 %service -q httpd restart
155 if [ "$1" = "0" ]; then
156 %service -q httpd restart
160 %defattr(644,root,root,755)
161 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
162 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}_libraries.conf
163 %attr(755,root,root) %{_bindir}/pagespeed_css_minify
164 %attr(755,root,root) %{_bindir}/pagespeed_js_minify
165 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
166 %{_examplesdir}/%{name}-%{version}
167 %dir %attr(770,root,http) %{cachedir}