Changeset 1672 in ProjectBuilder for devel


Ignore:
Timestamp:
Nov 10, 2012, 6:10:54 AM (11 years ago)
Author:
Bruno Cornec
Message:

r5007@localhost: bruno | 2012-10-09 23:15:57 +0200

  • Continue pbmkbm dev
Location:
devel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • devel/pb-modules/etc/pb.conf

    r1671 r1672  
    632632ospathcmd-termdir default = /usr/share/terminfo
    633633
     634#ospathcmd-lsmod linux = lsmod|
     635# get list of modules in first column
     636ospathcmd-lsmod linux = /proc/modules
     637# get all modules filenames with dependencies in 2nd column
     638ospathcmd-depmod linux = modprobe --show-depends
     639
    634640# Some path for commands may defer from one system to another
    635641ospathcmd-halt solaris = /usr/sbin/halt
  • devel/pbmkbm/bin/pbmkbm

    r1671 r1672  
    237237}
    238238if (defined $opts{'l'}) {
    239     open(pbLOG,"> $opts{'l'}") || die "Unable to log to $opts{'l'}: $!";
     239    open(pbLOG,"> $opts{'l'}") || confess "ERROR: Unable to log to $opts{'l'}: $!";
    240240    $pbLOG = \*pbLOG;
    241241    $pbdebug = 0  if ($pbdebug == -1);
     
    276276
    277277# After that we will need root access
    278 die "$appname needs to be run as root" if ($EFFECTIVE_USER_ID != 0);
     278confess "ERROR: $appname needs to be run as root" if ($EFFECTIVE_USER_ID != 0);
    279279
    280280#
     
    412412    pb_mkbm_create_busybox_ve(\%targettree);
    413413} else {
    414     die "Unknown method $opts{'b'} used to create the media content";
     414    confess "ERROR: Unknown method $opts{'b'} used to create the media content";
    415415}
    416416
     
    422422}
    423423# And copy dirs for those
    424 foreach my $d (split(/,/,$bdirs)) {
    425     if (-d $d) {
    426         $targettree{$d} = "recurdir";
    427     } elsif (-l $d) {
    428         $targettree{$d} = "link:$d";
    429     } else {
    430         pb_log(1,"INFO: Directory $d doesn't exist\n");
    431     }
    432 }
    433 foreach my $f (split(/,/,$bfiles)) {
    434     $targettree{$f} = "file";
    435 }
     424foreach my $d (split(/,/,$bfiles),split(/,/,$bdirs)) {
     425    pb_mkbm_store_in_tree($d,\%targettree);
     426}
     427pb_log(2,"INFO: Target Tree is now: ".Dumper(%targettree)."\n");
    436428# Once the environment is made, add what is needed for this boot media to it.
    437429# Keyboard
     
    445437my %tkernel;
    446438pb_mkbm_find_kernel(\%rkernel);
     439pb_mkbm_find_modules($rkernel{"release"},\%targettree,\%rkernel);
    447440# Initrd
    448441# init
     
    462455
    463456my $busycmd = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-busybox"));
    464 open(BUSY,"$busycmd |") || die "Unable to execute $busycmd";
     457open(BUSY,"$busycmd |") || confess "ERROR: Unable to execute $busycmd";
    465458my $cmdlist = 0;
    466459while (<BUSY>) {
     
    500493pb_log(1,"Analyzing your keyboard's configuration\n");
    501494my $keyfile = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-keyfile"));
    502 die "Unable to read the keyfile $keyfile" if ((not defined $keyfile) || (! -r $keyfile));
     495confess "ERROR: Unable to read the keyfile $keyfile" if ((not defined $keyfile) || (! -r $keyfile));
    503496my $keymapdir = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-keymapdir"));
    504 die "Unable to read the keymapdir $keymapdir" if ((not defined $keymapdir) || (! -d $keymapdir));
     497confess "ERROR: Unable to read the keymapdir $keymapdir" if ((not defined $keymapdir) || (! -d $keymapdir));
    505498my $keymapre = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-keymapre"));
    506 die "Unable to read the keymapre $keymapre" if (not defined $keymapre);
     499confess "ERROR: Unable to read the keymapre $keymapre" if (not defined $keymapre);
    507500
    508501# if a direct keymap file is given as keyfile, use only the first existing one and return
     
    511504    next if ($f !~ /\.gz$/);
    512505    $foundkmap = 1;
    513     if (-l $f) {
    514         $tgtree->{$f} = "link:$f";
    515         pb_log(1,"Using Keymap file $f\n");
    516         last;
    517     } elsif (-r $f) {
    518         $tgtree->{$f} = "file";
     506    if ((-l $f) || (-r $f)) {
     507        pb_mkbm_store_in_tree($f,$tgtree);
    519508        pb_log(1,"Using Keymap file $f\n");
    520509        last;
     
    527516pb_log(1,"Using Keyfile $keyfile and Keymap directory $keymapdir\n");
    528517my $locale="";
    529 open(KEYMAP,"$keyfile") || die "Unable to read $keyfile";
     518open(KEYMAP,"$keyfile") || confess "ERROR: Unable to read $keyfile";
    530519# Depending on the format of the keymap we look for various strings
    531520while (<KEYMAP>) {
     
    544533pb_log(1,"Analyzing your terminfo's configuration\n");
    545534my $termdir = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-termdir"));
    546 die "Unable to read the keymapdir $termdir" if ((not defined $termdir) || (! -d $termdir));
     535confess "ERROR: Unable to read the keymapdir $termdir" if ((not defined $termdir) || (! -d $termdir));
    547536$tgtree->{$termdir} = "recurdir";
    548537
     
    571560} else {
    572561    $kernel->{"dir"} = pb_distro_get_param($pbos,pb_conf_get("mkbmkerneldir"));
    573     die "ERROR: The mkbmkerneldir content ($kernel->{'dir'}) doesn't refer to a directory\n" if (! -d $kernel->{"dir"});
     562    confess "ERROR: The mkbmkerneldir content ($kernel->{'dir'}) doesn't refer to a directory\n" if (! -d $kernel->{"dir"});
    574563    pb_log(1,"INFO: Analyzing directory $kernel->{'dir'} to find your kernel\n");
    575564    $kernel->{"namere"} = pb_distro_get_param($pbos,pb_conf_get("mkbmkernelnamere"));
     
    579568    # to have a better guess
    580569    my $dh;
    581     die "ERROR: Unable to open the mkbmkerneldir content ($kernel->{'dir'})\n" if (! opendir($dh,$kernel->{"dir"}));
     570    confess "ERROR: Unable to open the mkbmkerneldir content ($kernel->{'dir'})\n" if (! opendir($dh,$kernel->{"dir"}));
    582571    while (readdir $dh) {
    583572        pb_log(3,"Potential kernel file: $_\n");
     
    595584        if ($@) {
    596585            # File::MimeInfo not found
    597             die("ERROR: Install File::MimeInfo to handle kernel file detection\n");
     586            confess "ERROR: Install File::MimeInfo to handle kernel file detection\n";
    598587        }
    599588        my $mm = mimetype("$kernel->{'dir'}/$_");
     
    615604}
    616605
     606sub pb_mkbm_find_modules {
     607
     608my $krel = shift;
     609my $tgtree = shift;
     610my $kernel = shift;
     611
     612my $lsmod = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-lsmod"));
     613my $depmod = pb_distro_get_param($pbos,pb_conf_get("ospathcmd-depmod"));
     614open(LSMOD,"$lsmod") || confess "ERROR: Unable to read $lsmod: $!";
     615while (<LSMOD>) {
     616    my ($mod,$void) = split(/\s+/);
     617    open(DEPMOD,"$depmod -S $kernel->{'release'} $mod |") || confess "ERROR: Unable to read $depmod -S $kernel->{'release'} $mod: $!";
     618    while (<DEPMOD>) {
     619        chomp();
     620        s/^insmod //;
     621        s/\s+$//;
     622        pb_mkbm_store_in_tree($_,$tgtree);
     623    }
     624    close(DEPMOD);
     625}
     626close(LSMOD);
     627}
     628
    617629sub pb_mkbm_create_media {
    618630
     631}
     632
     633
     634sub pb_mkbm_store_in_tree {
     635
     636my $f = shift;
     637my $tgtree = shift;
     638
     639if (-d $f) {
     640    $tgtree->{$f} = "recurdir";
     641} elsif (-l $f) {
     642    $tgtree->{$f} = "link:$f";
     643    pb_log(3,"INFO: Storing link $f in tree\n");
     644} elsif (-r $f) {
     645    $tgtree->{$f} = "file";
     646    pb_log(3,"INFO: Storing file $f in tree\n");
     647} else {
     648    pb_log(3,"INFO: file $f doesn't exist\n");
     649}
    619650}
    620651
Note: See TracChangeset for help on using the changeset viewer.