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;

Reply via email to