parseSpec does not like complex %if statements
[myplc.git] / myplc-devel-native.spec
1 Vendor: PlanetLab
2 Packager: PlanetLab Central <support@planet-lab.org>
3 Distribution: PlanetLab 4.0
4 URL: http://svn.planet-lab.org/svn/MyPLC
5
6 Summary: PlanetLab Central (PLC) Development Environment
7 Name: MyPLC-devel-native
8 Version: 0.1
9 Release: 2%{?pldistro:.%{pldistro}}%{?date:.%{date}}
10 License: PlanetLab
11 Group: Development/Tools
12 Source0: %{name}-%{version}.tar.gz
13 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
14 AutoReqProv: no
15
16 # group this according to the requirements of the different packages we build
17 Requires: beecrypt-devel
18 Requires: bzip2
19 Requires: coreutils
20 Requires: cpio
21 Requires: createrepo
22 Requires: curl
23 Requires: curl-devel
24 Requires: cvs
25 Requires: db4-devel
26 Requires: dev
27 Requires: diffutils
28 Requires: dnsmasq
29 Requires: docbook-utils-pdf
30 Requires: dosfstools
31 Requires: doxygen
32 Requires: expat-devel
33 Requires: expect
34 Requires: findutils
35 Requires: gcc-c++
36 Requires: gd
37 Requires: glibc
38 Requires: glibc-common
39 Requires: gnupg
40 Requires: gperf
41 Requires: graphviz
42 Requires: gzip
43 Requires: httpd
44 %if "%{distroname}" == "Fedora" 
45 %if "%{distrorelease}" >= "7"
46 Requires: inotify-tools-devel
47 %endif
48 %endif
49 Requires: iptables
50 Requires: less
51 Requires: libpcap
52 %if "%{distroname}" == "Fedora" 
53 %if "%{distrorelease}" >= "6"
54 Requires: libpcap-devel
55 %endif
56 %endif
57 %if "%{distroname}" == "CentOS" 
58 %if "%{distrorelease}" >= "5")
59 Requires: libpcap-devel
60 %endif
61 %endif
62 Requires: libtool
63 Requires: linuxdoc-tools
64 Requires: mailx
65 Requires: make
66 Requires: mkisofs
67 Requires: mod_python
68 Requires: mod_ssl
69 Requires: mysql
70 Requires: mysql-devel
71 Requires: mysql-server
72 Requires: nasm
73 Requires: ncurses-devel
74 Requires: ocaml
75 Requires: ocaml-ocamldoc
76 Requires: openssh
77 Requires: openssl
78 Requires: php
79 Requires: php-devel
80 Requires: php-gd
81 Requires: php-pgsql
82 Requires: postgresql
83 Requires: postgresql-devel
84 Requires: postgresql-python
85 Requires: postgresql-server
86 Requires: python
87 Requires: python-devel
88 %if "%{distroname}" == "Fedora"
89 %if "%{distrorelease}" >= "5"
90 Requires: python-pycurl
91 Requires: python-psycopg2
92 %endif
93 %endif
94 %if "%{distroname}" == "CentOS" 
95 %if "%{distrorelease}" >= "5")
96 Requires: python-pycurl
97 Requires: python-psycopg2
98 %endif
99 %endif
100 Requires: PyXML
101 Requires: readline-devel
102 Requires: redhat-rpm-config
103 Requires: rpm
104 Requires: rpm-build
105 Requires: rpm-devel
106 Requires: rsync
107 Requires: sendmail
108 Requires: sendmail-cf
109 Requires: sharutils
110 Requires: SOAPpy
111 Requires: sudo
112 Requires: subversion
113 Requires: tar
114 Requires: tetex-latex
115 Requires: time
116 Requires: vconfig
117 Requires: vixie-cron
118 Requires: wget
119 Requires: xmlsec1
120 Requires: xmlsec1-openssl
121 Requires: yum
122
123 %define debug_package %{nil}
124
125 %description
126 This package installs a complete PlanetLab development
127 environment. The default installation consists of all the packages
128 necessary to compile MyPLC.
129
130 %prep
131 %setup -q
132
133 %build
134
135 rm -rf $RPM_BUILD_ROOT
136 mkdir -p $RPM_BUILD_ROOT/etc
137
138 %install
139
140 touch $RPM_BUILD_ROOT/etc/myplc-devel-native
141
142 %clean
143 rm -rf $RPM_BUILD_ROOT
144
145 # If run under sudo
146 if [ -n "$SUDO_USER" ] ; then
147     # Allow user to delete the build directory
148     chown -h -R $SUDO_USER .
149     # Some temporary cdroot files like /var/empty/sshd and
150     # /usr/bin/sudo get created with non-readable permissions.
151     find . -not -perm +0600 -exec chmod u+rw {} \;
152     # Allow user to delete the built RPM(s)
153     chown -h -R $SUDO_USER %{_rpmdir}/%{_arch}
154 fi
155
156 %pre
157
158 %post
159
160 if [ -h "/sbin/new-kernel-pkg" ] ; then
161         filename=$(readlink -f /sbin/new-kernel-pkg)
162         if [ "$filename" == "/sbin/true"] ; then
163                 echo "WARNING: /sbin/new-kernel-pkg symlinked to /sbin/true"
164                 echo "\tmost likely /etc/rpm/macros has /sbin/new-kernel-pkg declared in _netsharedpath."
165                 echo "\tPlease remove /sbin/new-kernel-pkg from _netsharedpath and reintall mkinitrd."
166                 exit 1
167         fi
168 fi
169
170 uid=2000
171 gid=2000
172
173 # add a "build" user to the system
174 builduser=$(grep "^build" /etc/passwd | wc -l)
175 if [ $builduser -eq 0 ] ; then
176         groupadd -o -g $gid build;
177         useradd -o -c 'Automated Build' -u $uid -g $gid -n -M -s /bin/bash build;
178 fi
179
180 # myplc-devel on a shared box requires that we set up max loop devices
181 for i in $(seq 0 255) ; do
182         mknod -m 640 /dev/loop$i b 7 $i
183 done
184
185 # Allow build user to build certain RPMs as root
186 buildsudo=$(grep "^build.*ALL=(ALL).*NOPASSWD:.*ALL"  /etc/sudoers | wc -l)
187 if [ $buildsudo -eq 0 ] ; then
188         echo "build   ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
189 fi
190
191 # Don't requiretty for sudo. Needed to build myplc from cron job
192 ttysudo=$(grep "^Defaults.*requiretty" /etc/sudoers | wc -l)
193 if [ $ttysudo -eq 1 ] ; then
194         sed -i 's,^Defaults.*requiretty,#Defaults requiretty,' /etc/sudoers
195 fi
196
197 %preun
198 # 0 = erase, 1 = upgrade
199 if [ $1 -eq 0 ] ; then
200         echo "NOTE: should remove build user from /etc/sudoers"
201 fi
202
203 %files
204 %defattr(-,root,root,-)
205 /etc/myplc-devel-native
206
207 %changelog
208 * Fri Oct 05 2007 Marc E. Fiuczynski <mef@cs.princeton.edu>
209 - Initial build.