&is_make_jobserver_unavailable &clean_jobserver_makeflags
&cross_command &set_buildflags &get_buildoption);
-my $max_compat=9;
+my $max_compat=10;
sub init {
my %params=@_;
if (! defined $c) {
$c=1;
- if (defined $ENV{DH_COMPAT}) {
- $c=$ENV{DH_COMPAT};
- }
- elsif (-e 'debian/compat') {
- # Try the file..
+ if (-e 'debian/compat') {
open (COMPAT_IN, "debian/compat") || error "debian/compat: $!";
my $l=<COMPAT_IN>;
close COMPAT_IN;
if (! defined $l || ! length $l) {
- warning("debian/compat is empty, assuming level $c");
+ warning("debian/compat is empty, assuming level $c")
+ unless defined $ENV{DH_COMPAT};
}
else {
chomp $l;
$c=$l;
}
}
+ else {
+ warning("No compatibility level specified in debian/compat");
+ warning("This package will soon FTBFS; time to fix it!");
+ }
+
+ if (defined $ENV{DH_COMPAT}) {
+ $c=$ENV{DH_COMPAT};
+ }
}
if ($c <= 4 && ! $warned_compat && ! $nowarn) {
- warning("Compatibility levels before 5 are deprecated.");
+ warning("Compatibility levels before 5 are deprecated (level $c in use)");
$warned_compat=1;
}
# 1: package
# 2: script to add to
# 3: filename of snippet
-# 4: sed to run on the snippet. Ie, s/#PACKAGE#/$PACKAGE/
+# 4: either text: shell-quoted sed to run on the snippet. Ie, 's/#PACKAGE#/$PACKAGE/'
+# or a sub to run on each line of the snippet. Ie sub { s/#PACKAGE#/$PACKAGE/ }
sub autoscript {
my $package=shift;
my $script=shift;
&& !compat(5)) {
# Add fragments to top so they run in reverse order when removing.
complex_doit("echo \"# Automatically added by ".basename($0)."\"> $outfile.new");
- complex_doit("sed \"$sed\" $infile >> $outfile.new");
+ autoscript_sed($sed, $infile, "$outfile.new");
complex_doit("echo '# End automatically added section' >> $outfile.new");
complex_doit("cat $outfile >> $outfile.new");
complex_doit("mv $outfile.new $outfile");
}
else {
complex_doit("echo \"# Automatically added by ".basename($0)."\">> $outfile");
- complex_doit("sed \"$sed\" $infile >> $outfile");
+ autoscript_sed($sed, $infile, $outfile);
complex_doit("echo '# End automatically added section' >> $outfile");
}
}
+sub autoscript_sed {
+ my $sed = shift;
+ my $infile = shift;
+ my $outfile = shift;
+ if (ref($sed) eq 'CODE') {
+ open(IN, $infile) or die "$infile: $!";
+ open(OUT, ">>$outfile") or die "$outfile: $!";
+ while (<IN>) { $sed->(); print OUT }
+ close(OUT) or die "$outfile: $!";
+ close(IN) or die "$infile: $!";
+ }
+ else {
+ complex_doit("sed \"$sed\" $infile >> $outfile");
+ }
+}
+
# Removes a whole substvar line.
sub delsubstvar {
my $package=shift;
my $file=shift;
my $globdir=shift;
- # executable confi files are a v9 thing.
+ # executable config files are a v9 thing.
my $x=! compat(8) && -x $file;
if ($x) {
require Cwd;