All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

GNUmakefile.in 11.4 KB
Newer Older
1
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2
# EMULAB-COPYRIGHT
Leigh B Stoller's avatar
Leigh B Stoller committed
3
# Copyright (c) 2000-2011 University of Utah and the Flux Group.
Leigh B. Stoller's avatar
Leigh B. Stoller committed
4
# All rights reserved.
5
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
6

7 8 9 10
SRCDIR		= @srcdir@
TESTBED_SRCDIR	= @top_srcdir@
OBJDIR		= ..
SUBDIR		= tbsetup
11
UNIFIED         = @UNIFIED_BOSS_AND_OPS@
12
PLABSUPPORT     = @PLABSUPPORT@
13
ISMAINSITE	= @TBMAINSITE@
Mike Hibler's avatar
Mike Hibler committed
14
NSVERIFY	= @NSVERIFY@
15
SYSTEM         := $(shell uname -s)
16

17
include $(OBJDIR)/Makeconf
18

Mike Hibler's avatar
Mike Hibler committed
19 20 21 22
SUBDIRS		= checkpass ns2ir nseparse checkup template_cvsroot
ifeq ($(NSVERIFY),1)
SUBDIRS		+= nsverify
endif
Leigh B. Stoller's avatar
Leigh B. Stoller committed
23

Chad Barb's avatar
 
Chad Barb committed
24
BIN_STUFF	= power snmpit tbend tbprerun tbreport \
25
		  os_load endexp batchexp swapexp \
26
		  node_reboot nscheck node_update savelogs node_control \
Chad Barb's avatar
 
Chad Barb committed
27
		  portstats checkports eventsys_control os_select tbrestart \
Kirk Webb's avatar
 
Kirk Webb committed
28
		  tbswap nseswap tarfiles_setup node_history tbrsync \
29
		  archive_control template_create \
30
		  template_swapin template_swapout template_graph \
31
		  template_exprun template_delete template_metadata \
32
		  template_export template_control template_commit \
33
		  template_analyze template_linkgraph template_instantiate \
34
		  template_revise template_checkout vtopgen mapper regression
35

36
SBIN_STUFF	= resetvlans console_setup.proxy sched_reload named_setup \
37
		  batch_daemon exports_setup reload_daemon sched_reserve \
38
		  console_reset db2ns bwconfig frisbeelauncher \
39
		  frisbeeimage rmgroup mkgroup setgroups mkproj modgroups \
40
		  exports_setup.proxy vnode_setup eventsys_start \
41
		  sfskey_update sfskey_update.proxy rmuser idleswap \
42
		  newnode_reboot savelogs.proxy eventsys.proxy \
43
		  elabinelab snmpit.proxy panic node_attributes \
44
		  nfstrace plabinelab smbpasswd_setup smbpasswd_setup.proxy \
45
		  rmproj snmpit.proxynew snmpit.proxyv2 pool_daemon \
46
		  checknodes_daemon subboss_frisbeelauncher_wrapper \
Leigh B Stoller's avatar
Leigh B Stoller committed
47
		  subboss_wrapper snmpit.proxyv3
48 49 50
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
51

Ryan Jackson's avatar
Ryan Jackson committed
52 53
SUBBOSS_SBIN_STUFF = subboss_frisbeelauncher subboss_frisbeeimage

54
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
55
		  savelogs.proxy eventsys.proxy
56

57 58
CTRLBIN_STUFF	= fetchtar.proxy

59
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
60

61 62
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
63 64
                  webrmuser webmodgroups webidleswap webnode_attributes

65 66 67
WEB_BIN_SCRIPTS = webnscheck webendexp webtbreport webbatchexp \
		  webnode_history webswapexp webeventsys_control \
		  webnode_reboot webtarfiles_setup webarchive_control \
68
		  webnode_control webnode_update webtemplate_create \
69
		  webtemplate_swapin webtemplate_swapout webtemplate_exprun \
70
		  webtemplate_graph webtemplate_metadata webtemplate_export \
71
		  webtemplate_control webtemplate_commit webtemplate_analyze \
72
		  webtemplate_linkgraph webtemplate_instantiate \
73
		  webtemplate_delete webtemplate_revise
74

75
LIBEXEC_STUFF	= wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \
76
		  assign_wrapper assign_wrapper2 os_setup_new \
