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