Hello community, here is the log from the commit of package perl-PAR for openSUSE:Factory checked in at 2017-01-23 11:34:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-PAR (Old) and /work/SRC/openSUSE:Factory/.perl-PAR.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PAR" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-PAR/perl-PAR.changes 2016-09-25 14:44:43.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-PAR.new/perl-PAR.changes 2017-01-23 11:34:35.289717068 +0100 @@ -1,0 +2,48 @@ +Mon Dec 19 06:48:51 UTC 2016 - [email protected] + +- updated to 1.014 + see /usr/share/doc/packages/perl-PAR/Changes + + 1.014 2016-12-18 + + - Fix RT#119224: "Issue about Can't locate loadable object for module" + drop "use" statements in PAR/Heavy.pm added in edf5f24d + + - Fix RT#119010: "Wrong license link" + always refer to the included LICENSE file + + - generate hello.par in Makefile target "pure_all" + +------------------------------------------------------------------- +Mon Nov 28 06:57:47 UTC 2016 - [email protected] + +- updated to 1.013 + see /usr/share/doc/packages/perl-PAR/Changes + + 1.013 2016-11-27 + + - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 1.012?)" + + - Build t/hello.par at "make" time + +------------------------------------------------------------------- +Sat Nov 26 06:55:50 UTC 2016 - [email protected] + +- updated to 1.012 + see /usr/share/doc/packages/perl-PAR/Changes + + 1.012 2016-11-25 + + - Guard against concurrent extraction attempts of zip into "inc" + + - use a file lock to protect the extraction of the complete zip into "inc" + + - _run_member_*(), _tempfile(), _dl_extract(): + make the "persistent" filename only visible when the file + has been completely written + + - Make build and test work if @INC does not include "." + + - Upgrade to Module::Install 1.17 + +------------------------------------------------------------------- Old: ---- PAR-1.011.tar.gz New: ---- PAR-1.014.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-PAR.spec ++++++ --- /var/tmp/diff_new_pack.O2QVTg/_old 2017-01-23 11:34:36.217585492 +0100 +++ /var/tmp/diff_new_pack.O2QVTg/_new 2017-01-23 11:34:36.221584924 +0100 @@ -17,7 +17,7 @@ Name: perl-PAR -Version: 1.011 +Version: 1.014 Release: 0 %define cpan_name PAR Summary: Perl Archive Toolkit @@ -38,7 +38,6 @@ Requires: perl(AutoLoader) >= 5.66_02 Requires: perl(Compress::Zlib) >= 1.3 Requires: perl(PAR::Dist) >= 0.32 -Recommends: perl(Digest) >= Module::Signature %{perl_requires} %description ++++++ PAR-1.011.tar.gz -> PAR-1.014.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/Changes new/PAR-1.014/Changes --- old/PAR-1.011/Changes 2016-09-18 13:17:20.000000000 +0200 +++ new/PAR-1.014/Changes 2016-12-18 17:31:34.000000000 +0100 @@ -1,3 +1,33 @@ +1.014 2016-12-18 + + - Fix RT#119224: "Issue about Can't locate loadable object for module" + drop "use" statements in PAR/Heavy.pm added in edf5f24d + + - Fix RT#119010: "Wrong license link" + always refer to the included LICENSE file + + - generate hello.par in Makefile target "pure_all" + +1.013 2016-11-27 + + - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 1.012?)" + + - Build t/hello.par at "make" time + +1.012 2016-11-25 + + - Guard against concurrent extraction attempts of zip into "inc" + + - use a file lock to protect the extraction of the complete zip into "inc" + + - _run_member_*(), _tempfile(), _dl_extract(): + make the "persistent" filename only visible when the file + has been completely written + + - Make build and test work if @INC does not include "." + + - Upgrade to Module::Install 1.17 + 1.011 2016-09-18 - Move to GitHub. Thanks, OpenFoundry, for years of service. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/LICENSE new/PAR-1.014/LICENSE --- old/PAR-1.011/LICENSE 2016-09-18 13:00:22.000000000 +0200 +++ new/PAR-1.014/LICENSE 2016-10-01 17:13:12.000000000 +0200 @@ -1,201 +1,383 @@ - The Artistic License 2.0 +Copyright 2002-2010 by Audrey Tang <[email protected]>. +Copyright 2006-2010 by Steffen Mueller <[email protected]>. - Copyright (c) 2000-2006, The Perl Foundation. +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +Terms of the Perl programming language system itself -Preamble +a) the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or +b) the "Artistic License" + +--- The GNU General Public License, Version 1, February 1989 --- + +Copyright 2002-2010 by Audrey Tang <[email protected]>. +Copyright 2006-2010 by Steffen Mueller <[email protected]>. + +This is free software, licensed under: + + The GNU General Public License, Version 1, February 1989 + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! + + +--- The Artistic License 1.0 --- + +Copyright 2002-2010 by Audrey Tang <[email protected]>. +Copyright 2006-2010 by Steffen Mueller <[email protected]>. + +This is free software, licensed under: + + The Artistic License 1.0 -This license establishes the terms under which a given free software -Package may be copied, modified, distributed, and/or redistributed. -The intent is that the Copyright Holder maintains some artistic -control over the development of that Package while still keeping the -Package available as open source and free software. - -You are always permitted to make arrangements wholly outside of this -license directly with the Copyright Holder of a given Package. If the -terms of this license do not permit the full use that you propose to -make of the Package, you should contact the Copyright Holder and seek -a different licensing arrangement. - -Definitions - - "Copyright Holder" means the individual(s) or organization(s) - named in the copyright notice for the entire Package. - - "Contributor" means any party that has contributed code or other - material to the Package, in accordance with the Copyright Holder's - procedures. - - "You" and "your" means any person who would like to copy, - distribute, or modify the Package. - - "Package" means the collection of files distributed by the - Copyright Holder, and derivatives of that collection and/or of - those files. A given Package may consist of either the Standard - Version, or a Modified Version. - - "Distribute" means providing a copy of the Package or making it - accessible to anyone else, or in the case of a company or - organization, to others outside of your company or organization. - - "Distributor Fee" means any fee that you charge for Distributing - this Package or providing support for this Package to another - party. It does not mean licensing fees. - - "Standard Version" refers to the Package if it has not been - modified, or has been modified only in ways explicitly requested - by the Copyright Holder. +The Artistic License - "Modified Version" means the Package, if it has been changed, and - such changes were not explicitly requested by the Copyright +Preamble + +The intent of this document is to state the conditions under which a Package +may be copied, such that the Copyright Holder maintains some semblance of +artistic control over the development of the package, while giving the users of +the package the right to use and distribute the Package in a more-or-less +customary fashion, plus the right to make reasonable modifications. + +Definitions: + + - "Package" refers to the collection of files distributed by the Copyright + Holder, and derivatives of that collection of files created through + textual modification. + - "Standard Version" refers to such a Package if it has not been modified, + or has been modified in accordance with the wishes of the Copyright Holder. + - "Copyright Holder" is whoever is named in the copyright or copyrights for + the package. + - "You" is you, if you're thinking about copying or distributing this Package. + - "Reasonable copying fee" is whatever you can justify on the basis of media + cost, duplication charges, time of people involved, and so on. (You will + not be required to justify it to the Copyright Holder, but only to the + computing community at large as a market that must bear the fee.) + - "Freely Available" means that no fee is charged for the item itself, though + there may be fees involved in handling the item. It also means that + recipients of the item may redistribute it under the same conditions they + received it. + +1. You may make and give away verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you +duplicate all of the original copyright notices and associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications derived +from the Public Domain or from the Copyright Holder. A Package modified in such +a way shall still be considered the Standard Version. + +3. You may otherwise modify your copy of this Package in any way, provided that +you insert a prominent notice in each changed file stating how and when you +changed that file, and provided that you do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or an + equivalent medium, or placing the modifications on a major archive site + such as ftp.uu.net, or by allowing the Copyright Holder to include your + modifications in the Standard Version of the Package. + + b) use the modified Package only within your corporation or organization. + + c) rename any non-standard executables so the names do not conflict with + standard executables, which must also be provided, and provide a separate + manual page for each non-standard executable that clearly documents how it + differs from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or executable +form, provided that you do at least ONE of the following: + + a) distribute a Standard Version of the executables and library files, + together with instructions (in the manual page or equivalent) on where to + get the Standard Version. + + b) accompany the distribution with the machine-readable source of the Package + with your modifications. + + c) accompany any non-standard executables with their corresponding Standard + Version executables, giving the non-standard executables non-standard + names, and clearly documenting the differences in manual pages (or + equivalent), together with instructions on where to get the Standard + Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this Package. You +may not charge a fee for this Package itself. However, you may distribute this +Package in aggregate with other (possibly commercial) programs as part of a +larger (possibly commercial) software distribution provided that you do not +advertise this Package as a product of your own. + +6. The scripts and library files supplied as input to or produced as output +from the programs of this Package do not automatically fall under the copyright +of this Package, but belong to whomever generated them, and may be sold +commercially, and may be aggregated with this Package. + +7. C or perl subroutines supplied by you and linked into this Package shall not +be considered part of this Package. + +8. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +The End + - "Original License" means this Artistic License as Distributed with - the Standard Version of the Package, in its current version or as - it may be modified by The Perl Foundation in the future. - - "Source" form means the source code, documentation source, and - configuration files for the Package. - - "Compiled" form means the compiled bytecode, object code, binary, - or any other form resulting from mechanical transformation or - translation of the Source form. - - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use -Modified Versions for any purpose without restriction, provided that -you do not Distribute the Modified Version. - - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the -Standard Version of this Package in any medium without restriction, -either gratis or for a Distributor Fee, provided that you duplicate -all of the original copyright notices and associated disclaimers. At -your discretion, such verbatim copies may or may not include a -Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other -modifications made available from the Copyright Holder. The resulting -Package will still be considered the Standard Version, and as such -will be subject to the Original License. - - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis -or for a Distributor Fee, and with or without a Compiled form of the -Modified Version) provided that you clearly document how it differs -from the Standard Version, including, but not limited to, documenting -any non-standard features, executables, or modules, and provided that -you do at least ONE of the following: - - (a) make the Modified Version available to the Copyright Holder - of the Standard Version, under the Original License, so that the - Copyright Holder may include your modifications in the Standard - Version. - - (b) ensure that installation of your Modified Version does not - prevent the user installing or running the Standard Version. In - addition, the Modified Version must bear a name that is different - from the name of the Standard Version. - - (c) allow anyone who receives a copy of the Modified Version to - make the Source form of the Modified Version available to others - under - - (i) the Original License or - - (ii) a license that permits the licensee to freely copy, - modify and redistribute the Modified Version using the same - licensing terms that apply to the copy that the licensee - received, and requires that the Source form of the Modified - Version, and of any works derived from it, be made freely - available in that license fees are prohibited but Distributor - Fees are allowed. - - -Distribution of Compiled Forms of the Standard Version -or Modified Versions without the Source - -(5) You may Distribute Compiled forms of the Standard Version without -the Source, provided that you include complete instructions on how to -get the Source of the Standard Version. Such instructions must be -valid at the time of your distribution. If these instructions, at any -time while you are carrying out such distribution, become invalid, you -must provide new instructions on demand or cease further distribution. -If you provide valid instructions or cease distribution within thirty -days after you become aware that the instructions are invalid, then -you do not forfeit any of your rights under this license. - -(6) You may Distribute a Modified Version in Compiled form without -the Source, provided that you comply with Section 4 with respect to -the Source of the Modified Version. - - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or -Modified Version) with other packages and Distribute the resulting -aggregation provided that you do not charge a licensing fee for the -Package. Distributor Fees are permitted, and licensing fees for other -components in the aggregation are permitted. The terms of this license -apply to the use and Distribution of the Standard or Modified Versions -as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with -other works, to embed the Package in a larger work of your own, or to -build stand-alone binary or bytecode versions of applications that -include the Package, and Distribute the result without restriction, -provided the result does not expose a direct interface to the Package. - - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that -merely extend or make use of the Package, do not, by themselves, cause -the Package to be a Modified Version. In addition, such works are not -considered parts of the Package itself, and are not subject to the -terms of this license. - - -General Provisions - -(10) Any use, modification, and distribution of the Standard or -Modified Versions is governed by this Artistic License. By using, -modifying or distributing the Package, you accept this license. Do not -use, modify, or distribute the Package, if you do not accept this -license. - -(11) If your Modified Version has been derived from a Modified -Version made by someone other than you, you are nevertheless required -to ensure that your Modified Version complies with the requirements of -this license. - -(12) This license does not grant you the right to use any trademark, -service mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, -free-of-charge patent license to make, have made, use, offer to sell, -sell, import and otherwise transfer the Package with respect to any -patent claims licensable by the Copyright Holder that are necessarily -infringed by the Package. If you institute patent litigation -(including a cross-claim or counterclaim) against any party alleging -that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the -date that such litigation is filed. - -(14) Disclaimer of Warranty: -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL -LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/MANIFEST new/PAR-1.014/MANIFEST --- old/PAR-1.011/MANIFEST 2016-09-18 13:26:20.000000000 +0200 +++ new/PAR-1.014/MANIFEST 2016-12-18 17:34:14.000000000 +0100 @@ -26,5 +26,10 @@ t/40-par-hashref.t t/50-autoloaderfix.t t/60-cleanup.t -t/hello.par +t/data/lib/Data.pm +t/data/lib/Hello.pm +t/data/script/data.pl +t/data/script/hello.pl +t/data/script/nostrict.pl +t/gen-hello-par.pl t/Hello.pm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/MANIFEST.SKIP new/PAR-1.014/MANIFEST.SKIP --- old/PAR-1.011/MANIFEST.SKIP 2016-09-18 13:26:17.000000000 +0200 +++ new/PAR-1.014/MANIFEST.SKIP 2016-11-27 17:10:15.000000000 +0100 @@ -10,3 +10,4 @@ ^\.gitignore \B\.svn\b ^MYMETA\. +^t/hello.par diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/META.yml new/PAR-1.014/META.yml --- old/PAR-1.011/META.yml 2016-09-18 13:29:53.000000000 +0200 +++ new/PAR-1.014/META.yml 2016-12-18 17:33:45.000000000 +0100 @@ -3,44 +3,26 @@ author: - 'Audrey Tang <[email protected]>' build_requires: - ExtUtils::MakeMaker: 6.59 + ExtUtils::MakeMaker: '6.59' configure_requires: - ExtUtils::MakeMaker: 6.59 -distribution_type: module -dynamic_config: 1 -generated_by: 'Module::Install version 1.16' + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter version 2.150005' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + version: '1.4' name: PAR no_index: directory: - - inc - t -provides: - PAR: - file: lib/PAR.pm - version: '1.011' - PAR::Heavy: - file: lib/PAR/Heavy.pm - version: '0.12' - PAR::SetupProgname: - file: lib/PAR/SetupProgname.pm - version: '1.002' - PAR::SetupTemp: - file: lib/PAR/SetupTemp.pm - version: '1.002' -recommends: - Digest: Module::Signature + - inc requires: - Archive::Zip: 1 + Archive::Zip: '1' AutoLoader: 5.66_02 - Compress::Zlib: 1.3 - File::Temp: 0.05 - PAR::Dist: 0.32 - perl: 5.8.1 -resources: - license: http://dev.perl.org/licenses/ - repository: https://github.com/rschupp/PAR -version: '1.011' + Compress::Zlib: '1.3' + File::Temp: '0.05' + PAR::Dist: '0.32' + perl: '5.008001' +version: '1.014' +x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/Makefile.PL new/PAR-1.014/Makefile.PL --- old/PAR-1.011/Makefile.PL 2016-09-18 13:08:01.000000000 +0200 +++ new/PAR-1.014/Makefile.PL 2016-12-18 17:13:32.000000000 +0100 @@ -1,6 +1,7 @@ use strict; use 5.008001; +use lib "."; use inc::Module::Install; name 'PAR'; @@ -30,7 +31,16 @@ 'Module::Signature'; } -no_index directory => 'contrib'; +no_index directory => 'contrib'; auto_provides; +clean_files 't/hello.par'; + WriteAll sign => 0; + +sub MY::postamble { + return <<'...'; +pure_all :: + $(PERL) t/gen-hello-par.pl +... +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/README new/PAR-1.014/README --- old/PAR-1.011/README 2016-09-18 13:07:38.000000000 +0200 +++ new/PAR-1.014/README 2016-12-18 16:18:28.000000000 +0100 @@ -59,4 +59,4 @@ All rights reserved. You can redistribute and/or modify this bundle under the same terms as Perl itself. -See <http://dev.perl.org/licenses/artistic.html>. +See LICENSE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Base.pm new/PAR-1.014/inc/Module/Install/Base.pm --- old/PAR-1.011/inc/Module/Install/Base.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Base.pm 2016-11-06 14:03:48.000000000 +0100 @@ -4,7 +4,7 @@ use strict 'vars'; use vars qw{$VERSION}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; } # Suspend handler for "redefined" warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Can.pm new/PAR-1.014/inc/Module/Install/Can.pm --- old/PAR-1.011/inc/Module/Install/Can.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Can.pm 2016-11-06 14:03:48.000000000 +0100 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -121,6 +121,15 @@ # Can we locate a (the) C compiler sub can_cc { my $self = shift; + + if ($^O eq 'VMS') { + require ExtUtils::CBuilder; + my $builder = ExtUtils::CBuilder->new( + quiet => 1, + ); + return $builder->have_compiler; + } + my @chunks = split(/ /, $Config::Config{cc}) or return; # $Config{cc} may contain args; try to find out the program part @@ -151,4 +160,4 @@ __END__ -#line 236 +#line 245 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Fetch.pm new/PAR-1.014/inc/Module/Install/Fetch.pm --- old/PAR-1.011/inc/Module/Install/Fetch.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Fetch.pm 2016-11-06 14:03:48.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Makefile.pm new/PAR-1.014/inc/Module/Install/Makefile.pm --- old/PAR-1.011/inc/Module/Install/Makefile.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Makefile.pm 2016-11-06 14:03:48.000000000 +0100 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Metadata.pm new/PAR-1.014/inc/Module/Install/Metadata.pm --- old/PAR-1.011/inc/Module/Install/Metadata.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Metadata.pm 2016-11-06 14:03:48.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Win32.pm new/PAR-1.014/inc/Module/Install/Win32.pm --- old/PAR-1.011/inc/Module/Install/Win32.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/Win32.pm 2016-11-06 14:03:48.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/WriteAll.pm new/PAR-1.014/inc/Module/Install/WriteAll.pm --- old/PAR-1.011/inc/Module/Install/WriteAll.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install/WriteAll.pm 2016-11-06 14:03:48.000000000 +0100 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.16'; + $VERSION = '1.17'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/inc/Module/Install.pm new/PAR-1.014/inc/Module/Install.pm --- old/PAR-1.011/inc/Module/Install.pm 2016-09-18 13:29:52.000000000 +0200 +++ new/PAR-1.014/inc/Module/Install.pm 2016-11-06 14:03:47.000000000 +0100 @@ -31,7 +31,7 @@ # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. - $VERSION = '1.16'; + $VERSION = '1.17'; # Storage for the pseudo-singleton $MAIN = undef; @@ -244,6 +244,8 @@ } return $args{_self} if $args{_self}; + $base_path = VMS::Filespec::unixify($base_path) if $^O eq 'VMS'; + $args{dispatch} ||= 'Admin'; $args{prefix} ||= 'inc'; $args{author} ||= ($^O eq 'VMS' ? '_author' : '.author'); @@ -322,7 +324,7 @@ my ($self, $path) = @_; my @found; - File::Find::find( sub { + File::Find::find( {no_chdir => 1, wanted => sub { my $file = $File::Find::name; return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is; my $subpath = $1; @@ -336,7 +338,7 @@ # correctly. Otherwise, root through the file to locate the case-preserved # version of the package name. if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) { - my $content = Module::Install::_read($subpath . '.pm'); + my $content = Module::Install::_read($File::Find::name); my $in_pod = 0; foreach ( split /\n/, $content ) { $in_pod = 1 if /^=\w/; @@ -351,7 +353,7 @@ } push @found, [ $file, $pkg ]; - }, $path ) if -d $path; + }}, $path ) if -d $path; @found; } @@ -373,8 +375,6 @@ return $call; } -# Done in evals to avoid confusing Perl::MinimumVersion -eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _read { local *FH; open( FH, '<', $_[0] ) or die "open($_[0]): $!"; @@ -383,16 +383,6 @@ close FH or die "close($_[0]): $!"; return $string; } -END_NEW -sub _read { - local *FH; - open( FH, "< $_[0]" ) or die "open($_[0]): $!"; - binmode FH; - my $string = do { local $/; <FH> }; - close FH or die "close($_[0]): $!"; - return $string; -} -END_OLD sub _readperl { my $string = Module::Install::_read($_[0]); @@ -413,8 +403,6 @@ return $string; } -# Done in evals to avoid confusing Perl::MinimumVersion -eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _write { local *FH; open( FH, '>', $_[0] ) or die "open($_[0]): $!"; @@ -424,17 +412,6 @@ } close FH or die "close($_[0]): $!"; } -END_NEW -sub _write { - local *FH; - open( FH, "> $_[0]" ) or die "open($_[0]): $!"; - binmode FH; - foreach ( 1 .. $#_ ) { - print FH $_[$_] or die "print($_[0]): $!"; - } - close FH or die "close($_[0]): $!"; -} -END_OLD # _version is for processing module versions (eg, 1.03_05) not # Perl versions (eg, 5.8.1). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/Environment.pod new/PAR-1.014/lib/PAR/Environment.pod --- old/PAR-1.011/lib/PAR/Environment.pod 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/Environment.pod 2016-12-18 16:18:28.000000000 +0100 @@ -248,6 +248,6 @@ This program or documentation is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/FAQ.pod new/PAR-1.014/lib/PAR/FAQ.pod --- old/PAR-1.011/lib/PAR/FAQ.pod 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/FAQ.pod 2016-12-18 16:18:28.000000000 +0100 @@ -360,6 +360,6 @@ This document is free documentation; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/Heavy.pm new/PAR-1.014/lib/PAR/Heavy.pm --- old/PAR-1.011/lib/PAR/Heavy.pm 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/Heavy.pm 2016-12-18 16:18:28.000000000 +0100 @@ -18,6 +18,9 @@ ######################################################################## # Dynamic inclusion of XS modules +# NOTE: Don't "use" any module here, esp. one that is an XS module or +# whose "use" could cause the loading of an XS module thru its dependencies. + my ($bootstrap, $dl_findfile); # Caches for code references my ($cache_key); # The current file to find my $is_insensitive_fs = ( @@ -97,7 +100,7 @@ } } - $FullCache{$file} = _dl_extract($member, $file); + $FullCache{$file} = _dl_extract($member); # Now extract all associated shared objs in the same auto/ dir # XXX: shouldn't this also set $FullCache{...} for those files? @@ -112,7 +115,7 @@ next if $name eq $first; next unless $name =~ m{^/?\Q$path_pattern\E\/[^/]*\.\Q$DynaLoader::dl_dlext\E[^/]*$}; $name =~ s{.*/}{}; - _dl_extract($member, $file, $name); + _dl_extract($member, $name); } } @@ -121,46 +124,30 @@ } sub _dl_extract { - my ($member, $file, $name) = @_; + my ($member, $name) = @_; + $name ||= $member->crc32String . ".$DynaLoader::dl_dlext"; - require File::Spec; - require File::Temp; + my $filename = File::Spec->catfile($ENV{PAR_TEMP} || File::Spec->tmpdir, $name); + ($filename) = $filename =~ /^([\x20-\xff]+)$/; - my ($fh, $filename); + return $filename if -e $filename && -s _ == $member->uncompressedSize; - # fix borked tempdir from earlier versions - if ($ENV{PAR_TEMP} and -e $ENV{PAR_TEMP} and !-d $ENV{PAR_TEMP}) { - unlink($ENV{PAR_TEMP}); - mkdir($ENV{PAR_TEMP}, 0755); - } - - if ($ENV{PAR_CLEAN} and !$name) { - ($fh, $filename) = File::Temp::tempfile( - DIR => ($ENV{PAR_TEMP} || File::Spec->tmpdir), - SUFFIX => ".$DynaLoader::dl_dlext", - UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), - ); - ($filename) = $filename =~ /^([\x20-\xff]+)$/; - } - else { - $filename = File::Spec->catfile( - ($ENV{PAR_TEMP} || File::Spec->tmpdir), - ($name || ($member->crc32String . ".$DynaLoader::dl_dlext")) - ); - ($filename) = $filename =~ /^([\x20-\xff]+)$/; - - open $fh, '>', $filename or die $! - unless -r $filename and -e _ - and -s _ == $member->uncompressedSize; - } - - if ($fh) { - binmode($fh); - $member->extractToFileHandle($fh); - close $fh; - chmod 0750, $filename; + # $filename doesn't exist or hasn't been completely extracted: + # extract it under a temporary name that isn't likely to be used + # by concurrent processes doing the same + my $tempname = "$filename.$$"; + $member->extractToFileNamed($tempname) == Archive::Zip::AZ_OK() + or die "Can't extract archive member ".$member->fileName." to $tempname: $!"; + + # now that we have a "good" copy in $tempname, rename it to $filename; + # if this fails (e.g. some OSes won't let you delete DLLs that are + # in use), but $filename exists, we assume that $filename is also + # "good": remove $tempname and return $filename + unless (rename($tempname, $filename)) + { + -e $filename or die "can't rename $tempname to $filename: $!"; + unlink($tempname); } - return $filename; } @@ -191,6 +178,6 @@ This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/SetupProgname.pm new/PAR-1.014/lib/PAR/SetupProgname.pm --- old/PAR-1.011/lib/PAR/SetupProgname.pm 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/SetupProgname.pm 2016-12-18 16:18:28.000000000 +0100 @@ -86,7 +86,7 @@ This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/SetupTemp.pm new/PAR-1.014/lib/PAR/SetupTemp.pm --- old/PAR-1.011/lib/PAR/SetupTemp.pm 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/SetupTemp.pm 2016-12-18 16:18:28.000000000 +0100 @@ -183,7 +183,7 @@ This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR/Tutorial.pod new/PAR-1.014/lib/PAR/Tutorial.pod --- old/PAR-1.011/lib/PAR/Tutorial.pod 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR/Tutorial.pod 2016-12-18 16:18:28.000000000 +0100 @@ -1111,6 +1111,6 @@ This document is free documentation; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/lib/PAR.pm new/PAR-1.014/lib/PAR.pm --- old/PAR-1.011/lib/PAR.pm 2016-09-18 12:45:01.000000000 +0200 +++ new/PAR-1.014/lib/PAR.pm 2016-12-18 16:18:28.000000000 +0100 @@ -1,5 +1,5 @@ package PAR; -$PAR::VERSION = '1.011'; +$PAR::VERSION = '1.014'; use 5.006; use strict; @@ -18,6 +18,7 @@ File::Glob File::Spec File::Temp + Fcntl LWP::Simple PAR::Heavy /; @@ -309,6 +310,9 @@ =cut +use Fcntl ':flock'; +use Archive::Zip qw( :ERROR_CODES ); + use vars qw(@PAR_INC); # explicitly stated PAR library files (preferred) use vars qw(@PAR_INC_LAST); # explicitly stated PAR library files (fallback) use vars qw(%PAR_INC); # sets {$par}{$file} for require'd modules @@ -595,15 +599,16 @@ sub _run_member_from_par { my $member = shift; - my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); - - if ($is_new) { - my $file = $member->fileName; - print $fh "package main;\n", - "#line 1 \"$file\"\n"; - $member->extractToFileHandle($fh); - seek ($fh, 0, 0); - } + my (undef, $filename) = _tempfile( + sub { + my $fh = shift; + my $file = $member->fileName; + print $fh "package main;\n", + "#line 1 \"$file\"\n"; + $member->extractToFileHandle($fh) == AZ_OK + or die "Can't extract $file: $!"; + }, + $member->crc32String . ".pl"); $ENV{PAR_0} = $filename; # for Pod::Usage { do $filename; @@ -615,15 +620,16 @@ sub _run_member { my $member = shift; - my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); - - if ($is_new) { - my $file = $member->fileName; - print $fh "package main;\n", - "#line 1 \"$file\"\n"; - $member->extractToFileHandle($fh); - seek ($fh, 0, 0); - } + my ($fh, $filename) = _tempfile( + sub { + my $fh = shift; + my $file = $member->fileName; + print $fh "package main;\n", + "#line 1 \"$file\"\n"; + $member->extractToFileHandle($fh) == AZ_OK + or die "Can't extract $file: $!"; + }, + $member->crc32String . ".pl"); # NOTE: Perl 5.14.x will print the infamous warning # "Use of uninitialized value in do "file" at .../PAR.pm line 636" @@ -675,12 +681,20 @@ my $is_handle = ref($file_or_azip_handle) && $file_or_azip_handle->isa('Archive::Zip::Archive'); require File::Spec; + my $inc = File::Spec->catdir($PAR::SetupTemp::PARTemp, "inc"); + my $inc_lock = "$inc.lock"; + my $canary = File::Spec->catfile($PAR::SetupTemp::PARTemp, $PAR::SetupTemp::Canary); - if (!-d $inc || !-e $canary) { - for (1 .. 10) { mkdir("$inc.lock", 0755) and last; sleep 1 } - + # acquire the "wanna extract inc" lock + open my $lock, ">", $inc_lock or die qq[can't open "$inc_lock": $!]; + flock($lock, LOCK_EX); + + unless (-d $inc && -e $canary) + { + mkdir($inc, 0755); + undef $@; if (!$is_handle) { # First try to unzip the *fast* way. @@ -697,8 +711,8 @@ } } - # either failed to load Archive::Unzip::Burst or got an A::Zip handle - # fallback to slow way. + # either failed to load Archive::Unzip::Burst or got + # an Archive::Zip handle: fallback to slow way. if ($is_handle || $@) { my $zip; if (!$is_handle) { @@ -708,15 +722,13 @@ bless($fh, 'IO::File'); $zip = Archive::Zip->new; - ( $zip->readFromFileHandle($fh, $file_or_azip_handle) == Archive::Zip::AZ_OK() ) + $zip->readFromFileHandle($fh, $file_or_azip_handle) == AZ_OK or die "Read '$file_or_azip_handle' error: $!"; } else { $zip = $file_or_azip_handle; } - mkdir($inc) if not -d $inc; - for ( $zip->memberNames() ) { s{^/}{}; my $outfile = File::Spec->catfile($inc, $_); @@ -728,7 +740,9 @@ utime(undef, undef, $outfile); } } - + + $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : $file_or_azip_handle} = $inc; + # touch (and back-date) canary file open my $fh, ">", $canary; print $fh <<'...'; @@ -739,12 +753,12 @@ close $fh; my $dateback = time() - $PAR::SetupTemp::CanaryDateBack; utime($dateback, $dateback, $canary); - - rmdir("$inc.lock"); - - $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : $file_or_azip_handle} = $inc; } + # release the "wanna extract inc" lock + flock($lock, LOCK_UN); + close $lock; + # add the freshly extracted directories to @INC, # but make sure there's no duplicates my %inc_exists = map { ($_, 1) } @INC; @@ -961,9 +975,10 @@ } # Got the .par as a string. (reference to scalar, of course) elsif (ref($par) eq 'SCALAR') { - my ($fh) = _tempfile(); - print $fh $$par; - $par = $fh; + ($par, undef) = _tempfile(sub { + my $fh = shift; + print $fh $$par; + }); } # If the par is not a valid .par file name and we're being strict # about this, then also check whether "$par.par" exists @@ -989,7 +1004,7 @@ Archive::Zip::setErrorHandler(sub {}); my $rv = $zip->readFromFileHandle($par, @file); Archive::Zip::setErrorHandler(undef); - return unless $rv == Archive::Zip::AZ_OK(); + return unless $rv == AZ_OK; push @LibCache, $zip; $LibCache{$_[0]} = $zip; @@ -1025,11 +1040,13 @@ ^([^/]+)$ }; my $extract_name = $1; - my $dest_name = - File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); + my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); # but don't extract it if we've already got one - $member->extractToFileNamed($dest_name) - unless(-e $dest_name); + unless (-e $dest_name) + { + $member->extractToFileNamed($dest_name) == AZ_OK + or die "Can't extract $member_name: $!"; + } } } @@ -1054,7 +1071,6 @@ $ENV{$key} = $tempdir; } } - } $LastAccessedPAR = $zip; @@ -1072,51 +1088,60 @@ return $member if $member_only; - my ($fh, $is_new); - ($fh, $is_new, $LastTempFile) = _tempfile($member->crc32String . ".pm"); - die "Bad Things Happened..." unless $fh; - - if ($is_new) { - $member->extractToFileHandle($fh); - seek ($fh, 0, 0); - } + (my $fh, $LastTempFile) = _tempfile( + sub { + my $fh = shift; + my $file = $member->fileName; + $member->extractToFileHandle($fh) == AZ_OK + or die "Can't extract $file: $!"; + }, + $member->crc32String . ".pm"); return $fh; } sub _tempfile { - my ($fh, $filename); - if ($ENV{PAR_CLEAN} or !@_) { + my ($callback, $name) = @_; + + if ($ENV{PAR_CLEAN} or !defined $name) { require File::Temp; if (defined &File::Temp::tempfile) { # under Win32, the file is created with O_TEMPORARY, # and will be deleted by the C runtime; having File::Temp # delete it has the only effect of giving ugly warnings - ($fh, $filename) = File::Temp::tempfile( + my ($fh, $filename) = File::Temp::tempfile( DIR => $PAR::SetupTemp::PARTemp, UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), ) or die "Cannot create temporary file: $!"; binmode($fh); - return ($fh, 1, $filename); + $callback->($fh); + seek($fh, 0, 0); + return ($fh, $filename); } } require File::Spec; # untainting tempfile path - local $_ = File::Spec->catfile( $PAR::SetupTemp::PARTemp, $_[0] ); - /^(.+)$/ and $filename = $1; + my ($filename) = File::Spec->catfile($PAR::SetupTemp::PARTemp, $name) =~ /^(.+)$/; - if (-r $filename) { - open $fh, '<', $filename or die $!; + unless (-r $filename) { + my $tempname = "$filename.$$"; + + open my $fh, '>', $tempname or die $!; binmode($fh); - return ($fh, 0, $filename); + $callback->($fh); + close($fh); + + # FIXME why? + rename($tempname, $filename) or unlink($tempname); } - open $fh, '+>', $filename or die $!; + open my $fh, '<', $filename or die $!; binmode($fh); - return ($fh, 1, $filename); + + return ($fh, $filename); } # Given an Archive::Zip object, this generates a hash of @@ -1247,6 +1272,6 @@ This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -See L<http://www.perl.com/perl/misc/Artistic.html> +See F<LICENSE>. =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/data/lib/Data.pm new/PAR-1.014/t/data/lib/Data.pm --- old/PAR-1.011/t/data/lib/Data.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/data/lib/Data.pm 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,10 @@ +package Data; + +use strict; +sub data { + print <DATA>; +} + +1; +__DATA__ +Data section diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/data/lib/Hello.pm new/PAR-1.014/t/data/lib/Hello.pm --- old/PAR-1.011/t/data/lib/Hello.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/data/lib/Hello.pm 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,8 @@ +package Hello; + +use strict; +sub hello { + print "Hello, world!\n"; +} + +1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/data/script/data.pl new/PAR-1.014/t/data/script/data.pl --- old/PAR-1.011/t/data/script/data.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/data/script/data.pl 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,9 @@ +#!/usr/bin/perl + +use Data; + +Data::data(); +print <DATA>; + +__DATA__ +Data reflection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/data/script/hello.pl new/PAR-1.014/t/data/script/hello.pl --- old/PAR-1.011/t/data/script/hello.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/data/script/hello.pl 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,6 @@ +#!/usr/bin/perl + +use Hello; + +Hello::hello(); +print "Goodbye, world!\n"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/data/script/nostrict.pl new/PAR-1.014/t/data/script/nostrict.pl --- old/PAR-1.011/t/data/script/nostrict.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/data/script/nostrict.pl 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,4 @@ +#!/usr/bin/perl + +${'a'} = "No Strict!\n"; +print $a; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PAR-1.011/t/gen-hello-par.pl new/PAR-1.014/t/gen-hello-par.pl --- old/PAR-1.011/t/gen-hello-par.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/PAR-1.014/t/gen-hello-par.pl 2016-11-27 17:10:15.000000000 +0100 @@ -0,0 +1,7 @@ +use strict; +use warnings; +use Archive::Zip qw( :ERROR_CODES ); + +my $zip = Archive::Zip->new(); +exit($zip->addTree("t/data", "") == AZ_OK + && $zip->writeToFileNamed("t/hello.par") == AZ_OK ? 0 : 1); Binary files old/PAR-1.011/t/hello.par and new/PAR-1.014/t/hello.par differ
