]> git.pld-linux.org Git - packages/apache-mod_pagespeed.git/blob - apache-mod_pagespeed.spec
6314f2c413076527a31ac3952a4471bc4e61df78
[packages/apache-mod_pagespeed.git] / apache-mod_pagespeed.spec
1 #
2 # Conditional build:
3 %bcond_without  verbose         # verbose build (V=1)
4 %bcond_with     sse2            # use SSE2 instructions
5
6 # NOTE
7 # - relase notes: https://developers.google.com/speed/pagespeed/module/release_notes
8 # - http://code.google.com/p/modpagespeed/wiki/HowToBuild
9 # - http://wiki.mediatemple.net/w/(dv)_HOWTO:_Install_mod_pagespeed
10 # TODO
11 # - run unit tests
12 # third_party libraries:
13 # - apr - using system apr package
14 # - aprutil - using system apr-util, but from this repo modified apr_memcache2.c
15 # - gflags - system package may work
16 # - giflib - 4.1.6, no local modifications
17 # - google-sparsehash
18 # - httpd, httpd24 - using system apache-devel
19 # - icu - using system icu
20 # - jsoncpp - no local changes
21 # - libjpeg_turbo - 1.2.80 with chromium changes (but system lib should be fine)
22 # - libpng - no local changes
23 # - libwebp - 0.4.0, irrelevant local changes
24 # - optipng - 0.7.4, local changes: only the opngreduc component of optipng is included.
25 # - protobuf - should be possible to use full protobuf (not lite) to gain same functionality
26 # - re2 - should be possible to use system re2
27 # - serf - 0.7.2 bunch of google fixes
28 # - zlib - 1.2.5, no local changes
29 #
30 # third_party/chromium/src/base/third_party:
31 # - nspr - should be possible to use system lib
32 # - dmg_fp
33 # - dynamic_annotations
34 # - icu - not icu lib, but two files only
35 # - valgrind
36 #
37 # could be possible to use system libs, not packaged in pld:
38 # - base64
39 # - chromium
40 # - chromium_deps
41 # - css_parser
42 # - domain_registry_provider
43 # - instaweb
44 # - mod_spdy
45 # - modp_b64
46 # - rdestl
47
48 %define         mod_name        pagespeed
49 %define         apxs            %{_sbindir}/apxs
50 Summary:        Apache module for rewriting web pages to reduce latency and bandwidth
51 Name:           apache-mod_%{mod_name}
52 # beta: 1.9.32.x-beta
53 # stable: 1.9.32.x-stable
54 Version:        1.9.32.4
55 Release:        5
56 License:        Apache v2.0
57 Group:          Networking/Daemons/HTTP
58 Source0:        modpagespeed-%{version}.tar.xz
59 # Source0-md5:  c6740a5de9cb7f20f0cf29c8835f6f95
60 Source1:        get-source.sh
61 Source2:        gclient.conf
62 Patch0:         system-libs.patch
63 Patch1:         addrinfo.patch
64 Patch2:         bug-632.patch
65 Patch4:         no-dev-stdout.patch
66 Patch5:         apache24-config.patch
67 Patch6:         no-force-xxbit.patch
68 Patch7:         no-arch-opt.patch
69 URL:            https://developers.google.com/speed/pagespeed/module
70 BuildRequires:  %{apxs}
71 BuildRequires:  apache-devel >= 2.2
72 BuildRequires:  bash
73 BuildRequires:  glib2-devel
74 BuildRequires:  gperf
75 BuildRequires:  libicu-devel
76 BuildRequires:  libjpeg-turbo-devel
77 BuildRequires:  libpng-devel
78 BuildRequires:  libselinux-devel
79 BuildRequires:  libstdc++-devel >= 5:4.1
80 BuildRequires:  opencv-devel >= 2.3.1
81 BuildRequires:  openssl-devel
82 BuildRequires:  pkgconfig
83 BuildRequires:  python-devel >= 1:2.6
84 BuildRequires:  yasm
85 # This version of gyp is new enough that it knows to use make for Linux 3.x
86 # and FreeBSD, but old enough that 'type': 'settings' works and
87 # LINKER_SUPPORTS_ICF hasn't been removed yet.
88 BuildRequires:  python-gyp >= 0.1-0.svn1602.1
89 BuildRequires:  rpmbuild(macros) >= 1.268
90 BuildRequires:  tar >= 1:1.22
91 BuildRequires:  util-linux
92 BuildRequires:  xz
93 BuildRequires:  zlib-devel
94 BuildConflicts: depot_tools < 0.1-0.20150708
95 Requires:       apache(modules-api) = %apache_modules_api
96 Requires:       apache-mod_authz_host
97 Requires:       apache-mod_headers
98 Suggests:       apache-mod_deflate
99 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
100
101 %define         _pkglibdir      %(%{apxs} -q LIBEXECDIR 2>/dev/null)
102 %define         _pkgrootdir     %(%{apxs} -q SYSCONFDIR 2>/dev/null)
103 %define         _sysconfdir     %{_pkgrootdir}/conf.d
104 %define         htdocsdir       %(%{apxs} -q htdocsdir 2>/dev/null)
105 %define         cachedir        %(%{apxs} -q proxycachedir 2>/dev/null)/mod_%{mod_name}
106
107 # disable strip examples, http://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2015-January/024223.html
108 %define         _noautostrip    .*%{_examplesdir}/.*
109
110 %description
111 mod_pagespeed automates the application of those rules in an Apache
112 server. HTML, CSS, JavaScript, and images are changed dynamically
113 during the web serving process, so that the best practices recommended
114 by Page Speed can be used without having to change the way the web
115 site is maintained.
116
117 %prep
118 %setup -q -n modpagespeed-%{version}
119 %patch0 -p1
120 %patch1 -p0
121 %patch2 -p1
122 %patch4 -p1
123 %patch5 -p1
124 %patch6 -p1
125 %patch7 -p1
126
127 %if 0
128 sh -x %{_sourcedir}/clean-source.sh
129 %endif
130
131 %{__rm} -r third_party/icu/source
132 %{__rm} -r third_party/icu/genfiles
133 install -d third_party/icu/source/{common,i18n}
134 ln -s %{_includedir}/unicode third_party/icu/source/i18n/unicode
135 ln -s %{_includedir}/unicode third_party/icu/source/common/unicode
136
137 %build
138 # re-gen makefiles
139 CC="%{__cc}" \
140 CXX="%{__cxx}" \
141 %{__python} build/gyp_chromium \
142         --format=make \
143         --depth=. \
144         build/all.gyp \
145         %{!?with_sse2:-Ddisable_sse2=1} \
146         -Duse_openssl=1 \
147         -Duse_system_apache_dev=1 \
148         -Duse_system_icu=1 \
149         -Duse_system_libjpeg=1 \
150         -Duse_system_libpng=1 \
151         -Duse_system_opencv=1 \
152         -Duse_system_openssl=1 \
153         -Duse_system_yasm=1 \
154         -Duse_system_zlib=1 \
155         -Dsystem_include_path_apr=%{_includedir}/apr \
156         -Dsystem_include_path_aprutil=%{_includedir}/apr-util \
157         -Dsystem_include_path_httpd=%{_includedir}/apache \
158         %{nil}
159
160 %{__make} mod_pagespeed js_minify css_minify_main \
161         BUILDTYPE=%{!?debug:Release}%{?debug:Debug} \
162         %{?with_verbose:V=1} \
163         CC="%{__cc}" \
164         CXX="%{__cxx}" \
165         CC.host="%{__cc}" \
166         CXX.host="%{__cxx}" \
167         LINK.host="%{__cxx}" \
168         CFLAGS="%{rpmcflags} %{rpmcppflags} -DUSE_SYSTEM_LIBJPEG" \
169         CXXFLAGS="%{rpmcxxflags} %{rpmcppflags} -DUSE_SYSTEM_LIBJPEG" \
170         %{nil}
171
172 %install
173 rm -rf $RPM_BUILD_ROOT
174 install -d $RPM_BUILD_ROOT{%{_pkglibdir},%{_sysconfdir},%{_bindir},%{cachedir}}
175
176 %{__make} -j1 -C install staging_except_module \
177         APACHE_ROOT=%{_pkgrootdir} \
178         APACHE_MODULES=modules \
179         APACHE_DOC_ROOT=%{htdocsdir} \
180         MOD_PAGESPEED_CACHE=%{cachedir} \
181         MOD_PAGESPEED_STATS_LOG=/var/log/httpd/mod_pagespeed_stats.log \
182         STAGING_DIR=staging
183
184 out=out/%{!?debug:Release}%{?debug:Debug}
185 install -p $out/libmod_%{mod_name}.so $RPM_BUILD_ROOT%{_pkglibdir}/mod_%{mod_name}.so
186 install -p $out/js_minify $RPM_BUILD_ROOT%{_bindir}/pagespeed_js_minify
187 install -p $out/css_minify_main $RPM_BUILD_ROOT%{_bindir}/pagespeed_css_minify
188
189 cd install/staging
190 cat > $RPM_BUILD_ROOT%{_sysconfdir}/90_mod_%{mod_name}.conf <<EOF
191 LoadModule %{mod_name}_module   modules/mod_%{mod_name}.so
192
193 $(cat pagespeed.conf)
194 EOF
195
196 cp -p pagespeed_libraries.conf $RPM_BUILD_ROOT%{_sysconfdir}/91_mod_%{mod_name}_libraries.conf
197
198 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
199 cp -a mod_pagespeed_example/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
200
201 %clean
202 rm -rf $RPM_BUILD_ROOT
203
204 %post
205 %service -q httpd restart
206
207 %postun
208 if [ "$1" = "0" ]; then
209         %service -q httpd restart
210 fi
211
212 %files
213 %defattr(644,root,root,755)
214 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}.conf
215 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*_mod_%{mod_name}_libraries.conf
216 %attr(755,root,root) %{_bindir}/pagespeed_css_minify
217 %attr(755,root,root) %{_bindir}/pagespeed_js_minify
218 %attr(755,root,root) %{_pkglibdir}/mod_%{mod_name}.so
219 %{_examplesdir}/%{name}-%{version}
220 %dir %attr(770,root,http) %{cachedir}
This page took 0.460958 seconds and 2 git commands to generate.