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 12.3 KB
Newer Older
1
#
2
# Copyright (c) 2000-2013 University of Utah and the Flux Group.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
22
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
23

24 25 26 27
SRCDIR		= @srcdir@
TESTBED_SRCDIR	= @top_srcdir@
OBJDIR		= ..
SUBDIR		= tbsetup
28
UNIFIED         = @UNIFIED_BOSS_AND_OPS@
29
PLABSUPPORT     = @PLABSUPPORT@
30
ISMAINSITE	= @TBMAINSITE@
Mike Hibler's avatar
Mike Hibler committed
31
NSVERIFY	= @NSVERIFY@
32
PORTAL_ISPRIMARY= @PORTAL_ISPRIMARY@
33
SYSTEM         := $(shell uname -s)
34

35
include $(OBJDIR)/Makeconf
36

37
SUBDIRS		= checkpass ns2ir nseparse checkup template_cvsroot \
38
		  snmpit_test snmpit_old snmpit_portfix
Mike Hibler's avatar
Mike Hibler committed
39 40 41
ifeq ($(NSVERIFY),1)
SUBDIRS		+= nsverify
endif
Leigh B. Stoller's avatar
Leigh B. Stoller committed
42

43
BIN_STUFF	= power snmpit tbend tbprerun tbreport \
44
		  os_load endexp batchexp swapexp \
45
		  node_reboot nscheck node_update savelogs node_control \
46
		  checkports eventsys_control os_select tbrestart \
Kirk Webb's avatar
 
Kirk Webb committed
47
		  tbswap nseswap tarfiles_setup node_history tbrsync \
48
		  pxe_select portstats \
49
		  archive_control template_create \
50
		  template_swapin template_swapout template_graph \
51
		  template_exprun template_delete template_metadata \
52
		  template_export template_control template_commit \
53
		  template_analyze template_linkgraph template_instantiate \
54
		  template_revise template_checkout vtopgen mapper regression
55

56
SBIN_STUFF	= resetvlans console_setup.proxy sched_reload named_setup \
57
		  batch_daemon exports_setup reload_daemon sched_reserve \
58
		  console_reset db2ns bwconfig frisbeehelper \
59
		  rmgroup mkgroup setgroups mkproj modgroups \
60
		  exports_setup.proxy vnode_setup eventsys_start \
61
		  sfskey_update sfskey_update.proxy rmuser idleswap idlepower \
62
		  newnode_reboot savelogs.proxy eventsys.proxy \
63
		  elabinelab snmpit.proxy panic node_attributes \
64
		  nfstrace plabinelab smbpasswd_setup smbpasswd_setup.proxy \
65
		  rmproj snmpit.proxynew snmpit.proxyv2 pool_daemon \
66 67
		  checknodes_daemon snmpit.proxyv3 image_setup tcpp \
		  arplockdown
Leigh B Stoller's avatar
Leigh B Stoller committed
68

69 70 71
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
72 73 74
ifeq ($(PORTAL_ISPRIMARY),1)
SBIN_STUFF     += portal_daemon
endif
75

76
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
77
		  savelogs.proxy eventsys.proxy
78

79 80
CTRLBIN_STUFF	= fetchtar.proxy

81
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
82

83 84
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
85 86
                  webrmuser webmodgroups webidleswap webnode_attributes

87 88 89
WEB_BIN_SCRIPTS = webnscheck webendexp webtbreport webbatchexp \
		  webnode_history webswapexp webeventsys_control \
		  webnode_reboot webtarfiles_setup webarchive_control \
90
		  webnode_control webnode_update webtemplate_create \
91
		  webtemplate_swapin webtemplate_swapout webtemplate_exprun \
92
		  webtemplate_graph webtemplate_metadata webtemplate_export \
93
		  webtemplate_control webtemplate_commit webtemplate_analyze \
94
		  webtemplate_linkgraph webtemplate_instantiate \
95
		  webtemplate_delete webtemplate_revise
96

97
LIBEXEC_STUFF	= wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \
98
		  assign_wrapper assign_wrapper2 os_setup_old \
99
		  assign_prepass ptopgen ptopgen_new \
100
		  spewlogfile staticroutes routecalc wanassign \
101 102
		  switchmac spewrpmtar spewrpmtar_verify spewrpmtar_cgi \
		  webfrisbeekiller gentopofile \
103 104
                  $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS)

105
LIB_STUFF       = libtbsetup.pm exitonwarn.pm libtestbed.pm \
106
                  power_rpc27.pm power_apc.pm \
107
		  power_sgmote.pm \
Timothy Stack's avatar
 
Timothy Stack committed
108
		  libaudit.pm libreboot.pm libosload.pm libtestbed.py \
Kevin Atkinson's avatar
 
Kevin Atkinson committed
109
		  libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \
David Johnson's avatar
David Johnson committed
110
		  power_mail.pm power_whol.pm Template.pm power_rmcp.pm \
111 112
		  power_ilo.pm libvtop.pm libptop.pm libptop_new.pm \
		  libossetup.pm \
113
		  power_ipmi.pm libosload_new.pm libosload_switch.pm \
114 115 116
		  libossetup_switch.pm power_icebox.pm \
		  libvtop_stable.pm libvtop_test.pm

117

118 119 120
# These scripts installed setuid, with sudo. 
SETUID_BIN_SCRIPTS   = node_reboot eventsys_control tarfiles_setup savelogs \
			tbrsync
121
SETUID_SBIN_SCRIPTS  = mkproj rmgroup mkgroup frisbeehelper \
122 123
			rmuser idleswap named_setup exports_setup \
			sfskey_update setgroups newnode_reboot vnode_setup \
124
			elabinelab nfstrace rmproj arplockdown
125
SETUID_LIBX_SCRIPTS  = console_setup spewrpmtar_verify
126
SETUID_SUEXEC_SCRIPTS= spewlogfile
127

128 129 130 131
ifeq ($(SYSTEM),FreeBSD)
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
132

133 134 135 136 137 138 139 140 141 142 143 144
#
# 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
145 146
#COMPILED_TARGETS    = $(filter %.pm, $(TARGETS))
COMPILED_TARGETS    = 
147

148
#
149 150 151
# Force dependencies on the scripts so that they will be rerun through
# configure if the .in file is changed.
# 
152
all:	$(TARGETS) $(addprefix compiled/, $(COMPILED_TARGETS))
153 154 155

include $(TESTBED_SRCDIR)/GNUmakerules

156
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
157

158
wanlinksolve: wanlinksolve.cc
159
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
160 161

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

164 165
.PHONY:	${SUBDIRS}

166 167
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
168

169 170
ns2ir:
	@$(MAKE) -C ns2ir all
171

172 173 174
snmpit_test:
	@$(MAKE) -C snmpit_test all

175 176 177
snmpit_old:
	@$(MAKE) -C snmpit_old all

178
snmpit_portfix:
Kirk Webb's avatar
Kirk Webb committed
179
	@$(MAKE) -C snmpit_portfix all
180

Timothy Stack's avatar
 
Timothy Stack committed
181 182 183
nsverify:
	@$(MAKE) -C nsverify all

184 185 186
nseparse:
	@$(MAKE) -C nseparse all

187 188 189
plab:
	@$(MAKE) -C plab all

190 191 192
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
193 194 195
checkup:
	@$(MAKE) -C checkup all

196 197 198
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

199 200 201 202 203
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
204

205 206
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
207

208 209 210 211 212 213 214 215 216 217 218
#
# 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
219 220 221 222 223
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
224
	@$(MAKE) -C ns2ir install
225
	@$(MAKE) -C template_cvsroot install
Mike Hibler's avatar
Mike Hibler committed
226
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
227
	@$(MAKE) -C nsverify install
Mike Hibler's avatar
Mike Hibler committed
228
endif
229
	@$(MAKE) -C nseparse install
230
	$(PLAB_INSTALL)
231
ifeq ($(IPASSIGN),Yes)
232
	@$(MAKE) -C ipassign install
233
endif
Timothy Stack's avatar
 
Timothy Stack committed
234
	@$(MAKE) -C checkup install
235
	@$(MAKE) -C snmpit_test install
236
	@$(MAKE) -C snmpit_old install
237
	@$(MAKE) -C snmpit_portfix install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
238

239 240 241
script-install:	$(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \
	 $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \
	 $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \
242
	 $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \
243
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \
David Johnson's avatar
David Johnson committed
244
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \
245
	 $(addprefix $(INSTALL_DIR)/opsdir/cgi-bin/, spewrpmtar_cgi) \
246 247
	 $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\
248
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF))
249 250

post-install: 
251
	@$(MAKE) -C ns2ir post-install
Mike Hibler's avatar
Mike Hibler committed
252
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
253
	@$(MAKE) -C nsverify post-install
Mike Hibler's avatar
Mike Hibler committed
254
endif
255
	@$(MAKE) -C nseparse post-install
256
	$(PLAB_POST_INSTALL)
257
ifeq ($(IPASSIGN),Yes)
258
	@$(MAKE) -C ipassign post-install
259
endif
260 261 262 263
	chmod 775 $(INSTALL_BINDIR)
	chmod 775 $(INSTALL_SBINDIR)
	chmod 775 $(INSTALL_LIBDIR)
	chmod 775 $(INSTALL_LIBEXECDIR)
264 265
	chown root $(INSTALL_SBINDIR)/mkproj
	chmod u+s $(INSTALL_SBINDIR)/mkproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
266 267
	chown root $(INSTALL_SBINDIR)/rmproj
	chmod u+s $(INSTALL_SBINDIR)/rmproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
268 269
	chown root $(INSTALL_SBINDIR)/rmgroup
	chmod u+s $(INSTALL_SBINDIR)/rmgroup
270 271
	chown root $(INSTALL_SBINDIR)/mkgroup
	chmod u+s $(INSTALL_SBINDIR)/mkgroup
272 273
	chown root $(INSTALL_SBINDIR)/frisbeehelper
	chmod u+s $(INSTALL_SBINDIR)/frisbeehelper
