Distribute a gunzip.pl script

gunzip isn't reliably available on Windows, but IO::Uncompress::Gunzip should
be.

Suggested by Quietust.
develop
lethosor 2016-10-15 12:07:50 -04:00
parent b2424f9a59
commit 7f7102f90c
2 changed files with 24 additions and 1 deletions

@ -31,7 +31,9 @@ function(download_file_unzip URL ZIP_TYPE ZIP_DEST ZIP_MD5 UNZIP_DEST UNZIP_MD5)
if(EXISTS "${ZIP_DEST}") if(EXISTS "${ZIP_DEST}")
message("* Decompressing ${FILENAME}") message("* Decompressing ${FILENAME}")
if("${ZIP_TYPE}" STREQUAL "gz") if("${ZIP_TYPE}" STREQUAL "gz")
execute_process(COMMAND gunzip --force "${ZIP_DEST}") execute_process(COMMAND
"${PERL_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/depends/gunzip.pl"
"${ZIP_DEST}" --force)
else() else()
message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}") message(SEND_ERROR "Unknown ZIP_TYPE: ${ZIP_TYPE}")
endif() endif()

@ -0,0 +1,21 @@
#!/usr/bin/perl
use strict;
use warnings;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my %args = map { $_ => 1 } @ARGV;
my $in_file = $ARGV[0] or die "no input file";
# remove extension
(my $out_file = $in_file) =~ s{\.[^.]+$}{};
if (! -f $in_file) {
die "input file does not exist: \"$in_file\"\n";
}
if (-f $out_file and !exists($args{'--force'})) {
die "output file exists, not overwriting: \"$out_file\"";
}
gunzip $in_file => $out_file or die "gunzip failed: $GunzipError\n";