3 %bcond_with verbose # verbose build (V=1)
6 # - use make < 3.82 (from th-obsolete) to hack on code, because 3.82
7 # invalidates built objects and it's annoying to wait if all is recompiled
8 # each time you invoke make
9 # - http://code.google.com/p/modpagespeed/wiki/HowToBuild
10 # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
12 # - add unit tests running
13 # - c++ errors on 64bit/32bit gcc 4.5.1-4:
14 # /usr/include/c++/4.5.1/bits/stl_map.h:87:5: instantiated from here
15 # /usr/include/c++/4.5.1/bits/stl_pair.h:77:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type
16 # ./net/instaweb/util/public/cache_interface.h:28:7: error: forward declaration of ‘struct net_instaweb::SharedString’
17 # make[1]: *** [out/Release/obj.target/mod_pagespeed_test/net/instaweb/util/cache_fetcher_test.o] Error 1
18 # http://pastebin.com/Eu88BPSQ
19 # - sizeof(apr_int32_t) == sizeof(apr_int64_t) on 32bit (!?!):
20 # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t':
21 # third_party/apache/apr/src/strings/apr_snprintf.c:500:5: error: duplicate case value
22 # third_party/apache/apr/src/strings/apr_snprintf.c:498:5: error: previously used here
23 # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t_hex':
24 # third_party/apache/apr/src/strings/apr_snprintf.c:671:5: error: duplicate case value
25 # third_party/apache/apr/src/strings/apr_snprintf.c:669:5: error: previously used here
26 # - possible sysdeps (uses release tags)
27 # "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1",
28 # "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2",
29 # "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9",
30 # "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15",
31 # "opencv_src": "https://code.ros.org/svn/opencv/tags/2.1",
32 # "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src",
33 # "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
35 %if "%{pld_release}" == "ac"
36 # add suffix, but allow ccache, etc in ~/.rpmmacros
37 %{expand:%%define __cc %(echo '%__cc' | sed -e 's,-gcc,-gcc4,')}
38 %{expand:%%define __cxx %(echo '%__cxx' | sed -e 's,-g++,-g++4,')}
39 %{expand:%%define __cpp %(echo '%__cpp' | sed -e 's,-gcc,-gcc4,')}
42 # - use only source for modpagespeed if system headers are used (remove copies from tarball)
43 %define mod_name pagespeed
44 %define apxs %{_sbindir}/apxs
45 Summary: Apache module for rewriting web pages to reduce latency and bandwidth
46 Name: apache-mod_%{mod_name}
50 Group: Networking/Daemons/HTTP
51 Source0: modpagespeed-%{version}.tar.bz2
52 # Source0-md5: d4a49e422da63d6487afbec731432e21
53 URL: http://code.google.com/p/modpagespeed/
54 BuildRequires: %{apxs}
55 BuildRequires: apache-devel >= 2.2
56 BuildRequires: libstdc++-devel >= 5:4.0
57 BuildRequires: python-devel >= 1:2.6
58 BuildRequires: rpmbuild(macros) >= 1.268
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 Suggests: apache-mod_deflate
66 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
68 %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null)
69 %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null)
70 %define _sysconfdir %{_pkgrootdir}/conf.d
71 %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null)
72 %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
75 mod_pagespeed automates the application of those rules in an Apache
76 server. HTML, CSS, JavaScript, and images are changed dynamically
77 during the web serving process, so that the best practices recommended
78 by Page Speed can be used without having to change the way the web
82 %setup -q -n modpagespeed
89 %{__python} build/gyp_chromium --format=make build/all.gyp
92 # makefile wrapper so we could just invoke "make" from shell
93 cat > Makefile <<'EOF'
96 BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
97 %{?with_verbose:V=1} \
101 CXX.host="%{__cxx}" \
102 LINK.host="%{__cxx}" \
103 CFLAGS="%{rpmcflags} %{rpmcppflags}" \
104 CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
109 rm -rf $RPM_BUILD_ROOT
110 %{__make} -j1 -C src/install staging \
112 APACHE_ROOT=%{_pkgrootdir} \
113 APACHE_MODULES=%{_pkglibdir} \
114 APACHE_DOC_ROOT=%{htdocsdir} \
115 MOD_PAGESPEED_FILE_ROOT=%{cachedir} \
118 cd src/install/staging
119 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir}}
120 install -p mod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}
121 install -d $RPM_BUILD_ROOT%{cachedir}/{cache,files}
122 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
123 LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
125 $(cat pagespeed.conf)
129 rm -rf $RPM_BUILD_ROOT
132 %service -q httpd restart
135 if [ "$1" = "0" ]; then
136 %service -q httpd restart
140 %defattr(644,root,root,755)
141 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
142 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
144 %dir %attr(710,root,http) %{cachedir}
145 %dir %attr(770,root,http) %{cachedir}/cache
146 %dir %attr(770,root,http) %{cachedir}/files