#!/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 () { 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__