Browse Source

Getting space_check read for changes.

master
freesource 24 years ago
parent
commit
13c665c0e9
  1. 58
      Yard.pm

58
Yard.pm

@ -33,7 +33,7 @@ use Exporter;
@ISA = qw(Exporter); @ISA = qw(Exporter);
@EXPORT = qw(start_logging_output kernel_version_check @EXPORT = qw(start_logging_output kernel_version_check
read_contents_file extra_links library_dependencies hard_links read_contents_file extra_links library_dependencies hard_links
space_check create_filesytem); space_check create_filesystem);
use strict; use strict;
use File::Basename; use File::Basename;
@ -207,7 +207,7 @@ sub read_contents_file {
my(@globbed) = yard_glob($expr); my(@globbed) = yard_glob($expr);
if ($#globbed == -1) { if ($#globbed == -1) {
cf_warn($contents_file, $expr, cf_warn($contents_file, $expr,
"Warning: No files matched $line"); "Warning: No files matched $expr");
} elsif (!($#globbed == 0 and $globbed[0] eq $expr)) { } elsif (!($#globbed == 0 and $globbed[0] eq $expr)) {
info(1, "Expanding $expr to @globbed\n"); info(1, "Expanding $expr to @globbed\n");
} }
@ -504,54 +504,64 @@ sub space_check {
# %links_to /path/file-symnlink actual-file # %links_to /path/file-symnlink actual-file
# %hardlinked /path/file dev/inode -> stat() # %hardlinked /path/file dev/inode -> stat()
# open(CHECK,">check-size");
my ($file); my ($file);
foreach $file (keys %Included) { foreach $file (keys %Included) {
print "$file -> $Included{$file} ... $hardlinked{$file}\n";
my($replacement, $devino); my($replacement, $devino);
if ($replacement = $replaced_by{$file}) { if ($replacement = $replaced_by{$file}) {
## strip count for replace
## Check for libraries %lib_needed_by, modules %is_module,
## and everything else if strippable, and strip is chosen
##### Use the replacement file instead of this one. In the ##### Use the replacement file instead of this one. In the
##### future, improve this so that replacement is resolved WRT ##### future, improve this so that replacement is resolved WRT
##### %links_to ##### %links_to
info(1, "Counting bytes of replacement $replacement\n"); info(1, "Counting bytes of replacement $replacement\n");
$total_bytes += bytes_allocated($replacement); $total_bytes += bytes_allocated($replacement);
# print CHECK "TOTAL: $total_bytes AMT: ", bytes_allocated($replacement), "\n";
} elsif (-l $file or $links_to{$file}) { } elsif (-l $file or $links_to{$file}) { ## no strip
##### Implicit or explicit symbolic link. Only count link size. ##### Implicit or explicit symbolic link. Only count link size.
##### I don't think -l test is needed. ##### I don't think -l test is needed.
my($size) = (-l $file) ? length(readlink($file)) my($size) = (-l $file) ? length(readlink($file))
: length($links_to{$file}); : length($links_to{$file});
info(1, "$file (link) size $size\n"); info(1, "$file (link) size $size\n");
$total_bytes += $size; $total_bytes += $size;
# print "CHECK $file "TOTAL: $total_bytes AMT: ", $size, "\n";
} elsif ($devino = $hardlinked{$file}) { } elsif ($devino = $hardlinked{$file}) {
##### This file is hard-linked to another. We don't necessarily ##### This file is hard-linked to another. We don't necessarily
##### know that the others are going to be in the file set. ##### know that the others are going to be in the file set.
##### Count the first and mark the dev/inode so we don't count ##### Count the first and mark the dev/inode so we don't count
##### it again. ##### it again. .. pretty cool
if (!$counted{$devino}) { if (!$counted{$devino}) { ## 1 strip for hardlinked file
info(1, "Counting ", -s _, info(1, "Counting ", -s _,
" bytes of hard-linked file $file\n"); " bytes of hard-linked file $file\n");
$total_bytes += bytes_allocated($file); $total_bytes += bytes_allocated($file);
# print CHECK "TOTAL: $total_bytes AMT: ", bytes_allocated($file), "\n";
$counted{$devino} = 1; $counted{$devino} = 1;
} else { } else {
info(1, "Not counting bytes of hard-linked file $file\n"); info(1, "Not counting bytes of hard-linked file $file\n");
} }
} elsif (-d $file) { } elsif (-d $file) { ## no strip
$total_bytes += $INODE_SIZE; $total_bytes += $INODE_SIZE;
info(1, "Directory $file = ", $INODE_SIZE, " bytes\n"); info(1, "Directory $file = ", $INODE_SIZE, " bytes\n");
# print CHECK "TOTAL: $total_bytes AMT: ", $INODE_SIZE, "\n";
} elsif ($file =~ m|^/proc/|) { } elsif ($file =~ m|^/proc/|) { ## no strip
##### /proc files screw us up (eg, /proc/kcore), and there's no ##### /proc files screw us up (eg, /proc/kcore), and there's no
##### Perl file test that will detect them otherwise. ##### Perl file test that will detect them otherwise.
next; next;
} elsif (-f $file) { } elsif (-f $file) { ##
## At this point hardlinked, dirs, replaced_by and /proc have
## been filtered out. If strip is chosen
## check for libraries (%lib_needed_by), modules (%is_module),
## and everything else if strippable.
##### Count space for plain files ##### Count space for plain files
info(1, "$file size ", -s _, "\n"); info(1, "$file size ", -s _, "\n");
$total_bytes += bytes_allocated($file); $total_bytes += bytes_allocated($file);
# print CHECK "TOTAL: $total_bytes AMT: ", bytes_allocated($file), "\n";
} }
} }
@ -565,7 +575,9 @@ sub space_check {
info(0, "But since object files will be stripped, more space\n", info(0, "But since object files will be stripped, more space\n",
"may become available. Continuing...\n"); "may become available. Continuing...\n");
} else { } else {
error("You need to trim some files out and try again.\n"); print "Not enough room .. but I'll take care of that later\n";
return;
##@error("You need to trim some files out and try again.\n");
} }
} }
@ -573,16 +585,13 @@ sub space_check {
} # end sub space_check } # end sub space_check
####################### ########################
##### Create filesystem ##### Create filesystem
######################## ########################
#@@sync(); #@@sync();
#@@sys("dd if=/dev/zero of=$::device bs=1k count=$::fs_size"); #@@sys("dd if=/dev/zero of=$::device bs=1k count=$::fs_size");
#@@sync(); #@@sync();
# This could be broken up into a lot of functions
## copy_strip_file will be modified.
sub create_filesystem { sub create_filesystem {
my $file; my $file;
@ -592,6 +601,7 @@ sub create_filesystem {
if (-f $::device) { if (-f $::device) {
##### If device is a plain file, it means we're using some loopback ##### If device is a plain file, it means we're using some loopback
##### device. Use -F switch in mke2fs so it won't complain. ##### device. Use -F switch in mke2fs so it won't complain.
## Options here can be changed.
sys("mke2fs -F -m 0 -b 1024 $::device $::fs_size"); sys("mke2fs -F -m 0 -b 1024 $::device $::fs_size");
} else { } else {
sys("mke2fs -m 0 -b 1024 $::device $::fs_size"); sys("mke2fs -m 0 -b 1024 $::device $::fs_size");
@ -803,6 +813,7 @@ sub cf_warn {
} }
## Modified for user chosen defaults
# Copy a file, possibly stripping it. Stripping is done if the file # Copy a file, possibly stripping it. Stripping is done if the file
# is strippable and stripping is desired by the user, and if the # is strippable and stripping is desired by the user, and if the
# objcopy program exists. # objcopy program exists.
@ -1351,10 +1362,10 @@ my($login_binary) = "$::mount_point/bin/login";
STDOUT->autoflush(1); STDOUT->autoflush(1);
start_logging_output(); # Won't have to do this.
##@ start_logging_output();
#info(0, "check_root_fs @yard_version@\n"); #info(0, "check_root_fs @yard_version@\n");
##@mount_device_if_necessary();
mount_device_if_necessary();
# This goes first so we define %Termcap for use in children # This goes first so we define %Termcap for use in children
check_termcap(); check_termcap();
@ -1909,3 +1920,8 @@ sub check_termcap {
##### END OF CHECK_ROOT_FS ##### END OF CHECK_ROOT_FS
=cut =cut

Loading…
Cancel
Save