├── .gitignore ├── AUTHORS ├── Changes ├── LICENSE ├── MANIFEST.SKIP ├── Makefile.PL ├── README ├── lib ├── PAR.pm └── PAR │ ├── Environment.pod │ ├── FAQ.pod │ ├── Heavy.pm │ ├── SetupProgname.pm │ ├── SetupTemp.pm │ └── Tutorial.pod └── t ├── 00-pod.t ├── 01-basic.t ├── 40-par-hashref.t ├── 50-autoloaderfix.t ├── 60-cleanup.t ├── Hello.pm ├── data ├── lib │ ├── Data.pm │ └── Hello.pm └── script │ ├── data.pl │ ├── hello.pl │ └── nostrict.pl └── gen-hello-par.pl /.gitignore: -------------------------------------------------------------------------------- 1 | META.yml 2 | MYMETA.* 3 | Makefile 4 | Makefile.old 5 | MANIFEST 6 | MANIFEST.bak 7 | blib/ 8 | pm_to_blib 9 | *.tar.gz 10 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Here is a list of people and their CPAN id, extracted from the Changes 2 | file and the mailing list archives. These people have either submitted 3 | patches or suggestions, or their bug reports or comments have inspired 4 | the appropriate patches. 5 | 6 | Note that this list applies to both PAR and the now separate PAR-Packer 7 | distribution. 8 | 9 | Corrections, additions, deletions welcome: 10 | 11 | Abe Timmerman (ABELTJE) 12 | Abhijit Menon-Sen (AMS) 13 | Adam Kennedy (ADAMK) 14 | Alan Stewart 15 | Alan Teague 16 | Alasdair Allan (AALLAN) 17 | Alexey Borzenkov 18 | Alvin Belden 19 | Andrew Lee 20 | Andy Balaam 21 | Andy Lester (PETDANCE) 22 | Antti Lankila 23 | Arthur Bergman (ABERGMAN) 24 | Ask Bjoern Hansen (ABH) 25 | Barrie Slaymaker (RBS) 26 | Barry Jaspan 27 | Bill Atkins (BATKINS) 28 | Brad Elliott 29 | Brigitte Jellinek 30 | Bruce Winter 31 | Chia-Liang Kao (CLKAO) 32 | Chip Salzenberg (CHIPS) 33 | Chris Dolan (CDOLAN) 34 | Chris Williams 35 | Christian Schiefer 36 | Clayton O'Neill (CMO) 37 | Corey Goldberg 38 | Cosimo Streppone (COSIMO) 39 | D. Menzel 40 | Daniel Cohen-Laroque 41 | Daniel Shane (DSHANE) 42 | Darek Adamkiewicz (DADAMK) 43 | David Dyck 44 | David Romano 45 | Doug Gruber 46 | Doug Miles 47 | Edward S. Peschko 48 | Edward Wildgoose 49 | Eric Paulson 50 | Eric Wilhelm 51 | Gaal Yahas (GAAL) 52 | Gabor Szabo (SZABGAB) 53 | Gerald Richter (GRICHTER) 54 | Germain Garand (GGARAND) 55 | Glenn Mabbutt 56 | H. Wade Minter 57 | Henrique Dias (HDIAS) 58 | Hirosi Taguti 59 | Iain Cass 60 | Iain Truskett (SPOON) 61 | Ilya Zakharevich (ILYAZ) 62 | Indy Singh 63 | Ivan Kudryavtsev 64 | James Muir 65 | Jan Dubois (JDB) 66 | Jeff Goff (JGOFF) 67 | Jerrad Pierce 68 | Jerry Veldhuis 69 | Jesse Schoch 70 | Jesse Vincent (JESSE) 71 | Jody Belka (KNEW) 72 | Johan Lindstroem (JOHANL) 73 | Johannes Lode 74 | John McMahon 75 | John Siracusa (JSIRACUSA) 76 | Jonathan Leffler (JOHNL) 77 | Joseph Landman 78 | Jouke Visser (JOUKE) 79 | Karl Forner 80 | Kieran J Broadfoot 81 | Lindsay Morris 82 | Luc Willems 83 | Malcolm Nooning 84 | Marcus Ramberg (MRAMBERG) 85 | Mark Dootson (MDOOTSON) 86 | Mark Shelor (MSHELOR) 87 | Markus Jansen 88 | Martin Fabiani 89 | Martin Hosken (MHOSKEN) 90 | Matt Sergeant (MSERGEANT) 91 | Matthew Andersen 92 | Matthew Braid (MDBGRIZ) 93 | Matthew Riedel 94 | Mattia Barbon (MBARBON) 95 | Michael Goldberger 96 | Michael Schilli (MSCHILLI) 97 | Mike Campbell 98 | Mike Stok (MIKESTOK) 99 | Morbus Iff 100 | Murat Uenalan (MUENALAN) 101 | Nadim Ibn Hamouda El Khemir (NKH) 102 | Nathan Byrd (NBYRD) 103 | Ned Konz (NEDKONZ) 104 | Nicholas Clark (NWCLARK) 105 | Nicolas FROMENT 106 | Niko Tyni 107 | Nomota KIM 108 | Paritosh Tyagi 109 | Paul Miller 110 | Peter Klewinghaus 111 | Patrice Parmentier 112 | Patrick Whitney 113 | Phil Sallee 114 | Piotr Martyniuk 115 | PodMaster (PODMASTER) 116 | Rafael Garcia-Suarez (RGARCIA) 117 | Randal L. Schwartz (MERLYN) 118 | Randy Carpenter 119 | Randy W. Sims (RANDYS) 120 | Reini Urban 121 | Richard Soderberg (RSOD) 122 | Rick Fitzsimmons 123 | Rob Casey (ROBAU) 124 | Robert Allerstorfer 125 | Robert Creager (RCREAGER) 126 | Robert Wyrick 127 | Roderich Schupp (RSCHUPP) 128 | Rong-En Fan 129 | Ryan Briones 130 | Sascha Wuestemann 131 | Scott Stanton 132 | Sim Lim Hai 133 | Simon Andrews 134 | Simon Cozens (SIMON) 135 | Sisyphus 136 | Steffen Mueller (SMUELLER) 137 | Stephen Pick 138 | Steve Hay (SHAY) 139 | Steven Mackenzie 140 | Thomas Loo (TLOO) 141 | Thomas Rush 142 | Tim Conrow 143 | Tina Mueller (TINITA) 144 | Tom Pollard 145 | Tommy Butler 146 | Ton Hospel (THOSPEL) 147 | TP Diffenbach 148 | Uri Guttman (URI) 149 | Vincent Ladeuil 150 | Vladimir Yu. Tereshchenko 151 | -------------------------------------------------------------------------------- /Changes: -------------------------------------------------------------------------------- 1 | 1.020 2024-03-04 2 | 3 | - restructure _extract_inc(): always add XS DLLs in 4 | PAR_TEMP/inc to PAR::Heavy::FullCache, ie. even if PAR_TEMP/inc 5 | already exists (hence we don't need to extract the zip), cf. #11 6 | 7 | - bump minimum perl version to 5.8.9 everywhere 8 | 9 | 1.019 2023-11-01 10 | 11 | - register XS DLLs extracted into $PAR_TEMP/inc with %PAR::Heavy::FullCache 12 | 13 | This solves the problems mentioned in GitHub PR #8 14 | ("Special case Gtk related dlls to dl_load from the unpacked inc dir") 15 | with applications using modules Gtk2, Pango, Cairo and others (this is 16 | a Windows only problem) 17 | 18 | - Heavy.pm: use strict; use warnings 19 | Thanks @shawnlaffan 20 | 21 | 1.018 2022-09-28 22 | 23 | - Fix #6: PAR fails to test its build on MSWin32 with Perl-5.36.0 24 | 25 | Makefile.PL: Quote t/gen-hello-par.pl for Windows 26 | Merge PR #5 by Tim Hoke 27 | 28 | 1.017 2021-01-13 29 | 30 | - change bugtracker to GitHub issues 31 | 32 | - remove obsolete stuff from tutorial 33 | 34 | 1.016 2019-05-20 35 | 36 | - Fix #129312: Code signing for OSX 37 | 38 | Avoid Archive::Zip::Archive error "can't find EOCD signature" for pp'ed 39 | executables with lots of stuff appended (e.g. by OSX codesign): 40 | temporarily increase Archive::Zip::ChunkSize around the call to 41 | Archive::Zip::readFromFileHandle(). 42 | 43 | Note this is prerequisite for the corresponding fix in PAR::Packer. 44 | 45 | - Fix: Archive::Unzip::Burst::unzip result is ignored and _extract_inc 46 | does always the slow way, too 47 | 48 | PR from Vit Spinka , thanks! 49 | 50 | - Show debug messages if $ENV{PERL_DL_DEBUG} is true 51 | 52 | 1.015 2017-04-13 53 | 54 | - Fix RT#120722 (Reason for Module::Signature dependency unclear since 2008) 55 | - "require" a non-broken version of Digest::SHA 56 | - remove other crypto related "recommends" 57 | 58 | - Switch from Module::Install to ExtUtils::MakeMaker 59 | - avoids the hassle with Module::Install for Perl without "." in @INC 60 | - add some resources cf META.json 61 | 62 | 1.014 2016-12-18 63 | 64 | - Fix RT#119224: "Issue about Can't locate loadable object for module" 65 | drop "use" statements in PAR/Heavy.pm added in edf5f24d 66 | 67 | - Fix RT#119010: "Wrong license link" 68 | always refer to the included LICENSE file 69 | 70 | - generate hello.par in Makefile target "pure_all" 71 | 72 | 1.013 2016-11-27 73 | 74 | - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 1.012?)" 75 | 76 | - Build t/hello.par at "make" time 77 | 78 | 1.012 2016-11-25 79 | 80 | - Guard against concurrent extraction attempts of zip into "inc" 81 | 82 | - use a file lock to protect the extraction of the complete zip into "inc" 83 | 84 | - _run_member_*(), _tempfile(), _dl_extract(): 85 | make the "persistent" filename only visible when the file 86 | has been completely written 87 | 88 | - Make build and test work if @INC does not include "." 89 | 90 | - Upgrade to Module::Install 1.17 91 | 92 | 1.011 2016-09-18 93 | 94 | - Move to GitHub. Thanks, OpenFoundry, for years of service. 95 | 96 | - Suppress warning "Use of uninitialized value in do "file" ..." 97 | 98 | - Put a description of its purpose into the canary file 99 | 100 | - Remove all traces of Internals::PAR::CLEARSTACK 101 | 102 | - Remove all references to http://par.perl.org/, doesn't exist anymore 103 | 104 | 105 | 1.010 2015-07-13 106 | 107 | - Fix #101800 "[PATCH] Reinstate files to inc dir if deleted by external process" 108 | Periodic temp directory cleaning programs (eg. "tmpwatch") may remove some 109 | (older) files from $PAR_TEMP/inc, but keep others. This causes the packed 110 | program to fail. 111 | 112 | - When extracting a .par file to $PAR_TEMP/inc do NOT restore the original 113 | modified timestamps of the file (so that the extracted files have 114 | the time of extraction as their modified time). 115 | 116 | - Add a "canary" file in $PAR_TEMP and back-date it 1 day. Hence any process 117 | removing files in $PAR_TEMP based on timestamps should remove 118 | the "canary" before others. 119 | 120 | - If the canary file is missing, extract the .par to $PAR_TEMP/inc 121 | as previously was done only when $PAR_TEMP/inc was missing. 122 | 123 | 1.009 2015-04-22 124 | 125 | - Fix 103861 for PAR-Packer: Adding local directories to @INC for a pp executable fails 126 | 127 | - Get rid of included PerlIO.pm, parent.pm, obsolete 128 | Module::Install::Include and included Test::More. 129 | 130 | 1.008 2015-01-24 131 | 132 | - Fix #101662: Prevent shared libs from being cached in memory on AIX 133 | applied patch from Thoke@northpeak.org, thanks. 134 | Note: this is one half of the fix, the other is in PAR::Packer 135 | 136 | - Fix #86178: dll files not extracted to shlib subfolder when using -l or to other folder when using -a 137 | extract all files from the zip, including all DLLs 138 | 139 | - Fix #86014: [PATCH] POD fix 140 | applied Debian patch from gregor herrmann , thanks! 141 | while we're at it fix two bad L<> hyperlinks reported by podchecker 142 | 143 | - Fix RT #86650: typo fixes 144 | 145 | - reformat ChangeLog file according to CPAN::Changes::Spec 146 | and rename it to Changes 147 | 148 | - Update to Module::Build 1.14 149 | 150 | 1.007 2012-10-22 151 | - Hopefully fix "pp -C ..." for any modules that assume an 152 | actual tree of files, e.g. looking for all installed modules Foo::Bar::*; 153 | call _extract_inc even when $ENV{PAR_CLEAN} is true 154 | - update to Module::Install 1.06 155 | 156 | 1.006 2012-10-15 157 | - Fix RT #78633: PAR::import ignores url => $repo_client_object 158 | applied patch from KENO, thanks! 159 | - Fix RT #73491: cache directory naming problem 160 | In PAR::SetupTemp::_get_par_user_tempdir (actually _find_username) 161 | we try to sanitize username (so that there are no problematic 162 | characters in the name of the per-user cache directory), but the 163 | strategy fails miserably for some charset encodings. 164 | E.g. for EUC-KR or CP949 (as in the bug report) we may produce an 165 | illegal sequence of bytes; in other cases we may cause collisions 166 | (different usernames mapping to the same directory name). 167 | Fix the problem once and for all by encoding the username 168 | (bytewise) as 2 hex digits. 169 | 170 | 1.005 2011-12-02 171 | - bump Perl version requirement to 5.8.1 (Schwern: The End Of 5.6 Is Nigh!) 172 | - run all tests using a nonce PAR_TMPDIR (otherwise CPAN Testers 173 | goes crazy as top level /tmp/par-USER directories (or similar) 174 | from previous tests may now be considered "unsafe") 175 | 176 | 1.004 2011-11-30 177 | - back out r1241: it causes errors in PAR::Packer's test suite 178 | - change "unsafe directory" error message to match the wording 179 | used by PAR::Packer 180 | - remove "debian" sub directory: it isn't released to CPAN and 181 | Debian will supply its own anyway 182 | - remove some cruft from MANIFEST.SKIP 183 | 184 | 1.003 2011-11-28 185 | - RT #69560/CVE-2011-4114: PAR packed files are extracted to unsafe 186 | and predictable temporary directories 187 | (Note: this bug was originally reported against PAR::Packer, but 188 | it applies to PAR as well) 189 | - create parent of cache directory (i.e. /tmp/par-USER) with mode 0700 190 | - if it already exists, make sure that (and bail out if not) 191 | - it's not a symlink 192 | - it's mode 0700 193 | - it's owned by USER 194 | - Fix a problem packing XML::LibXSLT on Windows (see the thread starting 195 | with http://www.nntp.perl.org/group/perl.par/2011/02/msg4919.html) 196 | - Die (with a hopefully useful message) if any error is encountered 197 | during an Archive::Zip extract operation 198 | 199 | 1.002 2010-07-25 200 | - Fixes to VERSIONs of PAR::Setup*. 201 | - No change in behaviour since 1.001 202 | 203 | 1.001 2010-07-25 204 | - RT #57399: extract everything (including DLLs) in File::ShareDir 205 | directories. Module::ScanDeps classifies everything in 206 | File::ShareDir directories as "data", but PAR uses it's own 207 | heuristics what to extract from a .par. 208 | - Previous release was missing META.yml. 209 | - Upgrade Module::Install to 1.00 210 | 211 | 1.000 2010-04-10 212 | - Fix defined(%hash) deprecation warning in PAR::Heavy 213 | 214 | 0.994 2009-07-23 215 | - Fix for the PAR::Heavy fix to the INC priority handling. 216 | 217 | 0.993 2009-07-19 218 | - The priority (fallback=>0) repositories should look at @PAR_INC 219 | for the loaded PARs instead of @PAR_INC_LAST. 220 | - Don't reload from a downloaded .par file after installing it 221 | via "upgrade". 222 | - Band-aid fix for the loading priority of shared librares from 223 | PAR files: Try PAR's first, the local stuff, then fallback-PARs. 224 | - Initial support for running external perl scripts from a packaged 225 | interpreter. 226 | 227 | 0.992 2009-04-05 228 | - Support for non-fallback repositories. 229 | 230 | 0.991 2009-03-10 231 | - Promote previous release to stable release. 232 | 233 | 0.989_01 2009-03-02 234 | [Bug fixes, etc.] 235 | - Track the locations of all archives that have been extracted to 236 | $ENV{PAR_TEMP}/inc in this run. 237 | 238 | 0.988 2009-03-01 239 | - Promote previous release to stable release. 240 | 241 | 0.987_01 2009-02-20 242 | [New features] 243 | - Better cleanup of the $TMPDIR/par-$USER/temp-$$ directories 244 | that are typically used as caches in the "use PAR 'foo.par'" use case. 245 | 246 | [Bug fixes, etc.] 247 | - Very slightly more careful handling of PAR-specific environment 248 | variables. 249 | - Cleanup of PAR::SetupTemp 250 | 251 | 0.986 2009-02-19 252 | - Promote to stable release. 253 | 254 | 0.985_01 2009-02-02 255 | [New features] 256 | - Support for the brand new static dependency resolution 257 | of PAR::Repository::Client 0.23. 258 | 259 | [Bug fixes, etc.] 260 | - Fix issue with running scripts from repositories: 261 | The INC hooks used to be set up too late for this to 262 | automatically pick up dependencies. 263 | 264 | 0.984 2009-01-25 265 | [New features] 266 | - Implemented the auto-upgrading option for loading and installing 267 | from PAR::Repositories. 268 | 269 | [Bug fixes, etc.] 270 | - Fix issue with PAR::Repository::Client development versions. 271 | 272 | 0.983 2008-09-12 273 | [Dependencies] 274 | - Require AutoLoader 5.67 which contains a PAR-related 275 | bug-fix. 276 | - Require PAR::Dist 0.32. 277 | 278 | [Internal changes] 279 | - The full extraction process _extract_inc 280 | (which is triggered when a non--clean pp packaged 281 | executable is run) can now be forced to do the 282 | extraction (instead of doing if !-d). 283 | - That same extraction routine now accepts Archive::Zip 284 | handles or file names. 285 | - When, during the full extraction, the extracted paths 286 | are to be added to @INC, we now make sure they're not 287 | in @INC yet. 288 | 289 | 0.982 2008-08-10 290 | [New features] 291 | - Moved the routines that setup the PAR_TEMP environment variable 292 | to a separate module in the distribution so it's possible to 293 | use PAR::Repository::Client without loading all of PAR. 294 | - Same for the function that sets up PAR_PROGNAME. 295 | 296 | [Bug fixes, etc.] 297 | - Upgrade to Module::Install 0.77 298 | - Fix for running scripts from repositories. 299 | 300 | 0.980 2008-05-22 301 | [Bug fixes, etc.] 302 | - The function PAR::get_filehandle() that was introduced in 0.979 303 | is really broken because Archive::Zip is broken. Turns out calling 304 | Archive::Zip::Member->fh() returns a file handle to the zip file, 305 | not a virtual/tied/whatever file handle to the member file. 306 | Therefore, the get_filehandle() function has been removed again until 307 | we work around this issue. 308 | - Upgrade to Module::Install 0.73 309 | 310 | 0.979 2008-05-13 311 | [New features] 312 | - New function PAR::get_filehandle() returns a file handle for a file 313 | in any open .par files. Similar to read_file(). 314 | 315 | 0.977 2007-10-19 316 | [Bug fixes, etc.] 317 | - HPUX doesn't like shared libraries being unlinked while in use. So don't 318 | try to do this even in clean mode. (Workaround will be in par.pl) 319 | (Scott Stanton) 320 | - Fix DLL extraction file name matching in PAR::Heavy. 321 | - Save two system calls per DLL during DLL extraction in PAR::Heavy. 322 | 323 | 0.976 2007-07-29 324 | [New features] 325 | - Use Archive::Unzip::Burst for unpacking binary executables if 326 | available. (This yields a significant startup speed-up.) 327 | 328 | [Bug fixes, etc.] 329 | - Removed the auto_install feature from Makefile.PL. auto_install 330 | is conceptually broken. 331 | 332 | 0.973 2007-02-03 333 | [New features] 334 | - A new option for the "use PAR { ... };" use case: 335 | "no_shlib_unpack" signals that for this particular .par file, 336 | shared libraries that were added with the --lib option should 337 | not be extracted. This allows users to do their own cache 338 | handling for these libraries. 339 | - PAR no longer unpacks *all* shared libraries by default but only 340 | those in the shlib/ directory (i.e. added with --lib). 341 | The shared libraries in auto/ should be picked up by the DynaLoader 342 | hack. 343 | - If available, the prefork.pm module will be used to declare 344 | run-time dependencies for better memory use in forking 345 | environments. 346 | - PAR now uses a caching mechanism to speed up the extraction process. 347 | This should particularly impact users of the "use PAR {file =>...}" 348 | form. 349 | 350 | [Bug fixes, etc.] 351 | - Applied an optimization of the unpacking process on case insensitive 352 | file systems. 353 | 354 | 0.972 2007-01-16 355 | [Bug fixes, etc.] 356 | - Removed PAR::AutoLoaderFix again. It wasn't working as expected 357 | all the time. 358 | - To fix the problem AutoLoaderFix was supposed to fix, we now 359 | require AutoLoader 5.62 or newer which was just recently released 360 | to CPAN. (Previously only available from blead perl.) 361 | 362 | 0.971 2007-01-12 363 | [Bug fixes, etc.] 364 | - Fixed typo in the POD. (Jerrad Pierce) 365 | - Included fix for a bug in AutoLoader.pm as shipped with all 366 | perl versions up to and including 5.8.8 as PAR::AutoLoaderFix. 367 | This cures a problem of endless looping when the %INC entry of a 368 | module doesn't point to a file of the same name. 369 | This may happen during "use PAR 'foo.par'". 370 | 371 | 0.970 2006-12-03 372 | [This release introduces some rather radical changes, so read carefully:] 373 | [All PAR::Packer related logic has been moved to a separate distribution,] 374 | PAR-Packer. This includes pp, parl and all packaging tools. This way, 375 | PAR becomes a pure-Perl distribution that can be most easily installed by 376 | users of software which requires PAR. 377 | Developers who want to use the PAR packager, pp, need to install the 378 | PAR-Packer distribution from CPAN. 379 | 380 | 0.961 2006-11-23 381 | [Bug fixes, etc.] 382 | - PAR::StrippedPARL::Base->write_parl() failed to work if the @INC 383 | directories contained spaces in 0.960. (Steven Mackenzie) 384 | - Much improved documentation of the environment variables 385 | (Glenn Linderman) 386 | - Fix for a spaces-in-pathname problem on Windows for 387 | t/30-current_exec.t. (Malcolm Nooning) 388 | 389 | 0.960 2006-11-21 390 | [Bug fixes, etc.] 391 | - myldr/Makefile.PL fix: Clean up myldr/usernamefrompwuid.h. 392 | - Silence warning in myldr/internals.c. 393 | - Silence warnings seen on Irix from myldr/env.c. 394 | - Skip most tests in 10-parl-generation.t if there is no parl. 395 | - Skip loading ActiveState Perl's "sitecustomize.pl" in par.pl. 396 | - Load modules via require and other files via do. 397 | - The parl-regeneration-for-every-pp-call addition of the 0.958 release 398 | should now also work for static perls. 399 | 400 | [New features] 401 | - Adressing RT ticket #6612: Now using getpwuid() to determine the 402 | user name if supported by the OS. 403 | 404 | 0.959 2006-11-12 405 | [This is just a hotfix release because 0.958 lacked META.yml. One day, I will] 406 | switch from Module::Install to Module::Build... 407 | 408 | 0.958 2006-10-25 409 | [Bug fixes, etc.] 410 | - myldr/Makefile.PL fix: make static.o depend on mktmpdir.c, my_perl.c, 411 | my_par.c. (Roderich Schupp) 412 | - Modules included with the -M option to pp were previously scanned 413 | for dependencies but not mapped through the 414 | %Module::ScanDeps::Preload hash for custom dependencies. That's 415 | fixed now. 416 | - $ENV{PAR_RUN} isn't set by PAR::Packer any more because nothing in 417 | the PAR sources uses it. $ENV{PAR_RUN} is no longer used by PAR 418 | at all. 419 | - Unified the environment variables which are looked at for 420 | finding the system's temporary directory. 421 | 422 | [New features] 423 | - During the build process, PAR appends stripped down copies of parl 424 | (and parldyn if applicable) to the data classes 425 | PAR::StrippedPARL::Static and ::Dynamic. These 426 | parls-without-embedded-modules are used for packaging so the formerly 427 | embedded modules are now packaged from the packaging system. (Instead 428 | of stemming from the system where PAR/parl was built.) 429 | - The "use PAR { repository => $url };" syntax now also supports 430 | the use of user-constructed PAR::Repository::Client objects instead 431 | of an URL. 432 | - The -F (module code filter) option now supports selective filtering 433 | of modules. The syntax is "-F FILTER=REGEX" or - as before - 434 | "-F FILTER". The regular expression is applied to the *file name*, 435 | of the module inside the PAR (e.g. Foo/Bar.pm). This behaviour was 436 | chosen over matching against the module name (e.g. Foo::Bar) because 437 | the filters can be applied to module-like and script files as well 438 | (.pl, .al, etc.). 439 | - Updated PAR/FAQ.pod with the new FAQ's from the PAR wiki. 440 | - Added a POD file PAR/Environment.pod which is intended to become 441 | an index of all environment variables PAR uses of its own or 442 | recognizes from its users. Still mostly a stub. 443 | 444 | 0.957 2006-10-24 445 | [Bug fixes, etc.] 446 | - Fix executable PARs top properly detect embedded scripts 447 | named the same as the executable. (Jesse Vincent) 448 | - Comment out the call to par_current_exec_proc (in the C loader) 449 | which breaks the use of symlinks to pp-ed executables when not 450 | called with a path. (I.e. using a search in $PATH). 451 | 452 | 0.956 2006-10-03 453 | [Bug fixes, etc.] 454 | - This is another hotfix release. Fixed a mindless bug introduced in 0.955. 455 | 456 | 0.955 2006-10-03 457 | [Bug fixes, etc.] 458 | - 0.952 introduced removal of system module search paths if -B is in 459 | effect. This resulted in some valid PAR-related paths being removed 460 | as well. Fixed. Upgrading from 0.952 and 0.954 is suggested. 461 | - Changed the use of hard-coded '/' as path-separator to using File::Spec. 462 | 463 | 0.954 2006-09-26 464 | - This release is equivalent to 0.953. The 0.953 CPAN upload is broken! 465 | 466 | 0.953 2006-09-18 467 | [Bug fixes, etc.] 468 | - Added optional POD tests. 469 | - Modified -B so that if -B is in effect, all entries are stripped 470 | out of @INC except for the PAR hooks. This happens right before 471 | the script contained in the pp-ed binary is executed. 472 | 473 | 0.952 2006-08-22 474 | 475 | [New features] 476 | - Added the "install" option to the PAR loading syntax. 477 | If specified, the contents of the PAR distribution are 478 | permanently installed. 479 | This requires PAR::Repository::Client 0.04. 480 | 481 | [Bug fixes, etc.] 482 | - Fixed broken META.yml in 0.951. 483 | 484 | 0.951 2006-08-12 485 | (This includes any changes up to 0.950.) 486 | 487 | [New features] 488 | 489 | - Introduced new PAR loading syntax and semantics: 490 | use PAR { file => 'path/to/par/or/URL' }; 491 | ==> equivalent to "use PAR 'path/to/par/or/URL';" 492 | - Introduced the 'fallback' option: (default = 0) 493 | use PAR { file => 'foo.par', fallback => 1 }; 494 | ==> Loads modules from the PAR file only if loading 495 | them from @INC did not succeed. 496 | - Introduced the 'run' option which executes a script 497 | in a PAR archive just like 498 | perl -MPAR foo.par script.pl 499 | - If PAR::Repository::Client is installed, you can add a 500 | repository of .par distributions to your library search path 501 | as follows: 502 | use PAR { repository => 'http://foo' }; 503 | - Of course, 'run' also works with repositories: 504 | use PAR { repository => 'http://foo', run => 'my_app' }; 505 | (This searches the repository for any distributions that have a 506 | my_app script.) 507 | --> For details on repositories, have a look at the 508 | PAR::Repository::Client module. 509 | 510 | - Bug fixes, etc. 511 | 512 | - Commented a couple of the routines in PAR.pm. (Yay!) 513 | - New test script for the new fallback loading feature. 514 | - Fixed a bug in the Spreadsheet::ParseExcel handling in 515 | PatchContent.pm. 516 | 517 | 0.942 2006-07-22 518 | 519 | [Bug fixes, etc.] 520 | 521 | - Better support for diagnostics.pm (in conjunction with 522 | Module::ScanDeps 0.62.) 523 | - Now requiring Module::ScanDeps 0.62. 524 | 525 | 0.941 2006-06-20 526 | (No, PAR isn't stagnating. It's just that 1.00 would draw close if 527 | we continued with 0.01 increases.) 528 | 529 | [Bug fixes, etc.] 530 | 531 | - Version 0.94 of PAR would use the same cache area for all pp-ed 532 | applications due to a faulty hotfix for Digest::SHA. This applies 533 | to PAR 0.94 only. Think of 0.941 being PAR 0.94 done right. 534 | 535 | 0.94 2006-06-01 536 | 537 | [New Features] 538 | 539 | - Added support for reading options to pp from a file using a 540 | '@filename' argument to pp: pp -o foo --gui @filename foo.pl 541 | 542 | [Bug fixes, etc.] 543 | 544 | - Workaround for a bug in Digest::SHA 5.38 and 5.39 that would prevent 545 | PAR from being built. 546 | - Fixed details in the 2-pp.t test file. 547 | - Now recognizes text files that aren't picked up by the -T operator 548 | but by the "file" tool. 549 | - Applied Roderich Schupp's patch to 30-current_exec.t to fix a 550 | path issue. 551 | - Now requiring Module::ScanDeps 0.60 which fixes a couple of bugs 552 | which might be observed as PAR bugs. 553 | - Now working well with Spreadsheet::ParseExcel which uses an invalid 554 | POD section to comment out a code block. This wasn't recognized by 555 | PAR::Filter::PodStrip as POD and hence partly left in... 556 | - If the output directory doesn't exist, we create it now and output 557 | a meaningful error message if that failed. 558 | 559 | 0.93 2006-05-19 560 | 561 | [New Features] 562 | 563 | - Added support for PAR_TMPDIR (PAR_GLOBAL_TMPDIR) so that the 564 | temp directory can be controlled for just the PAR file bits. 565 | (Leolo) 566 | - Added par_current_exec_proc() which finds the file of the current 567 | executable in /proc, if possible. (Leolo) 568 | - Added par_current_exec() which finds he file of the current 569 | executable, if possible on this OS. (Leolo) 570 | - par_findprog() now uses par_current_exec() if possible. 571 | 572 | [Bug Fixes, etc.] 573 | 574 | - Upgraded to Module::Install 0.62+ (Audrey Tang, Steffen Mueller) 575 | - Document a strange interaction with chdir() and relative 576 | paths. (Chris Dolan) 577 | - Documented the bits that make up PAR_TEMP. (Leolo) 578 | - Fixed the call to par_findprog. path (aka val) was set to 579 | tmpdir. (Leolo) 580 | - Documented the CACHE name at the end of a self-executing 581 | PAR. (Leolo) 582 | - myldr/Makefile.PL now generates some dependencies for 583 | main.c (Leolo) 584 | - Applied patch from RT ticket. (tsee) 585 | https://rt.cpan.org/Ticket/Display.html?id=13959 586 | - Applied Ivan Kudryavtsev's patch that fixes a couple of calls 587 | to PAR subroutines in PatchContent filtered code. (tsee) 588 | 589 | 0.92 2006-02-22 590 | 591 | [Bug Fixes] 592 | 593 | - Now requiring Module::ScanDeps 0.56 which handles autouse 594 | correctly. 595 | - Now shipping with a correct SIGNATURE. (Which was broken for 596 | 0.91.) 597 | 598 | 0.91 2006-02-13 599 | 600 | [Bug Fixes] 601 | 602 | - Applied Alan Stewart's patch which fixes @ARGV pollution in 603 | daughter programs. See also 604 | http://www.nntp.perl.org/group/perl.par/2152 605 | - Now mentioning the ENV var "PAR_VERBATIM" in the documentation. 606 | See also http://www.nntp.perl.org/group/perl.par/2196 607 | - Applied Malcolm Nooning's fix for the test suite. We used to get 608 | failed tests on Windows because of spaces in path names. 609 | - Applied Roderich Schupp's and Malcolm Nooning's patches to 610 | the test suite fixing problems with Cygwin. 611 | - Applied Vincent Ladeuil's patch to PAR::Filter::Bleach to return a 612 | true value for modules that loaded okay. 613 | - Changed 'PAR_BASE' in the Makefile.PL to 'SMUELLER'. 614 | 615 | 0.90 2005-11-25 616 | 617 | [Bug Fixes] 618 | 619 | - When compiling with static libperl, myldr/ may fail "make" 620 | due to sha1.c not generated properly. 621 | 622 | - Pod stripping could fail on __DATA__ sections for files 623 | with CRLF line endings. 624 | 625 | - The documentation erroneously referred to the PAR_TEMP 626 | environment variable, whereas it should be PAR_GLOBAL_TEMP. 627 | 628 | - Compilation fixes for MinGW/MSYS. 629 | 630 | 0.89 2005-06-10 631 | 632 | [Bug Fixes] 633 | 634 | - Stop static.c from pulling in Perl header files, otherwise 635 | parl.exe ends up depending on the Perl DLL on Win32 when 636 | Perl is built without PERL_IMPLICIT_SYS. 637 | 638 | - With *nix and File::Path 1.06, par.pl's avoidance of loading 639 | Cwd.pm caused syntax errors. 640 | 641 | 0.88 2005-06-07 642 | 643 | [Bug Fixes] 644 | 645 | - Extracted .pl files should be loadable via the coderef-in-@INC too, 646 | just like .pm files and autosplit files. This makes PAR work with 647 | Perl 5.8.7 on Win32. 648 | 649 | - Fix the build with GCC 4.0. 650 | 651 | - If $ENV{PWD} is not defined, fallback to use `pwd` to obtain the 652 | working directory for invoking. 653 | 654 | 0.87 2005-01-31 655 | 656 | [Bug Fixes] 657 | 658 | - On Win32, some versions of File::Spec::Win32 contains explicit 659 | "use Cwd;" lines, which renders parl.exe unusable. 660 | 661 | - Executable made by "pp" may fail when invoked as "./a.out" or 662 | "../a.out", due to incorrect PWD handling logic. 663 | 664 | 0.86 2004-12-11 665 | 666 | [New Features] 667 | 668 | - New "pp -z" (--compress) option to set compression level (0-9). 669 | 670 | - New "pp -T" (--tempcache) option to override the per-executable 671 | directory name; it defaults to a hash of the executable, computed at 672 | compile time. This makes startup much faster for large executables. 673 | 674 | - The hash algorithm described above now prefers Digest::SHA if installed, 675 | otherwise Digest::SHA1, then fallbacks to Digest::MD5. 676 | 677 | - Functionality of "pp -X" is now extended: if the argument after -X is a 678 | zip or par file, files in it are excluded from the produced executable, 679 | and the executable will "use" the zip/par instead. For multiple -X args, 680 | successive args are only "use"d if they contain additional unique files. 681 | 682 | - "pp -l" now searches for libraries in "." and PATH in Win32. 683 | 684 | - "pp -l" shared libraries are now added to %skip, so it will not 685 | be included in both shlib/ and lib/. 686 | 687 | - "pp -l" now chases symbolic links. For example, if "libsomelib.so" 688 | is a symlink to "libsomelib.so.1", which is another symlink to 689 | "libsomelib.so.1.2", pp now follows these symlinks and add the real 690 | file the par, rather than "libsomelib.so". 691 | 692 | - New contributed code in "contrib/stdio/": Useful Tk console for 693 | "pp -g" users. 694 | 695 | - New contributed tutorial documents, currently in "contrib/docs/", 696 | which will eventually be turned into POD documents. 697 | 698 | - Running "perl Makefile.PL" with $ENV{DEBUG} set to true now produces 699 | "parl" with debug symbols. 700 | 701 | - Remove Cwd.pm (and Cwd.so) from the bundled dependencies. 702 | 703 | [Bug Fixes] 704 | 705 | - More robust probing for case-insensitive file systems. 706 | 707 | - PodStrip now attempts to match "standard" pod start before =cut, 708 | otherwise =cut gets removed by itself. 709 | 710 | - Win32 slashes are now normalized in privlib and archlib directories. 711 | 712 | - Don't extract shared libraries to inc/, since they were extracted 713 | in $PAR_TEMP already. 714 | 715 | - Don't re-extract shared libraries in subdirectories, since they 716 | are picked up by corresponding "use". 717 | 718 | - Tk now exits properly with a non-zero exit() value. 719 | 720 | - Fix libperl probing problem on Debian and Gentoo that manifests as a 721 | "libperl5.8.so not found" error during runtime. 722 | 723 | - gpp: Fixed typo in options with multiple filenames; cleaned up 724 | pp parameters. 725 | 726 | - When PAR_TEMP is set, shlib/ was not correctly added to the dynamic 727 | load path environment variables. 728 | 729 | - PAR now builds with Win32 VC++ without CVTRES.EXE available. 730 | 731 | - Detection of cl.exe, gcc.exe and cc.exe is now case-insensitive. 732 | 733 | 0.85 2004-07-02 734 | 735 | [New Features] 736 | 737 | - New version of "gpp"; see contrib/gui_pp/gpp_readme.txt for details. 738 | 739 | [Bug Fixes] 740 | 741 | - MANIFEST and META.yml were not properly updated by PAR::Packer. 742 | 743 | - Setting directory aliases with "pp -a"/"pp -A" was broken. 744 | Fixed, and tests were added for it. 745 | 746 | - Statically-built executables was needlessly extracting libperl 747 | each time it runs; now it is eliminated and hence much faster. 748 | 749 | 0.83 2004-05-29 750 | 751 | [New Features] 752 | 753 | - Revamped PAR::FAQ and sychronized with par.perl.org. 754 | 755 | - In pp-generated programs, $0 is now set to the pathname leading 756 | to the invoked executable. Use $ENV{PAR_0} instead to get the 757 | filename that contains the main perl program. 758 | 759 | - Updated "contrib/gui_pp/gpp" to support PAR::Packer options. 760 | 761 | [Bug Fixes] 762 | 763 | - Core XS modules, such as Data::Dumper, were skipped by "pp". 764 | 765 | - Fix t/2-pp.t for Cygwin by probing $Config{_exe} rather than uname(). 766 | 767 | - Scripts made by "pp -P", when invoked as "perl scriptname", 768 | should not search for the same-named programs in PATH. 769 | 770 | - Correctly remove leading slash and drive letters from absolute 771 | filenames passed to "pp -a". Also normalized blackslahes to slashes. 772 | 773 | - The PP_OPTS environment variable was not recognized. 774 | 775 | - "pp -a dirname;diralias" was broken. 776 | 777 | - "pp -f" and "pp -F" were broken. 778 | 779 | 0.82 2004-05-24 780 | 781 | [New Features] 782 | 783 | - New module PAR::Packer provides an OO interface to "pp"'s 784 | functionality; "pp" is now merely a thin wrapper for it. 785 | 786 | - New module App::Packer::PAR is a modified version of 787 | App::Packer, designed to work with PAR::Packer, and will 788 | hopefully be merged back to App::Packer. 789 | 790 | - The old, procedural "pp" is moved to contrib/; end-users 791 | should notice no changes in "pp"'s behaviour. 792 | 793 | - New options "pp -a" and "pp -A" (--addfile/--addlist) provides 794 | ways to include extra files and directories in the package. 795 | 796 | - The long option name for "pp -M" is changed from --add to 797 | --module. The old name is still recognized but no longer 798 | documented. Using "pp -M" to include non-library files 799 | is now deprecated; use "pp -a" instead. 800 | 801 | - par.pl and parl now writes messages to STDOUT, instead of 802 | STDERR. As a consequence, t/2-pp.t no longer prints extra 803 | warnings during "make test". 804 | 805 | [Bug Fixes] 806 | 807 | - On Non-Win32 platforms, perl 5.8.0 and earlier versions produced 808 | pp-generated executables that immediately segfaults. 809 | 810 | - Running pp-generated executables with absolute pathname failed 811 | on statically-built perls. 812 | 813 | - Tests were failing due to a missing pipe_a_command.pm in MANIFEST. 814 | 815 | - Add the missing myldr/win32.coff for building on Cygwin/MinGW. 816 | 817 | - If the "perl" in path is different from the perl interpreter used 818 | for "make test", t/2-pp.t is known to fail and is now skipped. 819 | 820 | - Cygwin failed t/2-pp.t because "parl" is spelled as "parl.exe" there. 821 | 822 | 0.81 2004-05-23 823 | 824 | [New Features] 825 | 826 | - Regained support for Win9x, Cygwin and MinGW. 827 | 828 | - PAR now supports 64-bit platforms, such as Tru64 and AIX. 829 | 830 | - Cygwin and MinGW can now build EXEs with icons, too; MinGW can update 831 | the icons, but Cygwin cannot. 832 | 833 | - Newly supported modules: Pod::Usage, DBIx::SearchBuilder, 834 | DBIx::ReportBuilder, SVK::Command, SVN::Core, and the ':encoding()' 835 | IO discipline. 836 | 837 | [Bug Fixes] 838 | 839 | - On non-Win32 systems, invoking pp-generated executable from PATH 840 | did not work. 841 | 842 | - Standalone executables were clobbered by existing perl environments 843 | with an identical "auto/IO" libpath as the author's environment. 844 | 845 | - Standalone executables did not work on systems with an unset 846 | dynamic load path environment variable (eg. LD_LIBRARY_PATH). 847 | 848 | - "pp -p -o multi.par 1.pl 2.pl; parl multi.par 1.pl" now works. 849 | 850 | - $ENV{PATH} and $ENV{TEMP} were truncated at first path delimiter. 851 | 852 | - "pp -f Bleach" did not work for ActivePerl on Win32. 853 | 854 | - Windows 9x systems were generating invalid cache directory names. 855 | 856 | - $ENV{path} is also recognized as $ENV{PATH} for Win32. 857 | 858 | 0.80 2004-03-17 859 | 860 | [New Features] 861 | 862 | - A comprehensive test suite for pp in contrib/automated_pp_test/. 863 | It is run as part of the "make test" process from t/2-pp.t. 864 | 865 | - Much better support for "pp -i" and "pp -N" (--icon/--info) 866 | using the Win32::Exe module. You may now use EXE and DLL as 867 | icon files. 868 | 869 | - If PAR_GLOBAL_CLEAN (-C, --clean) is not set, we now preemptively 870 | extracts files under the cache directory. That made POSIX.pm 871 | and other modules that depends on %INC pointing to real files 872 | work correctly. 873 | 874 | - Now uses SHA-1 to create temporary directories and files, 875 | instead of mtime. 876 | 877 | - Verbosity level is now 1..3, not 0..5; "pp -v" now takes 878 | an optional integer, so "pp -v input.pl" is no longer an error. 879 | 880 | - New flags "-vv" and "-vvv", as shorthands for "-v 2" and "-v 3". 881 | 882 | - The user-settable PAR_CLEAN and PAR_TEMP environment variables has 883 | been renamed to PAR_GLOBAL_CLEAN and PAR_GLOBAL_TEMP; the original 884 | variables are still accessible within the program. This is so that a 885 | pp-generated program can exec() or system() another one without 886 | crippling its environment variables. 887 | 888 | - File lookups are now case-insensitive on case-insensitive filesystems. 889 | 890 | - Another Tk-based GUI in contrib/gui_pp/; not installed by default. 891 | 892 | - OOified "pp" in contrib/object_oriented_pp/; not installed by default. 893 | 894 | [Bug Fixes] 895 | 896 | - "pp -d" (--dependent) prevented "pp -C" (--clean) from working. 897 | 898 | - The "pp -m" (--multiarch) option was implemented incorrectly 899 | and thus broken. 900 | 901 | - Many documentation tweaks. 902 | 903 | - Previously, "pp -M" (--module) did not add the module itself, 904 | only its dependencies. 905 | 906 | - Suppress a bogus warning when $ENV{$Config{ldlibpthname}} is empty. 907 | 908 | - "parl -v" without Module::Signature installed could delete all 909 | files within the current directory. Oops. 910 | 911 | - On *nix systems, pp-generated executables erroneously linked to 912 | libperl even if "pp -d" (--dependent) is not set. 913 | 914 | - Spurious =cut directives in source files is now handled gracefully 915 | by PAR::Filter::PodStrip. 916 | 917 | - "pp -L" (--log) now logs all output messages to the log file, 918 | not just the ones printed by "pp" itself. 919 | 920 | 921 | 0.79 2004-01-08 922 | 923 | [Bug Fixes] 924 | 925 | - Setting PAR_CLEAN had the reversed effect. Oops. 926 | 927 | - Dynamic libraries in cached directories was not detected 928 | properly, resulting in "permission denied" errors during 929 | certain race conditions. 930 | 931 | 0.78 2004-01-07 932 | 933 | [New Features] 934 | 935 | - By default, executables generated by "pp" will now store 936 | extracted files in cache directories. You may override 937 | this by setting the PAR_CLEAN environment variable to "1", 938 | or generate executables using "pp -C". 939 | 940 | - New "pp -C" (--clean) option to make the generated executable 941 | clean up temporary directories after each run. 942 | 943 | - PAR_CLEARTEMP is renamed to PAR_CLEAN. 944 | 945 | [Bug Fixes] 946 | 947 | - On Win32, temporary directories containing shared libraries 948 | was not being properly cleaned up. 949 | 950 | - If no suitable temporary directories are found, use the current 951 | directory (".") instead of the root directory ("/"). 952 | 953 | 0.77 2004-01-01 954 | 955 | [New Features] 956 | 957 | - New "pp -c" and "pp -x" (--compile/--execute) options run the 958 | script with "perl -c" to check for dependencies. 959 | 960 | - Also, the new "pp -n" (--noscan) command skips the default 961 | static scanning altogether. 962 | 963 | - Added support for "pp -c/-x/-n" to tkpp. 964 | 965 | - For dynamically-built perls, pp-generated .exe files will now 966 | appear in the process table with the same name as it was launched, 967 | instead of "par.exe". 968 | 969 | - New filter "Obfuscate", which uses B::Deobfuscate to strip away 970 | PODs and comments, as well as mangling variable names. 971 | 972 | - Merged tkpp 1.1 from Doug Gruber. 973 | 974 | - OS/2 is now supported. 975 | 976 | - External Zlib is no longer required to run pp-generated binaries. 977 | 978 | [Bug Fixes] 979 | 980 | - Makefile.PL was failing if $Config{cc} contains spaces. 981 | 982 | - No longer needs setting "Windows 95 compatible mode" to run on WinXP. 983 | 984 | - On Win9x with Perl 5.6.1, "nmake" was failing due to extra "@[...]" 985 | symbols in Makefile. It should be fixed now. 986 | 987 | - The "bad signature" problem with newer Archive::Zip versions is fixed. 988 | 989 | - App::Packer::Backend::PAR was misplaced into App/Packer/PAR. 990 | 991 | - Signature tests were failing under new ExtUtils::MakeMaker versions. 992 | 993 | - ActiveState's PPM building machine was having problem with PAR; 994 | a ".pdb" entry in MANIFEST.SKIP is added to fix that. 995 | 996 | - Some self-built PAR instances on Windows were failing due to 997 | mismatching short and long pathnames. 998 | 999 | 0.76 2003-10-28 1000 | 1001 | [New Features] 1002 | 1003 | - Input filters. "pp --filter Bleach" now obfuscates the incoming 1004 | script with PAR::Filter::Bleach; "pp --modfilter Bleach" applies 1005 | Bleach to all packed modules. 1006 | 1007 | - Two previously built-in filters, PodStrip and PatchContent, 1008 | are refactored out as PAR::Filter subclasses. 1009 | 1010 | - Two new filters, Bleach and Bytecode, are added for source-hiding 1011 | purporses. 1012 | 1013 | - New utility, "tkpp", provides a GUI frontend to "pp". 1014 | 1015 | - New option, "pp --perlscript", to generate stand-alone scripts. 1016 | 1017 | - The old "PAR::Intro" documentation has been replaced by two 1018 | new ones: "PAR::Tutorial" and "PAR::FAQ". 1019 | 1020 | - Tk pixmap (.xpm) files can now be packed with "pp --add". 1021 | 1022 | [Bug Fixes] 1023 | 1024 | - Perl 5.8.1 has an off-by-one bug that prevents "parl" to 1025 | function properly. We have now provided a workaround; 1026 | this bug should also be fixed in Perl 5.8.2. 1027 | 1028 | - Fixed https support for LWP via the new Module::ScapDeps. 1029 | 1030 | 0.75 2003-09-21 1031 | 1032 | [New Features] 1033 | 1034 | - "pp -o file.exe file.par" now packs file.par into file.exe; 1035 | this means you can hand-tweak PAR files generated by "pp -p" 1036 | before packing it into an executable. 1037 | 1038 | [Bug Fixes] 1039 | 1040 | - Packing multiple programs by "pp script1.pl script2.pl" was 1041 | producing syntax errors; fixed. 1042 | 1043 | - "pp -M datafile" now works. 1044 | 1045 | - Exit code from pp-packed executables now properly propagates out. 1046 | 1047 | - Fixed "use base" detection, Math::BigInt support and spurious 1048 | signature warnings, by updated versions of Module::ScapDeps 1049 | and Module::Signature. 1050 | 1051 | - On Win32, the PE info headers no longer show PAR_XXXXXXXXXXX. 1052 | 1053 | 0.74 2003-08-20 1054 | 1055 | [New Features] 1056 | 1057 | - pp now has a set of "PatchContent" rules, dealing with 1058 | non-PAR-compatible modules: Tk, Tk::Widget, Win32::API::Type, 1059 | Win32::SystemInfo, SQL::Parser, diagnostics. These rules may 1060 | get refactored back to PAR.pm in the future. 1061 | 1062 | - New function, PAR::reload_libs(), to reload currently used 1063 | libraries inside PAR files. 1064 | 1065 | - PAR.pm itself is now never packed into pp-generated files, 1066 | to perserve interface compatibility and reduce bloat. 1067 | 1068 | - PAR.pm now handles "use PAR 'othercode.par'" called from 1069 | program or modules inside PAR files, even recursively. 1070 | 1071 | - A new icon for Win32 that is hopefully prettier. 1072 | 1073 | [Bug Fixes] 1074 | 1075 | - All data after __DATA__ are preserved for included libraries. 1076 | This helps self-reading modules like Net::LDAP::Constants. 1077 | 1078 | - PAR::read_file() was broken. It now works. 1079 | 1080 | - "use PAR" inside pp-generated executables was failing with 1081 | 'file too short' errors due the mishandling of seek/tell. 1082 | 1083 | - Occasional crashes on Win32 due to rmdir() called too early 1084 | with DLLs still open is fixed; however, "pp -d" executables 1085 | may still exhibit this problem. 1086 | 1087 | - "pp -X" used to only take full pathnames as arguments. 1088 | It now also takes "Module::Name" and "Module/Name.pm". 1089 | 1090 | - Dynamically built Perl under Cygwin failed to build, because 1091 | libperl.dll.a was not found. 1092 | 1093 | - Eliminated "callback called on exit" warnings, and the related 1094 | "access violation" error on Win32. 1095 | 1096 | 0.73 2003-08-06 1097 | 1098 | [New Features] 1099 | 1100 | - The PAR Homepage is now online at http://par.perl.org/. 1101 | Documentations have been changed to link to it. 1102 | 1103 | [Bug Fixes] 1104 | 1105 | - Tk applications can now properly access xpm/xbm files 1106 | with Tk->findINC. 1107 | 1108 | - On Win32, pp-generated executables could not start from 1109 | Explorer, if its path contains space characters. Fixed. 1110 | 1111 | - On Win32, pp-generated executables used to leave around an 1112 | empty directory in $ENV{TEMP}. It is now properly rmdir'ed. 1113 | 1114 | - Some systems (notably OpenBSD and Debian) does not put their 1115 | libperl.so in the default location, which breaks the build 1116 | process; now searches inside $ENV{$Config{ldlibpthname}} and 1117 | $Config{libpth} to find it. 1118 | 1119 | 0.72 2003-08-02 1120 | 1121 | [New Features] 1122 | 1123 | - CHECK and INIT blocks in programs inside PAR are now supported. 1124 | 1125 | [Bug Fixes] 1126 | 1127 | - Two debug statements were mistakenly left in the source, 1128 | resulting in "trying to get rid of /tmp/par_priv.xxxx.tmp" 1129 | messages. 1130 | 1131 | - Building on Linux with GCC 3.2.2 was failing due to massive 1132 | heap required for my_perl.c. Fixed by splitting it into 3k 1133 | chunks. 1134 | 1135 | - Depends on Module::ScanDeps 0.21; it supports utf8 on Perl 5.6.1 1136 | and can significantly reduce executable file size by eliminating 1137 | unneccessary shared libraries. 1138 | 1139 | 0.71 2003-07-30 1140 | 1141 | [Bug Fixes] 1142 | 1143 | - A nasty data-loss bug has been uncovered immediately after the 1144 | previous release; it only affects Windows platforms, and may 1145 | cause all files to be erased under the current root (\) directory. 1146 | 1147 | - Building on Red Hat linux was failing, with error message that 1148 | says "my_perl not declared". This has since been fixed. 1149 | 1150 | 0.70 2003-07-29 1151 | 1152 | [New Features] 1153 | 1154 | - On machines with shared libperl, "pp" now makes truly stand-alone 1155 | executables; the old behaviour is available with "pp --dependent". 1156 | 1157 | - Under Windows NT/2000/XP, "pp --icon=name.ico" now changes the icon 1158 | for the generated executable; otherwise, a default "white camel" 1159 | icon is used. 1160 | 1161 | - "use PAR 'http://example.com/foo.par'" now works, as does 1162 | "perl -MPAR -Ihttp://example.com/foo.par". 1163 | 1164 | - PAR::Dist is now a mandatory prerequisite, which provides 1165 | functions to turn any CPAN distribution into a PAR distribution, 1166 | as well as to install, uninstall, sign and verify such files. 1167 | 1168 | - Integrated PAR::Dist into "par.pl" and "parl". For example, 1169 | "parl -i Foo-0.01-i386-freebsd-5.8.0.par" installs a PAR 1170 | distribution; "parl -v out.exe" verifies a digitally signed 1171 | executable generated by "pp --sign". 1172 | 1173 | - A new option, "pp --multiarch", lets you generate PAR files 1174 | that can work on several architectures. 1175 | 1176 | - "pp --sign" now adds digital signatures to generated executables 1177 | and PAR files. 1178 | 1179 | - PAR files may now (recursively) contain other PAR files inside 1180 | their par/ directories. 1181 | 1182 | - shlib/ and par/ directories inside PAR files can now contain 1183 | architecture- and perl-version-specific subdirectories. 1184 | 1185 | - The "Cross-Platform Packaging and Deployment with PAR" tutorial 1186 | is now online as http://www.autrijus.org/par-tutorial/. 1187 | 1188 | [Bug Fixes] 1189 | 1190 | - MANIFEST.SKIP was broken on Win32. 1191 | 1192 | - C compilers that doesn't handle long line well can now 1193 | compile PAR. 1194 | 1195 | - DLL files inside the same auto/ library as XS modules 1196 | was not properly extracted and loaded. This specifically 1197 | affects Win32. 1198 | 1199 | - Because parl's @INC is '.', pp-generated executables may 1200 | miss IO.dll and other shared libraries since they couldn't 1201 | be correctly found in @INC. 1202 | 1203 | 0.69 2003-05-31 1204 | 1205 | [New Features] 1206 | 1207 | - Under Perl 5.8, "pp -p" now works with Apache::PAR. 1208 | See http://aut.dyndns.org/par-tutorial/slide018.html for 1209 | a simple example. 1210 | 1211 | - "pp -M filename" now adds "filename" to /, not /lib/, 1212 | unless filename ends in (pm|ix|al). This makes it 1213 | possible to bundle "web.conf" needed by Apache::PAR. 1214 | 1215 | - "pp -l" now searchs in system library paths, and 1216 | appends "lib" / prepends ".$dl_ext" where necessary. 1217 | 1218 | [Bug Fixes] 1219 | 1220 | - PAR segfaults on some Unix platforms due to a NULL pointer 1221 | used in mktmpdir.c. Fixed. 1222 | 1223 | - "pp -o out.par -p -e '...'" now honors -o; previously 1224 | it used "a.out.par" anyway. 1225 | 1226 | - Inhibited spurious uninitialized warnings under -w in the 1227 | POD-stripping code. 1228 | 1229 | - Win32 did not properly cleans up PAR_TEMP directory, resulting 1230 | in failure for executables that reused the same PID. Fixed. 1231 | 1232 | 0.68 2003-05-26 1233 | 1234 | [New Features] 1235 | 1236 | - New 'pp -l' option to pack additional shared libraries (DLLs). 1237 | 1238 | - POD-stripped libraries inside PAR files now have #line directives 1239 | inserted, so they report the original line numbers on failure. 1240 | 1241 | - PAR files generated by 'pp' now has a MANIFEST file that can be 1242 | viewed by Gecko-based browsers with Javascript turned on, e.g.: 1243 | jar:http://aut.dyndns.org/par/test.par!/MANIFEST 1244 | 1245 | [Bug Fixes] 1246 | 1247 | - Each pp-executable instance now creates its own PAR_TEMP directory; 1248 | this avoids permission errors when multiple users run the same binary. 1249 | As a consequence, PAR_CLEARTEMP is now set to "1" by default. 1250 | 1251 | - Newer versions of shared Zlib library no longer causes "pp" to 1252 | generate broken executables. 1253 | 1254 | - Fixed dynamic loading on Cygwin was failing due to missing +x mode. 1255 | 1256 | - Like "use lib", "use PAR 'name.par'" now unshift()s instead of push()es 1257 | into @INC. Same applies for "par.pl -A" and "parl -A". 1258 | 1259 | - Fixed building on ActivePerl 626 and below due to a missing $Config{ld}. 1260 | 1261 | 0.67 2003-04-01 1262 | 1263 | [New Features] 1264 | 1265 | - PAR now works on Cygwin and MinGW/MSYS. 1266 | 1267 | - Globbing support in PAR::import(): use PAR "/path/*.pm"; 1268 | 1269 | - New license clarification messages added to POD and 'pp -V'. 1270 | 1271 | - All 'pp' options now has a short form (-o) and a long form (--output). 1272 | 1273 | - Revamped documentation for 'pp'. 1274 | 1275 | - New -g (--gui) flag for 'pp' to build console-less Win32 executables. 1276 | 1277 | [Bug Fixes] 1278 | 1279 | - Building on Darwin Perl 5.6.0 was broken with 'cc -s'. 1280 | 1281 | - Building on 5.6.0 was broken due to bad 'base.pm'. 1282 | 1283 | - Win32 Tk::Widget autoloading was broken due to a binmode() bug. 1284 | 1285 | - IPC::Run was pod-stripped incorrectly. Fixed. 1286 | 1287 | - Depends on Module::ScanDeps 0.19, which supports utf8 and .ph files. 1288 | 1289 | - Better AutoInstall support, which uses 'sudo' where necessary. 1290 | 1291 | 0.66 2003-03-20 1292 | 1293 | [New Features] 1294 | 1295 | - Adds PAR::Intro, a PODified version of the online presentation. 1296 | 1297 | - Adds App::Packer::Backend::PAR, a bridge between PAR and App::Packer. 1298 | 1299 | - Scripts and modules are now searched in "/" last, instead of first. 1300 | 1301 | - Experimental patch for packing shared libraries via "pp -l". 1302 | 1303 | - HTTP fetching of precompiled packages in addition to FTP. 1304 | 1305 | [Bug Fixes] 1306 | 1307 | - Makefile.PL now downloads precompiled packages only if needed. 1308 | 1309 | - AutoInstall has been made to work for an easier installation. 1310 | 1311 | - The redundant "parl.exe.bat" is no longer created on Win32. 1312 | - Pre-0.63 PARs used to leave broken .dll in TEMP; now they're cleaned. 1313 | 1314 | - "pp c:\something.pl" no longer treats c: as a relative path. 1315 | 1316 | - "pp -I dir" now searches 'dir' first, instead of last. 1317 | 1318 | - "pp" was broken on Perl 5.6.0 due to => stringification bugs. 1319 | 1320 | - Support for Tk::Widget autoloading has been added. 1321 | 1322 | - "parl" was not stripped if "gcc" was invoked as "cc"; fixed. 1323 | 1324 | - On a machine with multiple "parl"s, "pp" now uses the correct one. 1325 | 1326 | - File::Temp was missing as a dependency. 1327 | 1328 | [Known Issues] 1329 | 1330 | - Cygwin support is still broken. 1331 | 1332 | - PAR does not include utf8_heavy.pl nor unicore/* for scripts that 1333 | has "use utf8;". This has since been fixed by Module::ScanDeps 0.18. 1334 | 1335 | 0.65 2003-03-09 1336 | 1337 | This release comes with several significant improvements: 1338 | 1339 | [Automatic binary installation] 1340 | 1341 | Previously, users without a C compiler cannot build the 'parl' 1342 | executable, and is therefore unable to create self-contained 1343 | binaries using 'pp'. 1344 | 1345 | Now, if there is a binary package available for that architecture 1346 | under my CPAN directory, the Makefile.PL script will automatically 1347 | fetch it, unpack into blib/, and the installation will continue as 1348 | normal, resulting in a fully-functional 'pp'. 1349 | 1350 | This feature is part of the soon-to-be-released Module::Install 1351 | framework; it will greatly benefit all CPAN authors with non-pure-perl 1352 | distributions. 1353 | 1354 | [POD stripping] 1355 | 1356 | Packages generated with 'pp' will now strip POD sections from all 1357 | packed dependencies (your own scripts is unaffected); all binary 1358 | executables will save at least 276732 bytes, with additional ~20% 1359 | saving in additional packed dependencies. 1360 | 1361 | You can turn off this feature with the PAR_VERBATIM environment 1362 | variable. 1363 | 1364 | [XS Incompatibility solved] 1365 | 1366 | Because 'pp'-generated executables includes some fixed version of 1367 | shared libraries (IO, Zlib, etc), they used to break when the 1368 | target system has different version of shared libraries. 1369 | 1370 | Now PAR::Heavy intercepts DynaLoader::dl_expandspec to always prefer 1371 | the library inside the PAR file, so this issue is resolved. 1372 | 1373 | [5.6.1 Reclaimed] 1374 | 1375 | Thanks to Sisyphus and various others, building on Perl 5.6.1 1376 | (with its old ExtUtils::MakeMaker and lack of PTHREAD_ATFORK) 1377 | now works again. 1378 | 1379 | 0.64 2003-03-02 1380 | 1381 | [New Features] 1382 | 1383 | - The t/0-signature.t test is re-enabled for people using my 1384 | Module::Signature to verify the module's OpenPGP signature. 1385 | 1386 | - This release is the first distribution on CPAN to use the 1387 | Module::Install framework, which is a stand-alone, extensible 1388 | drop-in replacement for ExtUtils::MakeMaker that needs no 1389 | extra action/prerequisites for end users. 1390 | 1391 | [Bug Fixes] 1392 | 1393 | - Dynamic loading on Win32 was broken, due to a binmode() bug 1394 | reported by Bill Atkins, D. Menzel and others. 1395 | 1396 | - Building on Win32 in directory names that contain spaces 1397 | did not work. 1398 | 1399 | 0.63 2003-02-06 1400 | 1401 | [Bug Fixes] 1402 | 1403 | - The 'parl' binary (which replaces the old 'par' or 'par.exe') 1404 | didn't work properly when bundling perl modules for self- 1405 | contained executables, rendering 'pp' useless on machines 1406 | without core perl. 1407 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2002-2010 by Audrey Tang . 2 | Copyright 2006-2010 by Steffen Mueller . 3 | 4 | This is free software; you can redistribute it and/or modify it under 5 | the same terms as the Perl 5 programming language system itself. 6 | 7 | Terms of the Perl programming language system itself 8 | 9 | a) the GNU General Public License as published by the Free 10 | Software Foundation; either version 1, or (at your option) any 11 | later version, or 12 | b) the "Artistic License" 13 | 14 | --- The GNU General Public License, Version 1, February 1989 --- 15 | 16 | Copyright 2002-2010 by Audrey Tang . 17 | Copyright 2006-2010 by Steffen Mueller . 18 | 19 | This is free software, licensed under: 20 | 21 | The GNU General Public License, Version 1, February 1989 22 | 23 | GNU GENERAL PUBLIC LICENSE 24 | Version 1, February 1989 25 | 26 | Copyright (C) 1989 Free Software Foundation, Inc. 27 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 28 | 29 | Everyone is permitted to copy and distribute verbatim copies 30 | of this license document, but changing it is not allowed. 31 | 32 | Preamble 33 | 34 | The license agreements of most software companies try to keep users 35 | at the mercy of those companies. By contrast, our General Public 36 | License is intended to guarantee your freedom to share and change free 37 | software--to make sure the software is free for all its users. The 38 | General Public License applies to the Free Software Foundation's 39 | software and to any other program whose authors commit to using it. 40 | You can use it for your programs, too. 41 | 42 | When we speak of free software, we are referring to freedom, not 43 | price. Specifically, the General Public License is designed to make 44 | sure that you have the freedom to give away or sell copies of free 45 | software, that you receive source code or can get it if you want it, 46 | that you can change the software or use pieces of it in new free 47 | programs; and that you know you can do these things. 48 | 49 | To protect your rights, we need to make restrictions that forbid 50 | anyone to deny you these rights or to ask you to surrender the rights. 51 | These restrictions translate to certain responsibilities for you if you 52 | distribute copies of the software, or if you modify it. 53 | 54 | For example, if you distribute copies of a such a program, whether 55 | gratis or for a fee, you must give the recipients all the rights that 56 | you have. You must make sure that they, too, receive or can get the 57 | source code. And you must tell them their rights. 58 | 59 | We protect your rights with two steps: (1) copyright the software, and 60 | (2) offer you this license which gives you legal permission to copy, 61 | distribute and/or modify the software. 62 | 63 | Also, for each author's protection and ours, we want to make certain 64 | that everyone understands that there is no warranty for this free 65 | software. If the software is modified by someone else and passed on, we 66 | want its recipients to know that what they have is not the original, so 67 | that any problems introduced by others will not reflect on the original 68 | authors' reputations. 69 | 70 | The precise terms and conditions for copying, distribution and 71 | modification follow. 72 | 73 | GNU GENERAL PUBLIC LICENSE 74 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 75 | 76 | 0. This License Agreement applies to any program or other work which 77 | contains a notice placed by the copyright holder saying it may be 78 | distributed under the terms of this General Public License. The 79 | "Program", below, refers to any such program or work, and a "work based 80 | on the Program" means either the Program or any work containing the 81 | Program or a portion of it, either verbatim or with modifications. Each 82 | licensee is addressed as "you". 83 | 84 | 1. You may copy and distribute verbatim copies of the Program's source 85 | code as you receive it, in any medium, provided that you conspicuously and 86 | appropriately publish on each copy an appropriate copyright notice and 87 | disclaimer of warranty; keep intact all the notices that refer to this 88 | General Public License and to the absence of any warranty; and give any 89 | other recipients of the Program a copy of this General Public License 90 | along with the Program. You may charge a fee for the physical act of 91 | transferring a copy. 92 | 93 | 2. You may modify your copy or copies of the Program or any portion of 94 | it, and copy and distribute such modifications under the terms of Paragraph 95 | 1 above, provided that you also do the following: 96 | 97 | a) cause the modified files to carry prominent notices stating that 98 | you changed the files and the date of any change; and 99 | 100 | b) cause the whole of any work that you distribute or publish, that 101 | in whole or in part contains the Program or any part thereof, either 102 | with or without modifications, to be licensed at no charge to all 103 | third parties under the terms of this General Public License (except 104 | that you may choose to grant warranty protection to some or all 105 | third parties, at your option). 106 | 107 | c) If the modified program normally reads commands interactively when 108 | run, you must cause it, when started running for such interactive use 109 | in the simplest and most usual way, to print or display an 110 | announcement including an appropriate copyright notice and a notice 111 | that there is no warranty (or else, saying that you provide a 112 | warranty) and that users may redistribute the program under these 113 | conditions, and telling the user how to view a copy of this General 114 | Public License. 115 | 116 | d) You may charge a fee for the physical act of transferring a 117 | copy, and you may at your option offer warranty protection in 118 | exchange for a fee. 119 | 120 | Mere aggregation of another independent work with the Program (or its 121 | derivative) on a volume of a storage or distribution medium does not bring 122 | the other work under the scope of these terms. 123 | 124 | 3. You may copy and distribute the Program (or a portion or derivative of 125 | it, under Paragraph 2) in object code or executable form under the terms of 126 | Paragraphs 1 and 2 above provided that you also do one of the following: 127 | 128 | a) accompany it with the complete corresponding machine-readable 129 | source code, which must be distributed under the terms of 130 | Paragraphs 1 and 2 above; or, 131 | 132 | b) accompany it with a written offer, valid for at least three 133 | years, to give any third party free (except for a nominal charge 134 | for the cost of distribution) a complete machine-readable copy of the 135 | corresponding source code, to be distributed under the terms of 136 | Paragraphs 1 and 2 above; or, 137 | 138 | c) accompany it with the information you received as to where the 139 | corresponding source code may be obtained. (This alternative is 140 | allowed only for noncommercial distribution and only if you 141 | received the program in object code or executable form alone.) 142 | 143 | Source code for a work means the preferred form of the work for making 144 | modifications to it. For an executable file, complete source code means 145 | all the source code for all modules it contains; but, as a special 146 | exception, it need not include source code for modules which are standard 147 | libraries that accompany the operating system on which the executable 148 | file runs, or for standard header files or definitions files that 149 | accompany that operating system. 150 | 151 | 4. You may not copy, modify, sublicense, distribute or transfer the 152 | Program except as expressly provided under this General Public License. 153 | Any attempt otherwise to copy, modify, sublicense, distribute or transfer 154 | the Program is void, and will automatically terminate your rights to use 155 | the Program under this License. However, parties who have received 156 | copies, or rights to use copies, from you under this General Public 157 | License will not have their licenses terminated so long as such parties 158 | remain in full compliance. 159 | 160 | 5. By copying, distributing or modifying the Program (or any work based 161 | on the Program) you indicate your acceptance of this license to do so, 162 | and all its terms and conditions. 163 | 164 | 6. Each time you redistribute the Program (or any work based on the 165 | Program), the recipient automatically receives a license from the original 166 | licensor to copy, distribute or modify the Program subject to these 167 | terms and conditions. You may not impose any further restrictions on the 168 | recipients' exercise of the rights granted herein. 169 | 170 | 7. The Free Software Foundation may publish revised and/or new versions 171 | of the General Public License from time to time. Such new versions will 172 | be similar in spirit to the present version, but may differ in detail to 173 | address new problems or concerns. 174 | 175 | Each version is given a distinguishing version number. If the Program 176 | specifies a version number of the license which applies to it and "any 177 | later version", you have the option of following the terms and conditions 178 | either of that version or of any later version published by the Free 179 | Software Foundation. If the Program does not specify a version number of 180 | the license, you may choose any version ever published by the Free Software 181 | Foundation. 182 | 183 | 8. If you wish to incorporate parts of the Program into other free 184 | programs whose distribution conditions are different, write to the author 185 | to ask for permission. For software which is copyrighted by the Free 186 | Software Foundation, write to the Free Software Foundation; we sometimes 187 | make exceptions for this. Our decision will be guided by the two goals 188 | of preserving the free status of all derivatives of our free software and 189 | of promoting the sharing and reuse of software generally. 190 | 191 | NO WARRANTY 192 | 193 | 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 194 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 195 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 196 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 197 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 198 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 199 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 200 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 201 | REPAIR OR CORRECTION. 202 | 203 | 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 204 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 205 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 206 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 207 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 208 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 209 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 210 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 211 | POSSIBILITY OF SUCH DAMAGES. 212 | 213 | END OF TERMS AND CONDITIONS 214 | 215 | Appendix: How to Apply These Terms to Your New Programs 216 | 217 | If you develop a new program, and you want it to be of the greatest 218 | possible use to humanity, the best way to achieve this is to make it 219 | free software which everyone can redistribute and change under these 220 | terms. 221 | 222 | To do so, attach the following notices to the program. It is safest to 223 | attach them to the start of each source file to most effectively convey 224 | the exclusion of warranty; and each file should have at least the 225 | "copyright" line and a pointer to where the full notice is found. 226 | 227 | 228 | Copyright (C) 19yy 229 | 230 | This program is free software; you can redistribute it and/or modify 231 | it under the terms of the GNU General Public License as published by 232 | the Free Software Foundation; either version 1, or (at your option) 233 | any later version. 234 | 235 | This program is distributed in the hope that it will be useful, 236 | but WITHOUT ANY WARRANTY; without even the implied warranty of 237 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 238 | GNU General Public License for more details. 239 | 240 | You should have received a copy of the GNU General Public License 241 | along with this program; if not, write to the Free Software 242 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA 243 | 244 | 245 | Also add information on how to contact you by electronic and paper mail. 246 | 247 | If the program is interactive, make it output a short notice like this 248 | when it starts in an interactive mode: 249 | 250 | Gnomovision version 69, Copyright (C) 19xx name of author 251 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 252 | This is free software, and you are welcome to redistribute it 253 | under certain conditions; type `show c' for details. 254 | 255 | The hypothetical commands `show w' and `show c' should show the 256 | appropriate parts of the General Public License. Of course, the 257 | commands you use may be called something other than `show w' and `show 258 | c'; they could even be mouse-clicks or menu items--whatever suits your 259 | program. 260 | 261 | You should also get your employer (if you work as a programmer) or your 262 | school, if any, to sign a "copyright disclaimer" for the program, if 263 | necessary. Here a sample; alter the names: 264 | 265 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 266 | program `Gnomovision' (a program to direct compilers to make passes 267 | at assemblers) written by James Hacker. 268 | 269 | , 1 April 1989 270 | Ty Coon, President of Vice 271 | 272 | That's all there is to it! 273 | 274 | 275 | --- The Artistic License 1.0 --- 276 | 277 | Copyright 2002-2010 by Audrey Tang . 278 | Copyright 2006-2010 by Steffen Mueller . 279 | 280 | This is free software, licensed under: 281 | 282 | The Artistic License 1.0 283 | 284 | The Artistic License 285 | 286 | Preamble 287 | 288 | The intent of this document is to state the conditions under which a Package 289 | may be copied, such that the Copyright Holder maintains some semblance of 290 | artistic control over the development of the package, while giving the users of 291 | the package the right to use and distribute the Package in a more-or-less 292 | customary fashion, plus the right to make reasonable modifications. 293 | 294 | Definitions: 295 | 296 | - "Package" refers to the collection of files distributed by the Copyright 297 | Holder, and derivatives of that collection of files created through 298 | textual modification. 299 | - "Standard Version" refers to such a Package if it has not been modified, 300 | or has been modified in accordance with the wishes of the Copyright 301 | Holder. 302 | - "Copyright Holder" is whoever is named in the copyright or copyrights for 303 | the package. 304 | - "You" is you, if you're thinking about copying or distributing this Package. 305 | - "Reasonable copying fee" is whatever you can justify on the basis of media 306 | cost, duplication charges, time of people involved, and so on. (You will 307 | not be required to justify it to the Copyright Holder, but only to the 308 | computing community at large as a market that must bear the fee.) 309 | - "Freely Available" means that no fee is charged for the item itself, though 310 | there may be fees involved in handling the item. It also means that 311 | recipients of the item may redistribute it under the same conditions they 312 | received it. 313 | 314 | 1. You may make and give away verbatim copies of the source form of the 315 | Standard Version of this Package without restriction, provided that you 316 | duplicate all of the original copyright notices and associated disclaimers. 317 | 318 | 2. You may apply bug fixes, portability fixes and other modifications derived 319 | from the Public Domain or from the Copyright Holder. A Package modified in such 320 | a way shall still be considered the Standard Version. 321 | 322 | 3. You may otherwise modify your copy of this Package in any way, provided that 323 | you insert a prominent notice in each changed file stating how and when you 324 | changed that file, and provided that you do at least ONE of the following: 325 | 326 | a) place your modifications in the Public Domain or otherwise make them 327 | Freely Available, such as by posting said modifications to Usenet or an 328 | equivalent medium, or placing the modifications on a major archive site 329 | such as ftp.uu.net, or by allowing the Copyright Holder to include your 330 | modifications in the Standard Version of the Package. 331 | 332 | b) use the modified Package only within your corporation or organization. 333 | 334 | c) rename any non-standard executables so the names do not conflict with 335 | standard executables, which must also be provided, and provide a separate 336 | manual page for each non-standard executable that clearly documents how it 337 | differs from the Standard Version. 338 | 339 | d) make other distribution arrangements with the Copyright Holder. 340 | 341 | 4. You may distribute the programs of this Package in object code or executable 342 | form, provided that you do at least ONE of the following: 343 | 344 | a) distribute a Standard Version of the executables and library files, 345 | together with instructions (in the manual page or equivalent) on where to 346 | get the Standard Version. 347 | 348 | b) accompany the distribution with the machine-readable source of the Package 349 | with your modifications. 350 | 351 | c) accompany any non-standard executables with their corresponding Standard 352 | Version executables, giving the non-standard executables non-standard 353 | names, and clearly documenting the differences in manual pages (or 354 | equivalent), together with instructions on where to get the Standard 355 | Version. 356 | 357 | d) make other distribution arrangements with the Copyright Holder. 358 | 359 | 5. You may charge a reasonable copying fee for any distribution of this 360 | Package. You may charge any fee you choose for support of this Package. You 361 | may not charge a fee for this Package itself. However, you may distribute this 362 | Package in aggregate with other (possibly commercial) programs as part of a 363 | larger (possibly commercial) software distribution provided that you do not 364 | advertise this Package as a product of your own. 365 | 366 | 6. The scripts and library files supplied as input to or produced as output 367 | from the programs of this Package do not automatically fall under the copyright 368 | of this Package, but belong to whomever generated them, and may be sold 369 | commercially, and may be aggregated with this Package. 370 | 371 | 7. C or perl subroutines supplied by you and linked into this Package shall not 372 | be considered part of this Package. 373 | 374 | 8. The name of the Copyright Holder may not be used to endorse or promote 375 | products derived from this software without specific prior written permission. 376 | 377 | 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 378 | WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 379 | MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 380 | 381 | The End 382 | 383 | 384 | -------------------------------------------------------------------------------- /MANIFEST.SKIP: -------------------------------------------------------------------------------- 1 | #defaults 2 | ^\..*\.sw.$ 3 | ^MANIFEST.bak$ 4 | ^Makefile$ 5 | ^Makefile.old$ 6 | ^blib/ 7 | ^pm_to_blib 8 | ^blibdirs 9 | \B\.git\b 10 | ^\.gitignore 11 | \B\.svn\b 12 | ^MYMETA\. 13 | ^typescript$ 14 | ^t/hello.par 15 | -------------------------------------------------------------------------------- /Makefile.PL: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use ExtUtils::MakeMaker; 6 | 7 | WriteMakefile1( 8 | 9 | NAME => 'PAR', 10 | VERSION_FROM => 'lib/PAR.pm', 11 | ABSTRACT_FROM => 'lib/PAR.pm', 12 | LICENSE => 'perl_5', 13 | AUTHOR => [ 'Audrey Tang ' ], 14 | 15 | MIN_PERL_VERSION => '5.008009', 16 | PREREQ_PM => { 17 | 'File::Temp' => '0.05', 18 | 'Compress::Zlib' => ($^O eq 'MSWin32') ? '1.16' : '1.30', 19 | 'Archive::Zip' => '1.00', 20 | 'PAR::Dist' => '0.32', 21 | 'AutoLoader' => '5.66_02', 22 | 'Digest::SHA' => '5.45', 23 | }, 24 | TEST_REQUIRES => { 25 | 'Test::More' => 0, 26 | }, 27 | 28 | META_MERGE => { 29 | 'meta-spec' => { version => 2 }, 30 | resources => { 31 | repository => { 32 | type => 'git', 33 | url => 'git://github.com/rschupp/PAR.git', 34 | web => 'https://github.com/rschupp/PAR', 35 | }, 36 | MailingList => 'mailto:par@perl.org', 37 | bugtracker => { web => 'https://github.com/rschupp/PAR/issues' }, 38 | }, 39 | }, 40 | 41 | clean => { FILES => 't/hello.par' }, 42 | ); 43 | 44 | 45 | sub MY::postamble { 46 | return <<'...'; 47 | pure_all :: t/hello.par 48 | t/hello.par: 49 | $(PERL) "t/gen-hello-par.pl" 50 | ... 51 | } 52 | 53 | sub WriteMakefile1 { #Compatibility code for old versions of EU::MM. Written by Alexandr Ciornii, version 2. Added by eumm-upgrade. 54 | my %params=@_; 55 | my $eumm_version=$ExtUtils::MakeMaker::VERSION; 56 | $eumm_version=eval $eumm_version; 57 | die "EXTRA_META is deprecated" if exists $params{EXTRA_META}; 58 | die "License not specified" if not exists $params{LICENSE}; 59 | if ($params{AUTHOR} and ref($params{AUTHOR}) eq 'ARRAY' and $eumm_version < 6.5705) { 60 | $params{META_ADD}->{author}=$params{AUTHOR}; 61 | $params{AUTHOR}=join(', ',@{$params{AUTHOR}}); 62 | } 63 | if ($params{TEST_REQUIRES} and $eumm_version < 6.64) { 64 | $params{BUILD_REQUIRES}={ %{$params{BUILD_REQUIRES} || {}} , %{$params{TEST_REQUIRES}} }; 65 | delete $params{TEST_REQUIRES}; 66 | } 67 | if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) { 68 | #EUMM 6.5502 has problems with BUILD_REQUIRES 69 | $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} }; 70 | delete $params{BUILD_REQUIRES}; 71 | } 72 | delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52; 73 | delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48; 74 | delete $params{META_MERGE} if $eumm_version < 6.46; 75 | delete $params{META_ADD} if $eumm_version < 6.46; 76 | delete $params{LICENSE} if $eumm_version < 6.31; 77 | 78 | WriteMakefile(%params); 79 | } 80 | 81 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This is the README file for PAR, a toolkit to create and use perl scripts 2 | and modules stored inside compressed .par files. 3 | 4 | Please type "perldoc PAR" after installation to see the module usage 5 | information, and "perldoc PAR::FAQ" for frequently answered questions. 6 | 7 | For running ".par" files directly, please install PAR-Packer and 8 | see "perldoc parl". 9 | 10 | To generate/execute self-contained perl scripts, install PAR-Packer 11 | and see "perldoc par.pl" or "perldoc pp". 12 | 13 | An extensive "Cross-Platform Packaging and Deployment with PAR" tutorial 14 | is available as "perldoc PAR::Tutorial". A slightly outdated version is 15 | also available online at . 16 | 17 | * Installation 18 | 19 | PAR uses the standard perl module install process: 20 | 21 | perl Makefile.PL 22 | make 23 | make test 24 | make install 25 | 26 | * Historic note 27 | 28 | With version 0.97 of PAR, the logic for generating stand-alone executables 29 | has been refactored into the PAR-Packer distribution. It should be available 30 | from the same source you got PAR from. Hence, for packing scripts with 31 | prerequisite modules into stand-alone scripts or executables 32 | (aka PerlApp, Perl2exe, or 'perlcc that works'), see "perldoc pp" 33 | and "perldoc tkpp". 34 | 35 | Since version 0.97 of PAR, you do not need a C compiler any more to build it. 36 | All logic that required a C compiler previously was moved into the PAR-Packer 37 | distribution. 38 | 39 | * Source Repository 40 | 41 | You can check out the most recent revision from PAR's GitHub repository: 42 | 43 | https://github.com/rschupp/PAR 44 | 45 | * Contact 46 | 47 | You can write 48 | to the mailing list at , or send an empty mail to 49 | to participate in the discussion. 50 | Archives of the mailing list are available at 51 | or . 52 | 53 | Please submit bug reports to . 54 | 55 | * Copyright 56 | 57 | Copyright 2002-2010 by Audrey Tang . 58 | 59 | Copyright 2006-2010 by Steffen Mueller . 60 | 61 | All rights reserved. You can redistribute and/or modify 62 | this bundle under the same terms as Perl itself. 63 | 64 | See LICENSE. 65 | -------------------------------------------------------------------------------- /lib/PAR.pm: -------------------------------------------------------------------------------- 1 | package PAR; 2 | $PAR::VERSION = '1.020'; 3 | 4 | use 5.008009; 5 | use strict; 6 | use warnings; 7 | use Config; 8 | use Carp qw/croak/; 9 | 10 | # If the 'prefork' module is available, we 11 | # register various run-time loaded modules with it. 12 | # That way, there is more shared memory in a forking 13 | # environment. 14 | BEGIN { 15 | if (eval 'require prefork') { 16 | prefork->import($_) for qw/ 17 | Archive::Zip 18 | File::Glob 19 | File::Spec 20 | File::Temp 21 | Fcntl 22 | LWP::Simple 23 | PAR::Heavy 24 | /; 25 | # not including Archive::Unzip::Burst which only makes sense 26 | # in the context of a PAR::Packer'ed executable anyway. 27 | } 28 | } 29 | 30 | use PAR::SetupProgname; 31 | use PAR::SetupTemp; 32 | 33 | =head1 NAME 34 | 35 | PAR - Perl Archive Toolkit 36 | 37 | =head1 SYNOPSIS 38 | 39 | (If you want to make an executable that contains all module, scripts and 40 | data files, please consult the L utility instead. L used to be 41 | part of the PAR distribution but is now shipped as part of the L 42 | distribution instead.) 43 | 44 | Following examples assume a F file in Zip format. 45 | 46 | To use F from F<./foo.par>: 47 | 48 | % perl -MPAR=./foo.par -MHello 49 | % perl -MPAR=./foo -MHello # the .par part is optional 50 | 51 | Same thing, but search F in C<@INC>: 52 | 53 | % perl -MPAR -Ifoo.par -MHello 54 | % perl -MPAR -Ifoo -MHello # ditto 55 | 56 | Following paths inside the PAR file are searched: 57 | 58 | /lib/ 59 | /arch/ 60 | /i386-freebsd/ # i.e. $Config{archname} 61 | /5.8.0/ # i.e. $Config{version} 62 | /5.8.0/i386-freebsd/ # both of the above 63 | / 64 | 65 | PAR files may also (recursively) contain other PAR files. 66 | All files under following paths will be considered as PAR 67 | files and searched as well: 68 | 69 | /par/i386-freebsd/ # i.e. $Config{archname} 70 | /par/5.8.0/ # i.e. $Config{version} 71 | /par/5.8.0/i386-freebsd/ # both of the above 72 | /par/ 73 | 74 | Run F