propset - enables svn keywords
[build.git] / planetlab.mk
1 #
2 # PlanetLab standard components list
3 #
4 # Mark Huang <mlhuang@cs.princeton.edu>
5 # Copyright (C) 2003-2006 The Trustees of Princeton University
6 #
7 # $Id$
8 #
9
10 #
11 # Required:
12 #
13 # CVSROOT or package-CVSROOT: CVSROOT to use
14 # together with 
15 # TAG or package-TAG: CVS tag to use (only with CVSROOT)
16 # or
17 # SVNPATH or package-SVNPATH: SVNPATH to use
18 # Note: do not define both CVSROOT and SVNPATH
19 #
20 # package-MODULE: name(s) of cvs/svn module(s) needed for building
21 # package-SPEC: RPM spec file name
22 #
23 # Optional:
24 #
25 # package-RPMFLAGS: Miscellaneous RPM flags
26 # package-RPMBUILD: If not rpmbuild
27 #
28 # Add to ALL if you want the package built as part of the default set.
29 #
30
31 #
32 # Default values -- should be able to override these from command line
33 #
34 HOSTARCH := $(shell uname -i)
35 DISTRO := $(shell ./getdistro.sh)
36 RELEASE := $(shell ./getrelease.sh)
37
38 #
39 # load in a release specific tags file
40 # Override TAGSFILE from command line to select something else
41 #
42
43 #
44 # kernel
45 #
46 kernel-$(HOSTARCH)-MODULE := Linux-2.6
47 kernel-$(HOSTARCH)-SPEC := scripts/kernel-2.6-planetlab.spec
48 ifeq ($(HOSTARCH),i386)
49 kernel-$(HOSTARCH)-RPMFLAGS:= --target i686
50 else
51 kernel-$(HOSTARCH)-RPMFLAGS:= --target $(HOSTARCH)
52 endif
53
54 KERNELS += kernel-$(HOSTARCH)
55
56 kernel: $(KERNELS)
57 kernel-clean: $(foreach package,$(KERNELS),$(package)-clean)
58
59 ALL += $(KERNELS)
60
61 #
62 # util-vserver
63 #
64 util-vserver-MODULE := util-vserver
65 util-vserver-SPEC := util-vserver.spec
66 util-vserver-RPMFLAGS:= --without dietlibc
67 util-vserver-DEPENDS := libnl
68 ALL += util-vserver
69
70 #
71 # NodeUpdate
72 #
73 NodeUpdate-MODULE := NodeUpdate
74 NodeUpdate-SPEC := NodeUpdate.spec
75 ALL += NodeUpdate
76
77 #
78 # ipod
79 #
80 PingOfDeath-MODULE := PingOfDeath
81 PingOfDeath-SPEC := ipod.spec
82 ALL += PingOfDeath
83
84 #
85 # NodeManager
86 #
87 NodeManager-MODULE := NodeManager
88 NodeManager-SPEC := NodeManager.spec
89 ALL += NodeManager
90
91 #
92 # pl_sshd
93 #
94 pl_sshd-MODULE := pl_sshd
95 pl_sshd-SPEC := pl_sshd.spec
96 ALL += pl_sshd
97
98 #
99 # libhttpd++: 
100 #
101 # Deprecate when vsys takes over [sapan].
102 # keep in build for proper.
103 #
104 libhttpd++-MODULE := libhttpd++
105 libhttpd++-SPEC := libhttpd++.spec
106 ALL += libhttpd++
107
108 #
109 # Proper: Privileged Operations Service
110 #
111 proper-MODULE := proper
112 proper-SPEC := proper.spec
113 proper-RPMBUILD := sudo bash ./rpmbuild.sh
114 # proper uses scripts in util-python for building
115 proper-DEPENDS := libhttpd++ util-python
116 ALL += proper
117
118 #
119 # CoDemux: Port 80 demux
120 #
121 CoDemux-MODULE := CoDemux
122 CoDemux-SPEC   := codemux.spec
123 CoDemux-RPMBUILD := sudo bash ./rpmbuild.sh
124 ALL += CoDemux
125
126 #
127 # ulogd
128 #
129 ulogd-MODULE := ulogd
130 ulogd-SPEC := ulogd.spec
131 ulogd-DEPENDS := $(KERNELS) proper
132 ALL += ulogd
133
134 #
135 # PlanetFlow
136 #
137 PlanetFlow-MODULE := PlanetFlow
138 PlanetFlow-SPEC := netflow.spec
139 PlanetFlow-SPECVARS := distroname=$(DISTRO) distrorelease=$(RELEASE)
140 ALL += PlanetFlow
141
142 #
143 # PlanetLab Mom: Cleans up your mess
144 #
145 Mom-MODULE := Mom
146 Mom-SPEC := pl_mom.spec
147 ALL += Mom
148
149 #
150 # iptables
151 #
152 iptables-MODULE := iptables
153 iptables-SPEC := iptables.spec
154 iptables-DEPENDS := $(KERNELS)
155 ALL += iptables
156
157 #
158 # iproute
159 #
160 iproute-MODULE := iproute2
161 iproute-SPEC := iproute.spec
162 ALL += iproute
163
164 #
165 # util-python
166 #
167 # [marc]    deprecate with proper
168 #
169 util-python-MODULE := util-python
170 util-python-SPEC := util-python.spec
171 ALL += util-python
172
173 #
174 # vsys
175 #
176 vsys-MODULE := vsys
177 vsys-SPEC := vsys.spec
178 ifeq ($(DISTRO),"Fedora")
179 ifeq ($(RELEASE),7)
180 ALL += vsys
181 endif
182 endif
183
184 #
185 # PLCAPI
186 #
187 PLCAPI-MODULE := PLCAPI
188 PLCAPI-SPEC := PLCAPI.spec
189 ALL += PLCAPI
190
191 #
192 # PLCWWW
193 #
194 PLCWWW-MODULE := WWW
195 PLCWWW-SPEC := PLCWWW.spec
196 ALL += PLCWWW
197
198 #
199 # BootManager
200 #
201 BootManager-MODULE := BootManager build
202 BootManager-SPEC := bootmanager.spec
203 # Package must be built as root
204 BootManager-RPMBUILD := sudo bash ./rpmbuild.sh
205 ALL += BootManager
206
207 # we do not want BootCD to depend on vserver-reference, do we ?
208 ALL-REGULARS := $(ALL)
209
210 #
211 # vserver-reference
212 #
213 VserverReference-MODULE := VserverReference build
214 VserverReference-SPEC := vserver-reference.spec
215 # Package must be built as root
216 VserverReference-RPMBUILD := sudo bash ./rpmbuild.sh
217 # package requires all regular packages
218 VserverReference-DEPENDS := $(ALL-REGULARS)
219 VserverReference-DEPENDFILES := RPMS/yumgroups.xml
220 ALL += VserverReference
221
222 #
223 # BootCD
224 #
225 BootCD-MODULE := BootCD BootManager build
226 BootCD-SPEC := bootcd.spec
227 BootCD-RPMBUILD := sudo bash ./rpmbuild.sh
228 # package has *some* dependencies, at least these ones
229 BootCD-DEPENDS := $(KERNELS)
230 BootCD-DEPENDFILES := RPMS/yumgroups.xml
231 ALL += BootCD
232
233 #
234 # BootstrapFS
235 #
236 BootstrapFS-MODULE := BootstrapFS build
237 BootstrapFS-SPEC := bootstrapfs.spec
238 BootstrapFS-RPMBUILD := sudo bash ./rpmbuild.sh
239 # package requires all regular packages
240 BootstrapFS-DEPENDS := $(ALL-REGULARS)
241 BootstrapFS-DEPENDFILES := RPMS/yumgroups.xml
242 ALL += BootstrapFS
243
244 #
245 # MyPLC
246 #
247 MyPLC-MODULE := MyPLC build
248 MyPLC-SPEC := myplc.spec
249 # Package must be built as root
250 MyPLC-RPMBUILD := sudo bash ./rpmbuild.sh
251 # MyPLC may require all packages
252 MyPLC-DEPENDS := $(filter-out MyPLC,$(ALL))
253 MyPLC-DEPENDFILES := RPMS/yumgroups.xml
254 ALL += MyPLC
255
256 #
257 # MyPLC native
258 #
259 MyPLC-native-MODULE := MyPLC build 
260 MyPLC-native-SPEC := myplc-native.spec
261 # Package must be built as root
262 MyPLC-native-RPMBUILD := sudo bash ./rpmbuild.sh
263 # Thierry : I don't think we depend on these at build-time
264 #MyPLC-native-DEPENDS := $(MyPLC-DEPENDS)
265 # Thierry : dunno about this one, let's stay safe
266 MyPLC-native-DEPENDFILES := $(MyPLC-DEPENDFILES)
267 #ALL += MyPLC-native
268
269 #
270 # MyPLC development environment
271 #
272 MyPLC-devel-MODULE := MyPLC build 
273 MyPLC-devel-SPEC := myplc-devel.spec
274 MyPLC-devel-RPMBUILD := sudo bash ./rpmbuild.sh
275 #ALL += MyPLC-devel
276
277 #
278 # MyPLC native development environment
279 #
280 MyPLC-devel-native-MODULE := MyPLC
281 MyPLC-devel-native-SPECVARS := distroname=$(DISTRO) distrorelease=$(RELEASE)
282 MyPLC-devel-native-SPEC := myplc-devel-native.spec
283 #ALL += MyPLC-devel-native
284
285 #
286 # libnl
287 #
288 # [daniel]    wait for latest Fedora release 
289 # (03:29:46 PM) daniel_hozac: interfacing with the kernel directly when dealing with netlink was fugly, so... i had to find something nicer.
290 # (03:29:53 PM) daniel_hozac: the one in Fedora is lacking certain APIs i need.
291 #
292 libnl-MODULE := libnl
293 libnl-SPEC := libnl.spec
294 ALL += libnl
295