$%^!*& rpm #&!^*
[util-vserver.git] / util-vserver.spec
1 %define name util-vserver
2 %define version 0.30
3 %define release 1.planetlab%{?date:.%{date}}
4
5 Vendor: PlanetLab
6 Packager: PlanetLab Central <support@planet-lab.org>
7 Distribution: PlanetLab 3.0
8 URL: http://www.planet-lab.org
9
10 %define __chattr        /usr/bin/chattr
11
12 Summary:        Linux virtual server utilities
13 Name:           %{name}
14 Version:        %{version}
15 Release:        %{release}
16 Epoch:          0
17 Copyright:      GPL
18 Group:          System Environment/Base
19 Source0:        http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
20 Provides:       %name-devel = %epoch:%version-%release
21 BuildRoot:      %_tmppath/%name-%version-%release-root
22 Provides:       vserver = %epoch:%version-%release
23 Conflicts:      vserver < %epoch:%version-%release
24 Conflicts:      vserver > %epoch:%version-%release
25 BuildRequires:  e2fsprogs-devel
26 Requires(post): %__chattr
27
28 %package linuxconf
29 Summary:        Linuxconf administration modules for vservers
30 Group:          Applications/System
31 Requires:       %name = %epoch:%version-%release
32 Provides:       vserver-admin = %epoch:%version-%release
33 Conflicts:      vserver-admin < %epoch:%version-%release
34 Conflicts:      vserver-admin > %epoch:%version-%release
35
36 %description
37 This package provides the components and a framework to setup virtual
38 servers.  A virtual server runs inside a linux server. It is nevertheless
39 highly independent. As such, you can run various services with normal
40 configuration. The various vservers can't interact with each other and
41 can't interact with services in the main server.
42
43 This requires a special kernel supporting the new new_s_context and
44 set_ipv4root system call.
45
46
47 %description linuxconf
48 This package provides the components to setup virtual servers with
49 linuxconf.
50
51
52 %prep
53 %setup -q
54 aclocal -I m4
55 autoconf
56 automake --add-missing
57 # bootstrap to avoid BuildRequires of kernel-source
58 for linux in $RPM_BUILD_DIR/linux-* /lib/modules/`uname -r`/build ; do
59    [[ -d $linux/include ]] && %configure --with-kerneldir=$linux --enable-linuxconf && break
60 done
61
62
63 %build
64 make
65
66 %install
67 rm -rf $RPM_BUILD_ROOT
68 %__make DESTDIR=$RPM_BUILD_ROOT install
69
70 mkdir -p $RPM_BUILD_ROOT/vservers
71 test "%_initrddir" = %_sysconfdir/init.d || {
72         mkdir -p ${RPM_BUILD_ROOT}%_initrddir
73         mv ${RPM_BUILD_ROOT}%_sysconfdir/init.d/* ${RPM_BUILD_ROOT}%_initrddir/
74 }
75
76 mkdir -p ${RPM_BUILD_ROOT}/bin
77 ln -f ${RPM_BUILD_ROOT}%_sbindir/vsh ${RPM_BUILD_ROOT}/bin/vsh
78
79 %clean
80 rm -rf $RPM_BUILD_ROOT
81
82 %define services vcached vservers
83
84 %pre
85 # 1 = install, 2 = upgrade/reinstall
86 if [ $1 -eq 2 ] ; then
87     for i in %{services} ; do
88         [ "`/sbin/runlevel`" = "unknown" ] || service $i stop || :
89     done
90 fi
91
92 %post
93 # 1 = install, 2 = upgrade/reinstall
94 if [ $1 -eq 1 ] ; then
95     for i in %{services} ; do
96         chkconfig --add $i
97         chkconfig $i on
98     done
99 fi
100 for i in %{services} ; do
101     [ "`/sbin/runlevel`" = "unknown" ] || service $i start
102 done
103 if [ ! -f /etc/shells ] || ! grep -q '^/bin/vsh$' /etc/shells ; then
104     echo /bin/vsh >> /etc/shells
105 fi
106
107 %__chattr +t /vservers || :
108
109
110 %postun
111 # 0 = erase, 1 = upgrade
112 if [ "$1" = 0 ] ; then
113     perl -i -n -e 'next if /^\/bin\/vsh$/; print' /etc/shells
114 fi
115
116 %preun
117 # 0 = erase, 1 = upgrade
118 if [ $1 -eq 0 ] ; then
119     for i in %{services} ; do
120         [ "`/sbin/runlevel`" = "unknown" ] || service $i stop || :
121         chkconfig $i off
122         chkconfig --del $i
123     done
124 fi
125
126 %files
127 %defattr(-,root,root)
128 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
129 %_sbindir/*
130 %_libdir/%name
131 %_includedir/vserver.h
132 %_libdir/libvserver.a
133 %_mandir/man8/*
134 %config %_initrddir/*
135 %config(noreplace) /etc/vservers.conf
136 %config(noreplace) /etc/vcached.conf
137 %dir /etc/vservers
138 %attr(0,root,root) %dir /vservers
139 %attr(4755,root,root) /usr/sbin/vsh
140 %attr(4755,root,root) /bin/vsh
141
142 %exclude %_sbindir/newvserver
143 %exclude %_mandir/man8/newvserver*
144
145 %files linuxconf
146 %defattr(-,root,root)
147 %config(noreplace) /etc/vservers/newvserver.defaults
148 %_sbindir/newvserver
149 %_mandir/man8/newvserver*
150
151 %changelog
152 * Mon Oct 11 2004 Marc E. Fiuczynski <mef@cs.princeton.edu> 0.1-1.planetlab
153 - added vsh
154
155 * Wed Aug 11 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.29-1.planetlab
156 - initial PlanetLab 3.0 build.
157
158 * Thu Mar 18 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.3-0
159 - removed '%%doc doc/FAQ.txt' since file does not exist anymore
160
161 * Fri Sep 26 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.4-1
162 - initial build.
163