2 # - use make < 3.82 (from th-obsolete) to hack on code, because 3.82
3 # invalidates built objects and it's annoying to wait if all is recompiled
4 # each time you invoke make
5 # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
7 # - c++ errors on 64bit/32bit gcc 4.5.1-4:
8 # /usr/include/c++/4.5.1/bits/stl_map.h:87:5: instantiated from here
9 # /usr/include/c++/4.5.1/bits/stl_pair.h:77:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type
10 # ./net/instaweb/util/public/cache_interface.h:28:7: error: forward declaration of ‘struct net_instaweb::SharedString’
11 # make[1]: *** [out/Release/obj.target/mod_pagespeed_test/net/instaweb/util/cache_fetcher_test.o] Error 1
12 # http://pastebin.com/Eu88BPSQ
13 # - sizeof(apr_int32_t) == sizeof(apr_int64_t) on 32bit (!?!):
14 # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t':
15 # third_party/apache/apr/src/strings/apr_snprintf.c:500:5: error: duplicate case value
16 # third_party/apache/apr/src/strings/apr_snprintf.c:498:5: error: previously used here
17 # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t_hex':
18 # third_party/apache/apr/src/strings/apr_snprintf.c:671:5: error: duplicate case value
19 # third_party/apache/apr/src/strings/apr_snprintf.c:669:5: error: previously used here
20 # - possible sysdeps (uses release tags)
21 # "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1",
22 # "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2",
23 # "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9",
24 # "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15",
25 # "opencv_src": "https://code.ros.org/svn/opencv/tags/2.1",
26 # "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src",
27 # "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
28 %define svndate 20101104
29 %define mod_name pagespeed
30 %define apxs %{_sbindir}/apxs
31 Summary: Apache module for rewriting web pages to reduce latency and bandwidth
32 Name: apache-mod_%{mod_name}
36 Group: Networking/Daemons/HTTP
37 # wget -c http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz
38 # test -d depot_tools || tar xzf depot_tools.tar.gz
39 # install -d modpagespeed
41 # test -f .gclient || ../depot_tools/gclient config http://modpagespeed.googlecode.com/svn/trunk/src
42 # ../depot_tools/gclient sync
43 # Populate the LASTCHANGE file template as we will not include VCS info in tarball
44 # (cd src/build && svnversion > LASTCHANGE.in)
46 # tar -cjf modpagespeed-$(date +%Y%m%d).tar.bz2 --exclude-vcs modpagespeed
47 # ../dropin modpagespeed-$(date +%Y%m%d).tar.bz2 &
48 Source0: modpagespeed-%{svndate}.tar.bz2
49 # Source0-md5: 1640f3c7226ffd3ba4a67f0064241495
50 URL: http://code.google.com/p/modpagespeed/
51 BuildRequires: %{apxs}
52 BuildRequires: apache-devel >= 2.2
53 BuildRequires: rpmbuild(macros) >= 1.268
54 Requires: apache(modules-api) = %apache_modules_api
55 Suggests: apache-mod_deflate
56 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
58 %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null)
59 %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null)
60 %define _sysconfdir %{_pkgrootdir}/conf.d
61 %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null)
62 %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
65 mod_pagespeed automates the application of those rules in an Apache
66 server. HTML, CSS, JavaScript, and images are changed dynamically
67 during the web serving process, so that the best practices recommended
68 by Page Speed can be used without having to change the way the web
72 %setup -q -n modpagespeed
79 %{__python} build/gyp_chromium --format=make build/all.gyp
82 # makefile wrapper so we could just invoke "make" from shell
83 cat > Makefile <<'EOF'
86 BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
87 %{?with_verbose:V=1} \
92 LINK.host="%{__cxx}" \
93 CFLAGS="%{rpmcflags} %{rpmcppflags}" \
94 CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
99 rm -rf $RPM_BUILD_ROOT
100 %{__make} -j1 -C src/install staging \
102 APACHE_ROOT=%{_pkgrootdir} \
103 APACHE_MODULES=%{_pkglibdir} \
104 APACHE_DOC_ROOT=%{htdocsdir} \
105 MOD_PAGESPEED_FILE_ROOT=%{cachedir} \
109 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir}}
110 install -p mod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}
111 install -d $RPM_BUILD_ROOT%{cachedir}/{cache,files}
112 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
113 LoadModule %{mod_name}_module modules/mod_%{mod_name}.so
115 $(cat pagespeed.conf)
119 rm -rf $RPM_BUILD_ROOT
122 %service -q httpd restart
125 if [ "$1" = "0" ]; then
126 %service -q httpd restart
130 %defattr(644,root,root,755)
131 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
132 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
134 %dir %attr(710,root,http) %{cachedir}
135 %dir %attr(770,root,http) %{cachedir}/cache
136 %dir %attr(770,root,http) %{cachedir}/files