78 lines
1.9 KiB
Perl
78 lines
1.9 KiB
Perl
#!/usr/bin/perl
|
|
# Autogenerate the list of packages to dpkg-divert for this .deb package
|
|
|
|
use File::stat;
|
|
|
|
# List of files that are being overriden by this package
|
|
if (! -e "diversions") { system("touch diversions"); }
|
|
open DIVERSIONS, "<diversions";
|
|
my @diversions = <DIVERSIONS>;
|
|
close DIVERSIONS;
|
|
|
|
my $begin_delim = "### BEGIN DIVERT GENERATE ###";
|
|
my $end_delim = "### END DIVERT GENERATE ###";
|
|
|
|
my $preinst_path = "DEBIAN/preinst";
|
|
my $postrm_path = "DEBIAN/postrm";
|
|
my $pkg = shift;
|
|
|
|
# Slurp in both existing files (to use as a template)
|
|
undef $/;
|
|
|
|
if(open( PREINST, "<$preinst_path")) {
|
|
$preinst = <PREINST>;
|
|
close PREINST;
|
|
} else {
|
|
$preinst='#!/bin/sh
|
|
|
|
if [ install = "$1" ] || [ upgrade = "$1" ]; then
|
|
:
|
|
'.$begin_delim."\n".$end_delim."\nfi\n";
|
|
}
|
|
|
|
if(open(POSTRM, "<$postrm_path")) {
|
|
$postrm = <POSTRM>;
|
|
close POSTRM;
|
|
} else {
|
|
$postrm='#!/bin/sh
|
|
if [ remove = "$1" ]; then
|
|
:
|
|
'.$begin_delim."\n".$end_delim."\nfi\n";
|
|
}
|
|
|
|
# Generate preinst stub
|
|
my $preinst_stub = "";
|
|
foreach my $entry (@diversions)
|
|
{
|
|
chomp($entry);
|
|
next if ($entry =~ /^$/);
|
|
my @pair = split(",", $entry);
|
|
$pair[1] =~ s/\n//;
|
|
$preinst_stub .= " dpkg-divert --package $pkg --add --rename --divert $pair[0].$pair[1] $pair[0]\n";
|
|
}
|
|
$preinst =~ s/$begin_delim.*$end_delim/$begin_delim\n$preinst_stub$end_delim/s;
|
|
|
|
# Write generated portion back to script file
|
|
open PREINST, ">$preinst_path";
|
|
print PREINST $preinst;
|
|
close PREINST;
|
|
chmod 0755, $preinst_path;
|
|
|
|
# Generate postrm stub
|
|
my $postrm_stub = "";
|
|
foreach my $entry (@diversions)
|
|
{
|
|
chomp($entry);
|
|
next if ($entry =~ /^$/);
|
|
my @pair = split(",", $entry);
|
|
$pair[1] =~ s/\n//;
|
|
$postrm_stub .= " dpkg-divert --package $pkg --remove --rename --divert $pair[0].$pair[1] $pair[0]\n";
|
|
}
|
|
$postrm =~ s/$begin_delim.*$end_delim/$begin_delim\n$postrm_stub$end_delim/s;
|
|
|
|
# Write generated portion back to script file
|
|
open POSTRM, ">$postrm_path";
|
|
print POSTRM $postrm;
|
|
close POSTRM;
|
|
chmod 0755, $postrm_path;
|