Changeset 1408 in ProjectBuilder for devel/pbmkbm/bin/pbmkbm


Ignore:
Timestamp:
Feb 6, 2012, 9:37:38 AM (12 years ago)
Author:
Bruno Cornec
Message:

r4511@cabanilles: bruno | 2012-02-06 09:29:48 +0100

  • New sync point which brings a start of kernel analysis for pbmkbm
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel/pbmkbm/bin/pbmkbm

    r1403 r1408  
    306306            $lcmd = pb_check_req($lcmd,1);
    307307            if (not defined $lcmd) {
    308                 pb_log(1,"INFO: command $lcmd (in $c) doesn't exist\n");
     308                pb_log(1,"INFO: command $c doesn't exist\n");
    309309                pb_log(1,"------------------\n");
    310310                next;
     
    405405
    406406# Create the directory structure needed on the target dir
    407 my ($tdirs,$bdirs,$bfiles,$bcmds) = pb_distro_get_param($pbos,pb_conf_get("mkbmtargetdirs","mkbmbootdirs","mkbmbootfiles","mkbmbootcmds");
     407my ($tdirs,$bdirs,$bfiles,$bcmds) = pb_distro_get_param($pbos,pb_conf_get("mkbmtargetdirs","mkbmbootdirs","mkbmbootfiles","mkbmbootcmds"));
    408408# Create empty dirs for these
    409409foreach my $d (split(/,/,$tdirs)) {
    410     $targettree->{$d} = "emptydir";
     410    $targettree{$d} = "emptydir";
    411411}
    412412# And copy dirs for those
    413413foreach my $d (split(/,/,$bdirs)) {
    414414    if (-d $d) {
    415         $targettree->{$d} = "dir";
     415        $targettree{$d} = "dir";
     416    } elsif (-l $d) {
     417        $targettree{$d} = "link";
    416418    } else {
    417         pb_log(
     419        pb_log(1,"INFO: Directory $d doesn't exist\n");
     420    }
    418421}
    419422foreach my $f (split(/,/,$bfiles)) {
    420     $targettree->{$d} = "dir";
    421 }
     423    $targettree{$f} = "file";
     424}
     425pb_log(2,"INFO: Target Tree is now: ".Dumper(%targettree)."\n");
    422426# Once the environment is made, add what is needed for this boot media to it.
    423427# Keyboard
     
    425429# List of commands
    426430# List of dependencies
    427 # Kernel
     431# Kernel - We use 2 objects, the running kernel and the target kernel which could be different
     432my %rkernel;
     433my %tkernel;
     434pb_mkbm_find_kernel(\%rkernel);
    428435# Initrd
    429436# init
     
    471478}
    472479
     480sub pb_mkbm_find_kernel {
     481
     482my $kernel = shift;
     483
     484$kernel->is_xen = undef;
     485# See if we're booted from a Xen kernel
     486# From http://wiki.xensource.com/xenwiki/XenCommonProblems#head-26434581604cc8357d9762aaaf040e8d87b37752
     487if ( -f "/proc/xen/capabilities") {
     488    # It's a Xen kernel
     489    pb_log(2,"INFO: We found a Xen Kernel running\n");
     490}
     491
     492my $kfile = pb_distro_get_param($pbos,pb_conf_get_if("mkbmkernelfile"));
     493if ((defined $kfile) && ($kfile ne "")) {
     494    pb_log(1,"INFO: You specified your kernel as $kfile, so using it\n");
     495    $kernel->file = $kfile;
     496} else {
     497    $kernel->dir = pb_distro_get_param($pbos,pb_conf_get("mkbmkerneldir"));
     498    die "ERROR: The mkbmkerneldir content ($kernel->dir) doesn't refer to a directory\n"if (! -d $kernel->dir);
     499    pb_log(1,"INFO: Analyzing directory $kernel->dir to find your kernel");
     500    $kernel->namere = pb_distro_get_param($pbos,pb_conf_get("mkbmkernelnamere"));
     501}
     502
     503# TODO: Look at a better way to find the name of the kernel we run
     504# look at /proc/sys/kernel/bootloader_type /proc/sys/kernel/bootloader_version
     505# to have a better guess
     506my $dh;
     507die "ERROR: Unable to open the mkbmkerneldir content ($kernel->dir)" if (! opendir($dh,$kernel->dir));
     508while (readdir $dh) {
     509    # Skip non-files
     510    next if ((! -f $_) && (! -l $_));
     511    # Skip files not correpsonding to the RE planned
     512    next if ($_ !~ /$kernel->namere/);
     513    #my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat("$f/$_");
     514}
     515closedir($dh);
     516$kernel->release = pb_get_osrelase();
     517}
     518
    473519sub pb_mkbm_create_media {
    474520
Note: See TracChangeset for help on using the changeset viewer.