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