| #!/usr/bin/perl |
| # -*- Mode: Cperl -*- |
| # debian.postinst --- |
| # Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) |
| # Created On : Sat Apr 27 05:42:43 1996 |
| # Created On Node : melkor.pilgrim.umass.edu |
| # Last Modified By : Manoj Srivastava |
| # Last Modified On : Sat Aug 5 13:20:22 2006 |
| # Last Machine Used: glaurung.internal.golden-gryphon.com |
| # Update Count : 45 |
| # Status : Unknown, Use with caution! |
| # HISTORY : |
| # Description : |
| # |
| # |
| # |
| # arch-tag: 1c716174-2f0a-476d-a626-a1322e62503a |
| # |
| |
| |
| $|=1; |
| |
| # Predefined values: |
| my $version = "=V"; |
| my $kimage = "=K"; |
| my $package_name = "linux-image-$version"; |
| |
| |
| # Ignore all invocations uxcept when called on to configure. |
| exit 0 unless ($ARGV[0] && $ARGV[0] =~ /configure/); |
| |
| #known variables |
| my $image_dest = "/"; |
| my $realimageloc = "/boot/"; |
| my $silent_modules = ''; |
| my $modules_base = '/lib/modules'; |
| my $CONF_LOC = '/etc/kernel-img.conf'; |
| # remove multiple leading slashes; make sure there is at least one. |
| $realimageloc =~ s|^/*|/|o; |
| $realimageloc =~ s|/+|/|o; |
| |
| chdir '/usr/src' or die "Could not chdir to /usr/src:$!"; |
| |
| if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { |
| if (open(CONF, "$CONF_LOC")) { |
| while (<CONF>) { |
| chomp; |
| s/\#.*$//g; |
| next if /^\s*$/; |
| |
| $header_postinst_hook = "$1" if /^\s*header_postinst_hook\s*=\s*(\S+)/ig; |
| } |
| close CONF; |
| } |
| } |
| |
| sub exec_script { |
| my $type = shift; |
| my $script = shift; |
| print STDERR "Running $type hook script $script.\n"; |
| system ("$script $version $realimageloc$kimage-$version") && |
| print STDERR "User $type hook script [$script] "; |
| if ($?) { |
| if ($? == -1) { |
| print STDERR "failed to execute: $!\n"; |
| } |
| elsif ($? & 127) { |
| printf STDERR "died with signal %d, %s coredump\n", |
| ($? & 127), ($? & 128) ? 'with' : 'without'; |
| } |
| else { |
| printf STDERR "exited with value %d\n", $? >> 8; |
| } |
| exit $? >> 8; |
| } |
| } |
| sub run_hook { |
| my $type = shift; |
| my $script = shift; |
| if ($script =~ m,^/,) { |
| # Full path provided for the hook script |
| if (-x "$script") { |
| &exec_script($type,$script); |
| } |
| else { |
| die "The provided $type hook script [$script] could not be run.\n"; |
| } |
| } |
| else { |
| # Look for it in a safe path |
| for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { |
| if (-x "$path/$script") { |
| &exec_script($type, "$path/$script"); |
| return 0; |
| } |
| } |
| # No luck |
| print STDERR "Could not find $type hook script [$script].\n"; |
| die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; |
| } |
| } |
| |
| ## Run user hook script here, if any |
| if (-x "$header_postinst_hook") { |
| &run_hook("postinst", $header_postinst_hook); |
| } |
| |
| if (-d "/etc/kernel/header_postinst.d") { |
| print STDERR "Examining /etc/kernel/header_postinst.d.\n"; |
| system ("run-parts --verbose --exit-on-error --arg=$version " . |
| "--arg=$realimageloc$kimage-$version " . |
| "/etc/kernel/header_postinst.d") && |
| die "Failed to process /etc/kernel/header_postinst.d"; |
| } |
| |
| if (-d "/etc/kernel/header_postinst.d/$version") { |
| print STDERR "Examining /etc/kernel/header_postinst.d/$version.\n"; |
| system ("run-parts --verbose --exit-on-error --arg=$version " . |
| "--arg=$realimageloc$kimage-$version " . |
| "/etc/kernel/header_postinst.d/$version") && |
| die "Failed to process /etc/kernel/header_postinst.d/$version"; |
| } |
| |
| exit 0; |
| |
| __END__ |