GNUmakefile.in 12.4 KB
Newer Older
1
#
2
# Copyright (c) 2000-2016 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

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

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

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

72
73
74
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
75
76
77
ifeq ($(PORTAL_ISPRIMARY),1)
SBIN_STUFF     += portal_daemon
endif
78

79
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
80
		  savelogs.proxy eventsys.proxy
81

82
83
CTRLBIN_STUFF	= fetchtar.proxy

84
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy nfsmfs_setup.proxy
85

86
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup webexports_setup \
87
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
88
89
                  webrmuser webmodgroups webidleswap webnode_attributes

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

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

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

120

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

132
133
134
135
ifeq ($(SYSTEM),FreeBSD)
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
136

137
138
139
140
141
142
143
144
145
146
147
148
#
# 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
149
150
#COMPILED_TARGETS    = $(filter %.pm, $(TARGETS))
COMPILED_TARGETS    = 
151

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

158
159
160
161
subboss: $(SUBBOSS_SBIN_SCRIPTS)

$(SUBBOSS_SBIN_SCRIPTS):

162
163
include $(TESTBED_SRCDIR)/GNUmakerules

164
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
   
Chad Barb committed
165

166
wanlinksolve: wanlinksolve.cc
167
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
168
169

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

172
173
.PHONY:	${SUBDIRS}

174
175
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
176

177
178
ns2ir:
	@$(MAKE) -C ns2ir all
179

180
181
snmpit:
	@$(MAKE) -C snmpit all
182

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

186
187
188
nseparse:
	@$(MAKE) -C nseparse all

189
190
191
plab:
	@$(MAKE) -C plab all

192
193
194
ipassign:
	@$(MAKE) -C ipassign all

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

198
199
200
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

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

207
208
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
209

210
211
212
213
subboss-install: $(addprefix $(INSTALL_SBINDIR)/, $(SUBBOSS_SBIN_SCRIPTS))
	ln -sf $(INSTALL_SBINDIR)/reportboot \
		$(DESTDIR)$(CLIENT_BINDIR)/reportboot

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

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

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

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

325
326
327
328
329
330
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

331
332
333
334
335
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

336
337
338
339
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
340

341
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
342
	rm -f *.o core routecalc wanlinksolve
343
344
345
346

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
   
Timothy Stack committed
347
	@$(MAKE) -C nsverify clean
348
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
349
	@$(MAKE) -C plab clean
350
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
   
Timothy Stack committed
351
	@$(MAKE) -C checkup clean
352
	@$(MAKE) -C snmpit clean
353
354
355
356
357
358

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
   
Timothy Stack committed
359
	@$(MAKE) -C nsverify distclean
360
	@$(MAKE) -C nseparse distclean
361
	@$(MAKE) -C plab distclean
362
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
   
Timothy Stack committed
363
	@$(MAKE) -C checkup distclean
364
	@$(MAKE) -C snmpit distclean
365

366
367
368
369
370
371
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

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

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

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

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

399
400
401
402
403
404
405
406
407
$(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/$<

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