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
11 # third_party libraries:
12 # - apr - using system apr package
13 # - aprutil - using system apr-util, but from this repo modified apr_memcache2.c
14 # - gflags - system package may work
15 # - giflib - 4.1.6, no local modifications
17 # - httpd, httpd24 - using system apache-devel
18 # - icu - using system icu
19 # - jsoncpp - no local changes
20 # - libjpeg_turbo - 1.2.80 with chromium changes (but system lib should be fine)
21 # - libpng - no local changes
22 # - libwebp - 0.4.0, irrelevant local changes
23 # - optipng - 0.7.4, local changes: only the opngreduc component of optipng is included.
24 # - protobuf - should be possible to use full protobuf (not lite) to gain same functionality
25 # - re2 - should be possible to use system re2
26 # - serf - 0.7.2 bunch of google fixes
27 # - zlib - 1.2.5, no local changes
29 # third_party/chromium/src/base/third_party:
30 # - nspr - should be possible to use system lib
32 # - dynamic_annotations
33 # - icu - not icu lib, but two files only
36 # could be possible to use system libs, not packaged in pld:
41 # - domain_registry_provider
47 %define mod_name pagespeed
48 %define apxs %{_sbindir}/apxs
49 Summary: Apache module for rewriting web pages to reduce latency and bandwidth
50 Name: apache-mod_%{mod_name}
52 # stable: 1.9.32.x-stable
56 Group: Networking/Daemons/HTTP
57 Source0: modpagespeed-%{version}.tar.xz
58 # Source0-md5: c902122f7d85d4e43cad92911ad59a85
59 Source1: get-source.sh
61 Patch0: system-libs.patch
63 Patch4: no-dev-stdout.patch
64 Patch5: apache24-config.patch
65 URL: https://developers.google.com/speed/pagespeed/module
66 BuildRequires: %{apxs}
67 BuildRequires: apache-devel >= 2.2
69 BuildRequires: glib2-devel
71 BuildRequires: libicu-devel
72 BuildRequires: libselinux-devel
73 BuildRequires: libstdc++-devel >= 5:4.1
74 BuildRequires: opencv-devel >= 2.3.1
75 BuildRequires: openssl-devel
76 BuildRequires: pkgconfig
77 BuildRequires: python-devel >= 1:2.6
79 # This version of gyp is new enough that it knows to use make for Linux 3.x
80 # and FreeBSD, but old enough that 'type': 'settings' works and
81 # LINKER_SUPPORTS_ICF hasn't been removed yet.
82 BuildRequires: python-gyp >= 0.1-0.svn1602.1
83 BuildRequires: rpmbuild(macros) >= 1.268
84 BuildRequires: tar >= 1:1.22
85 BuildRequires: util-linux
87 BuildRequires: zlib-devel
88 Requires: apache(modules-api) = %apache_modules_api
89 Requires: apache-mod_authz_host
90 Requires: apache-mod_headers
91 Suggests: apache-mod_deflate
92 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
94 %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null)
95 %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null)
96 %define _sysconfdir %{_pkgrootdir}/conf.d
97 %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null)
98 %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
100 # disable strip examples, http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-January/024223.html
101 %define _noautostrip .*%{_examplesdir}/.*
104 mod_pagespeed automates the application of those rules in an Apache
105 server. HTML, CSS, JavaScript, and images are changed dynamically
106 during the web serving process, so that the best practices recommended
107 by Page Speed can be used without having to change the way the web
111 %setup -q -n modpagespeed-%{version}
117 sh -x %{_sourcedir}/clean-source.sh
119 rm -r third_party/icu/source
120 rm -r third_party/icu/genfiles
121 install -d third_party/icu/source/{common,i18n}
122 ln -s %{_includedir}/unicode third_party/icu/source/i18n/unicode
123 ln -s %{_includedir}/unicode third_party/icu/source/common/unicode
129 %{__python} build/gyp_chromium \
134 -Duse_system_apache_dev=1 \
136 -Duse_system_libjpeg=1 \
137 -Duse_system_libpng=1 \
138 -Duse_system_opencv=1 \
139 -Duse_system_openssl=1 \
140 -Duse_system_yasm=1 \
141 -Duse_system_zlib=1 \
142 -Dsystem_include_path_apr=%{_includedir}/apr \
143 -Dsystem_include_path_aprutil=%{_includedir}/apr-util \
144 -Dsystem_include_path_httpd=%{_includedir}/apache \
147 %{__make} mod_pagespeed js_minify css_minify_main \
148 BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
149 %{?with_verbose:V=1} \
153 CXX.host="%{__cxx}" \
154 LINK.host="%{__cxx}" \
155 CFLAGS="%{rpmcflags} %{rpmcppflags}" \
156 CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
160 rm -rf $RPM_BUILD_ROOT
161 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{_bindir},%{cachedir}}
163 %{__make} -j1 -C install staging_except_module \
164 APACHE_ROOT=%{_pkgrootdir} \
165 APACHE_MODULES=modules \
166 APACHE_DOC_ROOT=%{htdocsdir} \
167 MOD_PAGESPEED_CACHE=%{cachedir} \
168 MOD_PAGESPEED_STATS_LOG=/var/log/httpd/mod_pagespeed_stats.log \
171 out=out/%{!?debug:Release}%{?debug:Debug}
172 install -p $out/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
173 install -p $out/js_minify $RPM_BUILD_ROOT%{_bindir}/pagespeed_js_minify
174 install -p $out/css_minify_main $RPM_BUILD_ROOT%{_bindir}/pagespeed_css_minify
177 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
178 LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
180 $(cat pagespeed.conf)
183 cp -p pagespeed_libraries.conf $RPM_BUILD_ROOT%{_sysconfdir}/91_mod_%{mod_name}_libraries.conf
185 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
186 cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
189 rm -rf $RPM_BUILD_ROOT
192 %service -q httpd restart
195 if [ "$1" = "0" ]; then
196 %service -q httpd restart
200 %defattr(644,root,root,755)
201 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
202 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}_libraries.conf
203 %attr(755,root,root) %{_bindir}/pagespeed_css_minify
204 %attr(755,root,root) %{_bindir}/pagespeed_js_minify
205 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
206 %{_examplesdir}/%{name}-%{version}
207 %dir %attr(770,root,http) %{cachedir}