77 78 79 80 81 82
		  assign_prepass ptopgen \
		  spewlogfile staticroutes routecalc wanassign \
		  switchmac \
		  spewrpmtar webfrisbeekiller gentopofile \
                  $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS)

83
LIB_STUFF       = libtbsetup.pm exitonwarn.pm libtestbed.pm snmpit_intel.pm \
84
                  snmpit_cisco.pm snmpit_lib.pm snmpit_apc.pm power_rpc27.pm \
85
		  snmpit_cisco_stack.pm snmpit_intel_stack.pm power_sgmote.pm \
86
		  snmpit_foundry.pm snmpit_stack.pm snmpit_remote.pm \
87
		  snmpit_nortel.pm snmpit_hp.pm snmpit_apcon.pm\
Timothy Stack's avatar
 
Timothy Stack committed
88
		  libaudit.pm libreboot.pm libosload.pm libtestbed.py \
Kevin Atkinson's avatar
 
Kevin Atkinson committed
89
		  libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \
David Johnson's avatar
David Johnson committed
90
		  power_mail.pm power_whol.pm Template.pm power_rmcp.pm \
91
		  power_ilo.pm libvtop.pm libptop.pm libossetup.pm \
92 93
		  power_ipmi.pm libosload_new.pm libosload_switch.pm \
		  libossetup_switch.pm
94

95 96 97 98 99 100
# These scripts installed setuid, with sudo. 
SETUID_BIN_SCRIPTS   = node_reboot eventsys_control tarfiles_setup savelogs \
			tbrsync
SETUID_SBIN_SCRIPTS  = mkproj rmgroup mkgroup frisbeelauncher frisbeeimage \
			rmuser idleswap named_setup exports_setup \
			sfskey_update setgroups newnode_reboot vnode_setup \
101 102
			elabinelab nfstrace rmproj subboss_frisbeelauncher_wrapper \
			subboss_wrapper
103
SETUID_LIBX_SCRIPTS  = console_setup spewlogfile
104

105 106
ifeq ($(SYSTEM),FreeBSD)
FBSDVERSION   := $(shell uname -v | sed -e 's/FreeBSD \([0-9]\).*/FreeBSD\1/')
107
ifeq ($(FBSDVERSION),FreeBSD4)
108 109 110 111
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
endif
112

113 114 115 116 117 118 119 120 121 122 123 124
#
# Targets
#
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
TARGETS	= $(BIN_STUFF) $(SBIN_STUFF) $(LIBEXEC_STUFF) $(LIB_STUFF) $(SUBDIRS)
else
SUBDIRS = 
TARGETS = libaudit.pm libtestbed.pm libtblog_simple.pm
SETUID_BIN_SCRIPTS  =
SETUID_SBIN_SCRIPTS =
SETUID_LIBX_SCRIPTS = 
endif
125 126
#COMPILED_TARGETS    = $(filter %.pm, $(TARGETS))
COMPILED_TARGETS    = 
127

128
#
129 130 131
# Force dependencies on the scripts so that they will be rerun through
# configure if the .in file is changed.
# 
132
all:	$(TARGETS) $(addprefix compiled/, $(COMPILED_TARGETS))
133 134 135

include $(TESTBED_SRCDIR)/GNUmakerules

136
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
137

138
wanlinksolve: wanlinksolve.cc
139
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
140 141

routecalc: routecalc.cc
142
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
Chad Barb's avatar
 
Chad Barb committed
143

144
.PHONY:	checkpass ns2ir nsverify plab ipassign checkup template_cvsroot
145 146
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
147

148 149
ns2ir:
	@$(MAKE) -C ns2ir all
150

Timothy Stack's avatar
 
Timothy Stack committed
151 152 153
nsverify:
	@$(MAKE) -C nsverify all

154 155 156
nseparse:
	@$(MAKE) -C nseparse all

157 158 159
plab:
	@$(MAKE) -C plab all

160 161 162
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
163 164 165
checkup:
	@$(MAKE) -C checkup all

166 167 168
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

169 170 171 172 173
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
174

175 176
boss-install: all script-install subdir-install
	@echo "Don't forget to do a post-install as root"
Leigh B. Stoller's avatar
Leigh B. Stoller committed
177

