Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-PAR-Packer for openSUSE:Factory
checked in at 2024-05-15 21:26:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PAR-Packer (Old)
and /work/SRC/openSUSE:Factory/.perl-PAR-Packer.new.1880 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PAR-Packer"
Wed May 15 21:26:20 2024 rev:26 rq:1173975 version:1.63.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PAR-Packer/perl-PAR-Packer.changes
2024-01-04 16:47:21.202072541 +0100
+++
/work/SRC/openSUSE:Factory/.perl-PAR-Packer.new.1880/perl-PAR-Packer.changes
2024-05-15 21:26:53.858245552 +0200
@@ -1,0 +2,6 @@
+Fri Mar 22 16:23:00 UTC 2024 - Tina Müller <[email protected]>
+
+- updated to 1.063
+ see /usr/share/doc/packages/perl-PAR-Packer/Changes
+
+-------------------------------------------------------------------
Old:
----
PAR-Packer-1.061.tar.gz
New:
----
PAR-Packer-1.063.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-PAR-Packer.spec ++++++
--- /var/tmp/diff_new_pack.Fd2GSI/_old 2024-05-15 21:26:54.426266111 +0200
+++ /var/tmp/diff_new_pack.Fd2GSI/_new 2024-05-15 21:26:54.426266111 +0200
@@ -18,9 +18,10 @@
%define cpan_name PAR-Packer
Name: perl-PAR-Packer
-Version: 1.61.0
+Version: 1.63.0
Release: 0
-%define cpan_version 1.061
+# 1.063 -> normalize -> 1.63.0
+%define cpan_version 1.063
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: PAR Packager
URL: https://metacpan.org/release/%{cpan_name}
@@ -32,11 +33,12 @@
BuildRequires: perl(Compress::Zlib) >= 1.30
BuildRequires: perl(Digest::SHA) >= 5.40
BuildRequires: perl(ExtUtils::CBuilder)
+BuildRequires: perl(ExtUtils::MakeMaker) >= 6.31
BuildRequires: perl(Getopt::ArgvFile) >= 1.07
BuildRequires: perl(IO::Compress::Gzip)
BuildRequires: perl(IPC::Run3) >= 0.048
BuildRequires: perl(Module::ScanDeps) >= 1.21
-BuildRequires: perl(PAR) >= 1.016
+BuildRequires: perl(PAR) >= 1.20.0
BuildRequires: perl(PAR::Dist) >= 0.22
Requires: perl(Archive::Zip) >= 1.02
Requires: perl(Compress::Zlib) >= 1.30
@@ -44,7 +46,7 @@
Requires: perl(Getopt::ArgvFile) >= 1.07
Requires: perl(IO::Compress::Gzip)
Requires: perl(Module::ScanDeps) >= 1.21
-Requires: perl(PAR) >= 1.016
+Requires: perl(PAR) >= 1.20.0
Requires: perl(PAR::Dist) >= 0.22
Provides: perl(App::Packer::PAR) = 0.91
Provides: perl(PAR::Filter) = 0.03
@@ -56,7 +58,7 @@
Provides: perl(PAR::Packer) = %{version}
Provides: perl(PAR::StrippedPARL::Base) = 0.975
Provides: perl(pp) = 0.992
-%define __perllib_provides /bin/true
+%undefine __perllib_provides
Recommends: perl(Module::Signature)
Recommends: perl(Tk)
Recommends: perl(Tk::ColoredButton)
++++++ PAR-Packer-1.061.tar.gz -> PAR-Packer-1.063.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/Changes new/PAR-Packer-1.063/Changes
--- old/PAR-Packer-1.061/Changes 2023-12-15 14:25:37.000000000 +0100
+++ new/PAR-Packer-1.063/Changes 2024-03-15 13:44:42.000000000 +0100
@@ -1,4 +1,61 @@
-1.060 2023-07-20
+1.063 2024-03-15
+
+- Fixes #86 "-l somelib.dll doesn't work in recent PAR::Packer versions"
+
+ par_setup_libpath() in myldr/mktmpdir.c used to set all known
+ "search path for DLLs" environment variables (e.g. LD_LIBRARY_PATH
+ on Linux). The search path is set up so that the first directory
+ searched is a packed executable's cache directory (where the shared
+ perl library will be extracted to, also all packed "external" DLLs).
+ In 2017 (by 2ac7078) it was changed to only set the variable
+ relevant for the OS where PAR::Packer was build on, given by
+ $Config{ldlibpthname}. But some perl distributions
+ (e.g. Strawberry on Windows) do not specify $Config{ldlibpthname}.
+
+ Hardwire "PATH" for MSWin32 and otherwise complain if this Config
+ variable is undefined.
+
+ Add t/85-ldlibpthname.t: check that the value of the environment
+ variable for searching for DLLs, usually $ENV{$Config{ldlibpthname}},
+ starts with the cache directory, $ENV{PAR_TEMP}.
+
+- Skip t/87-xs-cross.t if ExtUtils::Depends 0.8001 is installed.
+ This version fails to build and install the "import lib"
+ corresponding to XSQuux.xs.dll and hence fails to build XSBar.xs.dll.
+
+ The test works on GitHub CI, because the "strawberry" perl distribution
+ installed there comes with ExtUtils::Depends version 0.8000
+ (ie. **not** current) pre-installed.
+
+1.062 2024-03-05
+
+- Fix #84: PAR::Packer packaged scripts lose the ability to parse UTF-8
arguments from the command line
+
+ myldr/boot.c passes its arguments in argv (except argv[0]) down to the custom
+ perl interpreter using _spawnvp(). But this argv has already been converted
to the
+ local code page, so the custom interpreter can't get it back using
+ GetCommandLineW(). Convert myldr/boot.c to use GetCommandLineW() and
+ CommandLineToArgvW() to get the "real" (UTF-16) command line and pass
+ that down via _wspawnvp(). Convert shell_quote() (to escape embedded
+ blanks, double quotes etc in the arguments) from using char to wchar_t.
+ Thanks to @fengzyf for the report and most of the work.
+
+- pod: explain how REGEX is applied in "--modfilter=FILTER=REGEX"
+
+- require PAR >= 1.020
+
+- add new test t/87-xs-cross.t to investigate rschupp/PAR#11
+
+- move some test modules around and fix up tests accordingly
+
+- bump version of actions/checkout
+
+1.061 2023-12-22
+
+- no change (except for Changes) to sync GitHub tag and CPAN release
+ after a bungled upload to CPAN
+
+1.060 2023-12-15
- automated_pp_test: use unique filenames for all pp generated executables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/MANIFEST
new/PAR-Packer-1.063/MANIFEST
--- old/PAR-Packer-1.061/MANIFEST 2023-12-15 15:03:10.000000000 +0100
+++ new/PAR-Packer-1.063/MANIFEST 2024-03-15 13:55:28.000000000 +0100
@@ -17,6 +17,7 @@
contrib/pp_osx_codesign_fix/pp_osx_codesign_fix.c
contrib/stdio/Stdio.pm
contrib/stdio/Stdio_readme.txt
+cpanfile
lib/App/Packer/PAR.pm
lib/PAR/Filter.pm
lib/PAR/Filter/Bleach.pm
@@ -68,9 +69,11 @@
t/40-packer_cd_option.t
t/80-doublecolon.t
t/85-crt-glob.t
+t/85-ldlibpthname.t
t/85-myfile.t
t/86-xs-exe.t
t/86-xs-par.t
+t/87-xs-cross.t
t/90-exitcode.t
t/90-gh41.t
t/90-gh66.t
@@ -91,9 +94,15 @@
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/data/XSBar/Makefile.PL
+t/data/XSBar/XSBar.pm
+t/data/XSBar/XSBar.xs
+t/data/XSFoo/lib/XSFoo.pm
+t/data/XSFoo/Makefile.PL
+t/data/XSFoo/XSFoo.xs
+t/data/XSQuux/Makefile.PL
+t/data/XSQuux/XSQuux.pm
+t/data/XSQuux/XSQuux.xs
t/test-proc
t/utils.pl
META.yml Module YAML meta-data (added by
MakeMaker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/META.json
new/PAR-Packer-1.063/META.json
--- old/PAR-Packer-1.061/META.json 2023-12-15 15:03:10.000000000 +0100
+++ new/PAR-Packer-1.063/META.json 2024-03-15 13:55:28.000000000 +0100
@@ -4,7 +4,7 @@
"Audrey Tang <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter
version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter
version 2.150010",
"license" : [
"perl_5"
],
@@ -31,6 +31,7 @@
"DynaLoader" : "0",
"ExtUtils::CBuilder" : "0",
"ExtUtils::Embed" : "0",
+ "ExtUtils::MakeMaker" : "6.31",
"File::Basename" : "0",
"File::Glob" : "0",
"File::Spec::Functions" : "0"
@@ -53,7 +54,7 @@
"Getopt::ArgvFile" : "1.07",
"IO::Compress::Gzip" : "0",
"Module::ScanDeps" : "1.21",
- "PAR" : "1.016",
+ "PAR" : "1.020",
"PAR::Dist" : "0.22",
"Text::ParseWords" : "0",
"perl" : "5.008009"
@@ -78,6 +79,6 @@
},
"x_MailingList" : "mailto:[email protected]"
},
- "version" : "1.061",
+ "version" : "1.063",
"x_serialization_backend" : "JSON::PP version 4.16"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/META.yml
new/PAR-Packer-1.063/META.yml
--- old/PAR-Packer-1.061/META.yml 2023-12-15 15:03:10.000000000 +0100
+++ new/PAR-Packer-1.063/META.yml 2024-03-15 13:55:27.000000000 +0100
@@ -10,11 +10,12 @@
DynaLoader: '0'
ExtUtils::CBuilder: '0'
ExtUtils::Embed: '0'
+ ExtUtils::MakeMaker: '6.31'
File::Basename: '0'
File::Glob: '0'
File::Spec::Functions: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version
2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -40,7 +41,7 @@
Getopt::ArgvFile: '1.07'
IO::Compress::Gzip: '0'
Module::ScanDeps: '1.21'
- PAR: '1.016'
+ PAR: '1.020'
PAR::Dist: '0.22'
Text::ParseWords: '0'
perl: '5.008009'
@@ -48,5 +49,5 @@
MailingList: mailto:[email protected]
bugtracker: https://github.com/rschupp/PAR-Packer/issues
repository: git://github.com/rschupp/PAR-Packer.git
-version: '1.061'
+version: '1.063'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/Makefile.PL
new/PAR-Packer-1.063/Makefile.PL
--- old/PAR-Packer-1.061/Makefile.PL 2023-08-21 13:52:27.000000000 +0200
+++ new/PAR-Packer-1.063/Makefile.PL 2024-03-13 23:12:44.000000000 +0100
@@ -15,7 +15,7 @@
exit 0;
}
-sub if_win { return ($^O eq 'MSWin32') ? @_ : (); }
+sub for_win32 { return ($^O eq 'MSWin32') ? @_ : (); }
my $have_cc = ExtUtils::CBuilder->new->have_compiler;
warn "No compiler found, won't generate 'script/parl$Config{_exe}!\n"
@@ -32,6 +32,7 @@
MIN_PERL_VERSION => '5.008009',
CONFIGURE_REQUIRES => {
+ 'ExtUtils::MakeMaker' => '6.31', # for INSTALL_BASE
'ExtUtils::Embed' => 0,
'ExtUtils::CBuilder' => 0,
'DynaLoader' => 0,
@@ -46,7 +47,7 @@
'Archive::Zip' => '1.02',
'Module::ScanDeps' => '1.21',
'PAR::Dist' => '0.22',
- 'PAR' => '1.016',
+ 'PAR' => '1.020',
'Digest::SHA' => '5.40',
'Text::ParseWords' => 0,
'Getopt::ArgvFile' => '1.07',
@@ -54,9 +55,12 @@
TEST_REQUIRES => {
'Test::More' => 0,
'IPC::Run3' => '0.048',
- # if_win(
- # 'Win32::Exe' => '0.17'),
+ for_win32(
+ 'ExtUtils::Depends' => 0,
+ # 'Win32::Exe' => '0.17'
+ ),
},
+ NEEDS_LINKING => $have_cc,
MAN1PODS => {
'script/par.pl' => 'blib/man1/par.pl.1',
@@ -65,13 +69,16 @@
$have_cc ? (
'script/parl.pod' => 'blib/man1/parl.1' ) : (),
},
- EXE_FILES => [
+ EXE_FILES => [
'script/par.pl',
'script/pp',
'script/tkpp',
],
- DIR => [ 't/data', $have_cc ? 'myldr' : () ],
- NEEDS_LINKING => $have_cc,
+ DIR => [
+ 't/data/XSFoo',
+ $have_cc ? 'myldr' : ()
+ ],
+ clean => { FILES => 't/data/blib' },
META_MERGE => {
'meta-spec' => { version => 2 },
@@ -86,7 +93,7 @@
'Tk::ColoredButton' => 0,
'Tk::EntryCheck' => 0,
'Tk::Getopt' => 0,
- if_win(
+ for_win32(
'Win32::Process' => 0),
},
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/cpanfile
new/PAR-Packer-1.063/cpanfile
--- old/PAR-Packer-1.061/cpanfile 1970-01-01 01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/cpanfile 2024-02-08 17:50:28.000000000 +0100
@@ -0,0 +1,37 @@
+requires 'Archive::Zip', '1.02';
+requires 'Compress::Zlib', '1.30';
+requires 'Digest::SHA', '5.40';
+requires 'File::Temp', '0.05';
+requires 'Getopt::ArgvFile', '1.07';
+requires 'IO::Compress::Gzip';
+requires 'Module::ScanDeps', '1.21';
+requires 'PAR', '1.016';
+requires 'PAR::Dist', '0.22';
+requires 'Text::ParseWords';
+requires 'perl', '5.008009';
+
+recommends 'Digest';
+recommends 'Module::Signature';
+recommends 'Tk';
+recommends 'Tk::ColoredButton';
+recommends 'Tk::EntryCheck';
+recommends 'Tk::Getopt';
+
+on configure => sub {
+ requires 'DynaLoader';
+ requires 'ExtUtils::CBuilder';
+ requires 'ExtUtils::Embed';
+ requires 'ExtUtils::Depends';
+ requires 'File::Basename';
+ requires 'File::Glob';
+ requires 'File::Spec::Functions';
+};
+
+on build => sub {
+ requires 'ExtUtils::MakeMaker';
+};
+
+on test => sub {
+ requires 'IPC::Run3', '0.048';
+ requires 'Test::More';
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/lib/PAR/Packer.pm
new/PAR-Packer-1.063/lib/PAR/Packer.pm
--- old/PAR-Packer-1.061/lib/PAR/Packer.pm 2023-12-15 15:02:35.000000000
+0100
+++ new/PAR-Packer-1.063/lib/PAR/Packer.pm 2024-03-15 13:54:58.000000000
+0100
@@ -3,7 +3,7 @@
use strict;
use warnings;
-our $VERSION = '1.061';
+our $VERSION = '1.063';
=head1 NAME
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/lib/pp.pm
new/PAR-Packer-1.063/lib/pp.pm
--- old/PAR-Packer-1.061/lib/pp.pm 2023-12-08 15:58:54.000000000 +0100
+++ new/PAR-Packer-1.063/lib/pp.pm 2023-12-24 14:50:07.000000000 +0100
@@ -331,14 +331,20 @@
environment variable C<PAR_VERBATIM> to C<1>.
Since PAR 0.958, you can use an optional regular expression (I<REGEX> above)
-to select the files in the archive which should be filtered. Example:
+to select the files in the archive which should be filtered. The regular
expression
+is matched against module names as they would appear as keys in %INC,
+e.g. C<Foo/Bar.pm> for module C<Foo::Bar>. Examples:
- pp -o foo.exe -F Bleach=warnings\.pm$ foo.pl
+ pp -o foo.exe -F 'Bleach=warnings\.pm$' foo.pl
This creates a binary executable F<foo.exe> from F<foo.pl> packaging all files
as usual except for files ending in C<warnings.pm> which are filtered with
L<PAR::Filter::Bleach>.
+ pp -o foo.exe -F 'Bleach=^(?!Win32/)' foo.pl
+
+This "bleaches" all modules B<except> those in the C<Win32::> namespace.
+
Note: The same restriction on C<__DATA__> sections holds as for B<--filter>.
=item B<-M>, B<--module>=I<MODULE>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/myldr/Makefile.PL
new/PAR-Packer-1.063/myldr/Makefile.PL
--- old/PAR-Packer-1.061/myldr/Makefile.PL 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/myldr/Makefile.PL 2024-03-15 13:19:11.000000000
+0100
@@ -230,10 +230,18 @@
sub MY::postamble
{
+ # Strawberry perl doesn't set $Config{ldlibpthname}
+ my $ldlibpthname = $^O eq 'MSWin32' ? "PATH" : $Config{ldlibpthname};
+ unless ($ldlibpthname) {
+ warn "\$Config{ldlibpthname} is not available for your OS ($^O)".
+ "- PAR::Packer functionality may be limited";
+ $ldlibpthname = "Config_ldlibpthname_not_available";
+ }
+
my $make_frag = <<"EOT";
LD=$ld
CC=$cc
-CFLAGS=$cflags -DLDLIBPTHNAME=\\"$Config{ldlibpthname}\\"
-DPARL_EXE=\\"parl$exe\\" -DPAR_PACKER_VERSION=\\"\$(VERSION)\\"
+CFLAGS=$cflags -DLDLIBPTHNAME=$ldlibpthname -DPARL_EXE=parl$exe
-DPAR_PACKER_VERSION=\$(VERSION)
OPTIMIZE=$optimize
LDFLAGS=$Config{ldflags}
PERL_LDFLAGS=$ldflags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/myldr/boot.c
new/PAR-Packer-1.063/myldr/boot.c
--- old/PAR-Packer-1.061/myldr/boot.c 2023-08-21 13:52:27.000000000 +0200
+++ new/PAR-Packer-1.063/myldr/boot.c 2024-03-13 23:47:03.000000000 +0100
@@ -1,7 +1,11 @@
#undef readdir
-#ifdef _MSC_VER
-#include <io.h>
+#ifdef WIN32
+#include <windows.h>
+#include <wchar.h>
+#include <stdio.h>
+#include <shellapi.h>
+#include <stringapiset.h>
#else
#include <sys/types.h>
#include <unistd.h>
@@ -148,30 +152,30 @@
}
/* algorithm stolen from Win32::ShellQuote, in particular quote_literal() */
-char* shell_quote(const char *src)
+wchar_t* shell_quote_wide(const wchar_t *src)
{
/* some characters from src may be replaced with two chars,
* add enclosing quotes and trailing \0 */
- char *dst = malloc(2 * strlen(src) + 3);
+ wchar_t *dst = malloc((2 * wcslen(src) + 3) * sizeof(wchar_t));
- const char *p = src;
- char *q = dst;
- char c;
+ const wchar_t *p = src;
+ wchar_t *q = dst;
+ wchar_t c;
- *q++ = '"'; /* opening quote */
+ *q++ = L'"'; /* opening quote */
- while (c = *p)
+ while ((c = *p))
{
- if (c == '\\')
+ if (c == L'\\')
{
- int n = strspn(p, "\\"); /* span of backslashes starting at p */
+ int n = wcsspn(p, L"\\"); /* span of backslashes starting at p
*/
- memcpy(q, p, n); /* copy the span */
+ wmemcpy(q, p, n);
q += n;
- if (p[n] == '\0' || p[n] == '"') /* span ends in quote or NUL */
+ if (p[n] == L'\0' || p[n] == L'"') /* span ends in quote or NUL */
{
- memcpy(q, p, n); /* copy the span once more */
+ wmemcpy(q, p, n);
q += n;
}
@@ -179,20 +183,77 @@
continue;
}
- if (c == '"')
- *q++ = '\\'; /* escape the following quote */
+ if (c == L'"')
+ *q++ = L'\\'; /* escape the following quote */
*q++ = c;
p++;
}
- *q++ = '"'; /* closing quote */
- *q++ = '\0';
+ *q++ = L'"'; /* closing quote */
+ *q++ = L'\0';
return dst;
}
+
+void spawn_perl(const char *argv0, const char *my_perl, const char *stmpdir)
+{
+ typedef BOOL (WINAPI *pALLOW)(DWORD);
+ HINSTANCE hinstLib;
+ pALLOW ProcAdd;
+#ifndef ASFW_ANY
+#define ASFW_ANY -1
#endif
+ LPWSTR *w_argv;
+ LPWSTR w_my_perl;
+ int w_argc, i, len, rc;
+
+ hinstLib = LoadLibrary("user32");
+ if (hinstLib != NULL) {
+ ProcAdd = (pALLOW) GetProcAddress(hinstLib,
"AllowSetForegroundWindow");
+ if (ProcAdd != NULL)
+ {
+ (ProcAdd)(ASFW_ANY);
+ }
+ }
+
+ w_argv = CommandLineToArgvW(GetCommandLineW(), &w_argc);
+ if (w_argv == NULL)
+ par_die("%s: GetCommandLineW or CommandLineToArgvW failed: $^E=%u",
+ argv0, GetLastError());
+
+ /* convert my_perl from local codepage to UTF-16 */
+ len = MultiByteToWideChar(CP_THREAD_ACP, 0, my_perl, -1, NULL, 0);
+ if (len == 0)
+ par_die("%s: failed to convert string to UTF-16: $^E=%u",
+ argv0, GetLastError());
+ w_my_perl = malloc(len * sizeof(wchar_t)); /* len includes trailing
NUL */
+ len = MultiByteToWideChar(CP_THREAD_ACP, 0, my_perl, -1, w_my_perl, len);
+ w_argv[0] = w_my_perl;
+
+ for (i = 0; i < w_argc; i++)
+ {
+ len = wcslen(w_argv[i]);
+ if (len == 0
+ || w_argv[i][len-1] == L'\\'
+ || wcspbrk(w_argv[i], L" \t\n\r\v\""))
+ {
+ w_argv[i] = shell_quote_wide(w_argv[i]);
+ }
+ }
-char pp_version_info[] = "@(#) Packed by PAR::Packer " PAR_PACKER_VERSION;
+ par_setenv("PAR_SPAWNED", "1");
+
+ rc = _wspawnvp(P_WAIT, w_my_perl, (const wchar_t* const*)w_argv);
+
+ free(w_my_perl);
+ LocalFree(w_argv);
+
+ par_cleanup(stmpdir);
+ exit(rc);
+}
+#endif
+
+char pp_version_info[] = "@(#) Packed by PAR::Packer "
stringify(PAR_PACKER_VERSION);
/* the contents of this string (in the executable myldr/boot)
* will be patched by script/par.pl if option "--clean" is used with pp
@@ -206,15 +267,6 @@
char *my_file;
char *my_perl;
char *my_prog;
-#ifdef WIN32
-typedef BOOL (WINAPI *pALLOW)(DWORD);
- HINSTANCE hinstLib;
- pALLOW ProcAdd;
- char **argp;
-#ifndef ASFW_ANY
-#define ASFW_ANY -1
-#endif
-#endif
par_init_env();
@@ -350,36 +402,10 @@
}
/* finally spawn the custom Perl interpreter */
- argv[0] = my_perl;
#ifdef WIN32
- hinstLib = LoadLibrary("user32");
- if (hinstLib != NULL) {
- ProcAdd = (pALLOW) GetProcAddress(hinstLib,
"AllowSetForegroundWindow");
- if (ProcAdd != NULL)
- {
- (ProcAdd)(ASFW_ANY);
- }
- }
-
- par_setenv("PAR_SPAWNED", "1");
-
- /* quote argv strings if necessary, cf. Win32::ShellQuote */
- for (argp = argv; *argp; argp++)
- {
- int len = strlen(*argp);
- if ( len == 0
- || (*argp)[len-1] == '\\'
- || strpbrk(*argp, " \t\n\r\v\"") )
- {
- *argp = shell_quote(*argp);
- }
- }
-
- rc = spawnvp(P_WAIT, my_perl, (char* const*)argv);
-
- par_cleanup(stmpdir);
- exit(rc);
+ spawn_perl(argv[0], my_perl, stmpdir); /* no return */
#else
+ argv[0] = my_perl;
execvp(my_perl, argv);
par_die("%s: exec of %s (custom Perl interpreter) failed (errno=%i)\n",
argv[0], my_perl, errno);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/myldr/internals.c
new/PAR-Packer-1.063/myldr/internals.c
--- old/PAR-Packer-1.061/myldr/internals.c 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/myldr/internals.c 2024-03-13 23:44:21.000000000
+0100
@@ -51,7 +51,7 @@
* this scalar so that a packed script may refer to the version
* of PAR::Packer it was built with.
*/
- sv_setpv(get_sv("PAR::Packer::VERSION", GV_ADD), PAR_PACKER_VERSION);
+ sv_setpv(get_sv("PAR::Packer::VERSION", GV_ADD),
stringify(PAR_PACKER_VERSION));
TAINT_NOT;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/myldr/mktmpdir.c
new/PAR-Packer-1.063/myldr/mktmpdir.c
--- old/PAR-Packer-1.061/myldr/mktmpdir.c 2023-08-31 16:17:24.000000000
+0200
+++ new/PAR-Packer-1.063/myldr/mktmpdir.c 2024-03-14 15:10:21.000000000
+0100
@@ -63,21 +63,20 @@
void par_setup_libpath( const char * stmpdir )
{
- const char *val = NULL;
- char *ld_path = LDLIBPTHNAME;
- char *ld_path_env = NULL;
+ const char *ldlibpthname = stringify(LDLIBPTHNAME);
+ const char *val;
- if ( (val = par_getenv(ld_path)) == NULL || strlen(val) == 0 ) {
- par_setenv(ld_path, stmpdir);
+ if ( (val = par_getenv(ldlibpthname)) == NULL || strlen(val) == 0 ) {
+ par_setenv(ldlibpthname, stmpdir);
}
- else if ( !strstr(val, stmpdir) ) {
+ else {
/* prepend stmpdir to (value of) environment variable */
- ld_path_env = malloc(
+ char *new_val = malloc(
strlen(stmpdir) + strlen(path_sep) + strlen(val) + 1);
sprintf(
- ld_path_env, "%s%s%s",
+ new_val, "%s%s%s",
stmpdir, path_sep, val);
- par_setenv(ld_path, ld_path_env);
+ par_setenv(ldlibpthname, new_val);
}
}
@@ -252,11 +251,12 @@
#else
#define STREQ(a,b) (strcmp(a,b) == 0)
#endif
+ const char *parl_exe = stringify(PARL_EXE);
int prog_len = strlen(progname);
- int parl_len = strlen(PARL_EXE);
+ int parl_len = strlen(parl_exe);
if (prog_len >= parl_len
- && STREQ(progname + prog_len - parl_len, PARL_EXE)
+ && STREQ(progname + prog_len - parl_len, parl_exe)
&& (prog_len == parl_len || progname[prog_len - parl_len - 1] ==
dir_sep[0])
&& argv[1]
&& strlen(argv[1]) >= 4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/myldr/mktmpdir.h
new/PAR-Packer-1.063/myldr/mktmpdir.h
--- old/PAR-Packer-1.061/myldr/mktmpdir.h 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/myldr/mktmpdir.h 2024-03-14 14:35:13.000000000
+0100
@@ -67,6 +67,9 @@
#define par_lstat stat
#endif
+#define _stringify(s) #s
+#define stringify(s) _stringify(s)
+
#if defined(WIN32) || defined(OS2)
static const char *dir_sep = "\\";
static const char *path_sep = ";";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/80-doublecolon.t
new/PAR-Packer-1.063/t/80-doublecolon.t
--- old/PAR-Packer-1.061/t/80-doublecolon.t 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/t/80-doublecolon.t 2024-02-08 17:50:28.000000000
+0100
@@ -34,7 +34,7 @@
while (my ($M, $exp) = each %expected)
{
- my $exe = pp_ok(-I => "t/blib/lib", -M => $M,
+ my $exe = pp_ok(-I => "t/data/lib", -M => $M,
-e => q[print qq[testing 'pp -M Foo::' and variants\n]]);
my $zip = Archive::Zip->new();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/85-ldlibpthname.t
new/PAR-Packer-1.063/t/85-ldlibpthname.t
--- old/PAR-Packer-1.061/t/85-ldlibpthname.t 1970-01-01 01:00:00.000000000
+0100
+++ new/PAR-Packer-1.063/t/85-ldlibpthname.t 2024-03-15 13:39:30.000000000
+0100
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Config;
+use Data::Dumper;
+
+use Test::More;
+require "./t/utils.pl";
+
+my $ldlibpthname = $^O eq 'MSWin32' ? "PATH" : $Config{ldlibpthname};
+
+plan skip_all => "\$Config{ldlibpthname} is not available for your OS ($^O)"
unless $ldlibpthname;
+plan tests => 3;
+
+my $exe = pp_ok(-e => <<"...");
+ use Data::Dumper;
+ my \$data = {
+ par_temp => \$ENV{PAR_TEMP},
+ ldlibpth => \$ENV{$ldlibpthname},
+ };
+ print Data::Dumper->new([\$data], ['data'])->Indent(1)->Useqq(1)->Dump();
+...
+
+my ($out) = run_ok($exe);
+our $data;
+eval $out;
+ok($data->{ldlibpth} =~ /^\Q$data->{par_temp}\E($|\Q$Config{path_sep}\E)/,
+ "PAR_TEMP is first item in $ldlibpthname as seen by packed executable")
+ or diag($out);
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/85-myfile.t
new/PAR-Packer-1.063/t/85-myfile.t
--- old/PAR-Packer-1.061/t/85-myfile.t 2023-08-21 13:52:27.000000000 +0200
+++ new/PAR-Packer-1.063/t/85-myfile.t 2024-02-08 17:50:28.000000000 +0100
@@ -11,7 +11,7 @@
plan tests => 6;
-my $exe = pp_ok(-I => "t/blib/lib", -e => <<'...');
+my $exe = pp_ok(-I => "t/data/lib", -e => <<'...');
use Cwd;
use Data::Dumper;
use Myfile;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/86-xs-exe.t
new/PAR-Packer-1.063/t/86-xs-exe.t
--- old/PAR-Packer-1.061/t/86-xs-exe.t 2023-08-21 13:52:27.000000000 +0200
+++ new/PAR-Packer-1.063/t/86-xs-exe.t 2024-03-13 23:12:44.000000000 +0100
@@ -8,7 +8,7 @@
plan tests => 6;
-my $exe = pp_ok(-I => "t/blib/lib", -e => <<'...');
+my $exe = pp_ok(-I => "t/data/blib/lib", -I => "t/data/blib/arch", -e =>
<<'...');
use XSFoo;
XSFoo::hello();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/86-xs-par.t
new/PAR-Packer-1.063/t/86-xs-par.t
--- old/PAR-Packer-1.061/t/86-xs-par.t 2023-08-21 13:52:27.000000000 +0200
+++ new/PAR-Packer-1.063/t/86-xs-par.t 2024-02-08 17:50:28.000000000 +0100
@@ -28,7 +28,8 @@
return $par;
}
-my $par = pp_p_ok(-I => "t/blib/lib", -e => "use XSFoo;");
+my $par = pp_p_ok(-I => "t/data/blib/lib", -I => "t/data/blib/arch",
+ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/87-xs-cross.t
new/PAR-Packer-1.063/t/87-xs-cross.t
--- old/PAR-Packer-1.061/t/87-xs-cross.t 1970-01-01 01:00:00.000000000
+0100
+++ new/PAR-Packer-1.063/t/87-xs-cross.t 2024-03-14 15:05:44.000000000
+0100
@@ -0,0 +1,174 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Config;
+use Cwd;
+use File::Spec::Functions;
+require "./t/utils.pl";
+
+plan skip_all => "Tests only relevant on Windows" unless $^O eq 'MSWin32';
+
+# Building XS modules XS{Quux,Bar} fails with the most current release
+# of ExtUtils::Depends (0.8001): it doesn't build (and install) the "import
lib"
+# corresponding to the XS DLL, e.g. XSQuux.a to XSQuux.xs.dll.
+# Without XSQuux.a installed, XSBar.xs.dll fails to link with
+# "undefined reference to `triple'".
+#
+# This happens at least for perl on Windows built with the mingw-w64
+# toolchain, e.g. Strawberry Perl. Note that the "strawberry" distribution
+# installed by shogo82148/actions-setup-perl on GitHub actions
+# comes with ExtUtils::Depends 0.8000 pre-installed for this very reason.
+#
+# Bug reports:
+# https://rt.cpan.org/Public/Bug/Display.html?id=147200
+# https://rt.cpan.org/Public/Bug/Display.html?id=45224#txn-2466235
+#
+# NOTE: This bug also prevents people building GNOME bindings
+# (for e.g. Pango, Cairo, Gtk2, Gtk3) with ExtUtils::Depends 0.8001.
+use version;
+require ExtUtils::Depends;
+plan skip_all => "Test XS modules fail to build with ExtUtils::Depends
$ExtUtils::Depends::VERSION"
+ unless version->parse($ExtUtils::Depends::VERSION) < v0.800.100;
+
+# This test creates two XS modules that demonstrate the problem
+# with the perl bindings for Gnome libraries: one glue DLL, XSBar.xs.dll,
+# calls a function implemented in another glue DLL, XSQuux.xs.dll
+# (i.e. this happens on the C level, **not** in perl callable functions).
+# In the Gnome stack almost all glue DLLs call functions from Glib.xs.dll
+# and e.g. Gtk2.xs.dll calls functions in Pango.xs.dll and Cairo.xs.dll.
+
+
+### debug helpers (Windows only)
+#use File::Find;
+#use IPC::Run3;
+#use Module::ScanDeps;
+#
+#sub show_tree
+#{
+# my ($top) = @_;
+# my @files;
+# find(sub { push @files, $File::Find::name if -f $_ }, $top);
+# diag(join("\n", "--- $top ---", (sort @files), "---"));
+#}
+#
+#sub show_dlls
+#{
+# my ($install_base, $mod_name) = @_;
+# my @mod_parts = split("::", $mod_name);
+# my $mod_dll = catfile($install_base, qw(lib perl5), $Config{archname},
+# qw(auto), @mod_parts,
"$mod_parts[-1].$Config{dlext}");
+# diag("XS module $mod_name => $mod_dll");
+#
+# my ($out, $err);
+# run3([qw(objdump -ax), $mod_dll], \undef, \$out, \$err);
+# if ($? != 0)
+# {
+# diag(qq["objdump -ax $mod_dll" failed:\n$err]);
+# return;
+# }
+# run3([$^X, "-nE", "print if /DLL Name.*/"], \$out, \$err, \$err);
+# if ($? != 0)
+# {
+# diag(qq[Extracting DLL names from $mod_dll failed:\n$err]);
+# return;
+# }
+# diag("$mod_dll links to:\n$err");
+#}
+
+
+my @checks = (
+ {
+ code => "use XSQuux; XSQuux::hello();",
+ exp => "hello from XSQuux",
+ },
+ {
+ code => "use XSBar; XSBar::hello();",
+ exp => "hello from XSBar",
+ },
+ {
+ code => "use XSBar; XSBar::calling_into_quux(42);",
+ exp => "calling into quux...\ntriple(42) = 126",
+ },
+);
+
+plan tests => 2 * 4 + 10 * @checks;
+
+
+# get $(MAKE) from the toplevel Makefile
+my $make;
+{
+ local $_;
+ open my $mk, "<", "Makefile" or die "can't open Makefile: $!";
+ while (<$mk>)
+ {
+ last if ($make) = /^MAKE\s*=\s*(\S+)/;
+ }
+ close $mk;
+}
+
+# create temporary directory to install modules into
+my $base = $ENV{PAR_TMPDIR} = tempdir(TMPDIR => 1, CLEANUP => 1);
+
+# prepend the new installations to the perl search path for all sub processes
+# The reason is that configuring XSBar requires an installed XSQuux:
+# - XSQuux/Install/Files.pm (read by ExtUtils::Depends::new() for its depends)
+# (this will add dependencies of XSQuux, though there are none this time)
+# - auto/XSQuux/XSQuux.a (added to LIBS by
ExtUtils::Depends::find_extra_libs())
+# (this causes XSBar.xs.dll to link to XSQuux.xs.dll)
+{
+ my $perl5lib = catdir($base, qw(lib perl5));
+ $perl5lib .= "$Config{path_sep}$ENV{PERL5LIB}" if $ENV{PERL5LIB};
+ $ENV{PERL5LIB} = $perl5lib;
+}
+
+my $cwd = getcwd();
+my ($exe, $out, $err);
+
+foreach my $mod (qw(XSQuux XSBar)) # must build XSQuux **before** XSBar
+{
+ diag("build and install $mod");
+ chdir(catdir($cwd, qw(t data), $mod)) or die "can't chdir to $mod source:
$!";
+ run_ok($^X, "Makefile.PL", "INSTALL_BASE=$base");
+ run_ok($make);
+ run_ok($make, "install");
+ run_ok($make, "clean");
+ # DEBUG show_tree($base);
+ # DEBUG show_dlls($base, $mod);
+
+}
+
+chdir($cwd) or die "can't chdir back to build dir: $!";
+
+
+# first round: run code (2 checks each)
+foreach (@checks)
+{
+ diag(qq[running "$_->{code}"...]);
+ ($out, $err) = run_ok($^X, "-e", $_->{code});
+ is($out, $_->{exp}, "check output");
+}
+
+# second round: pack code and run it twice (5 checks each)
+foreach (@checks)
+{
+ diag(qq[packing "$_->{code}"...]);
+ $exe = pp_ok(-e => $_->{code});
+ ($out, $err) = run_ok($exe);
+ is($out, $_->{exp}, "check output (first run)");
+
+ # run $exe again (with a populated cache directory)
+ ($out, $err) = run_ok($exe);
+ is($out, $_->{exp}, "check output (second run)");
+}
+
+# third round: pack code with "--clean" and run it (3 checks each)
+foreach (@checks)
+{
+ diag(qq[packing "$_->{code}" with --clean ...]);
+ $exe = pp_ok("--clean", -e => $_->{code});
+ ($out, $err) = run_ok($exe);
+ is($out, $_->{exp}, "check output (with --clean)");
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/90-rt129312.t
new/PAR-Packer-1.063/t/90-rt129312.t
--- old/PAR-Packer-1.061/t/90-rt129312.t 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/t/90-rt129312.t 2024-03-14 12:05:19.000000000
+0100
@@ -1,21 +1,15 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
use strict;
-use File::Spec::Functions;
-use Data::Dumper;
+use warnings;
use Test::More;
require "./t/utils.pl";
-if (eval { require Archive::Unzip::Burst; 1; })
-{
- plan skip_all => "Archive::Unzip::Burst detected";
- # Archive::Unzip::Burst can't handle the archive constructed below
-}
-else
-{
- plan tests => 4;
-}
+# Archive::Unzip::Burst can't handle the archive constructed below
+plan skip_all => "Archive::Unzip::Burst detected" if eval { require
Archive::Unzip::Burst; 1; };
+
+plan tests => 4;
my $hello = "hello, garbage\n";
my $exe = pp_ok(-e => "print qq[$hello]");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/Makefile.PL
new/PAR-Packer-1.063/t/data/Makefile.PL
--- old/PAR-Packer-1.061/t/data/Makefile.PL 2023-12-08 15:35:53.000000000
+0100
+++ new/PAR-Packer-1.063/t/data/Makefile.PL 1970-01-01 01:00:00.000000000
+0100
@@ -1,17 +0,0 @@
-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 <[email protected]>',
- LICENSE => 'perl',
- LIBS => [''],
- DEFINE => '',
- INC => '-I.',
-
- INST_ARCHLIB => '$(INST_LIB)',
- clean => { FILES => '../blib' },
-);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSBar/Makefile.PL
new/PAR-Packer-1.063/t/data/XSBar/Makefile.PL
--- old/PAR-Packer-1.061/t/data/XSBar/Makefile.PL 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSBar/Makefile.PL 2024-02-08
17:50:28.000000000 +0100
@@ -0,0 +1,18 @@
+use 5.008009; # should match MIN_PERL_VERSION in toplevel Makefile.PL
+use ExtUtils::MakeMaker;
+use ExtUtils::Depends;
+
+my $pkg = ExtUtils::Depends->new(qw(XSBar XSQuux));
+$pkg->add_xs(qw(XSBar.xs));
+$pkg->add_pm('XSBar.pm' => '$(INST_LIB)/XSBar.pm');
+$pkg->save_config("Files.pm");
+
+WriteMakefile(
+ NAME => 'XSBar',
+ VERSION => '0.01',
+ PREREQ_PM => {},
+ ABSTRACT => 'simple XS module',
+ AUTHOR => 'roderich <roderich@>',
+ $pkg->get_makefile_vars(),
+ clean => { FILES => "Files.pm" }, # must come after
get_makefile_vars
+);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSBar/XSBar.pm
new/PAR-Packer-1.063/t/data/XSBar/XSBar.pm
--- old/PAR-Packer-1.061/t/data/XSBar/XSBar.pm 1970-01-01 01:00:00.000000000
+0100
+++ new/PAR-Packer-1.063/t/data/XSBar/XSBar.pm 2024-02-08 17:50:28.000000000
+0100
@@ -0,0 +1,16 @@
+package XSBar;
+
+use strict;
+use warnings;
+use XSQuux;
+
+our $VERSION = '0.01';
+
+use Exporter;
+require DynaLoader;
+our @ISA = qw(DynaLoader Exporter);
+sub dl_load_flags {0x01}
+
+__PACKAGE__->bootstrap($VERSION);
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSBar/XSBar.xs
new/PAR-Packer-1.063/t/data/XSBar/XSBar.xs
--- old/PAR-Packer-1.061/t/data/XSBar/XSBar.xs 1970-01-01 01:00:00.000000000
+0100
+++ new/PAR-Packer-1.063/t/data/XSBar/XSBar.xs 2024-02-08 17:50:28.000000000
+0100
@@ -0,0 +1,20 @@
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+extern int triple(int);
+
+MODULE = XSBar PACKAGE = XSBar
+PROTOTYPES: DISABLE
+
+void
+hello()
+ CODE:
+ printf("hello from XSBar");
+
+void
+calling_into_quux(int i)
+ CODE:
+ printf("calling into quux...\n");
+ printf("triple(%i) = %i", i, triple(i));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSFoo/Makefile.PL
new/PAR-Packer-1.063/t/data/XSFoo/Makefile.PL
--- old/PAR-Packer-1.061/t/data/XSFoo/Makefile.PL 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSFoo/Makefile.PL 2024-03-13
23:12:44.000000000 +0100
@@ -0,0 +1,14 @@
+use 5.008009;
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+ NAME => 'XSFoo',
+ VERSION => '0.01',
+ PREREQ_PM => {},
+ ABSTRACT => 'Test files for PAR::Packer',
+ AUTHOR => 'Roderich Schupp <[email protected]>',
+ LICENSE => 'perl',
+ LIBS => [''],
+ DEFINE => '',
+ INC => '-I.',
+);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSFoo/XSFoo.xs
new/PAR-Packer-1.063/t/data/XSFoo/XSFoo.xs
--- old/PAR-Packer-1.061/t/data/XSFoo/XSFoo.xs 1970-01-01 01:00:00.000000000
+0100
+++ new/PAR-Packer-1.063/t/data/XSFoo/XSFoo.xs 2024-03-13 23:12:44.000000000
+0100
@@ -0,0 +1,16 @@
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/*#include "ppport.h" */
+
+
+MODULE = XSFoo PACKAGE = XSFoo
+
+PROTOTYPES: DISABLE
+
+void
+hello()
+ CODE:
+ printf("greetings from XSFoo\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSFoo/lib/XSFoo.pm
new/PAR-Packer-1.063/t/data/XSFoo/lib/XSFoo.pm
--- old/PAR-Packer-1.061/t/data/XSFoo/lib/XSFoo.pm 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSFoo/lib/XSFoo.pm 2024-02-08
17:50:28.000000000 +0100
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSFoo.xs
new/PAR-Packer-1.063/t/data/XSFoo.xs
--- old/PAR-Packer-1.061/t/data/XSFoo.xs 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/t/data/XSFoo.xs 1970-01-01 01:00:00.000000000
+0100
@@ -1,16 +0,0 @@
-#define PERL_NO_GET_CONTEXT
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/*#include "ppport.h" */
-
-
-MODULE = XSFoo PACKAGE = XSFoo
-
-PROTOTYPES: DISABLE
-
-void
-hello()
- CODE:
- printf("greetings from XSFoo\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSQuux/Makefile.PL
new/PAR-Packer-1.063/t/data/XSQuux/Makefile.PL
--- old/PAR-Packer-1.061/t/data/XSQuux/Makefile.PL 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSQuux/Makefile.PL 2024-03-12
13:21:46.000000000 +0100
@@ -0,0 +1,20 @@
+use 5.008009; # should match MIN_PERL_VERSION in toplevel Makefile.PL
+use ExtUtils::MakeMaker;
+use ExtUtils::Depends;
+
+my $pkg = ExtUtils::Depends->new(qw(XSQuux));
+$pkg->add_xs(qw(XSQuux.xs));
+$pkg->add_pm('XSQuux.pm' => '$(INST_LIB)/XSQuux.pm');
+$pkg->save_config("Files.pm");
+
+WriteMakefile(
+ NAME => 'XSQuux',
+ VERSION => '0.01',
+ PREREQ_PM => {},
+ ABSTRACT => 'simple XS module',
+ AUTHOR => 'roderich <roderich@>',
+ FUNCLIST => [qw( triple )],
+ DL_FUNCS => { XSQuux => [] },
+ $pkg->get_makefile_vars(),
+ clean => { FILES => "Files.pm" }, # must come after
get_makefile_vars
+);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSQuux/XSQuux.pm
new/PAR-Packer-1.063/t/data/XSQuux/XSQuux.pm
--- old/PAR-Packer-1.061/t/data/XSQuux/XSQuux.pm 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSQuux/XSQuux.pm 2024-02-08
17:50:28.000000000 +0100
@@ -0,0 +1,15 @@
+package XSQuux;
+
+use strict;
+use warnings;
+
+our $VERSION = '0.01';
+
+use Exporter;
+require DynaLoader;
+our @ISA = qw(DynaLoader Exporter);
+sub dl_load_flags {0x01}
+
+__PACKAGE__->bootstrap($VERSION);
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/XSQuux/XSQuux.xs
new/PAR-Packer-1.063/t/data/XSQuux/XSQuux.xs
--- old/PAR-Packer-1.061/t/data/XSQuux/XSQuux.xs 1970-01-01
01:00:00.000000000 +0100
+++ new/PAR-Packer-1.063/t/data/XSQuux/XSQuux.xs 2024-02-08
17:50:28.000000000 +0100
@@ -0,0 +1,14 @@
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+int triple(int n) { return 3*n; }
+
+MODULE = XSQuux PACKAGE = XSQuux
+PROTOTYPES: DISABLE
+
+void
+hello()
+ CODE:
+ printf("hello from XSQuux");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PAR-Packer-1.061/t/data/lib/XSFoo.pm
new/PAR-Packer-1.063/t/data/lib/XSFoo.pm
--- old/PAR-Packer-1.061/t/data/lib/XSFoo.pm 2023-08-21 13:52:27.000000000
+0200
+++ new/PAR-Packer-1.063/t/data/lib/XSFoo.pm 1970-01-01 01:00:00.000000000
+0100
@@ -1,15 +0,0 @@
-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;