1 1.19 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#
# This is the first install update script.
#
# Note that all actions *MUST* be idempotent; if this script is run
# again, it should always do the right thing, not break if something
# was already done. See boss-install for lots of example of how to use
# libinstall to help with this.
#
use strict;
use libinstall;

my $TESTBED_STARTUP = "/usr/local/etc/rc.d/3.testbed.sh";

sub InstallUpdate($$)
{
    my ($version, $phase) = @_;

    #
    # If something should run in the pre-install phase.
    #
    if ($phase eq "pre") {
	Phase "startupfile", "Updating testbed startup file", sub {
	    DoneIfIdentical("$TOP_OBJDIR/rc.d/3.testbed.sh", $TESTBED_STARTUP);
24
	    main::MarkForReboot($version);
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
	    DiffFiles("$TOP_OBJDIR/rc.d/3.testbed.sh", $TESTBED_STARTUP);
	    ExecQuietFatal("$GMAKE -C $TOP_OBJDIR/rc.d install");
	};
    }
    
    #
    # If something should run in the post-install phase.
    #
    if ($phase eq "post") {
	#
	# The structure of /usr/testbed/expinfo has changed. 
	#
	Phase "expinfo", "Updating testbed expinfo directory", sub {
	    PhaseSkip("Already updated")
		if (-d "$TBROOT/expinfo/emulab-ops");

	    ExecQuietFatal("$TBROOT/sbin/fixexpinfo");
	};
    }
    
    return 0;
}
1;