diff -Nru libpar-packer-perl-1.057/Changes libpar-packer-perl-1.058/Changes --- libpar-packer-perl-1.057/Changes 2022-11-29 11:30:20.000000000 +0000 +++ libpar-packer-perl-1.058/Changes 2023-06-12 09:09:14.000000000 +0000 @@ -1,4 +1,24 @@ -1.057 2022-11029 +1.058 2023-06-12 + +- patch DynaLoader.pm to make intercepting DynaLoader::bootstrap work again + for Perl >= 5.35 on Windows (see #74) + + $do_expand was changed in perl 5.36 from an (implicit) "local" variable + to "my". This breaks how PAR::Heavy intercepts calls to + DynaLoader::bootstrap: monkey-patching DynaLoader::bootstrap, + DynaLoader::dl_findfile and DynaLoader::bootstrap while setting + "local $DynaLoader::do_expand = 1". + +- reorganize modules etc used in tests +- add test to run an XS module from a .par file +- add a test for loading XS "glue" DLLs + +- remove unused code for packed DLLs ("pp --link ...") + - nobody packs (non-XS) DLLs as embedded "FILE"s + - nobody uses a $Config{version) sub directory when packing DLLs below + "shlib/" in the zip + +1.057 2022-11-29 - use a different method to mark executable built from "pp --clean ..." diff -Nru libpar-packer-perl-1.057/debian/changelog libpar-packer-perl-1.058/debian/changelog --- libpar-packer-perl-1.057/debian/changelog 2022-12-23 20:01:23.000000000 +0000 +++ libpar-packer-perl-1.058/debian/changelog 2023-06-25 18:06:58.000000000 +0000 @@ -1,3 +1,15 @@ +libpar-packer-perl (1.058-1) unstable; urgency=medium + + * Import upstream version 1.058. + * Update years of packaging copyright. + * Drop unneeded version constraints from (build) dependencies. + * Update autopkgtest.patch: update one more path to the installed + script. + * Add debian/tests/pkg-perl/smoke-setup. + The new test data need some preparation. + + -- gregor herrmann Sun, 25 Jun 2023 20:06:58 +0200 + libpar-packer-perl (1.057-1) unstable; urgency=medium * Import upstream version 1.057. diff -Nru libpar-packer-perl-1.057/debian/control libpar-packer-perl-1.058/debian/control --- libpar-packer-perl-1.057/debian/control 2022-12-23 20:01:23.000000000 +0000 +++ libpar-packer-perl-1.058/debian/control 2023-06-25 18:06:58.000000000 +0000 @@ -13,7 +13,7 @@ libinline-perl , libipc-run3-perl , libmodule-scandeps-perl , - libpar-perl (>= 1.016), + libpar-perl, libperl-dev, perl-xs-dev, perl:native, @@ -35,7 +35,7 @@ libgetopt-argvfile-perl, libmodule-scandeps-perl, libpar-dist-perl, - libpar-perl (>= 1.016) + libpar-perl Suggests: libmodule-signature-perl Description: utility for creating PAR archives and stand-alone executables PAR (Perl Archiving Toolkit) is a Cross-Platform Packaging and Deployment diff -Nru libpar-packer-perl-1.057/debian/copyright libpar-packer-perl-1.058/debian/copyright --- libpar-packer-perl-1.057/debian/copyright 2022-12-23 20:01:23.000000000 +0000 +++ libpar-packer-perl-1.058/debian/copyright 2023-06-25 18:06:58.000000000 +0000 @@ -75,7 +75,7 @@ Files: debian/* Copyright: 2007-2010, Damyan Ivanov - 2007-2022, gregor herrmann + 2007-2023, gregor herrmann 2008, Niko Tyni 2008, Roberto C. Sanchez 2009, Ryan Niebur diff -Nru libpar-packer-perl-1.057/debian/patches/autopkgtest.patch libpar-packer-perl-1.058/debian/patches/autopkgtest.patch --- libpar-packer-perl-1.057/debian/patches/autopkgtest.patch 2022-12-23 20:01:23.000000000 +0000 +++ libpar-packer-perl-1.058/debian/patches/autopkgtest.patch 2023-06-25 18:06:58.000000000 +0000 @@ -2,7 +2,7 @@ Origin: vendor Forwarded: not-needed Author: gregor herrmann -Last-Update: 2018-04-10 +Last-Update: 2023-06-25 --- a/t/20-pp.t +++ b/t/20-pp.t @@ -53,3 +53,13 @@ # runs 1 test sub pp_ok +--- a/t/86-xs-par.t ++++ b/t/86-xs-par.t +@@ -10,6 +10,7 @@ + + # use an absolute pathname in case a test chdir()s + my $pp = catfile(getcwd(), qw( blib script pp )); ++$pp = '/usr/bin/pp' if $ENV{AUTOPKGTEST_TMP}; + + # runs 1 test + sub pp_p_ok diff -Nru libpar-packer-perl-1.057/debian/tests/pkg-perl/smoke-setup libpar-packer-perl-1.058/debian/tests/pkg-perl/smoke-setup --- libpar-packer-perl-1.057/debian/tests/pkg-perl/smoke-setup 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/debian/tests/pkg-perl/smoke-setup 2023-06-25 18:06:58.000000000 +0000 @@ -0,0 +1,6 @@ +#!/bin/sh + +cd $TDIR/t/data +perl Makefile.PL +make 2>&1 # Please specify prototyping behavior for XSFoo.xs (see perlxs manual) +mv -v ./blib ../ diff -Nru libpar-packer-perl-1.057/lib/PAR/Filter/PatchContent.pm libpar-packer-perl-1.058/lib/PAR/Filter/PatchContent.pm --- libpar-packer-perl-1.057/lib/PAR/Filter/PatchContent.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/lib/PAR/Filter/PatchContent.pm 2023-06-06 11:52:00.000000000 +0000 @@ -26,6 +26,10 @@ '$is_dosish = ' => '$is_dosish = $^O eq \'cygwin\' || ', ], + 'DynaLoader.pm' => [ + 'my $do_expand = ' => # perl >= 5.36.0 + 'use vars qw($do_expand); $do_expand = ', + ], 'Pod/Usage.pm' => [ ' = $0' => ' = $ENV{PAR_0} || $0', diff -Nru libpar-packer-perl-1.057/lib/PAR/Packer.pm libpar-packer-perl-1.058/lib/PAR/Packer.pm --- libpar-packer-perl-1.057/lib/PAR/Packer.pm 2022-11-29 11:29:04.000000000 +0000 +++ libpar-packer-perl-1.058/lib/PAR/Packer.pm 2023-06-07 14:56:37.000000000 +0000 @@ -3,7 +3,7 @@ use strict; use warnings; -our $VERSION = '1.057'; +our $VERSION = '1.058'; =head1 NAME diff -Nru libpar-packer-perl-1.057/Makefile.PL libpar-packer-perl-1.058/Makefile.PL --- libpar-packer-perl-1.057/Makefile.PL 2021-01-20 17:18:19.000000000 +0000 +++ libpar-packer-perl-1.058/Makefile.PL 2023-06-06 11:52:00.000000000 +0000 @@ -70,7 +70,7 @@ 'script/pp', 'script/tkpp', ], - DIR => $have_cc ? [ 'myldr' ] : [], + DIR => [ 't/data', $have_cc ? 'myldr' : () ], NEEDS_LINKING => $have_cc, META_MERGE => { diff -Nru libpar-packer-perl-1.057/MANIFEST libpar-packer-perl-1.058/MANIFEST --- libpar-packer-perl-1.057/MANIFEST 2022-11-29 11:32:01.000000000 +0000 +++ libpar-packer-perl-1.058/MANIFEST 2023-06-12 09:10:03.000000000 +0000 @@ -70,6 +70,8 @@ t/80-doublecolon.t t/85-crt-glob.t t/85-myfile.t +t/86-xs-exe.t +t/86-xs-par.t t/90-gh41.t t/90-gh66.t t/90-rt101800.t @@ -84,11 +86,14 @@ t/90-rt129312.t t/90-rt130685.t t/90-rt59710.t -t/Double/Colon.pm -t/Double/Colon/Barnie.pm -t/Double/Colon/Foo/Bar/Quux.pm -t/Double/Colon/Fred.pm -t/Myfile.pm +t/data/lib/Double/Colon.pm +t/data/lib/Double/Colon/Barnie.pm +t/data/lib/Double/Colon/Foo/Bar/Quux.pm +t/data/lib/Double/Colon/Fred.pm +t/data/lib/Myfile.pm +t/data/lib/XSFoo.pm +t/data/Makefile.PL +t/data/XSFoo.xs t/test-proc t/utils.pl META.yml Module YAML meta-data (added by MakeMaker) diff -Nru libpar-packer-perl-1.057/MANIFEST.SKIP libpar-packer-perl-1.058/MANIFEST.SKIP --- libpar-packer-perl-1.057/MANIFEST.SKIP 2022-01-25 15:17:05.000000000 +0000 +++ libpar-packer-perl-1.058/MANIFEST.SKIP 2023-06-07 12:53:17.000000000 +0000 @@ -62,10 +62,10 @@ \B\.prove$ # Avoid MYMETA files -^MYMETA\. +MYMETA\. # Temp files for new META -^META_new\.(?:json|yml) +META_new\.(?:json|yml) # Avoid travis-ci.org file ^\.travis\.yml @@ -77,7 +77,6 @@ ^contrib/automated_pp_test/pp_switch_tests ^myldr/Makefile$ ^myldr/Makefile\.old$ -^myldr/MYMETA\. ^myldr/Dynamic.pm ^myldr/Static.pm ^myldr/boot$ @@ -91,10 +90,10 @@ ^myldr/usernamefrompwuid.h$ ^myldr/.*\.pdb$ ^myldr/usernamefrompwuid\.h$ +^none/ ^package/parl-.*$ ^script/parl(?:\.(?!pod).+)?$ ^script/parldyn(?:\.(?!pod).+)?$ -^MYMETA\. ^a\.out$ .*\.o$ .*\.obj$ diff -Nru libpar-packer-perl-1.057/META.json libpar-packer-perl-1.058/META.json --- libpar-packer-perl-1.057/META.json 2022-11-29 11:32:01.000000000 +0000 +++ libpar-packer-perl-1.058/META.json 2023-06-12 09:10:03.000000000 +0000 @@ -78,6 +78,6 @@ }, "x_MailingList" : "mailto:par@perl.org" }, - "version" : "1.057", - "x_serialization_backend" : "JSON::PP version 4.12" + "version" : "1.058", + "x_serialization_backend" : "JSON::PP version 4.16" } diff -Nru libpar-packer-perl-1.057/META.yml libpar-packer-perl-1.058/META.yml --- libpar-packer-perl-1.057/META.yml 2022-11-29 11:32:01.000000000 +0000 +++ libpar-packer-perl-1.058/META.yml 2023-06-12 09:10:03.000000000 +0000 @@ -48,5 +48,5 @@ MailingList: mailto:par@perl.org bugtracker: https://github.com/rschupp/PAR-Packer/issues repository: git://github.com/rschupp/PAR-Packer.git -version: '1.057' +version: '1.058' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -Nru libpar-packer-perl-1.057/script/par.pl libpar-packer-perl-1.058/script/par.pl --- libpar-packer-perl-1.057/script/par.pl 2022-11-24 12:52:27.000000000 +0000 +++ libpar-packer-perl-1.058/script/par.pl 2023-05-24 09:18:53.000000000 +0000 @@ -316,10 +316,6 @@ $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } - elsif ( $fullname =~ m|^/?shlib/| and defined $ENV{PAR_TEMP} ) { - my $filename = _save_as("$basename$ext", $buf, 0755); - outs("SHLIB: $filename\n"); - } else { $ModuleCache{$fullname} = { buf => $buf, @@ -715,7 +711,6 @@ next unless $member_name =~ m{ ^ /?shlib/ - (?:$Config::Config{version}/)? (?:$Config::Config{archname}/)? ([^/]+) $ diff -Nru libpar-packer-perl-1.057/t/80-doublecolon.t libpar-packer-perl-1.058/t/80-doublecolon.t --- libpar-packer-perl-1.057/t/80-doublecolon.t 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/80-doublecolon.t 2023-06-06 11:52:00.000000000 +0000 @@ -34,7 +34,7 @@ while (my ($M, $exp) = each %expected) { - my $exe = pp_ok(-I => "t", -M => $M, + my $exe = pp_ok(-I => "t/blib/lib", -M => $M, -e => q[print qq[testing 'pp -M Foo::' and variants\n]]); my $zip = Archive::Zip->new(); diff -Nru libpar-packer-perl-1.057/t/85-myfile.t libpar-packer-perl-1.058/t/85-myfile.t --- libpar-packer-perl-1.057/t/85-myfile.t 2020-03-18 08:10:27.000000000 +0000 +++ libpar-packer-perl-1.058/t/85-myfile.t 2023-06-06 11:52:00.000000000 +0000 @@ -11,7 +11,7 @@ plan tests => 6; -my $exe = pp_ok(-I => "t", -e => <<'...'); +my $exe = pp_ok(-I => "t/blib/lib", -e => <<'...'); use Cwd; use Data::Dumper; use Myfile; diff -Nru libpar-packer-perl-1.057/t/86-xs-exe.t libpar-packer-perl-1.058/t/86-xs-exe.t --- libpar-packer-perl-1.057/t/86-xs-exe.t 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/86-xs-exe.t 2023-06-07 13:47:23.000000000 +0000 @@ -0,0 +1,30 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +require "./t/utils.pl"; + +plan tests => 6; + +my $exe = pp_ok(-I => "t/blib/lib", -e => <<'...'); +use XSFoo; +XSFoo::hello(); + +use DynaLoader; +print qq[dl_shared_objects = @DynaLoader::dl_shared_objects\n]; +print qq[dl_modules = @DynaLoader::dl_modules\n]; +... + +my ($out, $err) = run_ok($exe); +like($out, qr/greetings from XSFoo/, "output from XSFoo::hello matches"); + +diag($out); +$out =~ s:\\:/:g; +my ($shared_objects) = $out =~ /^dl_shared_objects = (.*)$/m; +ok($shared_objects, "dl_shared_objects found"); +my ($modules) = $out =~ /^dl_modules = (.*)$/m; +ok($modules, "dl_modules found"); +ok((grep { $_ eq "XSFoo" } split(" ", $modules, -1)), + "dl_modules contains XSFoo DLL"); diff -Nru libpar-packer-perl-1.057/t/86-xs-par.t libpar-packer-perl-1.058/t/86-xs-par.t --- libpar-packer-perl-1.057/t/86-xs-par.t 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/86-xs-par.t 2023-06-07 14:33:54.000000000 +0000 @@ -0,0 +1,33 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +require "./t/utils.pl"; + +plan tests => 3; + +# use an absolute pathname in case a test chdir()s +my $pp = catfile(getcwd(), qw( blib script pp )); + +# runs 1 test +sub pp_p_ok +{ + $ENV{PAR_TMPDIR} ||= tempdir(TMPDIR => 1, CLEANUP => 1); + my $par = catfile($ENV{PAR_TMPDIR},"my.par"); + unlink($par); + + die "system(LIST) with double quotes in LIST doesn't work on Windows: @_" + if grep { /"/ } @_; + system($^X, "-Mblib", $pp, -p => -o => $par, @_); + ok( $? == 0 && -f $par, qq[successfully packed "$par"] ); + + return $par; +} + +my $par = pp_p_ok(-I => "t/blib/lib", -e => "use XSFoo;"); + +my ($out, $err) = run_ok($^X, "-MPAR=$par", -e => "use XSFoo; XSFoo::hello()"); +like($out, qr/greetings from XSFoo/, "output from XSFoo::hello matches"); + diff -Nru libpar-packer-perl-1.057/t/data/lib/Double/Colon/Barnie.pm libpar-packer-perl-1.058/t/data/lib/Double/Colon/Barnie.pm --- libpar-packer-perl-1.057/t/data/lib/Double/Colon/Barnie.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/Double/Colon/Barnie.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,2 @@ +package Double::Colon::Barnie; +1; diff -Nru libpar-packer-perl-1.057/t/data/lib/Double/Colon/Foo/Bar/Quux.pm libpar-packer-perl-1.058/t/data/lib/Double/Colon/Foo/Bar/Quux.pm --- libpar-packer-perl-1.057/t/data/lib/Double/Colon/Foo/Bar/Quux.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/Double/Colon/Foo/Bar/Quux.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,2 @@ +package Double::Colon::Foo::Bar::Quux; +1; diff -Nru libpar-packer-perl-1.057/t/data/lib/Double/Colon/Fred.pm libpar-packer-perl-1.058/t/data/lib/Double/Colon/Fred.pm --- libpar-packer-perl-1.057/t/data/lib/Double/Colon/Fred.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/Double/Colon/Fred.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,2 @@ +package Double::Colon::Fred; +1; diff -Nru libpar-packer-perl-1.057/t/data/lib/Double/Colon.pm libpar-packer-perl-1.058/t/data/lib/Double/Colon.pm --- libpar-packer-perl-1.057/t/data/lib/Double/Colon.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/Double/Colon.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,2 @@ +package Double::Colon; +1; diff -Nru libpar-packer-perl-1.057/t/data/lib/Myfile.pm libpar-packer-perl-1.058/t/data/lib/Myfile.pm --- libpar-packer-perl-1.057/t/data/lib/Myfile.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/Myfile.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,11 @@ +package Myfile; + +use strict; +use warnings; +use Cwd; + +sub from_caller { Cwd::realpath(_from_caller()) } +sub _from_caller { (caller)[1] } +sub from_file { Cwd::realpath(__FILE__) } + +1; diff -Nru libpar-packer-perl-1.057/t/data/lib/XSFoo.pm libpar-packer-perl-1.058/t/data/lib/XSFoo.pm --- libpar-packer-perl-1.057/t/data/lib/XSFoo.pm 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/lib/XSFoo.pm 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,15 @@ +package XSFoo; + +use 5.008009; +use strict; +use warnings; + +require Exporter; + +our @ISA = qw(Exporter); +our $VERSION = '0.01'; + +require XSLoader; +XSLoader::load('XSFoo', $VERSION); + +1; diff -Nru libpar-packer-perl-1.057/t/data/Makefile.PL libpar-packer-perl-1.058/t/data/Makefile.PL --- libpar-packer-perl-1.057/t/data/Makefile.PL 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/Makefile.PL 2023-06-07 12:53:01.000000000 +0000 @@ -0,0 +1,17 @@ +use 5.008009; +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'XSFoo', + VERSION_FROM => 'lib/XSFoo.pm', + PREREQ_PM => {}, + ABSTRACT => 'Test files for PAR::Packer', + AUTHOR => 'Roderich Schupp ', + LICENSE => 'perl', + LIBS => [''], + DEFINE => '', + INC => '-I.', + + INST_ARCHLIB => '$(INST_LIB)', + clean => { FILES => '../blib' }, +); diff -Nru libpar-packer-perl-1.057/t/data/XSFoo.xs libpar-packer-perl-1.058/t/data/XSFoo.xs --- libpar-packer-perl-1.057/t/data/XSFoo.xs 1970-01-01 00:00:00.000000000 +0000 +++ libpar-packer-perl-1.058/t/data/XSFoo.xs 2023-06-06 11:52:00.000000000 +0000 @@ -0,0 +1,14 @@ +#define PERL_NO_GET_CONTEXT +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/*#include "ppport.h" */ + + +MODULE = XSFoo PACKAGE = XSFoo + +void +hello() + CODE: + printf("greetings from XSFoo\n"); diff -Nru libpar-packer-perl-1.057/t/Double/Colon/Barnie.pm libpar-packer-perl-1.058/t/Double/Colon/Barnie.pm --- libpar-packer-perl-1.057/t/Double/Colon/Barnie.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/Double/Colon/Barnie.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -package Double::Colon::Barnie; -1; diff -Nru libpar-packer-perl-1.057/t/Double/Colon/Foo/Bar/Quux.pm libpar-packer-perl-1.058/t/Double/Colon/Foo/Bar/Quux.pm --- libpar-packer-perl-1.057/t/Double/Colon/Foo/Bar/Quux.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/Double/Colon/Foo/Bar/Quux.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -package Double::Colon::Foo::Bar::Quux; -1; diff -Nru libpar-packer-perl-1.057/t/Double/Colon/Fred.pm libpar-packer-perl-1.058/t/Double/Colon/Fred.pm --- libpar-packer-perl-1.057/t/Double/Colon/Fred.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/Double/Colon/Fred.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -package Double::Colon::Fred; -1; diff -Nru libpar-packer-perl-1.057/t/Double/Colon.pm libpar-packer-perl-1.058/t/Double/Colon.pm --- libpar-packer-perl-1.057/t/Double/Colon.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/Double/Colon.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -package Double::Colon; -1; diff -Nru libpar-packer-perl-1.057/t/Myfile.pm libpar-packer-perl-1.058/t/Myfile.pm --- libpar-packer-perl-1.057/t/Myfile.pm 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/Myfile.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -package Myfile; - -use strict; -use warnings; -use Cwd; - -sub from_caller { Cwd::realpath(_from_caller()) } -sub _from_caller { (caller)[1] } -sub from_file { Cwd::realpath(__FILE__) } - -1; diff -Nru libpar-packer-perl-1.057/t/utils.pl libpar-packer-perl-1.058/t/utils.pl --- libpar-packer-perl-1.057/t/utils.pl 2020-03-08 22:54:55.000000000 +0000 +++ libpar-packer-perl-1.058/t/utils.pl 2023-06-07 14:34:51.000000000 +0000 @@ -22,7 +22,7 @@ die "system(LIST) with double quotes in LIST doesn't work on Windows: @_" if grep { /"/ } @_; - system($^X, $pp, -o => $exe, @_); + system($^X, "-Mblib", $pp, -o => $exe, @_); # Note: -x is unreliable on Windows ok( $? == 0 && -f $exe, qq[successfully packed "$exe"] );