1 # /=========================================================================\
3 # = ## # #### ##### ## # ###### ##### =
4 # = # # # # # # # # # # # # =
5 # = # # # # # # # # # # ##### # =
6 # = # # # # # ##### # # # # # =
7 # = # ## # # # # # ## # # =
8 # = # # #### # # # # ###### # =
10 # = A Real-World, Large-Scale Multi-Homing Testbed =
11 # = https://www.nntb.no/ =
13 # = Contact: Thomas Dreibholz =
14 # = dreibh@simula.no, https://www.simula.no/people/dreibh =
15 # \=========================================================================/
18 # declare the packages to be built and their dependencies
19 # initial version from Mark Huang
20 # Mark Huang <mlhuang@cs.princeton.edu>
21 # Copyright (C) 2003-2006 The Trustees of Princeton University
22 # rewritten by Thierry Parmentelat - INRIA Sophia Antipolis
28 # ###### NorNet customisation ###############################################
30 kernel-MODULES := linux
31 kernel-SPEC := kernel.spec
32 kernel-BUILD-FROM-SRPM := yes
33 ifeq "$(HOSTARCH)" "i386"
34 kernel-RPMFLAGS := --target i686
36 kernel-RPMFLAGS := --target $(HOSTARCH)
38 kernel-RPMFLAGS += --without smp --without pae --without debug --without doc --without debuginfo --without perf
39 kernel-WHITELIST-RPMS := kernel,kernel-headers,kernel-devel,kernel-modules-extra,kernel-tools,kernel-tools-libs,kernel-tools-libs-devel
40 kernel-SPECVARS += kernelconfig=planetlab
42 kernel-STOCK-DEVEL-RPMS += elfutils-libelf-devel
45 kernels-clean: $(foreach package,$(KERNELS),$(package)-clean)
48 # this is to mark on which image a given rpm is supposed to go
49 IN_BOOTCD += $(KERNELS)
50 #IN_SLICEIMAGE += $(KERNELS)
51 IN_NODEIMAGE += $(KERNELS)
56 netperfmeter-MODULES := netperfmeter
57 netperfmeter-SPEC := rpm/netperfmeter.spec
59 IN_NODEIMAGE += netperfmeter
64 nornet-nn-MODULES := nornet-nn
65 nornet-nn-SPEC := rpm/nornet-nn.spec
67 IN_NODEIMAGE += nornet-nn
72 rsplib-MODULES := rsplib
73 rsplib-SPEC := rpm/rsplib.spec
75 IN_NODEIMAGE += rsplib
80 subnetcalc-MODULES := subnetcalc
81 subnetcalc-SPEC := rpm/subnetcalc.spec
83 IN_NODEIMAGE += subnetcalc
88 tracebox-MODULES := tracebox
89 tracebox-SPEC := rpm/tracebox.spec
91 IN_NODEIMAGE += tracebox
96 tsctp-MODULES := tsctp
97 tsctp-SPEC := rpm/tsctp.spec
101 # ###########################################################################
104 ### the madwifi drivers ship with fedora16's kernel rpm
107 # lxc-userspace: scripts for entering containers
109 lxc-userspace-MODULES := lxc-userspace
110 lxc-userspace-SPEC := lxc-userspace.spec
112 IN_NODEIMAGE += lxc-userspace
116 # transforward: root context module for transparent port forwarding
118 transforward-MODULES := transforward
119 transforward-SPEC := transforward.spec
120 # ##### NorNet ########################
121 transforward-LOCAL-DEVEL-RPMS += kernel-devel
122 transforward-SPECVARS = kernel_version=$(kernel.rpm-version) \
123 kernel_release=$(kernel.rpm-release) \
124 kernel_arch=$(kernel.rpm-arch)
125 # #####################################
127 IN_NODEIMAGE += transforward
130 # procprotect: root context module for protecting against weaknesses in /proc
132 procprotect-MODULES := procprotect
133 procprotect-SPEC := procprotect.spec
134 # ##### NorNet ########################
135 procprotect-LOCAL-DEVEL-RPMS += kernel-devel
136 procprotect-SPECVARS = kernel_version=$(kernel.rpm-version) \
137 kernel_release=$(kernel.rpm-release) \
138 kernel_arch=$(kernel.rpm-arch)
139 # #####################################
141 IN_NODEIMAGE += procprotect
144 # ipfw: root context module, and slice companion
146 # this module won't build yet under f20
147 ifeq "$(DISTRONAME)" "f18"
148 ipfwroot-MODULES := ipfw
149 ipfwroot-SPEC := planetlab/ipfwroot.spec
150 # ##### NorNet ########################
151 ipfwroot-LOCAL-DEVEL-RPMS += kernel-devel
152 ipfwroot-SPECVARS = kernel_version=$(kernel.rpm-version) \
153 kernel_release=$(kernel.rpm-release) \
154 kernel_arch=$(kernel.rpm-arch)
155 # #####################################
157 IN_NODEIMAGE += ipfwroot
159 ipfwslice-MODULES := ipfw
160 ipfwslice-SPEC := planetlab/ipfwslice.spec
161 # ##### NorNet ########################
162 ipfwslice-LOCAL-DEVEL-RPMS += kernel-devel
163 ipfwslice-SPECVARS = kernel_version=$(kernel.rpm-version) \
164 kernel_release=$(kernel.rpm-release) \
165 kernel_arch=$(kernel.rpm-arch)
166 # #####################################
171 # comgt - a companion to umts tools
173 comgt-MODULES := comgt
174 comgt-SPEC := comgt.spec
175 IN_NODEIMAGE += comgt
179 # umts: root context stuff
181 umts-backend-MODULES := planetlab-umts-tools
182 umts-backend-SPEC := backend.spec
183 IN_NODEIMAGE += umts-backend
189 umts-frontend-MODULES := planetlab-umts-tools
190 umts-frontend-SPEC := frontend.spec
191 IN_SLICEIMAGE += umts-frontend
197 nodeupdate-MODULES := nodeupdate
198 nodeupdate-SPEC := NodeUpdate.spec
200 IN_NODEIMAGE += nodeupdate
205 ipod-MODULES := PingOfDeath
206 ipod-SPEC := ipod.spec
213 plnode-utils-MODULES := plnode-utils
214 plnode-utils-SPEC := plnode-utils-lxc.spec
216 IN_NODEIMAGE += plnode-utils
221 nodemanager-lib-MODULES := nodemanager
222 nodemanager-lib-SPEC := nodemanager-lib.spec
223 ALL += nodemanager-lib
224 IN_NODEIMAGE += nodemanager-lib
226 nodemanager-lxc-MODULES := nodemanager
227 nodemanager-lxc-SPEC := nodemanager-lxc.spec
228 ALL += nodemanager-lxc
229 IN_NODEIMAGE += nodemanager-lxc
234 sshd-MODULES := pl_sshd
235 sshd-SPEC := pl_sshd.spec
240 # codemux: Port 80 demux
242 codemux-MODULES := codemux
243 codemux-SPEC := codemux.spec
245 IN_NODEIMAGE += codemux
250 fprobe-ulog-MODULES := fprobe-ulog
251 fprobe-ulog-SPEC := fprobe-ulog.spec
253 IN_NODEIMAGE += fprobe-ulog
255 #################### libvirt version selection
256 # settling with using version 1.2.1 on all fedoras
257 # although this does not solve the slice re-creation issue seen on f20
260 separate_libvirt_python=true
265 ifeq "$(local_libvirt)" "true"
267 libvirt-MODULES := libvirt
268 libvirt-SPEC := libvirt.spec
269 libvirt-BUILD-FROM-SRPM := yes
270 # The --without options are breaking spec2make : hard-wired in the specfile instead
271 libvirt-STOCK-DEVEL-RPMS += xhtml1-dtds gettext gettext-devel libtasn1-devel gnutls-devel
272 libvirt-STOCK-DEVEL-RPMS += libattr-devel augeas libpciaccess-devel yajl-devel
273 libvirt-STOCK-DEVEL-RPMS += libpcap-devel radvd ebtables device-mapper-devel
274 libvirt-STOCK-DEVEL-RPMS += ceph-devel numactl-devel libcap-ng-devel scrub
275 # for 1.2.1 - first seen on f20, not sure for the other ones
276 libvirt-STOCK-DEVEL-RPMS += libblkid-devel glusterfs-api-devel glusterfs-devel
277 # strictly speaking fuse-devel is not required anymore but we might wish to turn fuse back on again in the future
278 libvirt-STOCK-DEVEL-RPMS += fuse-devel libssh2-devel dbus-devel numad
279 libvirt-STOCK-DEVEL-RPMS += systemd-devel libnl3-devel iptables-ipv6 libgcrypt-devel netcf-devel
281 IN_NODEREPO += libvirt
282 IN_NODEIMAGE += libvirt
289 ifeq "$(separate_libvirt_python)" "true"
291 libvirt-python-MODULES := libvirt-python
292 libvirt-python-SPEC := libvirt-python.spec
293 libvirt-python-BUILD-FROM-SRPM := yes
294 libvirt-python-STOCK-DEVEL-RPMS += gnutls-utils nc pm-utils
295 libvirt-python-LOCAL-DEVEL-RPMS += libvirt-devel libvirt-docs libvirt-client
296 libvirt-python-RPMFLAGS := --define 'packager PlanetLab'
297 ALL += libvirt-python
298 IN_NODEREPO += libvirt-python
299 IN_NODEIMAGE += libvirt-python
304 # DistributedRateLimiting
306 #DistributedRateLimiting-MODULES := DistributedRateLimiting
307 #DistributedRateLimiting-SPEC := DistributedRateLimiting.spec
308 #ALL += DistributedRateLimiting
309 #IN_NODEREPO += DistributedRateLimiting
314 pf2slice-MODULES := pf2slice
315 pf2slice-SPEC := pf2slice.spec
319 ## PlanetLab Mom: Cleans up your mess
322 #mom-SPEC := pl_mom.spec
329 # openvswitch-MODULES := openvswitch
330 # openvswitch-SPEC := openvswitch.spec
331 # openvswitch-STOCK-DEVEL-RPMS += kernel-devel
332 # IN_NODEIMAGE += openvswitch
333 # # build only on f14 as f16 has this natively
334 # ifeq "$(DISTRONAME)" "$(filter $(DISTRONAME),f14)"
342 vsys-SPEC := vsys.spec
343 # ocaml-docs is not needed anymore but keep it on a tmp basis as some tags may still have it
344 vsys-STOCK-DEVEL-RPMS += ocaml-ocamldoc ocaml-docs
349 # vsyssh : installed in slivers
351 vsyssh-MODULES := vsys
352 vsyssh-SPEC := vsyssh.spec
353 IN_SLICEIMAGE += vsyssh
359 vsys-scripts-MODULES := vsys-scripts
360 vsys-scripts-SPEC := root-context/vsys-scripts.spec
361 IN_NODEIMAGE += vsys-scripts
367 bind_public-MODULES := bind_public
368 bind_public-SPEC := bind_public.spec
369 IN_SLICEIMAGE += bind_public
375 sliver-openvswitch-MODULES := sliver-openvswitch
376 sliver-openvswitch-SPEC := sliver-openvswitch.spec
377 IN_SLICEIMAGE += sliver-openvswitch
378 ALL += sliver-openvswitch
383 plcapi-MODULES := plcapi
384 plcapi-SPEC := plcapi.spec
391 drupal-MODULES := drupal
392 drupal-SPEC := drupal.spec
393 drupal-BUILD-FROM-SRPM := yes
398 # use the plewww module instead
400 plewww-MODULES := plewww
401 plewww-SPEC := plewww.spec
406 # www-register-wizard
408 www-register-wizard-MODULES := www-register-wizard
409 www-register-wizard-SPEC := www-register-wizard.spec
410 ALL += www-register-wizard
411 IN_MYPLC += www-register-wizard
416 pcucontrol-MODULES := pcucontrol
417 pcucontrol-SPEC := pcucontrol.spec
423 #monitor-MODULES := monitor
424 #monitor-SPEC := Monitor.spec
425 #monitor-STOCK-DEVEL-RPMS += net-snmp net-snmp-devel
427 #IN_NODEIMAGE += monitor
432 plcrt-MODULES := PLCRT
433 plcrt-SPEC := plcrt.spec
436 # f12 has 0.9-1 already
437 ifeq "$(DISTRONAME)" "$(filter $(DISTRONAME),f8 centos5)"
441 pyopenssl-MODULES := pyopenssl
442 pyopenssl-SPEC := pyOpenSSL.spec
443 pyopenssl-BUILD-FROM-SRPM := yes
450 pyaspects-MODULES := pyaspects
451 pyaspects-SPEC := pyaspects.spec
452 pyaspects-BUILD-FROM-SRPM := yes
458 nodeconfig-MODULES := nodeconfig
459 nodeconfig-SPEC := nodeconfig.spec
461 IN_MYPLC += nodeconfig
466 bootmanager-MODULES := bootmanager
467 bootmanager-SPEC := bootmanager.spec
469 IN_MYPLC += bootmanager
472 # pypcilib : used in bootcd
474 pypcilib-MODULES := pypcilib
475 pypcilib-SPEC := pypcilib.spec
477 IN_BOOTCD += pypcilib
482 pyplnet-MODULES := pyplnet
483 pyplnet-SPEC := pyplnet.spec
485 IN_NODEIMAGE += pyplnet
490 # OML measurement library
493 oml-STOCK-DEVEL-RPMS += sqlite-devel
494 oml-SPEC := liboml.spec
500 bootcd-MODULES := bootcd build
501 bootcd-SPEC := bootcd.spec
502 bootcd-DEPEND-PACKAGES := $(IN_BOOTCD)
503 bootcd-DEPEND-FILES := RPMS/yumgroups.xml
504 bootcd-RPMDATE := yes
511 sliceimage-MODULES := sliceimage build
512 sliceimage-SPEC := sliceimage.spec
513 sliceimage-DEPEND-PACKAGES := $(IN_SLICEIMAGE)
514 sliceimage-DEPEND-FILES := RPMS/yumgroups.xml
515 sliceimage-RPMDATE := yes
517 IN_NODEIMAGE += sliceimage
520 # lxc-specific sliceimage initialization
522 lxc-sliceimage-MODULES := sliceimage
523 lxc-sliceimage-SPEC := lxc-sliceimage.spec
524 lxc-sliceimage-RPMDATE := yes
525 ALL += lxc-sliceimage
526 IN_NODEIMAGE += lxc-sliceimage
531 nodeimage-MODULES := nodeimage build
532 nodeimage-SPEC := nodeimage.spec
533 nodeimage-DEPEND-PACKAGES := $(IN_NODEIMAGE)
534 nodeimage-DEPEND-FILES := RPMS/yumgroups.xml
535 nodeimage-RPMDATE := yes
537 IN_MYPLC += nodeimage
542 # all rpms resulting from packages marked as being in nodeimage and sliceimage
543 NODEREPO_RPMS = $(foreach package,$(IN_NODEIMAGE) $(IN_NODEREPO) $(IN_SLICEIMAGE),$($(package).rpms))
544 # replace space with +++ (specvars cannot deal with spaces)
546 NODEREPO_RPMS_3PLUS = $(subst $(SPACE),+++,$(NODEREPO_RPMS))
548 noderepo-MODULES := nodeimage
549 noderepo-SPEC := noderepo.spec
550 # package requires all embedded packages
551 noderepo-DEPEND-PACKAGES := $(IN_NODEIMAGE) $(IN_NODEREPO) $(IN_SLICEIMAGE)
552 noderepo-DEPEND-FILES := RPMS/yumgroups.xml
553 #export rpm list to the specfile
554 noderepo-SPECVARS = node_rpms_plus=$(NODEREPO_RPMS_3PLUS)
555 noderepo-RPMDATE := yes
562 # all rpms resulting from packages marked as being in vserver
563 SLICEREPO_RPMS = $(foreach package,$(IN_SLICEIMAGE),$($(package).rpms))
564 # replace space with +++ (specvars cannot deal with spaces)
566 SLICEREPO_RPMS_3PLUS = $(subst $(SPACE),+++,$(SLICEREPO_RPMS))
568 slicerepo-MODULES := nodeimage
569 slicerepo-SPEC := slicerepo.spec
570 # package requires all embedded packages
571 slicerepo-DEPEND-PACKAGES := $(IN_SLICEIMAGE)
572 slicerepo-DEPEND-FILES := RPMS/yumgroups.xml
573 #export rpm list to the specfile
574 slicerepo-SPECVARS = slice_rpms_plus=$(SLICEREPO_RPMS_3PLUS)
575 slicerepo-RPMDATE := yes
579 # MyPLC : lightweight packaging, dependencies are yum-installed in a vserver
581 myplc-MODULES := myplc
582 myplc-SPEC := myplc.spec
583 myplc-DEPEND-FILES := myplc-release RPMS/yumgroups.xml
586 # myplc-docs only contains docs for PLCAPI and NMAPI, but
587 # we still need to pull MyPLC, as it is where the specfile lies,
588 # together with the utility script docbook2drupal.sh
589 myplc-docs-MODULES := myplc plcapi nodemanager monitor
590 myplc-docs-SPEC := myplc-docs.spec
593 # using some other name than myplc-release, as this is a make target already
594 release-MODULES := myplc
595 release-SPEC := myplc-release.spec
596 release-RPMDATE := yes
599 ##############################
601 # sfa - Slice Facility Architecture