-
Notifications
You must be signed in to change notification settings - Fork 13
/
Changes
2367 lines (1644 loc) · 87.9 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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
Reusing the names of executables produces random test failures
at least on macOS, perhaps due to some antivirus software.
- automated_pp_test: pipe_a_command() doesn't restore the directory where it's called
- switch doc "Please submit bug reports to ..." to GitHub issues
1.059 2023-07-20
- correctly propagate the exit value of a packed executable
Get the exit value from perl_destruct() instead of perl_run().
These may be different, e.g. if the value of $? is set in an END block.
- clean up tests a bit
- set up GitHub CI and add cpanfile (for CI only)
- check more return codes in myldr/*.c
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 ..."
- scripts/par.pl: don't patch the string "__PASS_PAR_CLEAN__ \0" in the
"boot" section of the executable and ...
- myldr/boot.c: ... stop looking for the patched string
- scripts/par.pl: add "\0CLEAN" in lieu of "\0CACHE" (and drop the 40-byte
cache name below that) in the "trailer" section when generating a packed
executable when META.yml indicates "--clean" was specified)
- myldr/mktmpdir.c: allow "\0CLEAN" as an alternative to "\0CACHE"
and set PAR_CLEAN=1 in that case
- myldr/mktmpdir.c: implement find_par_magic() akin the one in script/par.pl
- better CLT detection in MacOS (#70) [plk <[email protected]>]
- use Getopt::ArgvFile with resolveEnvVars=1
suggested by Johan Vromans (@sciurius on GitHub)
1.056 2022-09-05
- Fix #66: patch myldr/boot for "pp --clean ..." without side effects
- make sure myldr/boot contains exactly one string of the form
"__PASS_PAR_CLEAN__ \0" so that there are no
duplicates that may get split on chunk boundaries
(myldr/boot_embedded_files.c)
- simplify patching of this string (in $loader) to
"__PASS_PAR_CLEAN__=1 \0" in script/par.pl
- add a test for #66 (check for ephemeral vs persistent cache directory)
- Revert "Fixes #62: rs6000_71 (AIX) "An offset in the .loader section header is too large.""
PAR_CLEAN is set too late: at this point PAR_TEMP has already
been set (and populated) to a persistent cache directory
(/tmp/par-USER/cache-SHA1) instead of an ephemeral one (/tmp/par-USER/temp-PID).
- Some code cleanup
- replace some magic numbers with constants
- use string interpolation (instead of concatenation)
- clean up some convoluted C code
1.055 2022-07-03
- Fix #62: rs6000_71 (AIX) "An offset in the .loader section header is too large."
Communicate pp option "--clean" to the generated executable in a
different way. Previously this was done by patching "__ENV_PAR_..." strings
**in the executable being built** and interpreting these strings in
par.pl **at runtime**. Though hacky, this seemingly worked on any OS
(without rendering the executable invalid).
But the only information ever passed was the value of PAR_CLEAN and this was
gleaned at build time from the value of JSONPath $par.clean from META.yml
in the zip (set by pp by option "--clean").
Instead read and interpret "META.yml" in par.pl **at runtime**.
- Fix: merge PR #58 from [email protected]:
Adding support for running MacOS Universal binaries created via 'lipo'
from already pp'ed and signed thin binaries
- Make writing stuff more robust: check return value of print()
and close() in some places.
1.054 2022-01-27
- Temporarily disable t/90-gh41.t (system("\\\\?\\some-absolute-path") fails)
1.053 2022-01-25
- Fix: merge PR #56 from from Philip Kime <[email protected]>:
Updating OSX codesign fix util with fix for automatically added ad-hoc signatures on OSX 12+
- Fix: merge PR #42 from Andrew-Kulpa/master:
Get exe size from file handle instead of path
- Fix: prevent TABs in literal makefile fragments from being expanded
- Cleanups:
- par_findprog(): pass a copy of argument `path´ to strtok()
- simplify searching for PAR magic
- consolidate die()s
- add a test for GitHub #41
- add error message when exec'ing the custom perl fails in myldr/boot
- untangle %require_list and %ModuleCache
1.052 2021-01-13
- add note that --filter and __DATA__ are incompatible (cf. #36, #39)
- change bugtracker to GitHub issues
- when embedding FILEs, normalize paths in @INC
- code cleanup:
- rename _tempfile() to _save_as()
- there is no $PAR::Heavy::ModuleCache, so make it a "my" variable
- consistent formatting in outs() calls
- demystify reading <$fh> with $/ = \$number: use "read $fh, $buf, $number" instead
- use "open $fh, '<:raw', ..." instead of "open $fh, '<', ...; binmode($fh);"
- make error messages more consistent
- make extract-embedded.pl more robust
- t/90-rt129312.t fails when Archive::Unzip::Burst is used
1.051 2020-11-29
- Fix #27: "pp -u broken in perl 5.32"
ignore "pp -u ..." (with a warning) for Perl >= 5.31.6
- Fix #25: unexpected interaction between pp options "--compile" and "--module Foo::"
scan_deps_runtime() is called for all detected Foo:: modules, but
modules by themselves are typically not suitable for dynamic scanning
(causing lots of spurious warnings for "--compile").
- cleanup argv handling in myldr/main.c
- placate cperl ("Attempt to change hash while iterating over it.")
1.050 2020-03-18
- Rethink use of Filter::PodStrip.
Do not add directives
#line 1 "file"
to packed modules except for "embdeded" files.
We still add these directives to "embedded" files as these are extracted
with mangled names which makes it hard to make sense of warn() or die() messages
caused by them. These are all core modules and don't reference __FILE__.
This should make use of __FILE__ in packed modules work without
workarounds. __FILE__ is typically used to refer to installed non-module
resources, e.g.
# MIME::Types
my $db = File::Spec->catfile(dirname(__FILE__), 'types.db');
# Mozilla::CA
my $ca_file = File::Spec->catfile(dirname(__FILE__), "CA", "cacert.pem");
# Mojo::File (__FILE__ used implicitly by caller())
sub curfile { __PACKAGE__->new(Cwd::realpath((caller)[1])) }
Hence, remove known workarounds from Filter::PatchContent and add a test.
- Fix RT#130685: core module detection doesn't work with -Duserelocatableinc
Original patch by [email protected], thanx!
Added a test for this.
1.049 2019-05-31
- Fix RT#129312: Code signing for OSX
Avoid Archive::Zip::Archive error "can't find EOCD signature" for pp'ed
executables with lots of stuff appended (e.g. by OSX codesign).
Note: This requires the corresponding fix in PAR in 1.016,
hence bump its required version.
Add a test by appending 512 kB to a pp'ed executable.
- Fix issue GitHub#15 (doesn't build with a relocatable version of perl)
If the perl used to build PAR::Packer is a relocatable perl,
i.e. it was build with -Duserelocatableinc, then myldr/par will
also be relocatable. Hence, the automagical default @INC for myldr/par
is something like ("myldr/../lib/5.x.y",
"myldr/../lib/site_perl/5.x.y", ...) which won't find any modules.
1.048 2019-04-29
- Fix RT#129312: Code signing for OSX
Apply pull request from Philip Kime, adds a small program that will fix up
an executable generated by pp so that MacOS codesigning will accept it,
see contrib/pp_osx_codesign_fix/pp_osx_codesign_fix.c
Since codesigning will append currently ~180 KB to an executable, increase the
offsets from the end of the file where Archive::Zip and PAR::Packer will
look for their respective signatures.
- Fix GitHub issue #12: sha1.c warnings due to inconsistent USE_64_BIT_INT
Do not "inline" sha1.c (into main.c and boot.c vi mktmp.c), instead
just link to it. There's no reason that callers of
sha_init/sha_update/sha_final should know about the implementation of SHA_INFO.
myldr/sha1.c: stop including perl.h etc, instead pass the necessary #define's
via the compile command
- Fix GitHub issue #13: `par.exe -b` failure with Portable::Config
Note to users of Strawberry Perl *portable* installations:
There's a bad interaction between a Strawberry *portable* installation if you
also have a *standard* Strawberry installation installed in C:\strawberry.
Under certain conditions, parl created by the portable installation
may have have a built-in @INC of [ C:\strawberry\perl\lib, C:\strawberry\perl\site\lib,
C:\strawberry\perl\vendor\lib ], i.e. pointing to the *standard* installation.
This will cause it to load modules from the *standard* installation. If the versions
of the two installations are different, this may cause weird failures.
- Always require Digest::SHA, remove ugly alternatives
- Make "pp -e 0" work, apparently nobody noticed
1.047 2018-08-19
- Disable failing test cases in (Windows only) test t/90-rt122949.t
- Add .SEQUENTIAL to force non-parallel build when using dmake (e.g. on Windows)
1.046 2018-08-18
- Fix RT#126280: 90-rt122949.t fails when "Use Unicode UTF-8 for worldwide language support" is enabled
- Fix https://github.com/rschupp/PAR-Packer/issues/7 "Parallel build rules dependancy problem"
Instead of fighting GNU make and EUMM, just punt and add a .NOTPARALLEL
target. Yeah, I know that this is specific to GNU make (though some
other make implementations support it, too).
- Add bugtracker to META.yml
1.045 2018-06-12
- Fix RT#125503: Fix build with 64-bit perl-5.28.0
Merged patch by Steve Hay, thanks!
1.044 2018-06-06
- Cope with the fact that PL_statbuf is gone since Perl 5.27.x.
This breaks PAR::Packer on systems where Perl's "Stat_t" is not
the same as "struct stat", notably Windows.
- Extract-embedded.pl: list (but not extract) the embedded files
if no directory is given
- Use the long option name "--link" in messages (as "-l" may easily be
confused with "-I" when view in a sans serif font).
1.043 2018-04-03
- Fix test failures on Windows
1.042 2018-04-02
- Fix PAR-Packer#5 "unintended glob expansion on strawberry win32?"
On Windows using Mingw set _CRT_glob=0 also in parl (the custom
Perl interpreter).
- Fix RT #124445 "Par-Packer 'falsifies' PerlTk server() and Win32 GetOSName() and GetOSVersion() output on Windows 10"
Add <compatibility> section to pp.manifest
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v=vs.85).aspx)
to make par.exe "Windows 10 aware".
- Add dependencies on stuff in myldr/winres to myldr/Makefile
- Fix parallel make: install modules into blib *before* recursing into "myldr"
1.041 2017-11-08
- Fix problem with --link libraries on MacOS
- libraries where packed into the wrong location in the zip
- hence they were not extracted into the cache area where they could
be found via DYLD_LIBRARY_PATH
- hence the packed executable either couldn't find them or found incompatible
versions outside the cache area
- reported by Phil Kime
1.040 2017-10-21
- no changes to modules and scripts, only fixes for configure, build and test
- require a version of IPC::Run3 that gets shell quoting on Windows right
- restructure how we find the files to embed into boot.c
- avoid an error with newer gcc: "error: 'for' loop initial declarations
are only allowed in C99 or C11 mode"
- fix tests when running without "." in @INC even (even in tests)
1.039 2017-09-28
- Brown paper bag: add missing t/utils.pl
1.038 2017-09-27
- Fix "RT#122949: PAR-Packer-1.37 executables split arguments containing whitespace"
- on Windows, quote elements of argv array passed to spawnvp();
algorithm stolen from Win32::ShellQuote.
- introduce helper t/utils.pl to streamline tests
- require IPC::Run3 for test
- make test work with "dot-less" perl and PERL_USE_UNSAFE_INC=0
1.037 2017-05-28
- Fix RT#121268 for PAR-Packer: error installing PAR-Packer on windows10 ( 64Bit )
- on Windows, make dl_findfile() search first in the directory containing
the perl executable (to avoid erroneous hits in other members of PATH)
- Fix RT#120038: [PATCH] Fix build for VS2015 (VC++ 14)
and merge pull request from Steve Hay ([email protected])
- makes PAR::Packer work with VisualStudio 2015. Thanks, Steve!
- Fix RT#120041: --exclude gets confused by missing modules
- guard against Module::ScanDeps::_find_in_inc() returning ()
- Fail early when packing with a version of Perl
that's different frome the one PAR::Packer was built with.
Scenario: User has built and installed PAR::Packer (or got it
pre-packaged), then installs a newer version of Perl, then does
pp -o foo.exe foo.pl
But running foo.exe then fails with
foo.exe
C:\Users\jon\AppData\Local\Temp\parlzcPb.exe: Perl lib version (5.24.1) doesn't match executable 'perl.exe' version (5.24.0) at C:/Perl64/lib/Config.pm line 62.
Compilation failed in require at C:/Perl64/lib/Errno.pm line 10.
...
C:\Perl64\site\bin/pp: Failed to extract a parl from 'PAR::StrippedPARL::Static' to file 'C:\Users\jon\AppData\Local\Temp\parl3swwQJc.exe' at C:/Perl64/site/lib/PAR/Packer.pm line 1184, <DATA> line 1.
Now, pp will fail and with a more useful message.
- Switch from Module::Install to ExtUtils::MakeMaker
- Rewrite the library search (for "pp --link ...")
- start with $Config{libpth} which is *not* the runtime loader (e.g.
ld.so on Linux) search path, but rather the linker (ld) search path -
but it's the best guess without having to grok /etc/ld.so.conf
- augment that with $ENV{LD_LIBRARY_PATH} or similar
- Rework how we determine the name under which a library should be installed
- use objdump (on Linux and other ELF-based OS) and otool on Darwin
- fall back to "chasing symlinks" otherwise
- Remove PAR_ARGV_*, PAR_ARGC stuff from script/par.pl and myldr/boot.c.
- Dunno what problem this obscure way of passing the command line arguments
from a packed executable to the custom Perl interpreter was intended
to fix, but arguments pass just fine through execvp (or spawnvp)
to perl_parse.
- Only set the environment variable for the shared library search path
(e.g. LD_LIBRARY_PATH) that is relevant for the operating system
that we're running on
- Use DynaLoader::dl_findfile to locate DLLs instead of homegrown stuff.
- Remove "par_base" - prebuilt .par's haven't been available for ages
1.036 2016-12-29
- Fix RT#118094: Race condition exists when building cache for pp built executables
- guard against concurrent extraction attempts
- bump "requires" on PAR to a version with additional guards
- Fix RT#118903: Does not install when '.' is not in @INC
- apply patch from Graham Ollis (PLICEASE), thanks!
- make the Module::Install stuff work in the "author" case
NOTE: "use lib '.'" does *not* work in this case
- Move to GitHub. Thanks, OpenFoundry, for years of service.
- add Perl_5 LICENSE file, make "repository" point to GitHub
- always refer to the included LICENSE file
- point bug reports to [email protected]
- add an empty file "inc/.author/.keep" as Git doesn't track empty
directories
- Fix RT #118053: Problem with packed perl archive for biber on 64-bit Cygwin
- embed cygcrypt-0.dll since it isn't (anymore) in the set of
default Cygwin packages
- Upgrade to Module::Install 1.17
1.035 2016-07-23
- Fix RT#116254: Compilation error under strawberry perl 5.24 x64
s/PP_VERSION/PAR_PACKER_VERSION/ as Strawberry Perl also defines
PP_VERSION (in c/x86_64-w64-mingw32/include/wincrypt.h)
1.034 2016-07-17
- Fix RT#116056: Fixes for Cygwin build of PAR::Packer
- detect whether we're using a 32-bit or 64-bit perl
- fix elision of "-l<perl lib>" from $static_ldflags
- add $static_ldflags back to $boot_ldflags
- Add information to packed executable about which version
of PAR::Packer was used to build it (suggested by Johan Vromans):
- accessible from the packaged Perl script as $PAR::Packer::VERSION
- by looking for the string "Packed by PAR::Packer ..." in the executable
itself (using "strings exe | grep ..." or the like)
- Use ldd on cygwin, too
- NOTE: a "system lib" on cygwin is either in /usr/bin
or a Windows "system lib"
1.033 2016-05-19
- Fix RT#114229: v1.32 still won't install on strawberry perl v5.22.2
This is actually a problem caused by (some) newer versions of
ExtUtils::MakeMaker.
- Drop the "re-exec myself" in myldr/internals.c, may cause problems
on machines with low argv+env limits; the reason for this execvp()
is unknown and it's only relevant for standalone invocations of parl,
anyway (ie. NOT when running a packed executable)
- Really suppress generation of myldr/MYMETA.* and don't install
man pages for myldr/{Dynamic,Static}.pm (nothing there to see anyway).
1.032 2016-05-07
- Unbreak PAR::Packer for Perl 5.23.9 and higher:
Perl 5.23.9 removed the keys starting with "_<" from %::
script/par.pl used to glean the DLLs loaded via require_modules()
from these keys; replace them with @DynaLoader::dl_shared_objects.
- Fix RT#114155: Makefile.PL error - not loading ExtUtils::MakeMaker
- extract-embedded.pl: show starting offset of embedded files
1.031 2016-04-10
- Fix RT#113618: Strange issue with not packing libperl.dylib
Restore guessing what files to embed in myldr/Makefile.PL,
but make myldr/embed_files.pl ignore this list if it knows
a better way to determine these files. Also use "otools -h" on
OSX, as "otool --version" doesn't work on older versions of OSX.
Thanks to Phil Kime for help in investigating this.
- Implement namespace options for "-M" like ActiveState's perlapp:
pp now accepts "-M Foo::", "-M Foo:*" and "-M Foo:**".
Bump requirements for Module::ScanDeps to 1.21 for the helper
function to implement this.
- Fix RT#113463: Fix spelling error in manpage
Applied patch from the Debian Perl group. Thanks, guys!
1.030 2016-03-29
- Fix RT#111455: unable to use -x and -u with pp
RT#110480: Unpacking exe: File exists
Do not add %Preload dependencies of "-M" arguments to the list
of input files, this causes several problems (and doesn't gain anything).
- Fix RT#111896: PAR Question Solaris 10
Link myldr/boot only with what's actually required.
Move detection of libraries that should be embedded into myldr/boot
from myldr/Makefile.PL into myldr/embed_files.pl.
Get rid of guessing the shared libraries our custom Perl interpreter
is linked with (and hence have to be packed into boot_embedded_files.c) -
at least on platforms where we know how to determine the shared libraries
required by an executable:
- use "ldd" on Linux, Solaris and BDSs
- use "otool -L" on Mac OS X if available
- use "objdump -ax" on Windows if available (when using the Mingw toolchain)
- file2c.pl: switch back from array of unsiged to (hex encoded) strings.
At least for gcc, the former is much harder on the compiler, both
in CPU time and memory consumption.
- Skip a test if Archive::Unzip::Burst is detected (this messes up expected
mtimes for extracted files).
- Make a test work with early versions of Perl 5.8.x (x < 9) that have a bug
with compiled regexes and the /m modifier.
1.029 2016-01-12
- Add option "-u" ("--unicode") to pp to explicitly package Unicode support
- Remove all references to http://par.perl.org/, doesn't exist anymore
- Remove Internals::PAR::CLEARSTACK - it hasn't been enabled for ages,
causes segfaults if enabled and doesn't even compile with perl > 5.23.6
1.028 2015-11-19
- Fix RT#109123: v1.027 tests are not passed under windows
Apparently, even when called with a list, system() on Strawberry Perl
on Windows has a problem with arguments containing double quotes,
hence avoid them.
1.027 2015-11-18
- Add option -M Foo::Bar:: to pp (note the trailing double colon):
it adds Foo/Bar.pm and anything below Foo/Bar.
Bump required Module::ScanDeps version for
Module::ScanDeps::add_preload_rule() to implement this.
- Fix RT#109110: Incompatible with Module::ScanDeps 1.20
1.026 2015-07-19
- Fix RT#101800: [PATCH] Reinstate files to inc dir if deleted by external process
- The actual fix is in PAR (cf r1584) (add a "canary" file),
bump the required version of PAR, add a test.
- Find the "\nPAR.pm\n" signature in a .par (or packed executable)
even if it's not at end of the file (algorithm stolen from Archive::Zip's
search for the EOCD signature).
- This is intended to help code signing which may add stuff at the
end of the executable.
- Fix RT#104635 for PAR-Packer: IO error the first time an executable built by the packer is run on OSX
- Fix RT#104509: Problem signing PAR file,
and RT#104560: [PATCH] list added files in manifest
- Apply (slightly modified) patch by Shawn Laffan ([email protected])
from RT#104560. Thanks, Shawn!
- Make MIME::Types work "out of the box"
- pack its data file MIME/types.db
- patch the code to read MIME/types.db
- bump required version of Module::ScanDeps
(needed for MIME::Types %preload rule and fix for handling of
"open FH, '<:encoding(utf8)', ..." since that's what MIME::Types does)
- Bump requirement on PAR (for the fix for RT #103861), add a test.
- Update tkpp ito 1.5:
- using -M will now work (the current directory added in @INC)
- tkpp delete and test building file.
- Make pp fail when an unknown option is encountered.
- Remove PAR::Packer::_append_parl(), not called anywhere.
- Add license; update repository OpenFoundry repository URL
1.025 2015-01-24
- Fix PAR::Packer "make test" problem with Strawberry Portable
- Fix for PAR-Packer 1.024 with a nonstandard libperl.so name
Patch from [email protected], thanks!
- Fix #101662: Prevent shared libs from being cached in memory on AIX
Applied patch from [email protected], thanks.
Note: this is one half of the fix, the other is in PAR
1.024 2014-11-07
- Fix RT #99231: Problem with PAR::Packer 1.022 on Perl 5.20.1 and earlier.
Correct a typo to really fix this bug.
1.023 2014-11-02
- Fix RT #99231: Problem with PAR::Packer 1.022 on Perl 5.20.1 and earlier.
Add libwinpthreads*.dll to embedded files (used on recent
Strawberry builds). Patch by [email protected], thanks!
- Fix RT #63939: The behaviour of "pp --link ..." is subtly different between OSX and Linux.
Applied patch from [email protected], thanks!
- Bump required version of Module::ScanDeps,
makes t/90-rt59710.t pass again on perl 5.21.x
- die if a requested shared library (option -l) can't be found.
- Add a patch rule so that Mozilla::CA finds its (extracted) cacert.pem file.
- Rename ChangeLog file to Changes and reformat it
according to CPAN::Changes::Spec.
- Upgrade to Module::Install 1.14.
1.022 2014-09-19
- Fix RT#98955: installation fails | Can't locate String/ShellQuote.pm
Revert the fix for RT#98791: In order to be fullfilled at "perl Makefile.PL"
{String,Win32}::ShellQuote would need to be in the _distributed_
META.yml as "configure_require". But this can't handle arch-specific
"configure_require"s and we can't require _both_ as Win32::ShellQuote
won't build on *nix systems.
- Simply enclose the filenames in double quotes, should work on both
*nix and Windows in all reasonable scenarios.
- Drop incorrectly specified 'Digital signature support' "feature": simply
"recommends" the required modules.
1.021 2014-09-14
- Fix #98791: PAR-Packer fails to build with DWIMPerl/Strawberry Perl due to unquoted path name
- quote the list of embedded file wrt OS native shell
- require Win32::ShellQuote on Windows and String::ShellQuote otherwise
1.020 2014-08-24
- Implement option --xargs for pp:
- splits value of --xargs using Text::ParseWords::shellquote
- passes result as @ARGV when running script for -x
- bump required version of Module::ScanDeps to the first to implement this
- Update to Module::Install 1.10
1.019 2014-07-07
- Fix RT #96288: PAR::Packer unable to build under Win32/ActivePerl v5.14.2
RT #96739: "bsd_glob" is not defined on perl 5.14.x and earlier
RT #97018 (Issue while upgrading PAR::Packer )
Don't "use File::Glob ':bsd_glob'":
- this remaps CORE::glob() to File::Glob::bsd_glob() globally, but some
versions of ExtUtils::MakeMaker rely on CORE::glob() legacy behaviour
- the tag :bsd_glob isn't exported in Perl <= 14.2
- explicitly call File::Glob::bsd_glob() instead of glob()
- Fix RT #59224 (make error with version 1.006 on aix 5.3)
The string contents of myldr/my_par_pl.c (generated from
script/par.pl by myldr/par_pl2c.pl) is passed in argv[]
during the build. This is too large for the default limit (24k)
that AIX 5.3 has for passing argv+env in execve().
Shrink it a bit by removing leading whitespace and comment-only lines
(in addition to using PAR::Filter::PodStrip).
- Update documentation wrt the name of the cache directory.
1.018 2014-05-18
- [DJIBEL] tkpp 1.4 : Since PAR::Packer 1.015, tkpp doesn't work.
I Removed --icon and --info options. Now tkpp work.
- Bug fixes:
Use bsd_glob() instead of glob() to avoid problems with patterns that
contain whitespace, e.g. "C:\\Program Files\..." on Windows.
Found by Victor Wheeler <[email protected]>.
Fix RT #93008: install failure with ubuntu / puppet
(and several similar ones): When building on a Debian derived Linux distro
(and building with the system perl) check that distro package "libperl-dev"
is installed.
1.017 2013-12-01
- Fix RT #84588: OSX: incorrect detection of gcc (unsupported option '-static-libgcc'),
RT #90198: PAR::Packer fails to compile in Mac OS X 10.9 Mavericks,
RT #91086: PAR-Packer-1.016 fails to install on OSX)
- clang on OSX pretends to be gcc, but doesn't implement gcc's option "-static-libgcc"
- use this option only on Windows (when using the MingW toolchain).
- Drop a test that was using Inline::C just to wrap native execvp().
- It caused failures on CPAN Testers (if accidentally Inline was
installed) that were unrelated to PAR::Packer.
1.016 2013-11-30
- Fix RT #90870: Segmentation fault (core dumped) (MooX::Options)
- any "die" in a packed executable causes the executable to segfault
(at least on Linux and Perl 5.18.1)
- remove a line from XS code that sets an internal perl variable
1.015 2013-10-09
- featurectomy: remove --icon and --info options from pp and PAR::Packer
- they don't work on some versions of Windows (result in corrupted executables)
- these options are just passed on to Win32::Exe, so you may simply
post-process the executable, e.g. using exe_update.pl from Win32::Exe
- Fix RT #82916: Terminating during unpack results in corrupted cache, failure on next start
- apply (slightly modified) patch from [email protected], thanks!
- Fix RT #88297 (-M crashes pp if option contains backslashes)
- _add_file(): do _not_ use $zip->memberNamed(...) to refer to the just added
Archive::Zip::Member; instead use the return value of $zip->addFile or
$zip->addString
- don't modify embedded files after initial extraction
- fixes bug (on Windows) reported by Ken Tuchman <[email protected]>
- minor changes
- use File::Spec::Functions, get rid of ugly File::Spec->... calls
- set $pre_res using catfile() instead of hardcoding a backslash;
this might help on Cygwin
- fix -Mblib option for run_with_inc.pl: we want the blib in the top level directory
1.014 2012-12-21
- tkpp 1.3 : --addfile option in GUI updated :
- now it is possible to set a new filename or dirname in package
using (old;new).
- Bug fixes, etc.
- RT #75636: PAR::Packer Windows installation error (and suggested fix)
- apply PAR-Packer-1.013_V2.diff from above bug report
- Some versions of GCC link myldr/boot.exe with libgcc*.dll;
this renders any packed executable non-portable to machines
that don't have (this version of) libgcc*.dll installed
(problem reported by [email protected]);
to fix add '-static-libgcc' to the command for linking
boot.exe (when using the GCC toolchain)
- This also uncovered the following problem:
on some platforms (e.g. ActiveState + MingW) ldopts()
may contain a spurious trailing newline;
chomp ldopts() and ccopts() for sanity
- Recent versions od Strawberry perl (5.16.x) link their perl*.dll
against the MingW libstdc++*.dll - hence pack it, too
(same as libgcc_*.dll). Rewrite how we generate the C file(s)
containing the custom perl interpreter, libperl DLL, libgcc DLL etc
as large byte arrays and how we extract this stuff on bootstrap.
- Bump requirement for Module::ScanDeps to a version that can grok
Unicode::UCD from Perl 5.17 to avoid test failures
- PAR 1.007 caused several tests to fail (t/20-pp.t, tests 8-9, 12).
IMHO these are bogus (depend on unspecified behaviour) and previously
succeeded only by accident; removed the offending sub tests
- RT #75750: PAR::Filter::Bleach is broken
- NOTE: original code works as intended due to the funny way
pack 'b' is implemented, but apply patch just for sanity
- RT #78396: [manifypods] Error 255
- s/MAN3PODS/MAN1PODS/ as suggested
- Update to Module::Install 1.06
1.013 2012-02-22
- New version of Tkpp (Version 1.2) (cf. RT #69517)
- incorporate new script/tkpp from Djibril Ousmanou (DJIBEL), many thanks!
- add "recommends" to Makefile.PL for Tk and additional Tk modules needed
- Bug fixes, etc.
- RT #74302: Win32 executable additional information (--info) not updated
- finally apply patches from Mark Dootson (MDOOTSON) - thanks, Mark:
rework resource handling for Win32 executables
- BIG FAT WARNING:
--info still doesn't work, so I disabled this option for now;
at least on some platforms, "pp --info ..." results in a corrupted
executable that Windows refuses to execute
- fix a problem with "pp --gui": the copy of par.exe extracted
to the cache area (but with the same name as the packed executable)
still used a console window though packed with "pp --gui ..."
(bug reported in private communication)
- RT #73491: cache directory naming problem
Now the top level cache directory (typically $TEMPIR/par-$USER)
will have $USER "encoded" as hex bytes. This avoids problems
between the charset used for $USER and the charset allowed by
the OS for filenames.
- RT #75193 [PATCH] Fix build on Win32/VC++
- bump dependency on PAR to 1.005
- require latest version of Win32::Exe
- run run_with_inc.pl using a nonce PAR_TMPDIR, too
1.012 2011-12-02
- Bug fixes, etc.
- run all tests using a nonce PAR_TMPDIR (otherwise CPAN Testers
goes crazy as top level /tmp/par-USER directories (or similar)
from previous tests may now be considered "unsafe")
- bump dependency on PAR to 1.005 which has the same behaviour
1.011 2011-12-01
- Bug fixes, etc.
- RT #69560/CVE-2011-4114: PAR packed files are extracted to unsafe
and predictable temporary directories
- create parent of cache directory (i.e. /tmp/par-USER) with mode 0700
- if it already exists, make sure that (and bail out if not)
- it's not a symlink
- it's mode 0700
- it's owned by USER
- depend on PAR 1.004 (which contains the other half of the
fix for CVE-2011-4114)
- bump Perl version requirement to 5.8.1 (Schwern: The End Of 5.6 Is Nigh!)
- explicitly mark Perl 5.10.0 as an unsupported version
1.010 2011-07-13
- Bug fixes, etc.
- Adapt for changes in XSloader.pm (>= 0.14)
The old rule in PatchContent.pm no longer works with this version;
this effectively disables how PAR::Packer intercepts loading of DLLs.
Add a new rule for the code in recent XSloader.pm.
NOTE: This problem affected all users of Perl >= 5.14.0 as this
was the first stable release to include XSLoader 0.14.
Also affected: Strawberry (at least) 5.12.3 which also comes
with XSLoader 0.14.
- RT #67311: missing dll
- Windows: search more places for the dreaded libgcc*.dll
- when linking boot.exe use $(CC) not $(LD)
- RT #67681: can'r wrtie file
During packing several temp files are created in the user's
working directory - this will fail if the working directory is read-only.
Fix up all calls to File::Temp::tempfile with TMPDIR => 1
and drop the bogus check whether cwd is writable.
-RT #68916: Solaris with Sun Workshop: heavy cosmetic issue
Fix use of plain "char" array in files generated by myldr/file2c.pl.
- RT #57273: Error building on Strawberry 5.12.0.1 64-bit (win32.coff file format not recognized)
RT #69357: bug-PAR-Packer
Hopefully fix the lonstanding "no 64-bit version of win32.coff" problem
on 64-bit Windows using the MingW tool chain
We simply don't link myldr/boot.exe with win32.coff in this environment.
NOTE: test 32 of t/20-pp.t may fail. I have received conflicting reports
about this, but just to want to make a release to get wider coverage.
1.009 2011-03-26
- Bug fixes, etc.
- RT #53463: PAR::Packer 1.002 on HPUX 11.23 PA-RISC issue
(HPUX) patch from Lars-Gunnar Taube
- add SHLIB_PATH to ld_path_keys in myldr/mktmpdir.c
- call "chatr +s enable ..." on the extracted custom perl
- RT #65535: Unable to run perl script packaged with pp under cygwin
on another Windows XP installation
- lib/PAR/Filter/PatchContent.pm: patch AutoLoader.pm to add "cygwin"
to the list of "is_dosish" $^O identifiers; otherwise
AutoLoader::find_filename() will mangle filenames that start with
a drive letter
- script/par.pl: use PAR::Filter::PatchContent to patch any modules
embedded in the packed excutable; this supersedes the ad hoc
patching of XSLoader.pm and will now also patch AutoLoader.pm
- myldr/Makefile.PL: when generating $parl_exe or $parldy_exe make
sure that we use the PAR::* modules (e.g PAR::Filter::PatchContent)
from the build environment rather than a possibly
installed older version
- "Fix" #64485: pp PodStrip module included
document how to inhibit pod stripping (copied from PAR.pm POD)
- bump required Module::ScanDeps to 1.01 (hopefully fixes failures
in t/90-rt59710.t with Perl 5.13.x)
- reworked the build system a bit to fix recurring problems with dmake
on Windows and parallel makes in general:
- copy myldr/{parl,parldyn} to blib/scripts from myldr/Makefile
- myldr/Makefile was completely handcrafted; try to generate it
using standard ExtUtils::MakeMaker tools as much as possible
- generate myldr/{Dynamic,Static}.pm from templates {Dynamic,Static}.in
- rename static.c to boot.c
- add "configure_requires" for ExtUtils::Embed
- pick up some POD spelling fixes from Debian
(thanks, Jonathan Yu <[email protected]>)
1.008 2010-11-21
- Bug fixes, etc.
- RT #61528: bug similar to RT 55994
(Windows) relax heuristic to check whether the configured C compiler
is actually gcc (Ed Zagar)
- RT #61874: Windows: Packed executable handles wildcards different from script
myldr/static.c: turn off automatic globbing of process arguments when
building with MingW (Roderich)
- RT #62357: .cgi extension not taken as script