mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-23 00:53:23 -05:00
* continuous and user-defined are working.
* fixed logic of copy_strip_file. * made strip_all and strip_deb true booleans.
This commit is contained in:
parent
9c47087234
commit
808215a667
124
Yard.pm
124
Yard.pm
@ -57,6 +57,7 @@ my($Warnings) = 0;
|
|||||||
my $verbosity;
|
my $verbosity;
|
||||||
my ($text_insert,$red,$blue);
|
my ($text_insert,$red,$blue);
|
||||||
my $logadj;
|
my $logadj;
|
||||||
|
my $mount_point;
|
||||||
|
|
||||||
# This solves an annoying problem with the new Perl-5.6 built in glob,
|
# This solves an annoying problem with the new Perl-5.6 built in glob,
|
||||||
# allowing earlier versions of Perl to run.
|
# allowing earlier versions of Perl to run.
|
||||||
@ -281,7 +282,7 @@ sub extra_links {
|
|||||||
|
|
||||||
my ($contents_file) = @_;
|
my ($contents_file) = @_;
|
||||||
|
|
||||||
info(0, "\n\nPASS 2: Picking up extra files from links...\n");
|
info(0, "PASS 2: Picking up extra files from links...\n");
|
||||||
|
|
||||||
for (keys %Included) {
|
for (keys %Included) {
|
||||||
# watch for "" - GBteam
|
# watch for "" - GBteam
|
||||||
@ -747,18 +748,19 @@ sub create_filesystem {
|
|||||||
$strip_bin, $strip_module, $obj_count) = @_;
|
$strip_bin, $strip_module, $obj_count) = @_;
|
||||||
|
|
||||||
my $device = "$mnt/$filename";
|
my $device = "$mnt/$filename";
|
||||||
my $mount_point = "$mnt/loopback";
|
$mount_point = "$mnt/loopback";
|
||||||
|
|
||||||
my $file;
|
my $file;
|
||||||
my $error;
|
my $error;
|
||||||
|
|
||||||
|
info(0, "Creating root filesystem.\n");
|
||||||
|
info(0, "Description: $fs_size K ext2 file system\n");
|
||||||
|
info(0, "Where: $device\n");
|
||||||
|
|
||||||
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();
|
||||||
|
|
||||||
info(0, "Creating $fs_size K ext2 file system on $device\n");
|
|
||||||
|
|
||||||
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.
|
||||||
@ -912,9 +914,10 @@ sub create_filesystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
## Probably will want to umount here
|
## Probably will want to umount here
|
||||||
|
return "ERROR" if errum(sys("umount $mount_point")) == 2;
|
||||||
|
|
||||||
info(0, "\nDone with $PROGRAM_NAME. $Warnings warnings.\n",
|
info(0, "\nDone making the root filesystem. $Warnings warnings.\n",
|
||||||
"$device is still mounted on $mount_point\n\n");
|
"$device is now umounted from $mount_point\n\n");
|
||||||
|
|
||||||
} # end sub create_filesystem
|
} # end sub create_filesystem
|
||||||
|
|
||||||
@ -1002,41 +1005,73 @@ sub copy_strip_file {
|
|||||||
$strip_lib, $strip_bin, $strip_module) = @_;
|
$strip_lib, $strip_bin, $strip_module) = @_;
|
||||||
my $error;
|
my $error;
|
||||||
|
|
||||||
if ($strip_objfiles and defined($objcopy) and $strippable{$from}) {
|
if ($strippable{$from}) {
|
||||||
# Copy it stripped
|
# Copy it stripped
|
||||||
|
|
||||||
|
if ($strip_lib) {
|
||||||
if (defined($lib_needed_by{$from}) && $strip_lib) {
|
if (defined($lib_needed_by{$from})) {
|
||||||
# It's a library
|
# It's a library
|
||||||
if ($strip_objfiles == 1) {
|
if ($strip_objfiles == 1) {
|
||||||
info(1, "Copy/stripping library $from to $to\n");
|
info(1, "Copy/stripping library $from to $to\n");
|
||||||
sys("$objcopy --strip-all $from $to");
|
sys("$objcopy --strip-all $from $to");
|
||||||
}
|
}
|
||||||
elsif ($strip_objfiles == 0) {
|
elsif ($strip_objfiles == 0) {
|
||||||
info(1, "Copy/stripping library $from to $to\n");
|
info(1, "Copy/stripping library $from to $to\n");
|
||||||
sys("$objcopy --strip-debug $from $to");
|
sys("$objcopy --strip-debug $from $to");
|
||||||
}
|
}
|
||||||
} elsif (defined($is_module{$from}) && $strip_module) {
|
}
|
||||||
|
|
||||||
|
# Copy file perms and owner
|
||||||
|
my($mode, $uid, $gid);
|
||||||
|
(undef, undef, $mode, undef, $uid, $gid) = stat $from;
|
||||||
|
my $from_base = basename($from);
|
||||||
|
chown($uid, $gid, $to) or ($error =
|
||||||
|
error("chown: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
|
chmod($mode, $to) or ($error =
|
||||||
|
error("chmod: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
|
}
|
||||||
|
elsif ($strip_module) {
|
||||||
info(1, "Copy/stripping module $from to $to\n");
|
info(1, "Copy/stripping module $from to $to\n");
|
||||||
sys("$objcopy --strip-debug $from $to");
|
sys("$objcopy --strip-debug $from $to");
|
||||||
|
|
||||||
|
# Copy file perms and owner
|
||||||
|
my($mode, $uid, $gid);
|
||||||
|
(undef, undef, $mode, undef, $uid, $gid) = stat $from;
|
||||||
|
my $from_base = basename($from);
|
||||||
|
chown($uid, $gid, $to) or ($error =
|
||||||
|
error("chown: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
|
chmod($mode, $to) or ($error =
|
||||||
|
error("chmod: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
} elsif ($strip_bin) {
|
} elsif ($strip_bin) {
|
||||||
# It's a binary executable
|
# It's a binary executable
|
||||||
info(1, "Copy/stripping binary executable $from to $to\n");
|
info(1, "Copy/stripping binary executable $from to $to\n");
|
||||||
sys("$objcopy --strip-all $from $to");
|
sys("$objcopy --strip-all $from $to");
|
||||||
}
|
|
||||||
# Copy file perms and owner
|
|
||||||
my($mode, $uid, $gid);
|
|
||||||
(undef, undef, $mode, undef, $uid, $gid) = stat $from;
|
|
||||||
chown($uid, $gid, $to) or ($error = error("chown: $!"));
|
|
||||||
return "ERROR"if $error && $error eq "ERROR";
|
|
||||||
chmod($mode, $to) or ($error = error("chmod: $!"));
|
|
||||||
return "ERROR"if $error && $error eq "ERROR";
|
|
||||||
|
|
||||||
} else {
|
# Copy file perms and owner
|
||||||
|
my($mode, $uid, $gid);
|
||||||
|
(undef, undef, $mode, undef, $uid, $gid) = stat $from;
|
||||||
|
my $from_base = basename($from);
|
||||||
|
chown($uid, $gid, $to) or ($error =
|
||||||
|
error("chown: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
|
chmod($mode, $to) or ($error =
|
||||||
|
error("chmod: $! \($from_base\)\n"));
|
||||||
|
return "ERROR"if $error && $error eq "ERROR";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Normal copy, no strip
|
||||||
|
sys("cp $from $to");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
# Normal copy, no strip
|
# Normal copy, no strip
|
||||||
sys("cp $from $to");
|
sys("cp $from $to");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1114,7 +1149,8 @@ sub sys {
|
|||||||
0; # like system()
|
0; # like system()
|
||||||
}
|
}
|
||||||
|
|
||||||
## history
|
# Maybe history but @mount_device_if_necessary() uses it.
|
||||||
|
# Just need to add error_window.
|
||||||
sub load_mount_info {
|
sub load_mount_info {
|
||||||
undef %::mounted;
|
undef %::mounted;
|
||||||
undef %::fs_type;
|
undef %::fs_type;
|
||||||
@ -1578,23 +1614,15 @@ __END__
|
|||||||
##
|
##
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
#BEGIN { require "yard_utils.pl" }
|
|
||||||
#require "Config.pl";
|
|
||||||
|
|
||||||
### GLOBAL VARIABLES
|
### GLOBAL VARIABLES
|
||||||
my(%Termcap); # Defs from /etc/termcap
|
my(%Termcap); # Defs from /etc/termcap
|
||||||
my($checked_for_getty_files); # Scalar -- have we checked getty files yet?
|
my($checked_for_getty_files); # Scalar -- have we checked getty files yet?
|
||||||
my(%checked); # Hash table of files we've already checked
|
my(%checked); # Hash table of files we've already checked
|
||||||
# This is a little crude. Technically we should read /etc/conf.getty
|
# This is a little crude. Technically we should read /etc/conf.getty
|
||||||
# to make sure we're not supposed to be using a different login binary.
|
# to make sure we're not supposed to be using a different login binary.
|
||||||
my($login_binary) = "$::mount_point/bin/login";
|
my($login_binary) = "$mount_point/bin/login";
|
||||||
|
|
||||||
|
## Maybe this
|
||||||
STDOUT->autoflush(1);
|
|
||||||
|
|
||||||
# Won't have to do this.
|
|
||||||
##@ start_logging_output();
|
|
||||||
#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
|
||||||
@ -1609,16 +1637,18 @@ check_passwd();
|
|||||||
check_pam();
|
check_pam();
|
||||||
check_nss();
|
check_nss();
|
||||||
|
|
||||||
info(0, "All done.\n");
|
info(0, "All done!\n");
|
||||||
info(0, "If this is acceptable, continue with write_rescue_disk\n");
|
info(0, "You can run more tests with the UML kernel,\n
|
||||||
exit;
|
or construct a distribution by using this root\n
|
||||||
|
filesystem with a boot method.");
|
||||||
|
|
||||||
|
##########################
|
||||||
##############################################################################
|
|
||||||
sub warning {
|
# I think we will just add all warnings together
|
||||||
info(0, "\n", @_);
|
#sub warning {
|
||||||
|
# info(0, "\n", @_);
|
||||||
# $Warnings++;
|
# $Warnings++;
|
||||||
}
|
#}
|
||||||
|
|
||||||
|
|
||||||
# This takes a procedure call, forks off a subprocess, chroots to
|
# This takes a procedure call, forks off a subprocess, chroots to
|
||||||
|
64
YardBox.pm
64
YardBox.pm
@ -243,11 +243,11 @@ sub file_system {
|
|||||||
|
|
||||||
my $lib_strip_all;
|
my $lib_strip_all;
|
||||||
my $lib_strip_debug;
|
my $lib_strip_debug;
|
||||||
my $strip_bool = "strip-all";
|
my $strip_bool = 1;
|
||||||
sub strip_all {
|
sub strip_all {
|
||||||
|
|
||||||
$lib_strip_debug->active(0);
|
$lib_strip_debug->active(0);
|
||||||
$strip_bool = "strip-all";
|
$strip_bool = 1;
|
||||||
print "$strip_bool\n";
|
print "$strip_bool\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -255,7 +255,7 @@ sub strip_all {
|
|||||||
sub strip_debug {
|
sub strip_debug {
|
||||||
|
|
||||||
$lib_strip_all->active(0);
|
$lib_strip_all->active(0);
|
||||||
$strip_bool = "strip-debug";
|
$strip_bool = 0;
|
||||||
print "$strip_bool\n";
|
print "$strip_bool\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -384,15 +384,12 @@ sub which_stage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} # end if one-by-one or continuous
|
|
||||||
elsif ($stages_bool eq "user-defined") {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for (keys %$continue) { print $_, "=>", $continue->{$_}, "\n"; }
|
for (keys %$continue) { print $_, "=>", $continue->{$_}, "\n"; }
|
||||||
|
|
||||||
|
} # end if one-by-one or continuous
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub continue {
|
sub continue {
|
||||||
@ -453,11 +450,51 @@ sub continue {
|
|||||||
$continue->{create} = 1;
|
$continue->{create} = 1;
|
||||||
return if $stages_bool eq "one-by-one";
|
return if $stages_bool eq "one-by-one";
|
||||||
}
|
}
|
||||||
|
if ( $continue->{test} == 0 ) {
|
||||||
|
test();
|
||||||
|
foreach $thing (@check_boxes) {
|
||||||
|
$thing->hide();
|
||||||
|
$thing->active($false);
|
||||||
|
$thing->show();
|
||||||
|
}
|
||||||
|
$continue->{test} = 1;
|
||||||
|
return if $stages_bool eq "one-by-one";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
elsif ($stages_bool eq "user-defined") {
|
elsif ($stages_bool eq "user-defined") {
|
||||||
|
|
||||||
|
if ($check->get_active()) {
|
||||||
|
check();
|
||||||
|
$check->hide();
|
||||||
|
$check->active($false);
|
||||||
|
$check->show();
|
||||||
|
}
|
||||||
|
if ($dep->get_active()) {
|
||||||
|
links_deps();
|
||||||
|
$dep->hide();
|
||||||
|
$dep->active($false);
|
||||||
|
$dep->show();
|
||||||
|
}
|
||||||
|
if ($space->get_active()) {
|
||||||
|
space_left();
|
||||||
|
$space->hide();
|
||||||
|
$space->active($false);
|
||||||
|
$space->show();
|
||||||
|
}
|
||||||
|
if ($create->get_active()) {
|
||||||
|
create();
|
||||||
|
$create->hide();
|
||||||
|
$create->active($false);
|
||||||
|
$create->show();
|
||||||
|
}
|
||||||
|
if ($test->get_active()) {
|
||||||
|
test();
|
||||||
|
$test->hide();
|
||||||
|
$test->active($false);
|
||||||
|
$test->show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -487,7 +524,6 @@ sub space_left {
|
|||||||
$lib_bool = "" if $lib_bool eq 0;
|
$lib_bool = "" if $lib_bool eq 0;
|
||||||
$bin_bool = "" if $bin_bool eq 0;
|
$bin_bool = "" if $bin_bool eq 0;
|
||||||
$mod_bool = "" if $mod_bool eq 0;
|
$mod_bool = "" if $mod_bool eq 0;
|
||||||
$strip_bool eq "strip-all" ? ($strip_bool = 1) : ($strip_bool = 0);
|
|
||||||
|
|
||||||
$error = space_check($filesystem_size,
|
$error = space_check($filesystem_size,
|
||||||
$lib_bool, $bin_bool, $mod_bool,
|
$lib_bool, $bin_bool, $mod_bool,
|
||||||
@ -501,7 +537,7 @@ sub create {
|
|||||||
$lib_bool = "" if $lib_bool eq 0;
|
$lib_bool = "" if $lib_bool eq 0;
|
||||||
$bin_bool = "" if $bin_bool eq 0;
|
$bin_bool = "" if $bin_bool eq 0;
|
||||||
$mod_bool = "" if $mod_bool eq 0;
|
$mod_bool = "" if $mod_bool eq 0;
|
||||||
$strip_bool eq "strip-all" ? ($strip_bool = 1) : ($strip_bool = 0);
|
|
||||||
$error = create_filesystem($filename,$filesystem_size,$filesystem_type,
|
$error = create_filesystem($filename,$filesystem_size,$filesystem_type,
|
||||||
$inode_size,$mnt,$lib_bool,$bin_bool,
|
$inode_size,$mnt,$lib_bool,$bin_bool,
|
||||||
$mod_bool,$strip_bool);
|
$mod_bool,$strip_bool);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user