178 179 180 181 182 183 184 185 186 187 188
#
# Only install the planetlab support if enabled in the defs file
#
ifeq ($(PLABSUPPORT),1)
PLAB_INSTALL      = @$(MAKE) -C plab install
PLAB_POST_INSTALL = @$(MAKE) -C plab post-install 
else
PLAB_INSTALL      =
PLAB_POST_INSTALL =
endif

Leigh B. Stoller's avatar
Leigh B. Stoller committed
189 190 191 192 193
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
194
	@$(MAKE) -C ns2ir install
195
	@$(MAKE) -C template_cvsroot install
Mike Hibler's avatar
Mike Hibler committed
196
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
197
	@$(MAKE) -C nsverify install
Mike Hibler's avatar
Mike Hibler committed
198
endif
199
	@$(MAKE) -C nseparse install
200
	$(PLAB_INSTALL)
201
ifeq ($(IPASSIGN),Yes)
202
	@$(MAKE) -C ipassign install
203
endif
Timothy Stack's avatar
 
Timothy Stack committed
204
	@$(MAKE) -C checkup install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
205

206 207 208
script-install:	$(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \
	 $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \
	 $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \
209
	 $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \
210
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \
David Johnson's avatar
David Johnson committed
211
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \
212 213
	 $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\
214
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF))
215 216

post-install: 
217
	@$(MAKE) -C ns2ir post-install
Mike Hibler's avatar
Mike Hibler committed
218
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
219
	@$(MAKE) -C nsverify post-install
Mike Hibler's avatar
Mike Hibler committed
220
endif
221
	@$(MAKE) -C nseparse post-install
222
	$(PLAB_POST_INSTALL)
223
ifeq ($(IPASSIGN),Yes)
224
	@$(MAKE) -C ipassign post-install
225
endif
226 227 228 229
	chmod 775 $(INSTALL_BINDIR)
	chmod 775 $(INSTALL_SBINDIR)
	chmod 775 $(INSTALL_LIBDIR)
	chmod 775 $(INSTALL_LIBEXECDIR)
230 231
	chown root $(INSTALL_SBINDIR)/mkproj
	chmod u+s $(INSTALL_SBINDIR)/mkproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
232 233
	chown root $(INSTALL_SBINDIR)/rmproj
	chmod u+s $(INSTALL_SBINDIR)/rmproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
234 235
	chown root $(INSTALL_SBINDIR)/rmgroup
	chmod u+s $(INSTALL_SBINDIR)/rmgroup
236 237
	chown root $(INSTALL_SBINDIR)/mkgroup
	chmod u+s $(INSTALL_SBINDIR)/mkgroup
238 239
	chown root $(INSTALL_SBINDIR)/frisbeelauncher
	chmod u+s $(INSTALL_SBINDIR)/frisbeelauncher
240 241
	chown root $(INSTALL_SBINDIR)/subboss_frisbeelauncher_wrapper
	chmod u+s $(INSTALL_SBINDIR)/subboss_frisbeelauncher_wrapper
242 243
	chown root $(INSTALL_SBINDIR)/subboss_wrapper
	chmod u+s $(INSTALL_SBINDIR)/subboss_wrapper
244 245
	chown root $(INSTALL_SBINDIR)/frisbeeimage
	chmod u+s $(INSTALL_SBINDIR)/frisbeeimage
246 247
	chown root $(INSTALL_SBINDIR)/rmuser
	chmod u+s $(INSTALL_SBINDIR)/rmuser
248 249
	chown root $(INSTALL_SBINDIR)/idleswap
	chmod u+s $(INSTALL_SBINDIR)/idleswap
250 251
	chown root $(INSTALL_SBINDIR)/named_setup
	chmod u+s $(INSTALL_SBINDIR)/named_setup
252 253
	chown root $(INSTALL_SBINDIR)/exports_setup
	chmod u+s $(INSTALL_SBINDIR)/exports_setup
254 255
	chown root $(INSTALL_SBINDIR)/sfskey_update
	chmod u+s $(INSTALL_SBINDIR)/sfskey_update
256 257
	chown root $(INSTALL_SBINDIR)/setgroups
	chmod u+s $(INSTALL_SBINDIR)/setgroups
