2 %if %{?commerce:0}%{!?commerce:1}
6 %define __python $(which python)
7 %define __app karesansui
10 %define date %(echo `LANG=C date +%%Y%%m%%d%%H%%M%%S`)
13 %define _vendor_name hde
14 %define name %{_vendor_name}-karesansui
15 %define __prefix /opt/%{_vendor_name}
16 %define __sysconfdir %{_sysconfdir}/opt/%{_vendor_name}/%{__app}
17 %define python_home %{__prefix}
19 %define _vendor_name %{nil}
21 %define name karesansui
22 %define __sysconfdir %{_sysconfdir}/opt/%{__app}
23 %define python_home %{__prefix}/%{__app}
26 %define __bindir %{__prefix}/%{__app}/bin
27 %define __tmpdir %{__prefix}/%{__app}/tmp
28 %define _defaultdocdir %{__prefix}/%{__app}/share/doc
29 %define python_sitelib %{python_home}/lib/python
31 %define __pysilhouette_prefix %{__prefix}/pysilhouette
32 %define __pysilhouette_sysconfdir %{_sysconfdir}/opt/pysilhouette
34 %define __vendor_sysconfdir %{_sysconfdir}/opt/hde
38 %define _user_doc Karesansui Project
41 %define _group_member wwwhde
43 Summary: Virtualization management tool(Web Application)
44 Summary(ja): オープンソースの仮想ホスト管理アプリケーション
47 #Release: %{release}.%{date}
49 Source0: %{__app}-%{version}.tar.gz
51 Group: Applications/System
52 Url: http://karesansui-project.info/
53 Vendor: Karesansui Project
54 Packager: Taizo ITO <taizo@karesansui-project.info>
55 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
59 Requires: hde-libvirt-python
60 Requires: pysilhouette
64 On the Web for virtualization management software to manage.
65 The guest OS and the management of resources and dynamic changes can be done easily.
66 RESTful Web applications in architecture.
69 Summary: libraries for Karesansui Core
70 Group: Applications/System
72 Requires: %{name} = %{version}
75 libraries for Karesansui Core
78 Summary: UI data for Karesansui Core
79 Group: Applications/System
81 Requires: %{name} = %{version}
84 UI data for Karesansui Core
87 Summary: Basic gadget collection for Karesansui Core
88 Group: Applications/System
90 Requires: %{name} = %{version}
93 Basic gadget collection for Karesansui Core
96 Summary: Basic command collection for Karesansui Core
97 Group: Applications/System
99 Requires: %{name} = %{version}
102 Basic command collection for Karesansui Core
105 Summary: Unit test environment for Karesansui Core
106 Group: Applications/System
108 Requires: %{name} = %{version}
109 Requires: hde-python-paste
112 Unit test environment for Karesansui Core
115 Summary: additional packages that extend functionality of existing packages
116 Group: Applications/System
117 License: See the source code
118 Requires: %{name} = %{version}
123 additional packages that extend functionality of existing packages
126 %setup -n %{__app}-%{version}
129 python setup.py build
132 python setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES --home=%{python_home}
134 install -d -m 0770 $RPM_BUILD_ROOT%{__sysconfdir}
135 %{__cp} -f doc/application.conf.example $RPM_BUILD_ROOT%{__sysconfdir}/application.conf.example
136 %{__cp} -f $RPM_BUILD_ROOT%{__sysconfdir}/application.conf{.example,}
137 %{__cp} -f doc/log.conf.example $RPM_BUILD_ROOT%{__sysconfdir}/log.conf.example
138 %{__cp} -f $RPM_BUILD_ROOT%{__sysconfdir}/log.conf{.example,}
139 %{__cp} -fr doc/lighttpd/ $RPM_BUILD_ROOT%{__sysconfdir}/lighttpd.example/
140 %{__cp} -f doc/whitelist.conf.example $RPM_BUILD_ROOT%{__sysconfdir}/
141 %{__cp} -f doc/service.xml.example $RPM_BUILD_ROOT%{__sysconfdir}/service.xml
142 %{__cp} -f doc/logview.xml.example $RPM_BUILD_ROOT%{__sysconfdir}/logview.xml
143 %{__cp} -fr doc/template/ $RPM_BUILD_ROOT%{__sysconfdir}/template/
145 install -d -m 0770 $RPM_BUILD_ROOT/etc/cron.d/
146 %{__cp} -f doc/cron_cleantmp.example $RPM_BUILD_ROOT/etc/cron.d/karesansui_cleantmp
148 install -d -m 0770 $RPM_BUILD_ROOT/{etc,var}/opt/karesansui
149 install -d -m 0770 $RPM_BUILD_ROOT/var/log/karesansui
150 install -d -m 0770 $RPM_BUILD_ROOT%{__tmpdir}
152 find $RPM_BUILD_ROOT%{python_sitelib}/karesansui -type d -exec chmod g+rwx \{\} \; 2>/dev/null
154 install -d -m 0770 $RPM_BUILD_ROOT/{etc,var}/opt/karesansui/cache
155 install -d -m 0770 $RPM_BUILD_ROOT/{etc,var}/opt/karesansui/cache/yum
158 rm -rf $RPM_BUILD_ROOT
162 getent group | %{__grep} "^%{_group}:" >/dev/null 2>&1
163 if [ $? -ne 0 ]; then
165 while test ${__uid} -le %{_uid_max}
167 getent group | %{__grep} "^[^:]*:x:${__uid}:" >/dev/null 2>&1
168 if [ $? -ne 0 ]; then
172 __uid=`expr ${__uid} + 1`
174 /usr/sbin/groupadd -g ${_gid} -f %{_group}
178 getent passwd | %{__grep} "^%{_user}:" >/dev/null 2>&1
179 if [ $? -ne 0 ]; then
181 while test ${__uid} -le %{_uid_max}
183 getent passwd | %{__grep} "^[^:]*:x:${__uid}:" >/dev/null 2>&1
184 if [ $? -ne 0 ]; then
188 __uid=`expr ${__uid} + 1`
190 /usr/sbin/useradd -c "%{_user_doc}" -u ${_uid} -g %{_group} -s /bin/false -r %{_user} 2> /dev/null || :
193 # Add %{_group_member} user to %{_group} group member
194 %{__grep} ^%{_group_member}: /etc/passwd >/dev/null 2>&1
195 if [ $? -eq 0 ]; then
196 gpasswd -a %{_group_member} %{_group} >/dev/null 2>&1
197 gpasswd -a %{_group} %{_group_member} >/dev/null 2>&1
201 # Modify libvirt configuration file.
202 sysconfig_libvirt=%{_sysconfdir}/sysconfig/hde-libvirtd
203 if [ -f ${sysconfig_libvirt} ]; then
204 %{__grep} "^PRIVSEP_GROUP=" ${sysconfig_libvirt} >/dev/null 2>&1
205 if [ $? -ne 0 ]; then
206 echo "PRIVSEP_GROUP=%{_group}" >>${sysconfig_libvirt}
209 libvirtd_conf=%{__vendor_sysconfdir}/libvirt/libvirtd.conf
210 if [ -f ${libvirtd_conf} ]; then
211 %{__grep} '^unix_sock_group = "root"' ${libvirtd_conf} >/dev/null 2>&1
212 if [ $? -eq 0 ]; then
213 %{__sed} -e "s#unix_sock_group = \"root\"#unix_sock_group = \"%{_group}\"#" ${libvirtd_conf} >${libvirtd_conf}.$$
214 %{__cp} -f ${libvirtd_conf}.$$ ${libvirtd_conf}
215 %{__rm} -f ${libvirtd_conf}.$$
220 if [ -d %{__vendor_sysconfdir} ]; then
221 %{__mkdir_p} %{__vendor_sysconfdir}/xen/xml/
222 %{__chgrp} -R %{_group} %{__vendor_sysconfdir}/xen/ >/dev/null 2>&1
223 %{__chmod} -R g+rw %{__vendor_sysconfdir}/xen/ >/dev/null 2>&1
225 libvirt_datadir=/var/opt/hde/libvirt
226 if [ -d ${libvirt_datadir} ]; then
227 #for subdir in boot images snapshot disk
228 for subdir in domains
230 %{__mkdir_p} ${libvirt_datadir}/${subdir}
231 %{__chmod} g+rwx ${libvirt_datadir}/${subdir} >/dev/null 2>&1
232 %{__chmod} o-rwx ${libvirt_datadir}/${subdir} >/dev/null 2>&1
234 %{__chgrp} -R %{_group} ${libvirt_datadir}/ >/dev/null 2>&1
235 %{__chmod} g+rwx ${libvirt_datadir}/ >/dev/null 2>&1
238 # Modify lighttpd configuration file.
239 for lighttpd_sysconfdir in %{__vendor_sysconfdir}/lighttpd /etc/lighttpd
241 if [ -d ${lighttpd_sysconfdir} ]; then
242 %{__mkdir_p} ${lighttpd_sysconfdir}/conf.d/karesansui/ >/dev/null 2>&1
243 if [ ! -f ${lighttpd_sysconfdir}/conf.d/karesansui.conf ]; then
244 %{__cp} -f %{__sysconfdir}/lighttpd.example/karesansui.conf ${lighttpd_sysconfdir}/conf.d/
245 %{__cp} -f %{__sysconfdir}/lighttpd.example/{access,port,ssl}.conf ${lighttpd_sysconfdir}/conf.d/karesansui/
246 %{__chgrp} -R %{_group} ${lighttpd_sysconfdir}/conf.d/karesansui*
247 %{__chmod} -R 0660 ${lighttpd_sysconfdir}/conf.d/karesansui/*
252 # Register whitelist commands to pysilhouette service.
253 if [ -d %{__pysilhouette_sysconfdir} ]; then
254 if [ ! -s %{__pysilhouette_sysconfdir}/whitelist.conf ]; then
255 %{__cp} -f %{__sysconfdir}/whitelist.conf.example %{__pysilhouette_sysconfdir}/whitelist.conf
261 /usr/sbin/userdel %{_user} 2> /dev/null || :
262 /usr/sbin/groupdel %{_group} 2> /dev/null || :
264 # Modify libvirt configuration file.
265 sysconfig_libvirt=%{_sysconfdir}/sysconfig/hde-libvirtd
266 if [ -f ${sysconfig_libvirt} ]; then
267 %{__grep} -v "^PRIVSEP_GROUP=" ${sysconfig_libvirt} >${sysconfig_libvirt}.$$
268 %{__cp} -f ${sysconfig_libvirt}.$$ ${sysconfig_libvirt}
269 %{__rm} -f ${sysconfig_libvirt}.$$
271 libvirtd_conf=%{__vendor_sysconfdir}/libvirt/libvirtd.conf
272 if [ -f ${libvirtd_conf} ]; then
273 %{__grep} '^unix_sock_group =' ${libvirtd_conf} >/dev/null 2>&1
274 if [ $? -eq 0 ]; then
275 %{__sed} -e "s#unix_sock_group = .*#unix_sock_group = \"root\"#" ${libvirtd_conf} >${libvirtd_conf}.$$
276 %{__cp} -f ${libvirtd_conf}.$$ ${libvirtd_conf}
277 %{__rm} -f ${libvirtd_conf}.$$
282 #%files -f INSTALLED_FILES
283 #%defattr(-,root,root)
287 %defattr(-,root,%{_group})
288 %doc doc tool AUTHORS COPYING COPYING.LIB INSTALL INSTALL.ja README README.ja
289 %dir %{python_sitelib}/
290 %dir %{python_sitelib}/karesansui/
291 %dir %{python_sitelib}/karesansui/db/
292 %dir %{python_sitelib}/karesansui/static/
293 %{python_sitelib}/karesansui/*.py*
294 %{python_sitelib}/karesansui/db/*.py*
295 %{python_sitelib}/karesansui/db/access/*.py*
296 %{python_sitelib}/karesansui/db/model/*.py*
297 %{python_sitelib}/karesansui/static/js/*
298 %{python_sitelib}/karesansui/static/lib/*
299 %{__sysconfdir}/*.example
300 %defattr(0770,root,%{_group})
301 %config(noreplace) %{__sysconfdir}/*.conf
302 %config(noreplace) %{__sysconfdir}/*.xml
303 %dir %{__sysconfdir}/
304 %dir %{__sysconfdir}/template/
305 %{__sysconfdir}/template/*
306 %dir /var/opt/karesansui/
307 %dir /var/log/karesansui/
309 %defattr(0770,root,%{_group})
310 %dir /var/opt/karesansui/cache
311 %defattr(0770,%{_group_member},%{_group})
312 %dir /var/opt/karesansui/cache/yum
316 %defattr(-,root,%{_group})
317 %dir %{python_sitelib}/karesansui/lib/
318 %{python_sitelib}/karesansui/lib/*
321 %defattr(-,root,%{_group})
322 %dir %{python_sitelib}/karesansui/static/css/
323 %dir %{python_sitelib}/karesansui/static/icon/
324 %dir %{python_sitelib}/karesansui/static/images/
325 %dir %{python_sitelib}/karesansui/locale/
326 %{python_sitelib}/karesansui/static/css/*
327 %{python_sitelib}/karesansui/static/icon/*
328 %{python_sitelib}/karesansui/static/images/*
329 %{python_sitelib}/karesansui/locale/*/LC_MESSAGES/*.mo
332 %defattr(-,root,%{_group})
333 %dir %{python_sitelib}/karesansui/gadget/
334 %dir %{python_sitelib}/karesansui/templates/default/
335 %{python_sitelib}/karesansui/gadget/*
336 %{python_sitelib}/karesansui/templates/default/*
339 %defattr(0770,root,%{_group})
341 %defattr(0550,root,%{_group})
345 %defattr(-,root,%{_group})
346 %dir %{python_sitelib}/karesansui/tests/
347 %{python_sitelib}/karesansui/tests/*
350 %defattr(-,root,%{_group})
351 %dir %{python_sitelib}/karesansui/plus/
352 %{python_sitelib}/karesansui/plus/*
355 * Mon May 24 2010 Taizo ITO <taizo@karesansui-project.info> - 2.0.0-1
356 - version 2.0.0 beta release.
357 - 'karesansui-lib' sub package that includes python libraries is separated from core package.
359 * Wed Jan 06 2010 Kei Funagayama <kei@karesansui-project.info> - 1.1.0-4
360 - version 1.1.0 beta release.
362 * Fri Dec 25 2009 Taizo ITO <taizo@karesansui-project.info> - 1.1.0-3
363 - Fixed attach/detach device.
365 * Mon Dec 14 2009 Kei Funagayama <kei@karesansui-project.info> - 1.1.0-2
366 - Add "plus" package.
367 - Add Software Update feature.
369 * Thu Dec 10 2009 Taizo ITO <taizo@karesansui-project.info> - 1.1.0-1
371 - Changed paths for domain's image data.
373 * Thu Oct 29 2009 Kei Funagayama <kei@karesansui-project.info> - 1.0.3-2
374 - CentOS(i386/x86_64) support.
375 - RHEL(i386/x86_64) support.
377 * Tue Sep 18 2009 Kei Funagayama <kei@karesansui-project.info> - 1.0.3-1
378 - Added checker for keymap selection.
379 - Fixed web server setting bugs.
380 - Fixed the following hungup bug.
381 ** glibc detected *** /usr/bin/python: free(): invalid pointer:
382 - Changed the format of system uri path.
383 fixed error "unexpected Xen URI path '/system', try xen:///" for libvirt-0.6.5.
385 * Thu Jun 18 2009 Kei Funagayama <kei@karesansui-project.info> - 1.0.2-1
386 - Sparce file support is now available at creating a guest environment.
387 - Keyboard maps selection is now available at creating a guest environment.
388 - Fixed rpm transaction closing order.
389 - Fixed checking of processor support.
390 - sqlite time to register with the system, had not added the time zone information.
391 - Network database is now available as pysilhouette database.
392 - Addresses an issue which karesansui does not work at multi-host environment.
394 * Tue Jun 9 2009 Kei Funagayama <kei@karesansui-project.info> - 1.0.1-1
395 - Karesansui now works on CentOS5.3 64bit(x86_64), RHEL5.3 64bit(x86_64) and RHEL5.3 32bit(x86).
396 - Added support for AMD Athlon64 or Opteron environment.
398 - Improves VNC console keyboard layout support.
399 - Prevents host environment's FQDN from being resolved.
400 - Highlights required items on input forms.
401 - Buttons turn disabled not to be clicked after clicking at dialog window.
402 - Karesansui now works when PostgreSQL is selected as database at the installation process.
403 - Addresses an issue which could not reach the management console after resetting F/W.
404 - Addresses an issue which could not move to other tabs while displaying guest console.
405 - Delete button is now turned disabled after destroying resources.
406 - Network configuration is now editable without errors.
407 - Addresses an issue which occurs when job search is performanced many times.
408 - Creating guest with empty value in "Memory Size" or "Disk Size" now works.
409 - Prevent input data from being posted to other resources when enter key is pressed on input forms.
410 - Improved a check logic about guest ID.
411 - Improved error handling on nonexistent NIC.
413 * Tue May 19 2009 Taizo ITO <taizo@karesansui-project.info> - 1.0.0-1