# # EMULAB-COPYRIGHT # Copyright (c) 2000-2011 University of Utah and the Flux Group. # All rights reserved. # SRCDIR = @srcdir@ TESTBED_SRCDIR = @top_srcdir@ OBJDIR = .. SUBDIR = tbsetup UNIFIED = @UNIFIED_BOSS_AND_OPS@ PLABSUPPORT = @PLABSUPPORT@ ISMAINSITE = @TBMAINSITE@ NSVERIFY = @NSVERIFY@ SYSTEM := $(shell uname -s) include $(OBJDIR)/Makeconf SUBDIRS = checkpass ns2ir nseparse checkup template_cvsroot snmpit_test ifeq ($(NSVERIFY),1) SUBDIRS += nsverify endif BIN_STUFF = power snmpit snmpit_new tbend tbprerun tbreport \ os_load endexp batchexp swapexp \ node_reboot nscheck node_update savelogs node_control \ portstats checkports eventsys_control os_select tbrestart \ tbswap nseswap tarfiles_setup node_history tbrsync \ archive_control template_create \ template_swapin template_swapout template_graph \ template_exprun template_delete template_metadata \ template_export template_control template_commit \ template_analyze template_linkgraph template_instantiate \ template_revise template_checkout vtopgen mapper regression SBIN_STUFF = resetvlans console_setup.proxy sched_reload named_setup \ batch_daemon exports_setup reload_daemon sched_reserve \ console_reset db2ns bwconfig frisbeehelper \ rmgroup mkgroup setgroups mkproj modgroups \ exports_setup.proxy vnode_setup eventsys_start \ sfskey_update sfskey_update.proxy rmuser idleswap idlepower \ newnode_reboot savelogs.proxy eventsys.proxy \ elabinelab snmpit.proxy panic node_attributes \ nfstrace plabinelab smbpasswd_setup smbpasswd_setup.proxy \ rmproj snmpit.proxynew snmpit.proxyv2 pool_daemon \ checknodes_daemon snmpit.proxyv3 ifeq ($(ISMAINSITE),1) SBIN_STUFF += repos_daemon endif CTRLSBIN_STUFF = console_setup.proxy sfskey_update.proxy \ savelogs.proxy eventsys.proxy CTRLBIN_STUFF = fetchtar.proxy FSBIN_STUFF = exports_setup.proxy smbpasswd_setup.proxy WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \ webmkgroup websetgroups webmkproj \ webrmuser webmodgroups webidleswap webnode_attributes WEB_BIN_SCRIPTS = webnscheck webendexp webtbreport webbatchexp \ webnode_history webswapexp webeventsys_control \ webnode_reboot webtarfiles_setup webarchive_control \ webnode_control webnode_update webtemplate_create \ webtemplate_swapin webtemplate_swapout webtemplate_exprun \ webtemplate_graph webtemplate_metadata webtemplate_export \ webtemplate_control webtemplate_commit webtemplate_analyze \ webtemplate_linkgraph webtemplate_instantiate \ webtemplate_delete webtemplate_revise LIBEXEC_STUFF = wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \ assign_wrapper assign_wrapper2 os_setup_new \ assign_prepass ptopgen \ spewlogfile staticroutes routecalc wanassign \ switchmac \ spewrpmtar webfrisbeekiller gentopofile \ $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS) LIB_STUFF = libtbsetup.pm exitonwarn.pm libtestbed.pm snmpit_intel.pm \ snmpit_cisco.pm snmpit_lib.pm snmpit_apc.pm power_rpc27.pm \ snmpit_cisco_stack.pm snmpit_intel_stack.pm power_sgmote.pm \ snmpit_foundry.pm snmpit_stack.pm snmpit_remote.pm \ snmpit_nortel.pm snmpit_hp.pm snmpit_apcon.pm\ libaudit.pm libreboot.pm libosload.pm libtestbed.py \ libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \ power_mail.pm power_whol.pm Template.pm power_rmcp.pm \ power_ilo.pm libvtop.pm libptop.pm libossetup.pm \ power_ipmi.pm libosload_new.pm libosload_switch.pm \ libossetup_switch.pm power_icebox.pm \ libvtop_stable.pm libvtop_test.pm # These scripts installed setuid, with sudo. SETUID_BIN_SCRIPTS = node_reboot eventsys_control tarfiles_setup savelogs \ tbrsync SETUID_SBIN_SCRIPTS = mkproj rmgroup mkgroup frisbeehelper \ rmuser idleswap named_setup exports_setup \ sfskey_update setgroups newnode_reboot vnode_setup \ elabinelab nfstrace rmproj SETUID_LIBX_SCRIPTS = console_setup spewlogfile ifeq ($(SYSTEM),FreeBSD) SUBDIRS += ipassign IPASSIGN = Yes endif # # 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 #COMPILED_TARGETS = $(filter %.pm, $(TARGETS)) COMPILED_TARGETS = # # Force dependencies on the scripts so that they will be rerun through # configure if the .in file is changed. # all: $(TARGETS) $(addprefix compiled/, $(COMPILED_TARGETS)) include $(TESTBED_SRCDIR)/GNUmakerules CXXFLAGS += -Wall -O2 -g wanlinksolve: wanlinksolve.cc ${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS} routecalc: routecalc.cc ${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS} .PHONY: ${SUBDIRS} checkpass: @$(MAKE) -C checkpass all ns2ir: @$(MAKE) -C ns2ir all snmpit_test: @$(MAKE) -C snmpit_test all nsverify: @$(MAKE) -C nsverify all nseparse: @$(MAKE) -C nseparse all plab: @$(MAKE) -C plab all ipassign: @$(MAKE) -C ipassign all checkup: @$(MAKE) -C checkup all template_cvsroot: @$(MAKE) -C template_cvsroot all ifeq ($(STANDALONE_CLEARINGHOUSE),0) install: boss-install else install: clrhouse-install endif boss-install: all script-install subdir-install @echo "Don't forget to do a post-install as root" # # 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 # # Automate this part at some point. # subdir-install: @$(MAKE) -C checkpass install @$(MAKE) -C ns2ir install @$(MAKE) -C template_cvsroot install ifeq ($(NSVERIFY),1) @$(MAKE) -C nsverify install endif @$(MAKE) -C nseparse install $(PLAB_INSTALL) ifeq ($(IPASSIGN),Yes) @$(MAKE) -C ipassign install endif @$(MAKE) -C checkup install @$(MAKE) -C snmpit_test install script-install: $(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \ $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \ $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \ $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \ $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \ $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \ $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \ $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\ $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF)) post-install: @$(MAKE) -C ns2ir post-install ifeq ($(NSVERIFY),1) @$(MAKE) -C nsverify post-install endif @$(MAKE) -C nseparse post-install $(PLAB_POST_INSTALL) ifeq ($(IPASSIGN),Yes) @$(MAKE) -C ipassign post-install endif chmod 775 $(INSTALL_BINDIR) chmod 775 $(INSTALL_SBINDIR) chmod 775 $(INSTALL_LIBDIR) chmod 775 $(INSTALL_LIBEXECDIR) chown root $(INSTALL_SBINDIR)/mkproj chmod u+s $(INSTALL_SBINDIR)/mkproj chown root $(INSTALL_SBINDIR)/rmproj chmod u+s $(INSTALL_SBINDIR)/rmproj chown root $(INSTALL_SBINDIR)/rmgroup chmod u+s $(INSTALL_SBINDIR)/rmgroup chown root $(INSTALL_SBINDIR)/mkgroup chmod u+s $(INSTALL_SBINDIR)/mkgroup chown root $(INSTALL_SBINDIR)/frisbeehelper chmod u+s $(INSTALL_SBINDIR)/frisbeehelper chown root $(INSTALL_SBINDIR)/rmuser chmod u+s $(INSTALL_SBINDIR)/rmuser chown root $(INSTALL_SBINDIR)/idleswap chmod u+s $(INSTALL_SBINDIR)/idleswap chown root $(INSTALL_SBINDIR)/named_setup chmod u+s $(INSTALL_SBINDIR)/named_setup chown root $(INSTALL_SBINDIR)/exports_setup chmod u+s $(INSTALL_SBINDIR)/exports_setup chown root $(INSTALL_SBINDIR)/sfskey_update chmod u+s $(INSTALL_SBINDIR)/sfskey_update chown root $(INSTALL_SBINDIR)/setgroups chmod u+s $(INSTALL_SBINDIR)/setgroups chown root $(INSTALL_LIBEXECDIR)/console_setup chmod u+s $(INSTALL_LIBEXECDIR)/console_setup chown root $(INSTALL_LIBEXECDIR)/spewlogfile chmod u+s $(INSTALL_LIBEXECDIR)/spewlogfile chown root $(INSTALL_BINDIR)/node_reboot chmod u+s $(INSTALL_BINDIR)/node_reboot chown root $(INSTALL_SBINDIR)/newnode_reboot chmod u+s $(INSTALL_SBINDIR)/newnode_reboot chown root $(INSTALL_SBINDIR)/vnode_setup chmod u+s $(INSTALL_SBINDIR)/vnode_setup chown root $(INSTALL_BINDIR)/eventsys_control chmod u+s $(INSTALL_BINDIR)/eventsys_control chown root $(INSTALL_BINDIR)/tarfiles_setup chmod u+s $(INSTALL_BINDIR)/tarfiles_setup chown root $(INSTALL_BINDIR)/savelogs chmod u+s $(INSTALL_BINDIR)/savelogs chown root $(INSTALL_SBINDIR)/elabinelab chmod u+s $(INSTALL_SBINDIR)/elabinelab chown root $(INSTALL_BINDIR)/tbrsync chmod u+s $(INSTALL_BINDIR)/tbrsync chown root $(INSTALL_SBINDIR)/nfstrace chmod u+s $(INSTALL_SBINDIR)/nfstrace # # Control node installation (okay, plastic) # control-install: $(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \ $(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \ $(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm) @$(MAKE) -C ns2ir control-install ifeq ($(NSVERIFY),1) @$(MAKE) -C nsverify control-install endif @$(MAKE) -C nseparse control-install # # FS install # fs-install: $(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \ $(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm) # # Tip servers get very little # tipserv-install: $(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy) # Clearinghouse install. clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \ $(INSTALL_LIBDIR)/libtestbed.pm \ $(INSTALL_LIBDIR)/libtblog_simple.pm clean: subdir-clean rm -f *.o core routecalc wanlinksolve subdir-clean: @$(MAKE) -C checkpass clean @$(MAKE) -C ns2ir clean @$(MAKE) -C nsverify clean @$(MAKE) -C nseparse clean @$(MAKE) -C plab clean @$(MAKE) -C ipassign clean @$(MAKE) -C checkup clean @$(MAKE) -C snmpit_test clean distclean: subdir-distclean subdir-distclean: @$(MAKE) -C checkpass distclean @$(MAKE) -C ns2ir distclean @$(MAKE) -C nsverify distclean @$(MAKE) -C nseparse distclean @$(MAKE) -C plab distclean @$(MAKE) -C ipassign distclean @$(MAKE) -C checkup distclean @$(MAKE) -C snmpit_test distclean # # XXX Create non .tcl files. # %: %.tcl cp -p $< $@ # 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,,$@),' > $@ $(INSTALL_DIR)/opsdir/lib/%: % @echo "Installing $<" -mkdir -p $(INSTALL_DIR)/opsdir/lib $(INSTALL) $< $@ $(INSTALL_DIR)/opsdir/bin/%: % @echo "Installing $<" -mkdir -p $(INSTALL_DIR)/opsdir/bin $(INSTALL) $< $@ $(INSTALL_DIR)/opsdir/sbin/%: % @echo "Installing $<" -mkdir -p $(INSTALL_DIR)/opsdir/sbin $(INSTALL) $< $@ compiled/%: % @echo "Compiling $< to $@" -mkdir -p compiled perlcc -I $(INSTALL_LIBDIR) -B -o $@ $<