258 259
	chown root $(INSTALL_LIBEXECDIR)/console_setup
	chmod u+s $(INSTALL_LIBEXECDIR)/console_setup
260 261
	chown root $(INSTALL_LIBEXECDIR)/spewlogfile
	chmod u+s $(INSTALL_LIBEXECDIR)/spewlogfile
262 263
	chown root $(INSTALL_BINDIR)/node_reboot
	chmod u+s $(INSTALL_BINDIR)/node_reboot
264 265
	chown root $(INSTALL_SBINDIR)/newnode_reboot
	chmod u+s $(INSTALL_SBINDIR)/newnode_reboot
266 267
	chown root $(INSTALL_SBINDIR)/vnode_setup
	chmod u+s $(INSTALL_SBINDIR)/vnode_setup
268 269
	chown root $(INSTALL_BINDIR)/eventsys_control
	chmod u+s $(INSTALL_BINDIR)/eventsys_control
270 271
	chown root $(INSTALL_BINDIR)/tarfiles_setup
	chmod u+s $(INSTALL_BINDIR)/tarfiles_setup
272 273
	chown root $(INSTALL_BINDIR)/savelogs
	chmod u+s $(INSTALL_BINDIR)/savelogs
274 275
	chown root $(INSTALL_SBINDIR)/elabinelab
	chmod u+s $(INSTALL_SBINDIR)/elabinelab
Kirk Webb's avatar
 
Kirk Webb committed
276 277
	chown root $(INSTALL_BINDIR)/tbrsync
	chmod u+s $(INSTALL_BINDIR)/tbrsync
278 279
	chown root $(INSTALL_SBINDIR)/nfstrace
	chmod u+s $(INSTALL_SBINDIR)/nfstrace
280

Ryan Jackson's avatar
Ryan Jackson committed
281 282 283 284 285
#
# Subboss installation
#
subboss-install:	$(addprefix $(INSTALL_SBINDIR)/, $(SUBBOSS_SBIN_STUFF))

286 287 288
#
# Control node installation (okay, plastic)
#
289 290
control-install:	$(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \
			$(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \
291
			$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)
292
	@$(MAKE) -C ns2ir control-install
Mike Hibler's avatar
Mike Hibler committed
293
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
294
	@$(MAKE) -C nsverify control-install
Mike Hibler's avatar
Mike Hibler committed
295
endif
296
	@$(MAKE) -C nseparse control-install
297

298 299 300 301 302 303
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

304 305 306 307 308
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

309 310 311 312
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
313

314
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
315
	rm -f *.o core routecalc wanlinksolve
316 317 318 319

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
 
Timothy Stack committed
320
	@$(MAKE) -C nsverify clean
321
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
322
	@$(MAKE) -C plab clean
323
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
 
Timothy Stack committed
324
	@$(MAKE) -C checkup clean
325 326 327 328 329 330

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
 
Timothy Stack committed
331
	@$(MAKE) -C nsverify distclean
332
	@$(MAKE) -C nseparse distclean
333
	@$(MAKE) -C plab distclean
334
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
 
Timothy Stack committed
335
	@$(MAKE) -C checkup distclean
336 337 338 339 340 341
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

342 343 344 345 346 347 348 349 350 351 352 353
# This rule says what web* script depends on which installed binary directory.
$(WEB_SBIN_SCRIPTS): $(INSTALL_SBINDIR)
$(WEB_BIN_SCRIPTS):  $(INSTALL_BINDIR)

# Just in case the dirs are not yet created,
$(INSTALL_SBINDIR) $(INSTALL_BINDIR):

# And then how to turn the template into the actual script. 
$(WEB_SBIN_SCRIPTS) $(WEB_BIN_SCRIPTS): $(TESTBED_SRCDIR)/WEBtemplate.in
	@echo "Generating $@"
	cat $< | sed -e 's,@PROGTOINVOKE@,$(word 2,$^)/$(subst web,,$@),' > $@

354 355 356 357
$(INSTALL_DIR)/opsdir/lib/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/lib
	$(INSTALL) $< $@
358

359 360 361 362 363
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

364 365 366 367
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@
368 369 370 371 372

compiled/%: %
	@echo "Compiling $< to $@"
	-mkdir -p compiled
	perlcc -I $(INSTALL_LIBDIR) -B -o $@ $<