# # # use strict; use libinstall; use installvars; sub Install($$$) { my ($server, $isupdate, $impotent) = @_; # Replace if this script does an update for ip/domain. return 0 if ($isupdate); my @TESTBED_DIRS = ([$PREFIX, "0775"],["$PREFIX/etc", "0755"]); if ($server eq $OPS_SERVERNAME || $server eq $FS_SERVERNAME) { push(@TESTBED_DIRS, ([$USERROOT, "0755"], [$PROJROOT, "0755"], [$GROUPROOT, "0755"])); if ($SHAREDIR) { push(@TESTBED_DIRS, [$SHAREROOT, "0755"]); } if ($SCRATCHDIR) { push(@TESTBED_DIRS, [$SCRATCHROOT, "0755"]); } } Phase "etcdir", "Creating $PREFIX/etc", sub { DoneIfExists("$PREFIX/etc"); mkdir "$PREFIX/etc",0755 or PhaseFail("Unable to create $PREFIX/etc: $!"); }; Phase "dirs", "Setting directory permissions", sub { foreach my $dirref (@TESTBED_DIRS) { my ($dir, $newmode) = @$dirref; Phase $dir, $dir, sub { if (!-d $dir) { PhaseFail("Directory $dir does not exist"); } # Use the real path, to avoid symlink problems my $realdir = `realpath $dir`; chomp $realdir; my ($mode,$group) = (stat($realdir))[2,5]; # Fix up the mode (strip file type) $mode = $mode & 0777; if ($mode == eval $newmode && $group eq getgrnam("tbadmin")) { PhaseSkip("Already done"); } ExecQuietFatal("$CHGRP tbadmin $realdir"); ExecQuietFatal("$CHMOD $newmode $realdir"); }; } }; return 0; } # Local Variables: # mode:perl # End: