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 10.8 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

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

24
BIN_STUFF	= power snmpit snmpit_new 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 frisbeehelper \
39
		  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 \
Leigh B Stoller's avatar
Leigh B Stoller committed
46 47
		  checknodes_daemon snmpit.proxyv3

48 49 50
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
51

52
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
53
		  savelogs.proxy eventsys.proxy
54

55 56
CTRLBIN_STUFF	= fetchtar.proxy

57
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
58

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

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

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

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

94

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

104 105 106 107
ifeq ($(SYSTEM),FreeBSD)
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
108

109 110 111 112 113 114 115 116 117 118 119 120
#
# 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
121 122
#COMPILED_TARGETS    = $(filter %.pm, $(TARGETS))
COMPILED_TARGETS    = 
123

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

include $(TESTBED_SRCDIR)/GNUmakerules

132
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
133

134
wanlinksolve: wanlinksolve.cc
135
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
136 137

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

140
.PHONY:	checkpass ns2ir nsverify plab ipassign checkup template_cvsroot
141 142
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
143

144 145
ns2ir:
	@$(MAKE) -C ns2ir all
146

Timothy Stack's avatar
 
Timothy Stack committed
147 148 149
nsverify:
	@$(MAKE) -C nsverify all

150 151 152
nseparse:
	@$(MAKE) -C nseparse all

153 154 155
plab:
	@$(MAKE) -C plab all

156 157 158
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
159 160 161
checkup:
	@$(MAKE) -C checkup all

162 163 164
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

165 166 167 168 169
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
170

171 172
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
173

174 175 176 177 178 179 180 181 182 183 184
#
# 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
185 186 187 188 189
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
190
	@$(MAKE) -C ns2ir install
191
	@$(MAKE) -C template_cvsroot install
Mike Hibler's avatar
Mike Hibler committed
192
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
193
	@$(MAKE) -C nsverify install
Mike Hibler's avatar
Mike Hibler committed
194
endif
195
	@$(MAKE) -C nseparse install
196
	$(PLAB_INSTALL)
197
ifeq ($(IPASSIGN),Yes)
198
	@$(MAKE) -C ipassign install
199
endif
Timothy Stack's avatar
 
Timothy Stack committed
200
	@$(MAKE) -C checkup install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
201

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

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

271 272 273
#
# Control node installation (okay, plastic)
#
274 275
control-install:	$(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \
			$(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \
276
			$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)
277
	@$(MAKE) -C ns2ir control-install
Mike Hibler's avatar
Mike Hibler committed
278
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
279
	@$(MAKE) -C nsverify control-install
Mike Hibler's avatar
Mike Hibler committed
280
endif
281
	@$(MAKE) -C nseparse control-install
282

283 284 285 286 287 288
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

289 290 291 292 293
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

294 295 296 297
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
298

299
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
300
	rm -f *.o core routecalc wanlinksolve
301 302 303 304

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
 
Timothy Stack committed
305
	@$(MAKE) -C nsverify clean
306
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
307
	@$(MAKE) -C plab clean
308
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
 
Timothy Stack committed
309
	@$(MAKE) -C checkup clean
310 311 312 313 314 315

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
 
Timothy Stack committed
316
	@$(MAKE) -C nsverify distclean
317
	@$(MAKE) -C nseparse distclean
318
	@$(MAKE) -C plab distclean
319
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
 
Timothy Stack committed
320
	@$(MAKE) -C checkup distclean
321 322 323 324 325 326
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

327 328 329 330 331 332 333 334 335 336 337 338
# 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,,$@),' > $@

339 340 341 342
$(INSTALL_DIR)/opsdir/lib/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/lib
	$(INSTALL) $< $@
343

344 345 346 347 348
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

349 350 351 352
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@
353 354 355 356 357

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