274 275
	chown root $(INSTALL_SBINDIR)/rmuser
	chmod u+s $(INSTALL_SBINDIR)/rmuser
276 277
	chown root $(INSTALL_SBINDIR)/idleswap
	chmod u+s $(INSTALL_SBINDIR)/idleswap
278 279
	chown root $(INSTALL_SBINDIR)/named_setup
	chmod u+s $(INSTALL_SBINDIR)/named_setup
280 281
	chown root $(INSTALL_SBINDIR)/exports_setup
	chmod u+s $(INSTALL_SBINDIR)/exports_setup
282 283
	chown root $(INSTALL_SBINDIR)/sfskey_update
	chmod u+s $(INSTALL_SBINDIR)/sfskey_update
284 285
	chown root $(INSTALL_SBINDIR)/setgroups
	chmod u+s $(INSTALL_SBINDIR)/setgroups
286 287
	chown root $(INSTALL_LIBEXECDIR)/console_setup
	chmod u+s $(INSTALL_LIBEXECDIR)/console_setup
288 289
	chown root $(INSTALL_LIBEXECDIR)/spewlogfile
	chmod u+s $(INSTALL_LIBEXECDIR)/spewlogfile
290 291
	chown root $(INSTALL_BINDIR)/node_reboot
	chmod u+s $(INSTALL_BINDIR)/node_reboot
292 293
	chown root $(INSTALL_SBINDIR)/newnode_reboot
	chmod u+s $(INSTALL_SBINDIR)/newnode_reboot
294 295
	chown root $(INSTALL_SBINDIR)/vnode_setup
	chmod u+s $(INSTALL_SBINDIR)/vnode_setup
296 297
	chown root $(INSTALL_BINDIR)/eventsys_control
	chmod u+s $(INSTALL_BINDIR)/eventsys_control
298 299
	chown root $(INSTALL_BINDIR)/tarfiles_setup
	chmod u+s $(INSTALL_BINDIR)/tarfiles_setup
300 301
	chown root $(INSTALL_BINDIR)/savelogs
	chmod u+s $(INSTALL_BINDIR)/savelogs
302 303
	chown root $(INSTALL_SBINDIR)/elabinelab
	chmod u+s $(INSTALL_SBINDIR)/elabinelab
Kirk Webb's avatar
 
Kirk Webb committed
304 305
	chown root $(INSTALL_BINDIR)/tbrsync
	chmod u+s $(INSTALL_BINDIR)/tbrsync
306 307
	chown root $(INSTALL_SBINDIR)/nfstrace
	chmod u+s $(INSTALL_SBINDIR)/nfstrace
308

309 310 311
#
# Control node installation (okay, plastic)
#
312 313
control-install:	$(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \
			$(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \
314
			$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)
315
	@$(MAKE) -C ns2ir control-install
Mike Hibler's avatar
Mike Hibler committed
316
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
317
	@$(MAKE) -C nsverify control-install
Mike Hibler's avatar
Mike Hibler committed
318
endif
319
	@$(MAKE) -C nseparse control-install
320

321 322 323 324 325 326
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

327 328 329 330 331
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

332 333 334 335
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
336

337
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
338
	rm -f *.o core routecalc wanlinksolve
339 340 341 342

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
 
Timothy Stack committed
343
	@$(MAKE) -C nsverify clean
344
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
345
	@$(MAKE) -C plab clean
346
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
 
Timothy Stack committed
347
	@$(MAKE) -C checkup clean
348
	@$(MAKE) -C snmpit_test clean
349
	@$(MAKE) -C snmpit_old clean
350
	@$(MAKE) -C snmpit_portfix clean
351 352 353 354 355 356

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
 
Timothy Stack committed
357
	@$(MAKE) -C nsverify distclean
358
	@$(MAKE) -C nseparse distclean
359
	@$(MAKE) -C plab distclean
360
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
 
Timothy Stack committed
361
	@$(MAKE) -C checkup distclean
362
	@$(MAKE) -C snmpit_test distclean
363
	@$(MAKE) -C snmpit_old distclean
364
	@$(MAKE) -C snmpit_portfix distclean
365 366 367 368 369 370
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

371 372 373 374 375 376 377 378 379 380 381 382
# 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,,$@),' > $@

383 384 385 386
$(INSTALL_DIR)/opsdir/lib/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/lib
	$(INSTALL) $< $@
387

388 389 390 391 392
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

393 394 395 396
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@
397

398 399 400 401 402 403 404 405 406
$(INSTALL_DIR)/opsdir/cgi-bin/spewrpmtar_cgi: spewrpmtar_cgi
	echo "Installing (link to wrapper) $<"
	mkdir -p $(INSTALL_DIR)/opsdir/cgi-bin
	-rm -f $@
	ln -s $(INSTALL_LIBEXECDIR)/runsuid $@
	echo "Installing (real script) $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/suidbin
	$(SUDO) $(INSTALL_PROGRAM) $< $(INSTALL_DIR)/opsdir/suidbin/$<

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