mirror of
https://github.com/fspc/gbootroot.git
synced 2025-02-23 09:03:23 -05:00
The Stripper lablel has been replaced with the Libraries check box, and the
Modules check box is at the end. The logic is in place, now just have to compute amount of directories and size of dep file. May use mkpath or home_builder.
This commit is contained in:
parent
012472663f
commit
6c633e1a1f
106
gbootroot
106
gbootroot
@ -241,6 +241,7 @@ use constant OBJCOPY_BOOL => 8 ;
|
||||
use constant ABS_DEVICE => 9 ;
|
||||
use constant ABS_OPT_DEVICE => 10 ;
|
||||
use constant ABS_APPEND => 11 ;
|
||||
use constant MOD_STRIP => 12 ;
|
||||
my @original_container;
|
||||
my $file_dialog;
|
||||
my ($kernel,$root_image,$device,$size);
|
||||
@ -262,7 +263,7 @@ my $button_count = 0;
|
||||
my $button_count_root = 0;
|
||||
my $obj_count = 0;
|
||||
my $obj_count_root = 0;
|
||||
my ($lib_strip_check,$bin_strip_check);
|
||||
my ($lib_strip_check,$bin_strip_check,$mod_strip_check);
|
||||
my ($bz2_toggle,$gz_toggle);
|
||||
my ($bz2_toggle_root,$gz_toggle_root,$compression_off);
|
||||
#my ($main::combo); made this totally global
|
||||
@ -272,7 +273,6 @@ my ($root_device,$root_filename,$method,$template,$filesystem_size,
|
||||
$root_device_size);
|
||||
my $ars = {}; # anonymous hash
|
||||
|
||||
|
||||
# My own creation - the roots touch the ground if three lines are added.
|
||||
my @xpm_data = (
|
||||
"32 45 3 1",
|
||||
@ -820,8 +820,7 @@ sub advanced_boot_section {
|
||||
|
||||
#_______________________________________
|
||||
# lib_strip_check
|
||||
label_advanced("Stripping:",0,1,0,1,$table_advanced);
|
||||
|
||||
#label_advanced("Stripping:",0,1,0,1,$table_advanced);
|
||||
!defined $lib_strip_check ? ($boolean = 1)
|
||||
: ($boolean = $lib_strip_check->get_active());
|
||||
$lib_strip_check = Gtk::CheckButton->new("Libraries");
|
||||
@ -833,7 +832,7 @@ sub advanced_boot_section {
|
||||
" right mouse button to change from" .
|
||||
" [objcopy --strip-debug] to" .
|
||||
" [objcopy --strip-all].", "" );
|
||||
$table_advanced->attach($lib_strip_check,1,2,0,1,
|
||||
$table_advanced->attach($lib_strip_check,0,1,0,1,
|
||||
['expand'],['fill','shrink'],0,0);
|
||||
show $lib_strip_check;
|
||||
|
||||
@ -845,10 +844,24 @@ sub advanced_boot_section {
|
||||
$tooltips->set_tip( $bin_strip_check,
|
||||
"This is generally a good idea." .
|
||||
" [objcopy --strip-all]", "" );
|
||||
$table_advanced->attach($bin_strip_check,2,3,0,1,
|
||||
$table_advanced->attach($bin_strip_check,1,2,0,1,
|
||||
['expand'],['fill','shrink'],0,0);
|
||||
show $bin_strip_check;
|
||||
|
||||
|
||||
# mod_strip_check
|
||||
!defined $mod_strip_check ? ($boolean = 1)
|
||||
: ($boolean = $mod_strip_check->get_active());
|
||||
$mod_strip_check = Gtk::CheckButton->new("Modules");
|
||||
$mod_strip_check->set_active($boolean);
|
||||
$tooltips->set_tip( $mod_strip_check,
|
||||
"This is generally a good idea." .
|
||||
" [objcopy --strip-debug]", "" );
|
||||
$table_advanced->attach($mod_strip_check,2,3,0,1,
|
||||
['expand'],['fill','shrink'],0,0);
|
||||
show $mod_strip_check;
|
||||
|
||||
|
||||
#_______________________________________
|
||||
# Development Drive
|
||||
label_advanced("Devel Device:",0,1,1,2,$table_advanced);
|
||||
@ -886,7 +899,7 @@ sub advanced_boot_section {
|
||||
" /lib/modules/kernel-version which are" .
|
||||
" necessary for the Boot Method to work" .
|
||||
" properly. Kmod inserts the modules," .
|
||||
" and kmod needs to be built-in to the" .
|
||||
" and kmod needs to be built into the" .
|
||||
" kernel along with initrd and ramdisk." ,
|
||||
"");
|
||||
$ea3->set_text($entry_advanced[11]) if defined $entry_advanced[11];
|
||||
@ -2218,13 +2231,21 @@ elsif (defined $container[METHOD] && defined $container[KERNEL] &&
|
||||
: ($container[LIB_STRIP] = $lib_strip_check->get_active());
|
||||
!$container[LIB_STRIP] ? ($container[LIB_STRIP] = 2)
|
||||
: ($container[LIB_STRIP] = 1);
|
||||
|
||||
!defined $bin_strip_check ? ($container[BIN_STRIP] = 3)
|
||||
: ($container[BIN_STRIP] =
|
||||
$bin_strip_check->get_active());
|
||||
!$container[BIN_STRIP] ? ($container[BIN_STRIP] = 4)
|
||||
: ($container[BIN_STRIP] = 3);
|
||||
|
||||
if ($container[LIB_STRIP] == 1) {
|
||||
|
||||
!defined $mod_strip_check ? ($container[MOD_STRIP] = 7)
|
||||
: ($container[MOD_STRIP] =
|
||||
$mod_strip_check->get_active());
|
||||
!$container[MOD_STRIP] ? ($container[MOD_STRIP] = 8)
|
||||
: ($container[MOD_STRIP] = 7);
|
||||
|
||||
|
||||
if ($container[LIB_STRIP] == 1) {
|
||||
$obj_count == 0 ? ($container[OBJCOPY_BOOL] = 5)
|
||||
: ($container[OBJCOPY_BOOL] = 6);
|
||||
}
|
||||
@ -2321,7 +2342,7 @@ elsif (defined $container[METHOD] && defined $container[KERNEL] &&
|
||||
my @diff = grep(!$diff{$_},@original_container);
|
||||
|
||||
if ($#diff >= 0) {
|
||||
# unlink initrd_image.gz, do initrd()
|
||||
# unlink initrd_image.gz, do initrd_size()
|
||||
$ok = 1;
|
||||
$initrd = "initrd_image";
|
||||
}
|
||||
@ -2339,8 +2360,10 @@ elsif (defined $container[METHOD] && defined $container[KERNEL] &&
|
||||
$root_image,
|
||||
$device,
|
||||
$size,
|
||||
$compress,$container[LIB_STRIP],
|
||||
$compress,
|
||||
$container[LIB_STRIP],
|
||||
$container[BIN_STRIP],
|
||||
$container[MOD_STRIP],
|
||||
$container[OBJCOPY_BOOL],
|
||||
$container[ABS_DEVICE],
|
||||
$container[ABS_OPT_DEVICE],
|
||||
@ -2535,28 +2558,41 @@ sub device2 {
|
||||
# full file path and strip result. Right now this is specific to initrd.
|
||||
sub stripper {
|
||||
|
||||
# stripper (program,bin|lib);
|
||||
if ((!defined $lib_strip_check && !defined $bin_strip_check) or
|
||||
($lib_strip_check->active || $bin_strip_check->active)) {
|
||||
my $not_stripped = `file $_[0] >/dev/null 2>&1`;
|
||||
# stripper (program,bin|lib|mod);
|
||||
if ((!defined $lib_strip_check && !defined $bin_strip_check
|
||||
&& !defined $mod_strip_check) or
|
||||
($lib_strip_check->active || $bin_strip_check->active
|
||||
|| $mod_strip_check->active)) {
|
||||
|
||||
# DON'T DO THIS >/dev/null 2>&1`;
|
||||
my $not_stripped = `file $_[0] 2> /dev/null`;
|
||||
my $filename = basename($_[0]);
|
||||
|
||||
|
||||
if ($not_stripped =~ m,not stripped,) {
|
||||
if (($_[1] eq "lib" && !defined $lib_strip_check) or
|
||||
($_[1] eq "lib" && $lib_strip_check->active)) {
|
||||
# --strip-all works for initrd
|
||||
if ($obj_count == 0) {
|
||||
sys("objcopy --strip-debug $_[0] $tmp/$filename");
|
||||
info(1,"--strip-debug $filename\n");
|
||||
return ( "$tmp/$filename", 1 );
|
||||
}
|
||||
elsif ($obj_count == 1) {
|
||||
sys("objcopy --strip-all $_[0] $tmp/$filename");
|
||||
info(1,"--strip-all $filename\n");
|
||||
return ( "$tmp/$filename", 1 );
|
||||
}
|
||||
}
|
||||
elsif (($_[1] eq "bin" && !defined $bin_strip_check) or
|
||||
($_[1] eq "bin" && $bin_strip_check->active)) {
|
||||
sys("objcopy --strip-all $_[0] $tmp/$filename");
|
||||
info(1,"--strip-all $filename\n");
|
||||
return ( "$tmp/$filename", 1 );
|
||||
}
|
||||
elsif (($_[1] eq "mod" && !defined $mod_strip_check) or
|
||||
($_[1] eq "mod" && $mod_strip_check->active)) {
|
||||
sys("objcopy --strip-debug $_[0] $tmp/$filename");
|
||||
info(1,"--strip-debug $filename\n");
|
||||
return ( "$tmp/$filename", 1 );
|
||||
}
|
||||
}
|
||||
@ -2651,9 +2687,24 @@ sub initrd_size {
|
||||
my $dir_size = 9 + 1;
|
||||
my $initrd_size = $dir_size + $linuxrc_size;
|
||||
|
||||
|
||||
# modules
|
||||
my @modules = kernel_modules();
|
||||
foreach (@modules) {
|
||||
($path,$value) = stripper($_,"mod");
|
||||
$initrd_size = $initrd_size + ((stat($path))[12]/2);
|
||||
unlink($path) if $value == 1;
|
||||
}
|
||||
|
||||
# This and libs should be user accessible
|
||||
# add other executables here
|
||||
my @initrd_stuff = qw(ash gzip mount umount);
|
||||
my @initrd_stuff = qw(ash gzip mount umount modprobe);
|
||||
if (@modules) {
|
||||
@initrd_stuff = qw(ash gzip mount umount modprobe);
|
||||
}
|
||||
else {
|
||||
@initrd_stuff = qw(ash gzip mount umount);
|
||||
}
|
||||
|
||||
foreach (@initrd_stuff) {
|
||||
($path,$value) = stripper(find_file_in_path($_),"bin");
|
||||
@ -2794,8 +2845,27 @@ sub initrd {
|
||||
pb($I,7);
|
||||
|
||||
# This and libs should be user accessible
|
||||
info(0, ".. the modules\n");
|
||||
my @modules = kernel_modules();
|
||||
|
||||
foreach my $stuff (@modules) {
|
||||
($path,$value) = stripper($stuff,"bin");
|
||||
$value == 0 ? ($tool = "cp -a") : ($tool = "mv");
|
||||
if (!$path) {
|
||||
info(1,"gBootRoot Error: Couldn't find $stuff\n");
|
||||
}
|
||||
info(0,"HEREIAM $tmp/initrd_mnt$stuff\n");
|
||||
return if errcp(sys("$tool $path $tmp/initrd_mnt")) == 2;
|
||||
}
|
||||
|
||||
info(0, ".. the bins\n");
|
||||
my @initrd_stuff = qw(ash gzip mount umount);
|
||||
my @initrd_stuff;
|
||||
if (@modules) {
|
||||
@initrd_stuff = qw(ash gzip mount umount modprobe);
|
||||
}
|
||||
else {
|
||||
@initrd_stuff = qw(ash gzip mount umount);
|
||||
}
|
||||
|
||||
foreach (@initrd_stuff) {
|
||||
($path,$value) = stripper(find_file_in_path($_),"bin");
|
||||
|
Loading…
x
Reference in New Issue
Block a user