- fix building with boost 1.73
[packages/mongodb.git] / mongodb.spec
1 # TODO:
2 #       - add support for sharding server (init scripts, systemd units, sample config)
3 #   - \> escape not liked?
4 #  Sep 11 00:20:18 blodnatt systemd[1]: [/lib/systemd/system/mongod@.service:8] Invalid escape sequences in command line: "/bin/sh -c "if grep -q '^[ \t]*fork\>' /etc/mongod/%i.conf ; then echo there must be no 'fork' in /etc/mongod/%i.conf >&2 ; exit 1 ; fi""
5 # TODO
6 #
7 Summary:        MongoDB client shell and tools
8 Summary(pl.UTF-8):      Powłoka kliencka i narzędzia dla bazy danych MongoDB
9 Name:           mongodb
10 Version:        2.2.4
11 Release:        12
12 License:        AGPL v3
13 Group:          Applications/Databases
14 Source0:        http://downloads.mongodb.org/src/%{name}-src-r%{version}.tar.gz
15 # Source0-md5:  033354c543c053f5d539b573ac8c28b0
16 Source1:        %{name}.logrotate
17 Source2:        %{name}.init
18 Source3:        mongod-default.conf
19 Source4:        mongod@.service
20 Patch0:         %{name}-cflags.patch
21 Patch1:         %{name}-system-libs.patch
22 Patch2:         boost-1.50.patch
23 Patch3:         %{name}-install.patch
24 Patch4:         %{name}-shared.patch
25 Patch5:         gcc4.patch
26 Patch6:         no-Werror.patch
27 Patch7:         gcc6.patch
28 Patch8:         %{name}-pcap.patch
29 Patch9:         boost-1.73.patch
30 URL:            http://www.mongodb.org/
31 BuildRequires:  boost-devel >= 1.50
32 BuildRequires:  libpcap-devel
33 BuildRequires:  libstdc++-devel >= 6:4.0
34 %ifarch %{x8664}
35 BuildRequires:  libtcmalloc-devel
36 %endif
37 BuildRequires:  pcre-cxx-devel
38 BuildRequires:  pcre-devel >= 8.30
39 BuildRequires:  readline-devel
40 BuildRequires:  rpmbuild(macros) >= 1.644
41 BuildRequires:  scons >= 1.2
42 BuildRequires:  sed >= 4.0
43 BuildRequires:  snappy-devel
44 BuildRequires:  v8-devel
45 Requires:       %{name}-libs = %{version}-%{release}
46 # matching v8-devel
47 ExclusiveArch:  %{ix86} %{x8664} arm mips
48 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
49
50 %description
51 Mongo (from "huMONGOus") is a schema-free document-oriented database.
52 It features dynamic profileable queries, full indexing, replication
53 and fail-over support, efficient storage of large binary data objects,
54 and auto-sharding.
55
56 This package provides the mongo shell, import/export tools, and other
57 client utilities.
58
59 %description -l pl.UTF-8
60 Mongo (od "huMONGOus") to baza danych zorientowana na dokumenty
61 pozbawione schematu. Obsługuje dynamicznie profilowane zapytania,
62 pełne indeksowanie, replikację i fail-over, wydajne składowanie dużych
63 obiektów danych binarnych oraz automatyczne dzielenie.
64
65 Ten pakiet zawiera powłokę mongo, narzędzia do eksportu/importu danych
66 oraz inne narzędzia klienckie.
67
68 %package libs
69 Summary:        MongoDB client library
70 Summary(pl.UTF-8):      Biblioteka kliencka MongoDB
71 Group:          Libraries
72
73 %description libs
74 Mongo (from "huMONGOus") is a schema-free document-oriented database.
75
76 This package provides the mongo client library.
77
78 %description libs -l pl.UTF-8
79 Mongo (od "huMONGOus") to baza danych zorientowana na dokumenty
80 pozbawione schematu.
81
82 Ten pakiet zawiera bibliotekę kliencką mongo.
83
84 %package devel
85 Summary:        Header files for MongoDB client library
86 Summary(pl.UTF-8):      Pliki nagłówkowe biblioteki klienckiej MongoDB
87 Group:          Development/Libraries
88 Requires:       %{name}-libs = %{version}-%{release}
89
90 %description devel
91 Mongo (from "huMONGOus") is a schema-free document-oriented database.
92
93 This package provides the header files needed to develop MongoDB
94 client software.
95
96 %description devel -l pl.UTF-8
97 Mongo (od "huMONGOus") to baza danych zorientowana na dokumenty
98 pozbawione schematu.
99
100 Ten pakiet zawiera pliki nagłówkowe potrzebne do tworzenia
101 oprogramowania klienckiego dla MongoDB.
102
103 %package static
104 Summary:        Static MongoDB client library
105 Summary(pl.UTF-8):      Statyczna biblioteka kliencka MongoDB
106 Group:          Development/Libraries
107 Requires:       %{name}-devel = %{version}-%{release}
108
109 %description static
110 Mongo (from "huMONGOus") is a schema-free document-oriented database.
111
112 This package provides the MongoDB static client library.
113
114 %description static -l pl.UTF-8
115 Mongo (od "huMONGOus") to baza danych zorientowana na dokumenty
116 pozbawione schematu.
117
118 Ten pakiet zawiera statyczną bibliotekę kliencką MongoDB.
119
120 %package server
121 Summary:        MongoDB server, sharding server, and support scripts
122 Summary(pl.UTF-8):      Serwer MongoDB, serwer dzielący oraz skrypty pomocnicze
123 Group:          Applications/Databases
124 Requires:       %{name} = %{version}-%{release}
125 Requires:       systemd-units >= 38
126 Requires(post,preun):   /sbin/chkconfig
127 Requires(postun):       /usr/sbin/groupdel
128 Requires(postun):       /usr/sbin/userdel
129 Requires(pre):  /bin/id
130 Requires(pre):  /usr/bin/getgid
131 Requires(pre):  /usr/sbin/groupadd
132 Requires(pre):  /usr/sbin/useradd
133 Requires:       rc-scripts
134 Provides:       group(mongod)
135 Provides:       user(mongod)
136 Conflicts:      logrotate < 3.8.0
137
138 %description server
139 Mongo (from "huMONGOus") is a schema-free document-oriented database.
140
141 This package provides the mongo server software, mongo sharding server
142 software, default configuration files, and init.d scripts.
143
144 %description server -l pl.UTF-8
145 Mongo (od "huMONGOus") to baza danych zorientowana na dokumenty
146 pozbawione schematu.
147
148 Ten pakiet zawiera serwer mongo, serwer dzielący, pliki domyślnej
149 konfiguracji oraz skrypty init.d.
150
151 %prep
152 %setup -q -n %{name}-src-r%{version}
153 %patch0 -p1
154 %patch1 -p1
155 %patch2 -p1
156 %patch3 -p1
157 %patch4 -p1
158 %patch5 -p1
159 %patch6 -p1
160 %patch7 -p1
161 %patch8 -p1
162 %patch9 -p1
163
164 # Fix permissions
165 find -type f -executable | xargs chmod a-x
166
167 # force system pcre/js/snappy
168 %{__rm} -r src/third_party/{js-1.7,pcre-8.30,snappy,boost}
169
170 %build
171 %scons \
172         CPPFLAGS="%{rpmcppflags} -DXP_UNIX" \
173         --use-system-all=yes \
174         --extralib=pcrecpp,pcre,snappy \
175         --prefix=$RPM_BUILD_ROOT%{_prefix} \
176         --full=all \
177         --sharedclient \
178         --usev8 \
179         --cxx=%{__cxx}
180
181 %install
182 rm -rf $RPM_BUILD_ROOT
183 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir}/man1} \
184         $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mongod} \
185         $RPM_BUILD_ROOT%{_var}/{lib,log{,/archive}}/mongodb \
186         $RPM_BUILD_ROOT%{systemdunitdir}
187
188 # XXX: scons is so great, recompiles everything here!
189 %scons install \
190         CPPFLAGS="%{rpmcppflags} -DXP_UNIX" \
191         --use-system-all=yes \
192         --extralib=pcrecpp,pcre,snappy \
193         --prefix=$RPM_BUILD_ROOT%{_prefix} \
194         --full=all \
195         --sharedclient \
196         --usev8 \
197         --cxx=%{__cxx}
198
199 cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/logrotate.d/mongod
200 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/mongod
201 cp -p rpm/mongod.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/mongod
202 cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/mongod/default.conf
203 cp -p debian/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
204
205 # mask out the LSB service
206 ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/mongod.service
207 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/mongod@.service
208
209 touch $RPM_BUILD_ROOT%{_var}/log/mongodb/mongod.log
210
211 # for some reason these are installed twice, remove unwanted copies
212 for f in $RPM_BUILD_ROOT%{_includedir}/mongo/*; do
213         rm -r "$RPM_BUILD_ROOT%{_includedir}/$(basename $f)" || :
214 done
215
216 %ifarch %{x8664}
217 chmod -R a+rX $RPM_BUILD_ROOT/usr/lib
218 %{__rm} -r $RPM_BUILD_ROOT/usr/lib
219 %endif
220
221 %clean
222 rm -rf $RPM_BUILD_ROOT
223
224 %post   libs -p /sbin/ldconfig
225 %postun libs -p /sbin/ldconfig
226
227 %pre server
228 %groupadd -g 258 -r mongod
229 %useradd -u 258 -r -g mongod -d %{_var}/lib/mongodb -s /bin/false -c "MongoDB Database Server" mongod
230
231 %post server
232 /sbin/chkconfig --add mongod
233 %service mongod restart
234 # our systemd macros cannot handle template (multi-instance) units yet
235 export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
236 /bin/systemd_booted && /bin/systemctl --quiet daemon-reload || :
237 if [ $1 -eq 1 ]; then
238         /bin/systemctl --quiet enable mongod@.service || : 
239         /bin/systemd_booted && echo 'Run "/bin/systemctl start mongod@default.service" to start mongod.' || :
240 else
241         /bin/systemd_booted && /bin/systemctl --quiet try-restart mongod@default.service || :
242 fi
243
244 %preun server
245 if [ "$1" = "0" ]; then
246         %service -q mongod stop
247         /sbin/chkconfig --del mongod
248         export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
249         /bin/systemd_booted && /bin/systemctl --quiet stop mongod@default.service || :
250         /bin/systemctl --quiet disable mongod@.service || :
251 fi
252
253 %postun server
254 if [ "$1" = "0" ]; then
255         %userremove mongod
256         %groupremove mongod
257 fi
258 %systemd_reload
259
260 %triggerpostun server -- %{name}-server < 2.0.6-3
261 if [ -f %{_sysconfdir}/mongod.conf.rpmsave ] ; then
262         cp -f %{_sysconfdir}/mongod/default.conf{,.rpmnew} || :
263         echo "Moving %{_sysconfdir}/mongod.conf to %{_sysconfdir}/mongod/default.conf"
264         mv -f %{_sysconfdir}/mongod.conf.rpmsave %{_sysconfdir}/mongod/default.conf
265         %service mongod restart
266 fi
267
268 %files
269 %defattr(644,root,root,755)
270 %doc README GNU-AGPL-3.0.txt
271 %attr(755,root,root) %{_bindir}/bsondump
272 %attr(755,root,root) %{_bindir}/mongo
273 %attr(755,root,root) %{_bindir}/mongodump
274 %attr(755,root,root) %{_bindir}/mongoexport
275 %attr(755,root,root) %{_bindir}/mongofiles
276 %attr(755,root,root) %{_bindir}/mongoimport
277 %attr(755,root,root) %{_bindir}/mongooplog
278 %attr(755,root,root) %{_bindir}/mongoperf
279 %attr(755,root,root) %{_bindir}/mongorestore
280 %attr(755,root,root) %{_bindir}/mongosniff
281 %attr(755,root,root) %{_bindir}/mongostat
282 %attr(755,root,root) %{_bindir}/mongotop
283 %{_mandir}/man1/bsondump.1*
284 %{_mandir}/man1/mongo.1*
285 %{_mandir}/man1/mongodump.1*
286 %{_mandir}/man1/mongoexport.1*
287 %{_mandir}/man1/mongofiles.1*
288 %{_mandir}/man1/mongoimport.1*
289 %{_mandir}/man1/mongosniff.1*
290 %{_mandir}/man1/mongostat.1*
291 %{_mandir}/man1/mongorestore.1*
292
293 %files libs
294 %defattr(644,root,root,755)
295 %attr(755,root,root) %{_libdir}/libmongoclient.so
296
297 %files devel
298 %defattr(644,root,root,755)
299 %{_includedir}/mongo
300
301 %files static
302 %defattr(644,root,root,755)
303 %{_libdir}/libmongoclient.a
304
305 %files server
306 %defattr(644,root,root,755)
307 %dir %{_sysconfdir}/mongod
308 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mongod/default.conf
309 %attr(754,root,root) /etc/rc.d/init.d/mongod
310 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mongod
311 %config(noreplace) /etc/logrotate.d/mongod
312 %{systemdunitdir}/mongod.service
313 %{systemdunitdir}/mongod@.service
314 %attr(755,root,root) %{_bindir}/mongod
315 %attr(755,root,root) %{_bindir}/mongos
316 %{_mandir}/man1/mongod.1*
317 %{_mandir}/man1/mongos.1*
318 %attr(755,mongod,mongod) %dir %{_var}/lib/mongodb
319 %attr(775,root,mongod) %dir %{_var}/log/mongodb
320 %attr(775,root,mongod) %dir %{_var}/log/archive/mongodb
321 %attr(640,mongod,mongod) %config(noreplace) %verify(not md5 mtime size) %{_var}/log/mongodb/mongod.log
This page took 0.086169 seconds and 3 git commands to generate.