Changeset 1408 in ProjectBuilder for devel/pbmkbm
- Timestamp:
- Feb 6, 2012, 9:37:38 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pbmkbm/bin/pbmkbm
r1403 r1408 306 306 $lcmd = pb_check_req($lcmd,1); 307 307 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"); 309 309 pb_log(1,"------------------\n"); 310 310 next; … … 405 405 406 406 # 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") ;407 my ($tdirs,$bdirs,$bfiles,$bcmds) = pb_distro_get_param($pbos,pb_conf_get("mkbmtargetdirs","mkbmbootdirs","mkbmbootfiles","mkbmbootcmds")); 408 408 # Create empty dirs for these 409 409 foreach my $d (split(/,/,$tdirs)) { 410 $targettree ->{$d} = "emptydir";410 $targettree{$d} = "emptydir"; 411 411 } 412 412 # And copy dirs for those 413 413 foreach my $d (split(/,/,$bdirs)) { 414 414 if (-d $d) { 415 $targettree->{$d} = "dir"; 415 $targettree{$d} = "dir"; 416 } elsif (-l $d) { 417 $targettree{$d} = "link"; 416 418 } else { 417 pb_log( 419 pb_log(1,"INFO: Directory $d doesn't exist\n"); 420 } 418 421 } 419 422 foreach my $f (split(/,/,$bfiles)) { 420 $targettree->{$d} = "dir"; 421 } 423 $targettree{$f} = "file"; 424 } 425 pb_log(2,"INFO: Target Tree is now: ".Dumper(%targettree)."\n"); 422 426 # Once the environment is made, add what is needed for this boot media to it. 423 427 # Keyboard … … 425 429 # List of commands 426 430 # List of dependencies 427 # Kernel 431 # Kernel - We use 2 objects, the running kernel and the target kernel which could be different 432 my %rkernel; 433 my %tkernel; 434 pb_mkbm_find_kernel(\%rkernel); 428 435 # Initrd 429 436 # init … … 471 478 } 472 479 480 sub pb_mkbm_find_kernel { 481 482 my $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 487 if ( -f "/proc/xen/capabilities") { 488 # It's a Xen kernel 489 pb_log(2,"INFO: We found a Xen Kernel running\n"); 490 } 491 492 my $kfile = pb_distro_get_param($pbos,pb_conf_get_if("mkbmkernelfile")); 493 if ((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 506 my $dh; 507 die "ERROR: Unable to open the mkbmkerneldir content ($kernel->dir)" if (! opendir($dh,$kernel->dir)); 508 while (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 } 515 closedir($dh); 516 $kernel->release = pb_get_osrelase(); 517 } 518 473 519 sub pb_mkbm_create_media { 474 520
Note:
See TracChangeset
for help on using the changeset viewer.