&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=@_;
sub compat {
my $num=shift;
+ my $nowarn=shift;
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) {
- warning("Compatibility levels before 5 are deprecated.");
+ if ($c <= 4 && ! $warned_compat && ! $nowarn) {
+ warning("Compatibility levels before 5 are deprecated (level $c in use)");
$warned_compat=1;
}
my $file=shift;
my $globdir=shift;
+ # executable config files are a v9 thing.
+ my $x=! compat(8) && -x $file;
+ if ($x) {
+ require Cwd;
+ my $cmd=Cwd::abs_path($file);
+ open (DH_FARRAY_IN, "$cmd |") || error("cannot run $file: $!");
+ }
+ else {
+ open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
+ }
+
my @ret;
- open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
while (<DH_FARRAY_IN>) {
chomp;
# Only ignore comments and empty lines in v5 mode.
- if (! compat(4)) {
+ if (! compat(4) && ! $x) {
next if /^#/ || /^$/;
}
my @line;
# The tricky bit is that the glob expansion is done
# as if we were in the specified directory, so the
# filenames that come out are relative to it.
- if (defined $globdir && ! compat(2)) {
+ if (defined $globdir && ! compat(2) && ! $x) {
foreach (map { glob "$globdir/$_" } split) {
s#^$globdir/##;
push @line, $_;
}
push @ret, [@line];
}
- close DH_FARRAY_IN;
+
+ close DH_FARRAY_IN || error("problem reading $file: $!");
return @ret;
}