autoreconf.in: improve compatibility with old perl

In very old perls (I noticed this with 5.8.4), File::Temp objects are
not automatically stringified in all contexts where we expect them to
be, causing autoreconf to crash.

* bin/autoreconf.in (install_aux_file): Explicitly extract the
  temporary file’s name from $temp, and use that in all the places we
  were using $temp.
This commit is contained in:
Zack Weinberg 2020-11-02 17:16:00 -05:00
parent 46f384f850
commit 73f1be5e42
No known key found for this signature in database
GPG Key ID: 384F8E68AC65B0D5

View File

@ -363,10 +363,13 @@ sub install_aux_file
or fatal "rm -f $dest: $!\n";
}
my $temp = new File::Temp (UNLINK => 0, DIR => $destdir);
copy ($src, $temp)
or fatal "copying $src to $temp: $!\n";
make_executable ($temp) if -x $src;
update_file ($temp, $dest, $force);
# Older Perls don't convert $temp to its filename
# in all the places we need it to.
my $tempname = $temp->filename;
copy ($src, $tempname)
or fatal "copying $src to $tempname: $!\n";
make_executable ($tempname) if -x $src;
update_file ($tempname, $dest, $force);
}
}