]> git.pld-linux.org Git - packages/VirtualBox.git/blob - VirtualBox.spec
- rel 5; BR kernel-headers
[packages/VirtualBox.git] / VirtualBox.spec
1 #
2 # TODO:
3 # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS.
4 # - Package SDK.
5 # - Package utils (and write initscripts ?) for Guest OS.
6 # - Check License of VBoxGuestAdditions_*.iso, it's propably not GPL v2.
7 #   If so check if it is distributable.
8 #
9 # Conditional build:
10 %bcond_without  dist_kernel     # without distribution kernel
11 %bcond_without  kernel          # don't build kernel module
12 %bcond_without  userspace       # don't build userspace package
13
14 %define         rel             5
15
16 %if %{without kernel}
17 %undefine       with_dist_kernel
18 %endif
19
20 %if "%{_alt_kernel}" != "%{nil}"
21 %undefine       with_userspace
22 %endif
23
24 %define         pname   VirtualBox
25
26 Summary:        VirtualBox OSE - x86 hardware virtualizer
27 Summary(pl.UTF-8):      VirtualBox OSE - wirtualizator sprzętu x86
28 Name:           %{pname}%{_alt_kernel}
29 Version:        1.6.0
30 Release:        %{rel}
31 License:        GPL v2
32 Group:          Applications/Emulators
33 # Source can't be downloaded directly anymore, you may get it manually from
34 # http://www.virtualbox.org/wiki/Downloads
35 Source0:        %{pname}-%{version}-OSE.tar.bz2
36 # Source0-md5:  44692aa0e7a8cb6bb36f367d67d78d6a
37 Source1:        http://www.virtualbox.org/download/%{version}/UserManual.pdf
38 # Source1-md5:  e21694fd087b42173bca3fc9af068f22
39 Source2:        http://www.virtualbox.org/download/%{version}/VBoxGuestAdditions_%{version}.iso
40 # Source2-md5:  e90b718aa806845194fd411e3dbf78ff
41 Source3:        %{pname}-vboxdrv.init
42 Source4:        %{pname}-vboxadd.init
43 Source5:        %{pname}.desktop
44 Source6:        %{pname}.sh
45 Patch0:         %{pname}-configure.patch
46 Patch1:         %{pname}-qt-paths.patch
47 Patch2:         %{pname}-shared-libstdc++.patch
48 Patch3:         %{pname}-disable-xclient-build.patch
49 Patch4:         %{pname}-configure-spaces.patch
50 Patch5:         %{pname}-no-screen-size-limit.patch
51 URL:            http://www.virtualbox.org/
52 %if %{with userspace}
53 BuildRequires:  SDL-devel >= 1.2.7
54 BuildRequires:  alsa-lib-devel >= 1.0.6
55 BuildRequires:  bash
56 BuildRequires:  bcc
57 BuildRequires:  bin86
58 BuildRequires:  gcc >= 5:3.2.3
59 BuildRequires:  iasl
60 %endif
61 %if %{with dist_kernel}
62 BuildRequires:  kernel%{_alt_kernel}-module-build >= 3:2.6.20
63 BuildRequires:  kernel%{_alt_kernel}-headers
64 %endif
65 %if %{with userspace}
66 BuildRequires:  Qt3Support-devel
67 BuildRequires:  libIDL-devel
68 BuildRequires:  libpng >= 1.2.5
69 BuildRequires:  libstdc++-devel >= 5:3.2.3
70 BuildRequires:  libuuid-devel
71 BuildRequires:  libxml2-devel >= 2.6.26
72 BuildRequires:  libxslt-devel >= 1.1.17
73 BuildRequires:  libxslt-progs >= 1.1.17
74 BuildRequires:  pkgconfig
75 BuildRequires:  pulseaudio-devel >= 0.9.0
76 BuildRequires:  qt-devel >= 6:3.3.6
77 BuildRequires:  qt-linguist
78 BuildRequires:  qt4-build >= 4.2.0
79 %endif
80 BuildRequires:  rpmbuild(macros) >= 1.379
81 %if %{with userspace}
82 BuildRequires:  which
83 BuildRequires:  xalan-c-devel >= 1.10.0
84 BuildRequires:  xerces-c-devel >= 2.6.0
85 BuildRequires:  xorg-lib-libXcursor-devel
86 BuildRequires:  zlib-devel >= 1.2.1
87 %ifarch %{x8664}
88 BuildRequires:  gcc-multilib
89 BuildRequires:  glibc-devel(i686)
90 BuildRequires:  libstdc++-multilib-devel
91 %endif
92 %endif
93 Requires(post,preun):   /sbin/chkconfig
94 Requires(postun):       /usr/sbin/groupdel
95 Requires(pre):  /usr/bin/getgid
96 Requires(pre):  /usr/sbin/groupadd
97 Suggests:       gxmessage
98 Provides:       group(vbox)
99 ExclusiveArch:  %{ix86} %{x8664}
100 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
101
102 %ifarch %{x8664}
103 %define         outdir  amd64
104 %else
105 %define         outdir  x86
106 %endif
107
108 %description
109 InnoTek VirtualBox OSE is a general-purpose full virtualizer for x86
110 hardware. Targeted at server, desktop and embedded use, it is now the
111 only professional-quality virtualization solution that is also Open
112 Source Software.
113
114 Some of the features of VirtualBox OSE are:
115
116 Modularity: VirtualBox OSE has an extremely modular design with
117 well-defined internal programming interfaces and a client/server
118 design. This makes it easy to control it from several interfaces at
119 once: for example, you can start a virtual machine in a typical
120 virtual machine GUI and then control that machine from the command
121 line. VirtualBox OSE also comes with a full Software Development Kit:
122 even though it is Open Source Software, you don't have to hack the
123 source to write a new interface for VirtualBox OSE.
124
125 Virtual machine descriptions in XML: the configuration settings of
126 virtual machines are stored entirely in XML and are independent of the
127 local machines. Virtual machine definitions can therefore easily be
128 ported to other computers.
129
130 %description -l pl.UTF-8
131 InnoTek VirtualBox OSE jest emulatorem sprzętu x86. Kierowany do
132 zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie
133 jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym
134 również jako Otwarte Oprogramowanie.
135
136 Przykładowe cechy VirtualBoksa:
137
138 Modularność: VirtualBox OSE jest wysoce zmodularyzowanym produktem z
139 dobrze zaprojektowanym wewnętrznym interfejsem programowym typu
140 klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą
141 różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z
142 poziomu interfejsu graficznego, a później kontrolować ją z linii
143 poleceń. VirtualBox OSE dostarcza również pełny pakiet deweloperski,
144 co pozwala stworzyć dowolny inny interfejs zarządzania maszyną
145 wirtualną.
146
147 Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn
148 wirtualnych są w całości przechowywane w XML-u i są niezależne od
149 lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść
150 konfigurację maszyny wirtualnej na inny komputer.
151
152 %package udev
153 Summary:        udev rules for VirtualBox OSE kernel modules
154 Summary(pl.UTF-8):      Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
155 Release:        %{rel}
156 Group:          Base/Kernel
157 Requires:       udev
158
159 %description udev
160 udev rules for VirtualBox OSE kernel modules.
161
162 %description udev -l pl.UTF-8
163 Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
164
165 %package -n kernel%{_alt_kernel}-misc-vboxadd
166 Summary:        Linux kernel module for VirtualBox OSE
167 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
168 Release:        %{rel}@%{_kernel_ver_str}
169 Group:          Base/Kernel
170 Requires(post,postun):  /sbin/depmod
171 Requires:       dev >= 2.9.0-7
172 %if %{with dist_kernel}
173 %requires_releq_kernel
174 #Requires(postun):      %%releq_kernel
175 %endif
176 Provides:       kernel(vboxadd) = %{version}-%{rel}
177
178 %description -n kernel%{_alt_kernel}-misc-vboxadd
179 Linux kernel module vboxadd for VirtualBox OSE.
180
181 %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8
182 Moduł jądra Linuksa vboxadd dla VirtualBoksa.
183
184 %package -n kernel%{_alt_kernel}-misc-vboxdrv
185 Summary:        Linux kernel module for VirtualBox OSE
186 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
187 Release:        %{rel}@%{_kernel_ver_str}
188 Group:          Base/Kernel
189 Requires(post,postun):  /sbin/depmod
190 Requires:       dev >= 2.9.0-7
191 %if %{with dist_kernel}
192 %requires_releq_kernel
193 Requires(postun):       %releq_kernel
194 %endif
195 Provides:       kernel(vboxdrv) = %{version}-%{rel}
196
197 %description -n kernel%{_alt_kernel}-misc-vboxdrv
198 Linux kernel module vboxdrv for VirtualBox OSE.
199
200 %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8
201 Moduł jądra Linuksa vboxdrv dla VirtualBoksa.
202
203 %package -n kernel%{_alt_kernel}-misc-vboxvfs
204 Summary:        Linux kernel module for VirtualBox OSE
205 Summary(pl.UTF-8):      Moduł jądra Linuksa dla VirtualBoksa
206 Release:        %{rel}@%{_kernel_ver_str}
207 Group:          Base/Kernel
208 Requires(post,postun):  /sbin/depmod
209 Requires:       dev >= 2.9.0-7
210 %if %{with dist_kernel}
211 %requires_releq_kernel
212 Requires(postun):       %releq_kernel
213 %endif
214 Provides:       kernel(vboxvfs) = %{version}-%{rel}
215
216 %description -n kernel%{_alt_kernel}-misc-vboxvfs
217 Linux kernel module vboxvfs for VirtualBox OSE.
218
219 %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8
220 Moduł jądra Linuksa vboxvfs dla VirtualBoksa.
221
222 %package -n xorg-driver-input-vboxmouse
223 Summary:        X.org mouse driver for VirtualBox OSE guest OS
224 Summary(pl.UTF-8):      Sterownik myszy dla systemu gościa w VirtualBoksie
225 Release:        %{rel}
226 Group:          X11/Applications
227 Requires:       xorg-xserver-server >= 1.0.99.901
228
229 %description -n xorg-driver-input-vboxmouse
230 X.org mouse driver for VirtualBox OSE guest OS.
231
232 %description -n xorg-driver-input-vboxmouse  -l pl.UTF-8
233 Sterownik myszy dla systemu gościa w VirtualBoksie.
234
235 %package -n xorg-driver-video-vboxvideo
236 Summary:        X.org video driver for VirtualBox OSE guest OS
237 Summary(pl.UTF-8):      Sterownik grafiki dla systemu gościa w VirtualBoksie
238 Release:        %{rel}
239 Group:          X11/Applications
240 Requires:       xorg-xserver-server >= 1.0.99.901
241
242 %description -n xorg-driver-video-vboxvideo
243 X.org video driver for VirtualBox OSE guest OS.
244
245 %description -n xorg-driver-video-vboxvideo -l pl.UTF-8
246 Sterownik grafiki dla systemu gościa w VirtualBoksie.
247
248 %prep
249 %setup -q -n %{pname}-%{version}_OSE
250 %patch0 -p0
251 %patch1 -p0
252 %patch2 -p1
253
254 %ifarch %{x8664}
255 %patch3 -p1
256 %endif
257
258 %patch4 -p1
259 %patch5 -p1
260
261 cat <<'EOF' > udev.conf
262 KERNEL=="vboxdrv", NAME="%k", GROUP="vbox", MODE="0660"
263 KERNEL=="vboxadd", NAME="%k", GROUP="vbox", MODE="0660"
264 EOF
265
266 install %{SOURCE1} .
267
268 rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD
269 ../src/VBox/Additions/linux/export_modules modules.tar.gz
270         tar -zxf modules.tar.gz && rm -f modules.tar.gz
271 ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \
272         tar -zxf modules.tar.gz && rm -f modules.tar.gz
273
274 %ifarch %{x8664}
275 # HACK, is this really safe on x86_64?
276 sed -i -e '/#.*define.*RTMEMALLOC_EXEC_HEAP/d' vboxadd/r0drv/linux/alloc-r0drv-linux.c vboxvfs/r0drv/linux/alloc-r0drv-linux.c
277 %endif
278
279 %build
280 %if %{with userspace}
281 ./configure \
282         --with-gcc="%{__cc}" \
283         --with-g++="%{__cxx}" \
284         --disable-kmods
285
286 . ./env.sh && kmk -j1
287 %endif
288
289 %if %{with kernel}
290 cd PLD-MODULE-BUILD
291 %build_kernel_modules -m vboxadd -C vboxadd
292 %build_kernel_modules -m vboxdrv -C vboxdrv
293 cp -a vboxadd/Module.symvers vboxvfs
294 %build_kernel_modules -m vboxvfs -C vboxvfs -c
295 cd ..
296 %endif
297
298 %install
299 rm -rf $RPM_BUILD_ROOT
300
301 %if %{with userspace}
302 install -d \
303         $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \
304         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
305
306 install %{SOURCE6} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/VirtualBox-wrapper.sh
307 for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox,vditool}; do
308         install out/linux.%{outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f
309         ln -s %{_libdir}/VirtualBox/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
310 done
311
312 %ifarch %{x8664}
313 install out/linux.%{outdir}/release/bin/VBox*.rel \
314         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
315 %endif
316
317 install out/linux.%{outdir}/release/bin/VBox*.so \
318         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
319 install out/linux.%{outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \
320         $RPM_BUILD_ROOT%{_libdir}/VirtualBox
321
322 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions
323 install -d $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
324
325 install %{SOURCE2} $RPM_BUILD_ROOT%{_libdir}/VirtualBox/additions/VBoxGuestAdditions.iso
326 cp -a out/linux.%{outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox
327 cp -a out/linux.%{outdir}/release/bin/nls/* $RPM_BUILD_ROOT%{_libdir}/VirtualBox/nls
328
329 install out/linux.%{outdir}/release/bin/additions/mountvboxsf           \
330         $RPM_BUILD_ROOT%{_bindir}
331
332 %ifnarch %{x8664}
333 install -d $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
334 install out/linux.%{outdir}/release/bin/additions/vboxmouse_drv_14.so   \
335         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/input/vboxmouse_drv.so
336 install out/linux.%{outdir}/release/bin/additions/vboxvideo_drv_14.so   \
337         $RPM_BUILD_ROOT%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
338 %endif
339
340 install out/linux.%{outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png
341 install %{SOURCE5} $RPM_BUILD_ROOT%{_desktopdir}/%{pname}.desktop
342
343 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
344 install udev.conf $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
345 %endif
346
347 %if %{with kernel}
348 install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
349 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
350 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxadd
351 %install_kernel_modules -m PLD-MODULE-BUILD/vboxadd/vboxadd -d misc
352 %install_kernel_modules -m PLD-MODULE-BUILD/vboxdrv/vboxdrv -d misc
353 %install_kernel_modules -m PLD-MODULE-BUILD/vboxvfs/vboxvfs -d misc
354 %endif
355
356 %clean
357 rm -rf $RPM_BUILD_ROOT
358
359 %pre
360 %groupadd -g 221 -r -f vbox
361
362 %postun
363 if [ "$1" = "0" ]; then
364         %groupremove vbox
365 fi
366
367 %post   -n kernel%{_alt_kernel}-misc-vboxadd
368 %depmod %{_kernel_ver}
369 /sbin/chkconfig --add vboxadd
370 %service vboxadd restart "VirtualBox OSE guest additions driver"
371
372 %postun -n kernel%{_alt_kernel}-misc-vboxadd
373 %depmod %{_kernel_ver}
374
375 %preun -n kernel%{_alt_kernel}-misc-vboxadd
376 if [ "$1" = "0" ]; then
377         %service vboxadd stop
378         /sbin/chkconfig --del vboxadd
379 fi
380
381 %post   -n kernel%{_alt_kernel}-misc-vboxdrv
382 %depmod %{_kernel_ver}
383 /sbin/chkconfig --add vboxdrv
384 %service vboxdrv restart "VirtualBox OSE driver"
385
386 %postun -n kernel%{_alt_kernel}-misc-vboxdrv
387 %depmod %{_kernel_ver}
388
389 %preun -n kernel%{_alt_kernel}-misc-vboxdrv
390 if [ "$1" = "0" ]; then
391         %service vboxdrv stop
392         /sbin/chkconfig --del vboxdrv
393 fi
394
395 %post   -n kernel%{_alt_kernel}-misc-vboxvfs
396 %depmod %{_kernel_ver}
397
398 %postun -n kernel%{_alt_kernel}-misc-vboxvfs
399 %depmod %{_kernel_ver}
400
401 %if %{with userspace}
402 %files
403 %defattr(644,root,root,755)
404 %doc UserManual.pdf
405 %dir %{_libdir}/VirtualBox
406 %dir %{_libdir}/VirtualBox/additions
407 %dir %{_libdir}/VirtualBox/components
408 %dir %{_libdir}/VirtualBox/nls
409 %attr(755,root,root) %{_bindir}/mountvboxsf
410 %attr(755,root,root) %{_bindir}/vditool
411 %attr(755,root,root) %{_bindir}/VBox*
412 %attr(755,root,root) %{_bindir}/VirtualBox
413 %attr(755,root,root) %{_libdir}/VirtualBox/vditool
414 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC
415 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE
416 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage
417 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL
418 %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD
419 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so
420 %ifarch %{x8664}
421 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.rel
422 %endif
423 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox
424 %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox-wrapper.sh
425 %{_libdir}/VirtualBox/*.gc
426 %{_libdir}/VirtualBox/*.r0
427 %{_libdir}/VirtualBox/*.xpt
428 %{_libdir}/VirtualBox/additions/*
429 %{_libdir}/VirtualBox/components/*
430 %lang(ar) %{_libdir}/VirtualBox/nls/*_ar.qm
431 %lang(ca) %{_libdir}/VirtualBox/nls/*_ca.qm
432 %lang(cs) %{_libdir}/VirtualBox/nls/*_cs.qm
433 %lang(de) %{_libdir}/VirtualBox/nls/*_de.qm
434 %lang(es) %{_libdir}/VirtualBox/nls/*_es.qm
435 %lang(eu) %{_libdir}/VirtualBox/nls/*_eu.qm
436 %lang(fi) %{_libdir}/VirtualBox/nls/*_fi.qm
437 %lang(fr) %{_libdir}/VirtualBox/nls/*_fr.qm
438 %lang(hu) %{_libdir}/VirtualBox/nls/*_hu.qm
439 %lang(id) %{_libdir}/VirtualBox/nls/*_id.qm
440 %lang(it) %{_libdir}/VirtualBox/nls/*_it.qm
441 %lang(ja) %{_libdir}/VirtualBox/nls/*_ja.qm
442 %lang(ko) %{_libdir}/VirtualBox/nls/*_ko.qm
443 %lang(nl) %{_libdir}/VirtualBox/nls/*_nl.qm
444 %lang(pl) %{_libdir}/VirtualBox/nls/*_pl.qm
445 %lang(pt) %{_libdir}/VirtualBox/nls/*_pt.qm
446 %lang(pt_BR) %{_libdir}/VirtualBox/nls/*_pt_BR.qm
447 %lang(ro) %{_libdir}/VirtualBox/nls/*_ro.qm
448 %lang(ru) %{_libdir}/VirtualBox/nls/*_ru.qm
449 %lang(sk) %{_libdir}/VirtualBox/nls/*_sk.qm
450 %lang(sr) %{_libdir}/VirtualBox/nls/*_sr.qm
451 %lang(sv) %{_libdir}/VirtualBox/nls/*_sv.qm
452 %lang(tr) %{_libdir}/VirtualBox/nls/*_tr.qm
453 %lang(zh_CN) %{_libdir}/VirtualBox/nls/*_zh_CN.qm
454 %lang(zh_TW) %{_libdir}/VirtualBox/nls/*_zh_TW.qm
455 %{_pixmapsdir}/VBox.png
456 %{_desktopdir}/%{pname}.desktop
457
458 %files udev
459 %defattr(644,root,root,755)
460 %config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
461
462 # Drivers are for Guest OS, which is 32-bit.
463 %ifnarch %{x8664}
464 %files -n xorg-driver-input-vboxmouse
465 %defattr(644,root,root,755)
466 %attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
467
468 %files -n xorg-driver-video-vboxvideo
469 %defattr(644,root,root,755)
470 %attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
471 %endif
472 %endif
473
474 %if %{with kernel}
475 %files -n kernel%{_alt_kernel}-misc-vboxadd
476 %defattr(644,root,root,755)
477 %attr(754,root,root) /etc/rc.d/init.d/vboxadd
478 /lib/modules/%{_kernel_ver}/misc/vboxadd.ko*
479
480 %files -n kernel%{_alt_kernel}-misc-vboxdrv
481 %defattr(644,root,root,755)
482 %attr(754,root,root) /etc/rc.d/init.d/vboxdrv
483 /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko*
484
485 %files -n kernel%{_alt_kernel}-misc-vboxvfs
486 %defattr(644,root,root,755)
487 /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko*
488 %endif
This page took 0.109761 seconds and 4 git commands to generate.