# NOTE # - use make < 3.82 (from th-obsolete) to hack on code, because 3.82 # invalidates built objects and it's annoying to wait if all is recompiled # each time you invoke make # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed # TODO # - c++ errors on 64bit/32bit gcc 4.5.1-4: # /usr/include/c++/4.5.1/bits/stl_map.h:87:5: instantiated from here # /usr/include/c++/4.5.1/bits/stl_pair.h:77:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type # ./net/instaweb/util/public/cache_interface.h:28:7: error: forward declaration of ‘struct net_instaweb::SharedString’ # make[1]: *** [out/Release/obj.target/mod_pagespeed_test/net/instaweb/util/cache_fetcher_test.o] Error 1 # http://pastebin.com/Eu88BPSQ # - sizeof(apr_int32_t) == sizeof(apr_int64_t) on 32bit (!?!): # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t': # third_party/apache/apr/src/strings/apr_snprintf.c:500:5: error: duplicate case value # third_party/apache/apr/src/strings/apr_snprintf.c:498:5: error: previously used here # third_party/apache/apr/src/strings/apr_snprintf.c: In function 'conv_os_thread_t_hex': # third_party/apache/apr/src/strings/apr_snprintf.c:671:5: error: duplicate case value # third_party/apache/apr/src/strings/apr_snprintf.c:669:5: error: previously used here # - possible sysdeps (uses release tags) # "serf_src": "http://serf.googlecode.com/svn/tags/0.3.1", # "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2", # "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9", # "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15", # "opencv_src": "https://code.ros.org/svn/opencv/tags/2.1", # "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.3/src", # "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src", %define svndate 20101104 %define mod_name pagespeed %define apxs %{_sbindir}/apxs Summary: Apache module for rewriting web pages to reduce latency and bandwidth Name: apache-mod_%{mod_name} Version: 0.9.0.0 Release: 0.3 License: Apache v2.0 Group: Networking/Daemons/HTTP # wget -c http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz # test -d depot_tools || tar xzf depot_tools.tar.gz # install -d modpagespeed # cd modpagespeed # test -f .gclient || ../depot_tools/gclient config http://modpagespeed.googlecode.com/svn/trunk/src # ../depot_tools/gclient sync # Populate the LASTCHANGE file template as we will not include VCS info in tarball # (cd src/build && svnversion > LASTCHANGE.in) # cd .. # tar -cjf modpagespeed-$(date +%Y%m%d).tar.bz2 --exclude-vcs modpagespeed # ../dropin modpagespeed-$(date +%Y%m%d).tar.bz2 & Source0: modpagespeed-%{svndate}.tar.bz2 # Source0-md5: 1640f3c7226ffd3ba4a67f0064241495 URL: http://code.google.com/p/modpagespeed/ BuildRequires: %{apxs} BuildRequires: apache-devel >= 2.2 BuildRequires: rpmbuild(macros) >= 1.268 Requires: apache(modules-api) = %apache_modules_api Suggests: apache-mod_deflate BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _pkglibdir %(%{apxs} -q LIBEXECDIR 2>/dev/null) %define _pkgrootdir %(%{apxs} -q SYSCONFDIR 2>/dev/null) %define _sysconfdir %{_pkgrootdir}/conf.d %define htdocsdir %(%{apxs} -q htdocsdir 2>/dev/null) %define cachedir %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name} %description mod_pagespeed automates the application of those rules in an Apache server. HTML, CSS, JavaScript, and images are changed dynamically during the web serving process, so that the best practices recommended by Page Speed can be used without having to change the way the web site is maintained. %prep %setup -q -n modpagespeed %build # re-gen makefiles cd src CC="%{__cc}" \ CXX="%{__cxx}" \ %{__python} build/gyp_chromium --format=make build/all.gyp cd .. # makefile wrapper so we could just invoke "make" from shell cat > Makefile <<'EOF' default: $(MAKE) -C src \ BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \ %{?with_verbose:V=1} \ CC="%{__cc}" \ CXX="%{__cxx}" \ CC.host="%{__cc}" \ CXX.host="%{__cxx}" \ LINK.host="%{__cxx}" \ CFLAGS="%{rpmcflags} %{rpmcppflags}" \ CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \ EOF %{__make} %install rm -rf $RPM_BUILD_ROOT %{__make} -j1 -C src/install staging \ HOSTNAME=localhost \ APACHE_ROOT=%{_pkgrootdir} \ APACHE_MODULES=%{_pkglibdir} \ APACHE_DOC_ROOT=%{htdocsdir} \ MOD_PAGESPEED_FILE_ROOT=%{cachedir} \ STAGING_DIR=staging cd staging install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir}} install -p mod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir} install -d $RPM_BUILD_ROOT%{cachedir}/{cache,files} cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <