3 %bcond_without verbose # verbose build (V=1)
6 # - relase notes: https://developers.google.com/speed/pagespeed/module/release_notes
7 # - http://code.google.com/p/modpagespeed/wiki/HowToBuild
8 # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
10 # - add unit tests running
11 # - possible sysdeps (uses release tags)
12 # "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1",
13 # "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src",
14 # "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
17 %define mod_name pagespeed
18 %define apxs %{_sbindir}/apxs
19 Summary: Apache module for rewriting web pages to reduce latency and bandwidth
20 Name: apache-mod_%{mod_name}
26 Group: Networking/Daemons/HTTP
27 Source0: modpagespeed-%{version}.tar.xz
28 # Source0-md5: 9aefd5719a9b7946106b625dc7ecd2aa
29 Source1: get-source.sh
31 Patch0: system-libs.patch
33 Patch4: no-dev-stdout.patch
34 URL: https://developers.google.com/speed/pagespeed/module
35 BuildRequires: %{apxs}
36 BuildRequires: apache-devel >= 2.2
38 BuildRequires: glib2-devel
40 BuildRequires: libicu-devel
41 BuildRequires: libselinux-devel
42 BuildRequires: libstdc++-devel >= 5:4.1
43 BuildRequires: opencv-devel >= 2.3.1
44 BuildRequires: openssl-devel
45 BuildRequires: pkgconfig
46 BuildRequires: python-devel >= 1:2.6
48 # This version of gyp is new enough that it knows to use make for Linux 3.x
49 # and FreeBSD, but old enough that 'type': 'settings' works and
50 # LINKER_SUPPORTS_ICF hasn't been removed yet.
51 BuildRequires: python-gyp >= 0.1-0.svn1602.1
52 BuildRequires: rpmbuild(macros) >= 1.268
53 BuildRequires: tar >= 1:1.22
54 BuildRequires: util-linux
56 BuildRequires: zlib-devel
57 Requires: apache(modules-api) = %apache_modules_api
58 Requires: apache-mod_authz_host
59 Requires: apache-mod_headers
60 Suggests: apache-mod_deflate
61 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
63 %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null)
64 %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null)
65 %define _sysconfdir %{_pkgrootdir}/conf.d
66 %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null)
67 %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
70 mod_pagespeed automates the application of those rules in an Apache
71 server. HTML, CSS, JavaScript, and images are changed dynamically
72 during the web serving process, so that the best practices recommended
73 by Page Speed can be used without having to change the way the web
77 %setup -q -n modpagespeed-%{version}
82 rm -r third_party/icu/source
83 rm -r third_party/icu/genfiles
84 install -d third_party/icu/source/{common,i18n}
85 ln -s %{_includedir}/unicode third_party/icu/source/i18n/unicode
86 ln -s %{_includedir}/unicode third_party/icu/source/common/unicode
92 %{__python} build/gyp_chromium \
97 -Duse_system_apache_dev=1 \
99 -Duse_system_libjpeg=1 \
100 -Duse_system_libpng=1 \
101 -Duse_system_opencv=1 \
102 -Duse_system_openssl=1 \
103 -Duse_system_yasm=1 \
104 -Duse_system_zlib=1 \
105 -Dsystem_include_path_apr=%{_includedir}/apr \
106 -Dsystem_include_path_aprutil=%{_includedir}/apr-util \
107 -Dsystem_include_path_httpd=%{_includedir}/apache \
110 %{__make} mod_pagespeed js_minify css_minify_main \
111 BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
112 %{?with_verbose:V=1} \
116 CXX.host="%{__cxx}" \
117 LINK.host="%{__cxx}" \
118 CFLAGS="%{rpmcflags} %{rpmcppflags}" \
119 CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
123 rm -rf $RPM_BUILD_ROOT
124 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{_bindir},%{cachedir}}
126 %{__make} -j1 -C install staging_except_module \
127 APACHE_ROOT=%{_pkgrootdir} \
128 APACHE_MODULES=modules \
129 APACHE_DOC_ROOT=%{htdocsdir} \
130 MOD_PAGESPEED_CACHE=%{cachedir} \
131 MOD_PAGESPEED_STATS_LOG=/var/log/httpd/mod_pagespeed_stats.log \
134 out=out/%{!?debug:Release}%{?debug:Debug}
135 install -p $out/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
136 install -p $out/js_minify $RPM_BUILD_ROOT%{_bindir}/pagespeed_js_minify
137 install -p $out/css_minify_main $RPM_BUILD_ROOT%{_bindir}/pagespeed_css_minify
140 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
141 LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
143 $(cat pagespeed.conf)
146 cp -p pagespeed_libraries.conf $RPM_BUILD_ROOT%{_sysconfdir}/91_mod_%{mod_name}_libraries.conf
148 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
149 cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
152 rm -rf $RPM_BUILD_ROOT
155 %service -q httpd restart
158 if [ "$1" = "0" ]; then
159 %service -q httpd restart
163 %defattr(644,root,root,755)
164 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
165 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}_libraries.conf
166 %attr(755,root,root) %{_bindir}/pagespeed_css_minify
167 %attr(755,root,root) %{_bindir}/pagespeed_js_minify
168 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
169 %{_examplesdir}/%{name}-%{version}
170 %dir %attr(770,root,http) %{cachedir}