From f960c66fcb2de9b1b6ea76c38998f584ff4ced9b Mon Sep 17 00:00:00 2001 From: freesource Date: Thu, 14 Nov 2002 08:21:18 +0000 Subject: [PATCH] This gets just about every option working, except for uml-kernel and preserve-ownership. Adds color --stdout. Basically, the bare min is --template and --stdout for display on console. --- BootRoot/BootRoot.pm | 67 +++++++++++++++++++++++++++++++++++++------- BootRoot/Error.pm | 60 ++++++++++++++++++++++----------------- BootRoot/Options.pm | 5 ++-- BootRoot/Yard.pm | 21 ++++++++++---- 4 files changed, 110 insertions(+), 43 deletions(-) diff --git a/BootRoot/BootRoot.pm b/BootRoot/BootRoot.pm index 933b347..26b7ea2 100644 --- a/BootRoot/BootRoot.pm +++ b/BootRoot/BootRoot.pm @@ -784,7 +784,8 @@ else { # check() read_contents_file( "$template_dir$template", $tmp, # $filesystem_size, \%uml_expect ); # -# links_deps() extra_links($changed_text, \%nss_pam); +# links_deps() extra_links($changed_text, \%nss_pam); hard_links +# library_dependencies # # create() - term depends on whether root or normal user (really copy) # $lib_bool = "" if $lib_bool eq 0; @@ -805,17 +806,11 @@ else { start_logging_output($verbosefn,$verbosity); # Yard "tmp dir name" - -# $kernel = $ars->{kernel}; -# $kernel_version_choice = $ars->{kernel_version_choice}; - $ars->{kernel} = $option{kernel}; ars2($ars); $ars->{kernel_version_choice} = $option{"kernel-version"}; ars2($ars); -#my $it = kernel_version_check($option{kernel},$option{"kernel-version"}); - my $template = $option{template}; $option{"filesystem-size"} @@ -832,12 +827,64 @@ if ( $option{"uml-exclusively"} ) { $ars->{uml_exclusively} = $uml_exclusively; ars2($ars); #not used in function below -read_contents_file( "$template_dir$template", $tmp, - $filesystem_size); +# links_deps() +# Good defaults +my %nss_pam = ( + 60 => { + conf_nss => 1, + }, + 61 => { + conf_pam => 1, + }, +); + +# create() +my $lib_bool = 1; +my $bin_bool = 1; +my $mod_bool = 1; +my $strip_bool = 1; + +my $filename; +$option{"root-filename"} +? ($filename = $option{"root-filename"}) + : ($filename = "root_fs"); + +# The filesystem-type + +$::makefs = $option{"filesystem-command"} if $option{"filesystem-command"}; + +# The Action - yard is the default method +my $method; +$option{method} +? ($method = $option{method}) + : ($method = "yard"); + +if ( $method eq "yard" ) { + + my $error = read_contents_file( "$template_dir$template", $tmp, + $filesystem_size); + return if $error && $error eq "ERROR"; + + $error = extra_links("$template_dir$template", \%nss_pam); + return if $error && $error eq "ERROR"; + + $error = hard_links(); + return if $error && $error eq "ERROR"; + + $error = library_dependencies("$template_dir$template"); + return if $error && $error eq "ERROR"; + + $error = create_filesystem($filename,$filesystem_size,$tmp,$lib_bool, + $bin_bool,$mod_bool,$strip_bool); + return if $error && $error eq "ERROR"; + + # create_uml() + create_expect_uml($filesystem_size, $tmp, $filename); + +} - #print kernel_version_check(), "Hi there!\n"; ###################################################### } # end if $::commandline diff --git a/BootRoot/Error.pm b/BootRoot/Error.pm index 04a5e9e..c057b04 100644 --- a/BootRoot/Error.pm +++ b/BootRoot/Error.pm @@ -29,6 +29,7 @@ use Exporter; use strict; use BootRoot::Yard; +use BootRoot::Options; my $true = 1; my $false = 0; @@ -47,31 +48,40 @@ sub error_window { my (@error) = @_; my $output = join("",@error); - if (not defined $error_window) { - $error_window = new Gtk::Dialog; - $error_window->signal_connect("destroy", \&destroy_window, - \$error_window); - $error_window->signal_connect("delete_event", \&destroy_window, - \$error_window); - $error_window->set_title("gBootRoot ERROR"); - $error_window->border_width(15); - my $label = new Gtk::Label($output); - #$label->set_justify("left") if $_[1]; - $error_window->vbox->pack_start( $label, $true, $true, 15 ); - $label->show(); - my $button = new Gtk::Button("OK"); - $button->signal_connect("clicked", sub {destroy $error_window}); - $button->can_default(1); - $error_window->action_area->pack_start($button, $false, $false,0); - $button->grab_default; - $button->show; - } - if (!visible $error_window) { - show $error_window; - } - else { - destroy $error_window; - } + if (!%option ) { + if (not defined $error_window) { + $error_window = new Gtk::Dialog; + $error_window->signal_connect("destroy", \&destroy_window, + \$error_window); + $error_window->signal_connect("delete_event", \&destroy_window, + \$error_window); + $error_window->set_title("gBootRoot ERROR"); + $error_window->border_width(15); + my $label = new Gtk::Label($output); + #$label->set_justify("left") if $_[1]; + $error_window->vbox->pack_start( $label, $true, $true, 15 ); + $label->show(); + my $button = new Gtk::Button("OK"); + $button->signal_connect("clicked", sub {destroy $error_window}); + $button->can_default(1); + $error_window->action_area->pack_start($button, $false, $false,0); + $button->grab_default; + $button->show; + } + if (!visible $error_window) { + show $error_window; + } + else { + destroy $error_window; + } + + } + else { + + print "$output\n"; + + } + } # end sub error_window diff --git a/BootRoot/Options.pm b/BootRoot/Options.pm index 84460f9..b23356a 100644 --- a/BootRoot/Options.pm +++ b/BootRoot/Options.pm @@ -39,9 +39,10 @@ sub option { "method=s", "template=s", # The only required argument "filesystem-size=s", - "filesytem-type=s", - "uml-exclusively=s", + "filesystem-command=s", + "uml-exclusively=s", # on/off "preserve-ownership=s", + "kernel=s", "kernel-version=s", "stdout" diff --git a/BootRoot/Yard.pm b/BootRoot/Yard.pm index ac21cd4..5076881 100644 --- a/BootRoot/Yard.pm +++ b/BootRoot/Yard.pm @@ -1,4 +1,4 @@ -############################################################################# +############################################################################ ## ## Yard.pm combining ## MAKE_ROOT_FS, CHECK_ROOT_FS, and YARD_UTILS.PL by Tom Fawcett @@ -47,6 +47,7 @@ use File::Path; use FileHandle; use Cwd; # I am not even sure if this is being used here now use English; # I think this can be ditched for portability +use Term::ANSIColor; # for commandline output use File::Find; # used by check_root_fs use BootRoot::BootRoot; use BootRoot::Error; @@ -537,6 +538,7 @@ sub extra_links { $find_nss = $nss_pam->{60}{conf_nss}; $find_pam = $nss_pam->{61}{conf_pam}; + # Determine how the PASS is configured by the user. if ( $find_nss != 1 && $find_pam != 1 ) { info(0, "PASS 2: Picking up extra files from links...\n"); @@ -1828,11 +1830,18 @@ sub info { } - if ( %option ) { - print @msgs; + if ( $option{stdout} ) { + if ( %option ) { + if ($level == 0) { + print color("blue"), @msgs, color("reset"); + } + elsif ($level == 1) { + print color("red"), @msgs, color("reset"); + } + } } - -} + +} # end sub info ## This will produce red. sub error { @@ -2198,7 +2207,7 @@ sub kernel_version { my $error; # check if we have a normal file (-f dereferences symbolic links) - if (!-f $image) { + if (!$image || !-f $image) { #$error = error("Kernel image ($image) is not a plain file.\n"); #return "ERROR"if $error && $error eq "ERROR"; $error = warning("Kernel image ($image) is not a plain file.\n");