1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#!/usr/bin/perl
$control = 'debian/control';
if ( -d 'debian/packages.d' ) {
$dir = 'debian/packages.d';
} else {
$dir = 'debian';
}
$needclean = 0;
$needlist = 0;
$needdeps = 0;
if (defined($ENV{'DH_COMPAT'})) {
$dh = $ENV{'DH_COMPAT'};
} else {
$dh = 0;
}
if (@ARGV) {
$temp = shift;
if ($temp eq "clean") { $needclean = 1; }
elsif ($temp eq "makedeps") { $needlist = 1; }
elsif ($temp eq "gendeps") { $needdeps = 1; }
}
@packages = ();
$first_package = "";
open (CONTROL, "< $control");
while (<CONTROL>) {
if (m/^Package:/) {
$package = (split)[1];
if ($first_package eq "" and $dh < 2) {
$first_package = $package;
}
if ( -f "${dir}/${package}.in" ) {
push @packages, $package;
}
}
}
close CONTROL;
while (@packages) {
$package = shift(@packages);
$inhead = 1;
$opened = 0;
if ($needdeps) {
print "${dir}/${package}.in ";
next;
}
open (IN, "< ${dir}/${package}.in");
while (<IN>) {
if (m/^\%(.*)\%$/) {
if ($needclean) {
if ($package ne $first_package) {
system("rm -f debian/${package}.${1}");
} else {
system("rm -f debian/${1}");
}
} elsif ($needlist) {
if ($package ne $first_package) {
print "debian/${package}.${1} ";
} else {
print "debian/${1} ";
}
} else {
$inhead = 0;
if ($opened) { close OUT; } else { $opened = 1; }
if ($package ne $first_package) {
open OUT, "> debian/${package}.${1}";
} else {
open OUT, "> debian/${1}";
}
}
} elsif (!$inhead) {
print OUT $_;
}
}
close OUT;
close IN;
}
|