]> git.pld-linux.org Git - packages/apache-mod_pagespeed.git/blob - apache-mod_pagespeed.spec
d284dfa1ebbf99451514cf07266e97b87f2764c1
[packages/apache-mod_pagespeed.git] / apache-mod_pagespeed.spec
1 #
2 # Conditional build:
3 %bcond_without  verbose         # verbose build (V=1)
4
5 # NOTE
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
9 # TODO
10 # - run unit tests
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
16 # - google-sparsehash
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
28 #
29 # third_party/chromium/src/base/third_party:
30 # - nspr - should be possible to use system lib
31 # - dmg_fp
32 # - dynamic_annotations
33 # - icu - not icu lib, but two files only
34 # - valgrind
35 #
36 # could be possible to use system libs, not packaged in pld:
37 # - base64
38 # - chromium
39 # - chromium_deps
40 # - css_parser
41 # - domain_registry_provider
42 # - instaweb
43 # - mod_spdy
44 # - modp_b64
45 # - rdestl
46
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}
51 # beta: 1.9.32.x-beta
52 # stable: 1.8.31.x
53 Version:        1.8.31.6
54 Release:        2
55 License:        Apache v2.0
56 Group:          Networking/Daemons/HTTP
57 Source0:        modpagespeed-%{version}.tar.xz
58 # Source0-md5:  ab144d1d524ce60db44c4dfd6f3f8ef3
59 Source1:        get-source.sh
60 Source2:        gclient.conf
61 Patch0:         system-libs.patch
62 Patch2:         bug-632.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
68 BuildRequires:  bash
69 BuildRequires:  glib2-devel
70 BuildRequires:  gperf
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
78 BuildRequires:  yasm
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
86 BuildRequires:  xz
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)
93
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}
99
100 # disable strip examples, http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-January/024223.html
101 %define         _noautostrip    .*%{_examplesdir}/.*
102
103 %description
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
108 site is maintained.
109
110 %prep
111 %setup -q -n modpagespeed-%{version}
112 %patch0 -p2
113 %patch2 -p1
114 %patch4 -p1
115 %patch5 -p1
116
117 rm -r third_party/icu/source
118 rm -r third_party/icu/genfiles
119 install -d third_party/icu/source/{common,i18n}
120 ln -s %{_includedir}/unicode third_party/icu/source/i18n/unicode
121 ln -s %{_includedir}/unicode third_party/icu/source/common/unicode
122
123 %build
124 # re-gen makefiles
125 CC="%{__cc}" \
126 CXX="%{__cxx}" \
127 %{__python} build/gyp_chromium \
128         --format=make \
129         --depth=. \
130         build/all.gyp \
131         -Duse_openssl=1 \
132         -Duse_system_apache_dev=1 \
133         -Duse_system_icu=1 \
134         -Duse_system_libjpeg=1 \
135         -Duse_system_libpng=1 \
136         -Duse_system_opencv=1 \
137         -Duse_system_openssl=1 \
138         -Duse_system_yasm=1 \
139         -Duse_system_zlib=1 \
140         -Dsystem_include_path_apr=%{_includedir}/apr \
141         -Dsystem_include_path_aprutil=%{_includedir}/apr-util \
142         -Dsystem_include_path_httpd=%{_includedir}/apache \
143         %{nil}
144
145 %{__make} mod_pagespeed js_minify css_minify_main \
146         BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
147         %{?with_verbose:V=1} \
148         CC="%{__cc}" \
149         CXX="%{__cxx}" \
150         CC.host="%{__cc}" \
151         CXX.host="%{__cxx}" \
152         LINK.host="%{__cxx}" \
153         CFLAGS="%{rpmcflags} %{rpmcppflags}" \
154         CXXFLAGS="%{rpmcxxflags} %{rpmcppflags}" \
155         %{nil}
156
157 %install
158 rm -rf $RPM_BUILD_ROOT
159 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{_bindir},%{cachedir}}
160
161 %{__make} -j1 -C install staging_except_module \
162         APACHE_ROOT=%{_pkgrootdir} \
163         APACHE_MODULES=modules \
164         APACHE_DOC_ROOT=%{htdocsdir} \
165         MOD_PAGESPEED_CACHE=%{cachedir} \
166         MOD_PAGESPEED_STATS_LOG=/var/log/httpd/mod_pagespeed_stats.log \
167         STAGING_DIR=staging
168
169 out=out/%{!?debug:Release}%{?debug:Debug}
170 install -p $out/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
171 install -p $out/js_minify $RPM_BUILD_ROOT%{_bindir}/pagespeed_js_minify
172 install -p $out/css_minify_main $RPM_BUILD_ROOT%{_bindir}/pagespeed_css_minify
173
174 cd install/staging
175 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
176 LoadModule %{mod_name}_module   modules/mod_%{mod_name}.so
177
178 $(cat pagespeed.conf)
179 EOF
180
181 cp -p pagespeed_libraries.conf $RPM_BUILD_ROOT%{_sysconfdir}/91_mod_%{mod_name}_libraries.conf
182
183 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
184 cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
185
186 %clean
187 rm -rf $RPM_BUILD_ROOT
188
189 %post
190 %service -q httpd restart
191
192 %postun
193 if [ "$1" = "0" ]; then
194         %service -q httpd restart
195 fi
196
197 %files
198 %defattr(644,root,root,755)
199 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
200 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}_libraries.conf
201 %attr(755,root,root) %{_bindir}/pagespeed_css_minify
202 %attr(755,root,root) %{_bindir}/pagespeed_js_minify
203 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
204 %{_examplesdir}/%{name}-%{version}
205 %dir %attr(770,root,http) %{cachedir}
This page took 1.35677 seconds and 2 git commands to generate.